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/alpha/' 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 IMAGEFAMILYVIEWS = ( 169 'imageFamilyViews', 170 'projects/{project}/zones/{zone}/imageFamilyViews/{family}', 171 {}, 172 ['project', 'zone', 'family'], 173 True 174 ) 175 IMAGES = ( 176 'images', 177 'projects/{project}/global/images/{image}', 178 {}, 179 ['project', 'image'], 180 True 181 ) 182 INSTANCEGROUPMANAGERS = ( 183 'instanceGroupManagers', 184 'projects/{project}/zones/{zone}/instanceGroupManagers/' 185 '{instanceGroupManager}', 186 {}, 187 ['project', 'zone', 'instanceGroupManager'], 188 True 189 ) 190 INSTANCEGROUPS = ( 191 'instanceGroups', 192 'projects/{project}/zones/{zone}/instanceGroups/{instanceGroup}', 193 {}, 194 ['project', 'zone', 'instanceGroup'], 195 True 196 ) 197 INSTANCETEMPLATES = ( 198 'instanceTemplates', 199 'projects/{project}/global/instanceTemplates/{instanceTemplate}', 200 {}, 201 ['project', 'instanceTemplate'], 202 True 203 ) 204 INSTANCES = ( 205 'instances', 206 'projects/{project}/zones/{zone}/instances/{instance}', 207 {}, 208 ['project', 'zone', 'instance'], 209 True 210 ) 211 INTERCONNECTATTACHMENTS = ( 212 'interconnectAttachments', 213 'projects/{project}/regions/{region}/interconnectAttachments/' 214 '{interconnectAttachment}', 215 {}, 216 ['project', 'region', 'interconnectAttachment'], 217 True 218 ) 219 INTERCONNECTLOCATIONS = ( 220 'interconnectLocations', 221 'projects/{project}/global/interconnectLocations/{interconnectLocation}', 222 {}, 223 ['project', 'interconnectLocation'], 224 True 225 ) 226 INTERCONNECTS = ( 227 'interconnects', 228 'projects/{project}/global/interconnects/{interconnect}', 229 {}, 230 ['project', 'interconnect'], 231 True 232 ) 233 LICENSECODES = ( 234 'licenseCodes', 235 'projects/{project}/global/licenseCodes/{licenseCode}', 236 {}, 237 ['project', 'licenseCode'], 238 True 239 ) 240 LICENSES = ( 241 'licenses', 242 'projects/{project}/global/licenses/{license}', 243 {}, 244 ['project', 'license'], 245 True 246 ) 247 MACHINEIMAGES = ( 248 'machineImages', 249 'projects/{project}/global/machineImages/{machineImage}', 250 {}, 251 ['project', 'machineImage'], 252 True 253 ) 254 MACHINETYPES = ( 255 'machineTypes', 256 'projects/{project}/zones/{zone}/machineTypes/{machineType}', 257 {}, 258 ['project', 'zone', 'machineType'], 259 True 260 ) 261 NETWORKENDPOINTGROUPS = ( 262 'networkEndpointGroups', 263 'projects/{project}/zones/{zone}/networkEndpointGroups/' 264 '{networkEndpointGroup}', 265 {}, 266 ['project', 'zone', 'networkEndpointGroup'], 267 True 268 ) 269 NETWORKFIREWALLPOLICIES = ( 270 'networkFirewallPolicies', 271 'projects/{project}/global/firewallPolicies/{firewallPolicy}', 272 {}, 273 ['project', 'firewallPolicy'], 274 True 275 ) 276 NETWORKS = ( 277 'networks', 278 'projects/{project}/global/networks/{network}', 279 {}, 280 ['project', 'network'], 281 True 282 ) 283 NEXTHOPGATEWAYS = ( 284 'nextHopGateways', 285 'projects/{project}/global/gateways/{nextHopGateway}', 286 {}, 287 ['project', 'nextHopGateway'], 288 True 289 ) 290 NODEGROUPS = ( 291 'nodeGroups', 292 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}', 293 {}, 294 ['project', 'zone', 'nodeGroup'], 295 True 296 ) 297 NODETEMPLATES = ( 298 'nodeTemplates', 299 'projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}', 300 {}, 301 ['project', 'region', 'nodeTemplate'], 302 True 303 ) 304 NODETYPES = ( 305 'nodeTypes', 306 'projects/{project}/zones/{zone}/nodeTypes/{nodeType}', 307 {}, 308 ['project', 'zone', 'nodeType'], 309 True 310 ) 311 ORGANIZATIONSECURITYPOLICIES = ( 312 'organizationSecurityPolicies', 313 'locations/global/securityPolicies/{securityPolicy}', 314 {}, 315 ['securityPolicy'], 316 True 317 ) 318 PACKETMIRRORINGS = ( 319 'packetMirrorings', 320 'projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}', 321 {}, 322 ['project', 'region', 'packetMirroring'], 323 True 324 ) 325 PROJECTS = ( 326 'projects', 327 'projects/{project}', 328 {}, 329 ['project'], 330 True 331 ) 332 PUBLICADVERTISEDPREFIXES = ( 333 'publicAdvertisedPrefixes', 334 'projects/{project}/global/publicAdvertisedPrefixes/' 335 '{publicAdvertisedPrefix}', 336 {}, 337 ['project', 'publicAdvertisedPrefix'], 338 True 339 ) 340 PUBLICDELEGATEDPREFIXES = ( 341 'publicDelegatedPrefixes', 342 'projects/{project}/regions/{region}/publicDelegatedPrefixes/' 343 '{publicDelegatedPrefix}', 344 {}, 345 ['project', 'region', 'publicDelegatedPrefix'], 346 True 347 ) 348 REGIONACCELERATORTYPES = ( 349 'regionAcceleratorTypes', 350 'projects/{project}/regions/{region}/acceleratorTypes/{acceleratorType}', 351 {}, 352 ['project', 'region', 'acceleratorType'], 353 True 354 ) 355 REGIONAUTOSCALERS = ( 356 'regionAutoscalers', 357 'projects/{project}/regions/{region}/autoscalers/{autoscaler}', 358 {}, 359 ['project', 'region', 'autoscaler'], 360 True 361 ) 362 REGIONBACKENDSERVICES = ( 363 'regionBackendServices', 364 'projects/{project}/regions/{region}/backendServices/{backendService}', 365 {}, 366 ['project', 'region', 'backendService'], 367 True 368 ) 369 REGIONCOMMITMENTS = ( 370 'regionCommitments', 371 'projects/{project}/regions/{region}/commitments/{commitment}', 372 {}, 373 ['project', 'region', 'commitment'], 374 True 375 ) 376 REGIONDISKTYPES = ( 377 'regionDiskTypes', 378 'projects/{project}/regions/{region}/diskTypes/{diskType}', 379 {}, 380 ['project', 'region', 'diskType'], 381 True 382 ) 383 REGIONDISKS = ( 384 'regionDisks', 385 'projects/{project}/regions/{region}/disks/{disk}', 386 {}, 387 ['project', 'region', 'disk'], 388 True 389 ) 390 REGIONHEALTHCHECKSERVICES = ( 391 'regionHealthCheckServices', 392 'projects/{project}/regions/{region}/healthCheckServices/' 393 '{healthCheckService}', 394 {}, 395 ['project', 'region', 'healthCheckService'], 396 True 397 ) 398 REGIONHEALTHCHECKS = ( 399 'regionHealthChecks', 400 'projects/{project}/regions/{region}/healthChecks/{healthCheck}', 401 {}, 402 ['project', 'region', 'healthCheck'], 403 True 404 ) 405 REGIONINPLACESNAPSHOTS = ( 406 'regionInPlaceSnapshots', 407 'projects/{project}/regions/{region}/inPlaceSnapshots/{inPlaceSnapshot}', 408 {}, 409 ['project', 'region', 'inPlaceSnapshot'], 410 True 411 ) 412 REGIONINSTANCEGROUPMANAGERS = ( 413 'regionInstanceGroupManagers', 414 'projects/{project}/regions/{region}/instanceGroupManagers/' 415 '{instanceGroupManager}', 416 {}, 417 ['project', 'region', 'instanceGroupManager'], 418 True 419 ) 420 REGIONINSTANCEGROUPS = ( 421 'regionInstanceGroups', 422 'projects/{project}/regions/{region}/instanceGroups/{instanceGroup}', 423 {}, 424 ['project', 'region', 'instanceGroup'], 425 True 426 ) 427 REGIONINSTANTSNAPSHOTS = ( 428 'regionInstantSnapshots', 429 'projects/{project}/regions/{region}/instantSnapshots/{instantSnapshot}', 430 {}, 431 ['project', 'region', 'instantSnapshot'], 432 True 433 ) 434 REGIONMACHINETYPES = ( 435 'regionMachineTypes', 436 'projects/{project}/regions/{region}/machineTypes/{machineType}', 437 {}, 438 ['project', 'region', 'machineType'], 439 True 440 ) 441 REGIONNETWORKENDPOINTGROUPS = ( 442 'regionNetworkEndpointGroups', 443 'projects/{project}/regions/{region}/networkEndpointGroups/' 444 '{networkEndpointGroup}', 445 {}, 446 ['project', 'region', 'networkEndpointGroup'], 447 True 448 ) 449 REGIONNOTIFICATIONENDPOINTS = ( 450 'regionNotificationEndpoints', 451 'projects/{project}/regions/{region}/notificationEndpoints/' 452 '{notificationEndpoint}', 453 {}, 454 ['project', 'region', 'notificationEndpoint'], 455 True 456 ) 457 REGIONOPERATIONS = ( 458 'regionOperations', 459 'projects/{project}/regions/{region}/operations/{operation}', 460 {}, 461 ['project', 'region', 'operation'], 462 True 463 ) 464 REGIONSSLCERTIFICATES = ( 465 'regionSslCertificates', 466 'projects/{project}/regions/{region}/sslCertificates/{sslCertificate}', 467 {}, 468 ['project', 'region', 'sslCertificate'], 469 True 470 ) 471 REGIONTARGETHTTPPROXIES = ( 472 'regionTargetHttpProxies', 473 'projects/{project}/regions/{region}/targetHttpProxies/' 474 '{targetHttpProxy}', 475 {}, 476 ['project', 'region', 'targetHttpProxy'], 477 True 478 ) 479 REGIONTARGETHTTPSPROXIES = ( 480 'regionTargetHttpsProxies', 481 'projects/{project}/regions/{region}/targetHttpsProxies/' 482 '{targetHttpsProxy}', 483 {}, 484 ['project', 'region', 'targetHttpsProxy'], 485 True 486 ) 487 REGIONURLMAPS = ( 488 'regionUrlMaps', 489 'projects/{project}/regions/{region}/urlMaps/{urlMap}', 490 {}, 491 ['project', 'region', 'urlMap'], 492 True 493 ) 494 REGIONS = ( 495 'regions', 496 'projects/{project}/regions/{region}', 497 {}, 498 ['project', 'region'], 499 True 500 ) 501 RESERVATIONS = ( 502 'reservations', 503 'projects/{project}/zones/{zone}/reservations/{reservation}', 504 {}, 505 ['project', 'zone', 'reservation'], 506 True 507 ) 508 RESOURCEPOLICIES = ( 509 'resourcePolicies', 510 'projects/{project}/regions/{region}/resourcePolicies/{resourcePolicy}', 511 {}, 512 ['project', 'region', 'resourcePolicy'], 513 True 514 ) 515 ROUTERS = ( 516 'routers', 517 'projects/{project}/regions/{region}/routers/{router}', 518 {}, 519 ['project', 'region', 'router'], 520 True 521 ) 522 ROUTES = ( 523 'routes', 524 'projects/{project}/global/routes/{route}', 525 {}, 526 ['project', 'route'], 527 True 528 ) 529 SECURITYPOLICIES = ( 530 'securityPolicies', 531 'projects/{project}/global/securityPolicies/{securityPolicy}', 532 {}, 533 ['project', 'securityPolicy'], 534 True 535 ) 536 SECURITYPOLICYRULES = ( 537 'securityPolicyRules', 538 'projects/{project}/global/securityPolicies/{securityPolicy}/' 539 'securityPolicyRules/{securityPolicyRule}', 540 {}, 541 ['project', 'securityPolicy', 'securityPolicyRule'], 542 True 543 ) 544 SERVICEATTACHMENTS = ( 545 'serviceAttachments', 546 'projects/{project}/regions/{region}/serviceAttachments/' 547 '{serviceAttachment}', 548 {}, 549 ['project', 'region', 'serviceAttachment'], 550 True 551 ) 552 SNAPSHOTS = ( 553 'snapshots', 554 'projects/{project}/global/snapshots/{snapshot}', 555 {}, 556 ['project', 'snapshot'], 557 True 558 ) 559 SSLCERTIFICATES = ( 560 'sslCertificates', 561 'projects/{project}/global/sslCertificates/{sslCertificate}', 562 {}, 563 ['project', 'sslCertificate'], 564 True 565 ) 566 SSLPOLICIES = ( 567 'sslPolicies', 568 'projects/{project}/global/sslPolicies/{sslPolicy}', 569 {}, 570 ['project', 'sslPolicy'], 571 True 572 ) 573 SUBNETWORKS = ( 574 'subnetworks', 575 'projects/{project}/regions/{region}/subnetworks/{subnetwork}', 576 {}, 577 ['project', 'region', 'subnetwork'], 578 True 579 ) 580 TARGETGRPCPROXIES = ( 581 'targetGrpcProxies', 582 'projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}', 583 {}, 584 ['project', 'targetGrpcProxy'], 585 True 586 ) 587 TARGETHTTPPROXIES = ( 588 'targetHttpProxies', 589 'projects/{project}/global/targetHttpProxies/{targetHttpProxy}', 590 {}, 591 ['project', 'targetHttpProxy'], 592 True 593 ) 594 TARGETHTTPSPROXIES = ( 595 'targetHttpsProxies', 596 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}', 597 {}, 598 ['project', 'targetHttpsProxy'], 599 True 600 ) 601 TARGETINSTANCES = ( 602 'targetInstances', 603 'projects/{project}/zones/{zone}/targetInstances/{targetInstance}', 604 {}, 605 ['project', 'zone', 'targetInstance'], 606 True 607 ) 608 TARGETPOOLS = ( 609 'targetPools', 610 'projects/{project}/regions/{region}/targetPools/{targetPool}', 611 {}, 612 ['project', 'region', 'targetPool'], 613 True 614 ) 615 TARGETSSLPROXIES = ( 616 'targetSslProxies', 617 'projects/{project}/global/targetSslProxies/{targetSslProxy}', 618 {}, 619 ['project', 'targetSslProxy'], 620 True 621 ) 622 TARGETTCPPROXIES = ( 623 'targetTcpProxies', 624 'projects/{project}/global/targetTcpProxies/{targetTcpProxy}', 625 {}, 626 ['project', 'targetTcpProxy'], 627 True 628 ) 629 TARGETVPNGATEWAYS = ( 630 'targetVpnGateways', 631 'projects/{project}/regions/{region}/targetVpnGateways/' 632 '{targetVpnGateway}', 633 {}, 634 ['project', 'region', 'targetVpnGateway'], 635 True 636 ) 637 URLMAPS = ( 638 'urlMaps', 639 'projects/{project}/global/urlMaps/{urlMap}', 640 {}, 641 ['project', 'urlMap'], 642 True 643 ) 644 VPNGATEWAYS = ( 645 'vpnGateways', 646 'projects/{project}/regions/{region}/vpnGateways/{vpnGateway}', 647 {}, 648 ['project', 'region', 'vpnGateway'], 649 True 650 ) 651 VPNTUNNELS = ( 652 'vpnTunnels', 653 'projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}', 654 {}, 655 ['project', 'region', 'vpnTunnel'], 656 True 657 ) 658 ZONEINPLACESNAPSHOTS = ( 659 'zoneInPlaceSnapshots', 660 'projects/{project}/zones/{zone}/inPlaceSnapshots/{inPlaceSnapshot}', 661 {}, 662 ['project', 'zone', 'inPlaceSnapshot'], 663 True 664 ) 665 ZONEINSTANTSNAPSHOTS = ( 666 'zoneInstantSnapshots', 667 'projects/{project}/zones/{zone}/instantSnapshots/{instantSnapshot}', 668 {}, 669 ['project', 'zone', 'instantSnapshot'], 670 True 671 ) 672 ZONEOPERATIONS = ( 673 'zoneOperations', 674 'projects/{project}/zones/{zone}/operations/{operation}', 675 {}, 676 ['project', 'zone', 'operation'], 677 True 678 ) 679 ZONES = ( 680 'zones', 681 'projects/{project}/zones/{zone}', 682 {}, 683 ['project', 'zone'], 684 True 685 ) 686 687 def __init__(self, collection_name, path, flat_paths, params, 688 enable_uri_parsing): 689 self.collection_name = collection_name 690 self.path = path 691 self.flat_paths = flat_paths 692 self.params = params 693 self.enable_uri_parsing = enable_uri_parsing 694