1# -*- coding: utf-8 -*- # 2# Copyright 2015 Google LLC. All Rights Reserved. 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15"""Resource definitions for cloud platform apis.""" 16 17import enum 18 19 20BASE_URL = 'https://compute.googleapis.com/compute/v1/' 21DOCS_URL = 'https://developers.google.com/compute/docs/reference/latest/' 22 23 24class Collections(enum.Enum): 25 """Collections for all supported apis.""" 26 27 ACCELERATORTYPES = ( 28 'acceleratorTypes', 29 'projects/{project}/zones/{zone}/acceleratorTypes/{acceleratorType}', 30 {}, 31 ['project', 'zone', 'acceleratorType'], 32 True 33 ) 34 ADDRESSES = ( 35 'addresses', 36 'projects/{project}/regions/{region}/addresses/{address}', 37 {}, 38 ['project', 'region', 'address'], 39 True 40 ) 41 AUTOSCALERS = ( 42 'autoscalers', 43 'projects/{project}/zones/{zone}/autoscalers/{autoscaler}', 44 {}, 45 ['project', 'zone', 'autoscaler'], 46 True 47 ) 48 BACKENDBUCKETS = ( 49 'backendBuckets', 50 'projects/{project}/global/backendBuckets/{backendBucket}', 51 {}, 52 ['project', 'backendBucket'], 53 True 54 ) 55 BACKENDSERVICES = ( 56 'backendServices', 57 'projects/{project}/global/backendServices/{backendService}', 58 {}, 59 ['project', 'backendService'], 60 True 61 ) 62 DISKTYPES = ( 63 'diskTypes', 64 'projects/{project}/zones/{zone}/diskTypes/{diskType}', 65 {}, 66 ['project', 'zone', 'diskType'], 67 True 68 ) 69 DISKS = ( 70 'disks', 71 'projects/{project}/zones/{zone}/disks/{disk}', 72 {}, 73 ['project', 'zone', 'disk'], 74 True 75 ) 76 EXTERNALVPNGATEWAYS = ( 77 'externalVpnGateways', 78 'projects/{project}/global/externalVpnGateways/{externalVpnGateway}', 79 {}, 80 ['project', 'externalVpnGateway'], 81 True 82 ) 83 FIREWALLPOLICIES = ( 84 'firewallPolicies', 85 'locations/global/firewallPolicies/{firewallPolicy}', 86 {}, 87 ['firewallPolicy'], 88 True 89 ) 90 FIREWALLS = ( 91 'firewalls', 92 'projects/{project}/global/firewalls/{firewall}', 93 {}, 94 ['project', 'firewall'], 95 True 96 ) 97 FORWARDINGRULES = ( 98 'forwardingRules', 99 'projects/{project}/regions/{region}/forwardingRules/{forwardingRule}', 100 {}, 101 ['project', 'region', 'forwardingRule'], 102 True 103 ) 104 GLOBALADDRESSES = ( 105 'globalAddresses', 106 'projects/{project}/global/addresses/{address}', 107 {}, 108 ['project', 'address'], 109 True 110 ) 111 GLOBALFORWARDINGRULES = ( 112 'globalForwardingRules', 113 'projects/{project}/global/forwardingRules/{forwardingRule}', 114 {}, 115 ['project', 'forwardingRule'], 116 True 117 ) 118 GLOBALNETWORKENDPOINTGROUPS = ( 119 'globalNetworkEndpointGroups', 120 'projects/{project}/global/networkEndpointGroups/{networkEndpointGroup}', 121 {}, 122 ['project', 'networkEndpointGroup'], 123 True 124 ) 125 GLOBALOPERATIONS = ( 126 'globalOperations', 127 'projects/{project}/global/operations/{operation}', 128 {}, 129 ['project', 'operation'], 130 True 131 ) 132 GLOBALORGANIZATIONOPERATIONS = ( 133 'globalOrganizationOperations', 134 'locations/global/operations/{operation}', 135 {}, 136 ['operation'], 137 True 138 ) 139 GLOBALPUBLICDELEGATEDPREFIXES = ( 140 'globalPublicDelegatedPrefixes', 141 'projects/{project}/global/publicDelegatedPrefixes/' 142 '{publicDelegatedPrefix}', 143 {}, 144 ['project', 'publicDelegatedPrefix'], 145 True 146 ) 147 HEALTHCHECKS = ( 148 'healthChecks', 149 'projects/{project}/global/healthChecks/{healthCheck}', 150 {}, 151 ['project', 'healthCheck'], 152 True 153 ) 154 HTTPHEALTHCHECKS = ( 155 'httpHealthChecks', 156 'projects/{project}/global/httpHealthChecks/{httpHealthCheck}', 157 {}, 158 ['project', 'httpHealthCheck'], 159 True 160 ) 161 HTTPSHEALTHCHECKS = ( 162 'httpsHealthChecks', 163 'projects/{project}/global/httpsHealthChecks/{httpsHealthCheck}', 164 {}, 165 ['project', 'httpsHealthCheck'], 166 True 167 ) 168 IMAGES = ( 169 'images', 170 'projects/{project}/global/images/{image}', 171 {}, 172 ['project', 'image'], 173 True 174 ) 175 INSTANCEGROUPMANAGERS = ( 176 'instanceGroupManagers', 177 'projects/{project}/zones/{zone}/instanceGroupManagers/' 178 '{instanceGroupManager}', 179 {}, 180 ['project', 'zone', 'instanceGroupManager'], 181 True 182 ) 183 INSTANCEGROUPS = ( 184 'instanceGroups', 185 'projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}', 186 {}, 187 ['project', 'zone', 'instanceGroup'], 188 True 189 ) 190 INSTANCETEMPLATES = ( 191 'instanceTemplates', 192 'projects/{project}/global/instanceTemplates/{instanceTemplate}', 193 {}, 194 ['project', 'instanceTemplate'], 195 True 196 ) 197 INSTANCES = ( 198 'instances', 199 'projects/{project}/zones/{zone}/instances/{instance}', 200 {}, 201 ['project', 'zone', 'instance'], 202 True 203 ) 204 INTERCONNECTATTACHMENTS = ( 205 'interconnectAttachments', 206 'projects/{project}/regions/{region}/interconnectAttachments/' 207 '{interconnectAttachment}', 208 {}, 209 ['project', 'region', 'interconnectAttachment'], 210 True 211 ) 212 INTERCONNECTLOCATIONS = ( 213 'interconnectLocations', 214 'projects/{project}/global/interconnectLocations/{interconnectLocation}', 215 {}, 216 ['project', 'interconnectLocation'], 217 True 218 ) 219 INTERCONNECTS = ( 220 'interconnects', 221 'projects/{project}/global/interconnects/{interconnect}', 222 {}, 223 ['project', 'interconnect'], 224 True 225 ) 226 LICENSECODES = ( 227 'licenseCodes', 228 'projects/{project}/global/licenseCodes/{licenseCode}', 229 {}, 230 ['project', 'licenseCode'], 231 True 232 ) 233 LICENSES = ( 234 'licenses', 235 'projects/{project}/global/licenses/{license}', 236 {}, 237 ['project', 'license'], 238 True 239 ) 240 MACHINETYPES = ( 241 'machineTypes', 242 'projects/{project}/zones/{zone}/machineTypes/{machineType}', 243 {}, 244 ['project', 'zone', 'machineType'], 245 True 246 ) 247 NETWORKENDPOINTGROUPS = ( 248 'networkEndpointGroups', 249 'projects/{project}/zones/{zone}/networkEndpointGroups/' 250 '{networkEndpointGroup}', 251 {}, 252 ['project', 'zone', 'networkEndpointGroup'], 253 True 254 ) 255 NETWORKS = ( 256 'networks', 257 'projects/{project}/global/networks/{network}', 258 {}, 259 ['project', 'network'], 260 True 261 ) 262 NEXTHOPGATEWAYS = ( 263 'nextHopGateways', 264 'projects/{project}/global/gateways/{nextHopGateway}', 265 {}, 266 ['project', 'nextHopGateway'], 267 True 268 ) 269 NODEGROUPS = ( 270 'nodeGroups', 271 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}', 272 {}, 273 ['project', 'zone', 'nodeGroup'], 274 True 275 ) 276 NODETEMPLATES = ( 277 'nodeTemplates', 278 'projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}', 279 {}, 280 ['project', 'region', 'nodeTemplate'], 281 True 282 ) 283 NODETYPES = ( 284 'nodeTypes', 285 'projects/{project}/zones/{zone}/nodeTypes/{nodeType}', 286 {}, 287 ['project', 'zone', 'nodeType'], 288 True 289 ) 290 PACKETMIRRORINGS = ( 291 'packetMirrorings', 292 'projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}', 293 {}, 294 ['project', 'region', 'packetMirroring'], 295 True 296 ) 297 PROJECTS = ( 298 'projects', 299 'projects/{project}', 300 {}, 301 ['project'], 302 True 303 ) 304 PUBLICADVERTISEDPREFIXES = ( 305 'publicAdvertisedPrefixes', 306 'projects/{project}/global/publicAdvertisedPrefixes/' 307 '{publicAdvertisedPrefix}', 308 {}, 309 ['project', 'publicAdvertisedPrefix'], 310 True 311 ) 312 PUBLICDELEGATEDPREFIXES = ( 313 'publicDelegatedPrefixes', 314 'projects/{project}/regions/{region}/publicDelegatedPrefixes/' 315 '{publicDelegatedPrefix}', 316 {}, 317 ['project', 'region', 'publicDelegatedPrefix'], 318 True 319 ) 320 REGIONAUTOSCALERS = ( 321 'regionAutoscalers', 322 'projects/{project}/regions/{region}/autoscalers/{autoscaler}', 323 {}, 324 ['project', 'region', 'autoscaler'], 325 True 326 ) 327 REGIONBACKENDSERVICES = ( 328 'regionBackendServices', 329 'projects/{project}/regions/{region}/backendServices/{backendService}', 330 {}, 331 ['project', 'region', 'backendService'], 332 True 333 ) 334 REGIONCOMMITMENTS = ( 335 'regionCommitments', 336 'projects/{project}/regions/{region}/commitments/{commitment}', 337 {}, 338 ['project', 'region', 'commitment'], 339 True 340 ) 341 REGIONDISKTYPES = ( 342 'regionDiskTypes', 343 'projects/{project}/regions/{region}/diskTypes/{diskType}', 344 {}, 345 ['project', 'region', 'diskType'], 346 True 347 ) 348 REGIONDISKS = ( 349 'regionDisks', 350 'projects/{project}/regions/{region}/disks/{disk}', 351 {}, 352 ['project', 'region', 'disk'], 353 True 354 ) 355 REGIONHEALTHCHECKSERVICES = ( 356 'regionHealthCheckServices', 357 'projects/{project}/regions/{region}/healthCheckServices/' 358 '{healthCheckService}', 359 {}, 360 ['project', 'region', 'healthCheckService'], 361 True 362 ) 363 REGIONHEALTHCHECKS = ( 364 'regionHealthChecks', 365 'projects/{project}/regions/{region}/healthChecks/{healthCheck}', 366 {}, 367 ['project', 'region', 'healthCheck'], 368 True 369 ) 370 REGIONINSTANCEGROUPMANAGERS = ( 371 'regionInstanceGroupManagers', 372 'projects/{project}/regions/{region}/instanceGroupManagers/' 373 '{instanceGroupManager}', 374 {}, 375 ['project', 'region', 'instanceGroupManager'], 376 True 377 ) 378 REGIONINSTANCEGROUPS = ( 379 'regionInstanceGroups', 380 'projects/{project}/regions/{region}/instanceGroups/{instanceGroup}', 381 {}, 382 ['project', 'region', 'instanceGroup'], 383 True 384 ) 385 REGIONNETWORKENDPOINTGROUPS = ( 386 'regionNetworkEndpointGroups', 387 'projects/{project}/regions/{region}/networkEndpointGroups/' 388 '{networkEndpointGroup}', 389 {}, 390 ['project', 'region', 'networkEndpointGroup'], 391 True 392 ) 393 REGIONNOTIFICATIONENDPOINTS = ( 394 'regionNotificationEndpoints', 395 'projects/{project}/regions/{region}/notificationEndpoints/' 396 '{notificationEndpoint}', 397 {}, 398 ['project', 'region', 'notificationEndpoint'], 399 True 400 ) 401 REGIONOPERATIONS = ( 402 'regionOperations', 403 'projects/{project}/regions/{region}/operations/{operation}', 404 {}, 405 ['project', 'region', 'operation'], 406 True 407 ) 408 REGIONSSLCERTIFICATES = ( 409 'regionSslCertificates', 410 'projects/{project}/regions/{region}/sslCertificates/{sslCertificate}', 411 {}, 412 ['project', 'region', 'sslCertificate'], 413 True 414 ) 415 REGIONTARGETHTTPPROXIES = ( 416 'regionTargetHttpProxies', 417 'projects/{project}/regions/{region}/targetHttpProxies/' 418 '{targetHttpProxy}', 419 {}, 420 ['project', 'region', 'targetHttpProxy'], 421 True 422 ) 423 REGIONTARGETHTTPSPROXIES = ( 424 'regionTargetHttpsProxies', 425 'projects/{project}/regions/{region}/targetHttpsProxies/' 426 '{targetHttpsProxy}', 427 {}, 428 ['project', 'region', 'targetHttpsProxy'], 429 True 430 ) 431 REGIONURLMAPS = ( 432 'regionUrlMaps', 433 'projects/{project}/regions/{region}/urlMaps/{urlMap}', 434 {}, 435 ['project', 'region', 'urlMap'], 436 True 437 ) 438 REGIONS = ( 439 'regions', 440 'projects/{project}/regions/{region}', 441 {}, 442 ['project', 'region'], 443 True 444 ) 445 RESERVATIONS = ( 446 'reservations', 447 'projects/{project}/zones/{zone}/reservations/{reservation}', 448 {}, 449 ['project', 'zone', 'reservation'], 450 True 451 ) 452 RESOURCEPOLICIES = ( 453 'resourcePolicies', 454 'projects/{project}/regions/{region}/resourcePolicies/{resourcePolicy}', 455 {}, 456 ['project', 'region', 'resourcePolicy'], 457 True 458 ) 459 ROUTERS = ( 460 'routers', 461 'projects/{project}/regions/{region}/routers/{router}', 462 {}, 463 ['project', 'region', 'router'], 464 True 465 ) 466 ROUTES = ( 467 'routes', 468 'projects/{project}/global/routes/{route}', 469 {}, 470 ['project', 'route'], 471 True 472 ) 473 SECURITYPOLICIES = ( 474 'securityPolicies', 475 'projects/{project}/global/securityPolicies/{securityPolicy}', 476 {}, 477 ['project', 'securityPolicy'], 478 True 479 ) 480 SECURITYPOLICYRULES = ( 481 'securityPolicyRules', 482 'projects/{project}/global/securityPolicies/{securityPolicy}/' 483 'securityPolicyRules/{securityPolicyRule}', 484 {}, 485 ['project', 'securityPolicy', 'securityPolicyRule'], 486 True 487 ) 488 SERVICEATTACHMENTS = ( 489 'serviceAttachments', 490 'projects/{project}/regions/{region}/serviceAttachments/' 491 '{serviceAttachment}', 492 {}, 493 ['project', 'region', 'serviceAttachment'], 494 True 495 ) 496 SNAPSHOTS = ( 497 'snapshots', 498 'projects/{project}/global/snapshots/{snapshot}', 499 {}, 500 ['project', 'snapshot'], 501 True 502 ) 503 SSLCERTIFICATES = ( 504 'sslCertificates', 505 'projects/{project}/global/sslCertificates/{sslCertificate}', 506 {}, 507 ['project', 'sslCertificate'], 508 True 509 ) 510 SSLPOLICIES = ( 511 'sslPolicies', 512 'projects/{project}/global/sslPolicies/{sslPolicy}', 513 {}, 514 ['project', 'sslPolicy'], 515 True 516 ) 517 SUBNETWORKS = ( 518 'subnetworks', 519 'projects/{project}/regions/{region}/subnetworks/{subnetwork}', 520 {}, 521 ['project', 'region', 'subnetwork'], 522 True 523 ) 524 TARGETGRPCPROXIES = ( 525 'targetGrpcProxies', 526 'projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}', 527 {}, 528 ['project', 'targetGrpcProxy'], 529 True 530 ) 531 TARGETHTTPPROXIES = ( 532 'targetHttpProxies', 533 'projects/{project}/global/targetHttpProxies/{targetHttpProxy}', 534 {}, 535 ['project', 'targetHttpProxy'], 536 True 537 ) 538 TARGETHTTPSPROXIES = ( 539 'targetHttpsProxies', 540 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}', 541 {}, 542 ['project', 'targetHttpsProxy'], 543 True 544 ) 545 TARGETINSTANCES = ( 546 'targetInstances', 547 'projects/{project}/zones/{zone}/targetInstances/{targetInstance}', 548 {}, 549 ['project', 'zone', 'targetInstance'], 550 True 551 ) 552 TARGETPOOLS = ( 553 'targetPools', 554 'projects/{project}/regions/{region}/targetPools/{targetPool}', 555 {}, 556 ['project', 'region', 'targetPool'], 557 True 558 ) 559 TARGETSSLPROXIES = ( 560 'targetSslProxies', 561 'projects/{project}/global/targetSslProxies/{targetSslProxy}', 562 {}, 563 ['project', 'targetSslProxy'], 564 True 565 ) 566 TARGETTCPPROXIES = ( 567 'targetTcpProxies', 568 'projects/{project}/global/targetTcpProxies/{targetTcpProxy}', 569 {}, 570 ['project', 'targetTcpProxy'], 571 True 572 ) 573 TARGETVPNGATEWAYS = ( 574 'targetVpnGateways', 575 'projects/{project}/regions/{region}/targetVpnGateways/' 576 '{targetVpnGateway}', 577 {}, 578 ['project', 'region', 'targetVpnGateway'], 579 True 580 ) 581 URLMAPS = ( 582 'urlMaps', 583 'projects/{project}/global/urlMaps/{urlMap}', 584 {}, 585 ['project', 'urlMap'], 586 True 587 ) 588 VPNGATEWAYS = ( 589 'vpnGateways', 590 'projects/{project}/regions/{region}/vpnGateways/{vpnGateway}', 591 {}, 592 ['project', 'region', 'vpnGateway'], 593 True 594 ) 595 VPNTUNNELS = ( 596 'vpnTunnels', 597 'projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}', 598 {}, 599 ['project', 'region', 'vpnTunnel'], 600 True 601 ) 602 ZONEOPERATIONS = ( 603 'zoneOperations', 604 'projects/{project}/zones/{zone}/operations/{operation}', 605 {}, 606 ['project', 'zone', 'operation'], 607 True 608 ) 609 ZONES = ( 610 'zones', 611 'projects/{project}/zones/{zone}', 612 {}, 613 ['project', 'zone'], 614 True 615 ) 616 617 def __init__(self, collection_name, path, flat_paths, params, 618 enable_uri_parsing): 619 self.collection_name = collection_name 620 self.path = path 621 self.flat_paths = flat_paths 622 self.params = params 623 self.enable_uri_parsing = enable_uri_parsing 624