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/beta/' 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 MACHINEIMAGES = ( 241 'machineImages', 242 'projects/{project}/global/machineImages/{machineImage}', 243 {}, 244 ['project', 'machineImage'], 245 True 246 ) 247 MACHINETYPES = ( 248 'machineTypes', 249 'projects/{project}/zones/{zone}/machineTypes/{machineType}', 250 {}, 251 ['project', 'zone', 'machineType'], 252 True 253 ) 254 NETWORKENDPOINTGROUPS = ( 255 'networkEndpointGroups', 256 'projects/{project}/zones/{zone}/networkEndpointGroups/' 257 '{networkEndpointGroup}', 258 {}, 259 ['project', 'zone', 'networkEndpointGroup'], 260 True 261 ) 262 NETWORKS = ( 263 'networks', 264 'projects/{project}/global/networks/{network}', 265 {}, 266 ['project', 'network'], 267 True 268 ) 269 NEXTHOPGATEWAYS = ( 270 'nextHopGateways', 271 'projects/{project}/global/gateways/{nextHopGateway}', 272 {}, 273 ['project', 'nextHopGateway'], 274 True 275 ) 276 NODEGROUPS = ( 277 'nodeGroups', 278 'projects/{project}/zones/{zone}/nodeGroups/{nodeGroup}', 279 {}, 280 ['project', 'zone', 'nodeGroup'], 281 True 282 ) 283 NODETEMPLATES = ( 284 'nodeTemplates', 285 'projects/{project}/regions/{region}/nodeTemplates/{nodeTemplate}', 286 {}, 287 ['project', 'region', 'nodeTemplate'], 288 True 289 ) 290 NODETYPES = ( 291 'nodeTypes', 292 'projects/{project}/zones/{zone}/nodeTypes/{nodeType}', 293 {}, 294 ['project', 'zone', 'nodeType'], 295 True 296 ) 297 ORGANIZATIONSECURITYPOLICIES = ( 298 'organizationSecurityPolicies', 299 'locations/global/securityPolicies/{securityPolicy}', 300 {}, 301 ['securityPolicy'], 302 True 303 ) 304 PACKETMIRRORINGS = ( 305 'packetMirrorings', 306 'projects/{project}/regions/{region}/packetMirrorings/{packetMirroring}', 307 {}, 308 ['project', 'region', 'packetMirroring'], 309 True 310 ) 311 PROJECTS = ( 312 'projects', 313 'projects/{project}', 314 {}, 315 ['project'], 316 True 317 ) 318 PUBLICADVERTISEDPREFIXES = ( 319 'publicAdvertisedPrefixes', 320 'projects/{project}/global/publicAdvertisedPrefixes/' 321 '{publicAdvertisedPrefix}', 322 {}, 323 ['project', 'publicAdvertisedPrefix'], 324 True 325 ) 326 PUBLICDELEGATEDPREFIXES = ( 327 'publicDelegatedPrefixes', 328 'projects/{project}/regions/{region}/publicDelegatedPrefixes/' 329 '{publicDelegatedPrefix}', 330 {}, 331 ['project', 'region', 'publicDelegatedPrefix'], 332 True 333 ) 334 REGIONACCELERATORTYPES = ( 335 'regionAcceleratorTypes', 336 'projects/{project}/regions/{region}/acceleratorTypes/{acceleratorType}', 337 {}, 338 ['project', 'region', 'acceleratorType'], 339 True 340 ) 341 REGIONAUTOSCALERS = ( 342 'regionAutoscalers', 343 'projects/{project}/regions/{region}/autoscalers/{autoscaler}', 344 {}, 345 ['project', 'region', 'autoscaler'], 346 True 347 ) 348 REGIONBACKENDSERVICES = ( 349 'regionBackendServices', 350 'projects/{project}/regions/{region}/backendServices/{backendService}', 351 {}, 352 ['project', 'region', 'backendService'], 353 True 354 ) 355 REGIONCOMMITMENTS = ( 356 'regionCommitments', 357 'projects/{project}/regions/{region}/commitments/{commitment}', 358 {}, 359 ['project', 'region', 'commitment'], 360 True 361 ) 362 REGIONDISKTYPES = ( 363 'regionDiskTypes', 364 'projects/{project}/regions/{region}/diskTypes/{diskType}', 365 {}, 366 ['project', 'region', 'diskType'], 367 True 368 ) 369 REGIONDISKS = ( 370 'regionDisks', 371 'projects/{project}/regions/{region}/disks/{disk}', 372 {}, 373 ['project', 'region', 'disk'], 374 True 375 ) 376 REGIONHEALTHCHECKSERVICES = ( 377 'regionHealthCheckServices', 378 'projects/{project}/regions/{region}/healthCheckServices/' 379 '{healthCheckService}', 380 {}, 381 ['project', 'region', 'healthCheckService'], 382 True 383 ) 384 REGIONHEALTHCHECKS = ( 385 'regionHealthChecks', 386 'projects/{project}/regions/{region}/healthChecks/{healthCheck}', 387 {}, 388 ['project', 'region', 'healthCheck'], 389 True 390 ) 391 REGIONINSTANCEGROUPMANAGERS = ( 392 'regionInstanceGroupManagers', 393 'projects/{project}/regions/{region}/instanceGroupManagers/' 394 '{instanceGroupManager}', 395 {}, 396 ['project', 'region', 'instanceGroupManager'], 397 True 398 ) 399 REGIONINSTANCEGROUPS = ( 400 'regionInstanceGroups', 401 'projects/{project}/regions/{region}/instanceGroups/{instanceGroup}', 402 {}, 403 ['project', 'region', 'instanceGroup'], 404 True 405 ) 406 REGIONNETWORKENDPOINTGROUPS = ( 407 'regionNetworkEndpointGroups', 408 'projects/{project}/regions/{region}/networkEndpointGroups/' 409 '{networkEndpointGroup}', 410 {}, 411 ['project', 'region', 'networkEndpointGroup'], 412 True 413 ) 414 REGIONNOTIFICATIONENDPOINTS = ( 415 'regionNotificationEndpoints', 416 'projects/{project}/regions/{region}/notificationEndpoints/' 417 '{notificationEndpoint}', 418 {}, 419 ['project', 'region', 'notificationEndpoint'], 420 True 421 ) 422 REGIONOPERATIONS = ( 423 'regionOperations', 424 'projects/{project}/regions/{region}/operations/{operation}', 425 {}, 426 ['project', 'region', 'operation'], 427 True 428 ) 429 REGIONSSLCERTIFICATES = ( 430 'regionSslCertificates', 431 'projects/{project}/regions/{region}/sslCertificates/{sslCertificate}', 432 {}, 433 ['project', 'region', 'sslCertificate'], 434 True 435 ) 436 REGIONTARGETHTTPPROXIES = ( 437 'regionTargetHttpProxies', 438 'projects/{project}/regions/{region}/targetHttpProxies/' 439 '{targetHttpProxy}', 440 {}, 441 ['project', 'region', 'targetHttpProxy'], 442 True 443 ) 444 REGIONTARGETHTTPSPROXIES = ( 445 'regionTargetHttpsProxies', 446 'projects/{project}/regions/{region}/targetHttpsProxies/' 447 '{targetHttpsProxy}', 448 {}, 449 ['project', 'region', 'targetHttpsProxy'], 450 True 451 ) 452 REGIONURLMAPS = ( 453 'regionUrlMaps', 454 'projects/{project}/regions/{region}/urlMaps/{urlMap}', 455 {}, 456 ['project', 'region', 'urlMap'], 457 True 458 ) 459 REGIONS = ( 460 'regions', 461 'projects/{project}/regions/{region}', 462 {}, 463 ['project', 'region'], 464 True 465 ) 466 RESERVATIONS = ( 467 'reservations', 468 'projects/{project}/zones/{zone}/reservations/{reservation}', 469 {}, 470 ['project', 'zone', 'reservation'], 471 True 472 ) 473 RESOURCEPOLICIES = ( 474 'resourcePolicies', 475 'projects/{project}/regions/{region}/resourcePolicies/{resourcePolicy}', 476 {}, 477 ['project', 'region', 'resourcePolicy'], 478 True 479 ) 480 ROUTERS = ( 481 'routers', 482 'projects/{project}/regions/{region}/routers/{router}', 483 {}, 484 ['project', 'region', 'router'], 485 True 486 ) 487 ROUTES = ( 488 'routes', 489 'projects/{project}/global/routes/{route}', 490 {}, 491 ['project', 'route'], 492 True 493 ) 494 SECURITYPOLICIES = ( 495 'securityPolicies', 496 'projects/{project}/global/securityPolicies/{securityPolicy}', 497 {}, 498 ['project', 'securityPolicy'], 499 True 500 ) 501 SECURITYPOLICYRULES = ( 502 'securityPolicyRules', 503 'projects/{project}/global/securityPolicies/{securityPolicy}/' 504 'securityPolicyRules/{securityPolicyRule}', 505 {}, 506 ['project', 'securityPolicy', 'securityPolicyRule'], 507 True 508 ) 509 SERVICEATTACHMENTS = ( 510 'serviceAttachments', 511 'projects/{project}/regions/{region}/serviceAttachments/' 512 '{serviceAttachment}', 513 {}, 514 ['project', 'region', 'serviceAttachment'], 515 True 516 ) 517 SNAPSHOTS = ( 518 'snapshots', 519 'projects/{project}/global/snapshots/{snapshot}', 520 {}, 521 ['project', 'snapshot'], 522 True 523 ) 524 SSLCERTIFICATES = ( 525 'sslCertificates', 526 'projects/{project}/global/sslCertificates/{sslCertificate}', 527 {}, 528 ['project', 'sslCertificate'], 529 True 530 ) 531 SSLPOLICIES = ( 532 'sslPolicies', 533 'projects/{project}/global/sslPolicies/{sslPolicy}', 534 {}, 535 ['project', 'sslPolicy'], 536 True 537 ) 538 SUBNETWORKS = ( 539 'subnetworks', 540 'projects/{project}/regions/{region}/subnetworks/{subnetwork}', 541 {}, 542 ['project', 'region', 'subnetwork'], 543 True 544 ) 545 TARGETGRPCPROXIES = ( 546 'targetGrpcProxies', 547 'projects/{project}/global/targetGrpcProxies/{targetGrpcProxy}', 548 {}, 549 ['project', 'targetGrpcProxy'], 550 True 551 ) 552 TARGETHTTPPROXIES = ( 553 'targetHttpProxies', 554 'projects/{project}/global/targetHttpProxies/{targetHttpProxy}', 555 {}, 556 ['project', 'targetHttpProxy'], 557 True 558 ) 559 TARGETHTTPSPROXIES = ( 560 'targetHttpsProxies', 561 'projects/{project}/global/targetHttpsProxies/{targetHttpsProxy}', 562 {}, 563 ['project', 'targetHttpsProxy'], 564 True 565 ) 566 TARGETINSTANCES = ( 567 'targetInstances', 568 'projects/{project}/zones/{zone}/targetInstances/{targetInstance}', 569 {}, 570 ['project', 'zone', 'targetInstance'], 571 True 572 ) 573 TARGETPOOLS = ( 574 'targetPools', 575 'projects/{project}/regions/{region}/targetPools/{targetPool}', 576 {}, 577 ['project', 'region', 'targetPool'], 578 True 579 ) 580 TARGETSSLPROXIES = ( 581 'targetSslProxies', 582 'projects/{project}/global/targetSslProxies/{targetSslProxy}', 583 {}, 584 ['project', 'targetSslProxy'], 585 True 586 ) 587 TARGETTCPPROXIES = ( 588 'targetTcpProxies', 589 'projects/{project}/global/targetTcpProxies/{targetTcpProxy}', 590 {}, 591 ['project', 'targetTcpProxy'], 592 True 593 ) 594 TARGETVPNGATEWAYS = ( 595 'targetVpnGateways', 596 'projects/{project}/regions/{region}/targetVpnGateways/' 597 '{targetVpnGateway}', 598 {}, 599 ['project', 'region', 'targetVpnGateway'], 600 True 601 ) 602 URLMAPS = ( 603 'urlMaps', 604 'projects/{project}/global/urlMaps/{urlMap}', 605 {}, 606 ['project', 'urlMap'], 607 True 608 ) 609 VPNGATEWAYS = ( 610 'vpnGateways', 611 'projects/{project}/regions/{region}/vpnGateways/{vpnGateway}', 612 {}, 613 ['project', 'region', 'vpnGateway'], 614 True 615 ) 616 VPNTUNNELS = ( 617 'vpnTunnels', 618 'projects/{project}/regions/{region}/vpnTunnels/{vpnTunnel}', 619 {}, 620 ['project', 'region', 'vpnTunnel'], 621 True 622 ) 623 ZONEOPERATIONS = ( 624 'zoneOperations', 625 'projects/{project}/zones/{zone}/operations/{operation}', 626 {}, 627 ['project', 'zone', 'operation'], 628 True 629 ) 630 ZONES = ( 631 'zones', 632 'projects/{project}/zones/{zone}', 633 {}, 634 ['project', 'zone'], 635 True 636 ) 637 638 def __init__(self, collection_name, path, flat_paths, params, 639 enable_uri_parsing): 640 self.collection_name = collection_name 641 self.path = path 642 self.flat_paths = flat_paths 643 self.params = params 644 self.enable_uri_parsing = enable_uri_parsing 645