# common parameters

project:
  name: project
  collection: cloudresourcemanager.projects
  attributes:
  - &project
    parameter_name: project
    attribute_name: project
    help: The Google Cloud Platform project name.
    property: core/project

# This is a workaround necessary to make declarative implementations work with aggregatedList
# methods in certain conditions. Specifically, when a new resource's visibility is only on
# alpha level, we cannot refer to the "regular" project definition above, because
# `cloudresourcemanager` does not define an alpha version.
compute_project:
  name: compute_project
  collection: compute.projects
  attributes:
  - &compute_project
    parameter_name: project
    attribute_name: project
    help: The Google Cloud Platform project name.
    property: core/project

region:
  name: region
  collection: compute.regions
  attributes:
  - &region
    parameter_name: region
    attribute_name: region
    help: The name of the Google Compute Engine region.
    property: compute/region

zone:
  name: zone
  collection: compute.zones
  attributes:
  - &zone
    parameter_name: zone
    attribute_name: zone
    help: The name of the Google Compute Engine zone.
    property: compute/zone

# resource name parameters

preview_feature:
  name: preview feature
  collection: compute.previewFeatures
  attributes:
  - *compute_project
  - parameter_name: previewFeature
    attribute_name: preview_feature
    help: The name of the Google Compute Engine preview feature.

commitment:
  name: commitment
  collection: compute.regionCommitments
  attributes:
  - *project
  - *region
  - &commitment
    parameter_name: commitment
    attribute_name: commitment
    help: The name of the Google Compute Engine regional commitment.

composite_health_check:
  name: composite health check
  collection: compute.regionCompositeHealthChecks
  attributes:
  - *project
  - *region
  - parameter_name: compositeHealthCheck
    attribute_name: composite_health_check
    help: The name of the Google Compute Engine composite health check.

address:
  name: address
  collection: compute.addresses
  attributes:
  - *project
  - *region
  - parameter_name: address
    attribute_name: address
    help: The name of the Google Compute address.

firewall:
  name: firewall_rule
  collection: compute.firewalls
  attributes:
  - *project
  - parameter_name: firewall
    attribute_name: firewall
    help: The name of the Google Compute firewall rule.

disk:
  name: disk
  collection: compute.disks
  attributes:
  - *project
  - *zone
  - parameter_name: disk
    attribute_name: disk
    help: The name of the Google Compute Engine disk.

future_reservation:
  name: future reservation
  collection: compute.futureReservations
  attributes:
  - *project
  - *zone
  - &future_reservation
    parameter_name: futureReservation
    attribute_name: future_reservation
    help: The name of the Google Compute Engine future reservation.

health_aggregation_policy:
  name: health aggregation policy
  collection: compute.regionHealthAggregationPolicies
  attributes:
  - *project
  - *region
  - &health_aggregation_policy
    parameter_name: healthAggregationPolicy
    attribute_name: health_aggregation_policy
    help: The name of the Google Compute Engine health aggregation policy.

health_source:
  name: health source
  collection: compute.regionHealthSources
  attributes:
  - *project
  - *region
  - &health_source
    parameter_name: healthSource
    attribute_name: health_source
    help: The name of the Google Compute Engine health source.

image:
  name: image
  collection: compute.images
  attributes:
  - *project
  - parameter_name: image
    attribute_name: image
    help: The name of the Google Compute Engine image.

instance:
  name: instance
  collection: compute.instances
  attributes:
  - *project
  - *zone
  - parameter_name: instance
    attribute_name: instance
    help: The name of the Google Compute Engine instance.

instance_template:
  name: instance_template
  collection: compute.instanceTemplates
  attributes:
  - *project
  - parameter_name: instanceTemplate
    attribute_name: instance_template
    help: The name of the Google Compute Engine instance template.

network_profile:
  name: network_profile
  collection: compute.networkProfiles
  attributes:
  - *project
  - parameter_name: networkProfile
    attribute_name: network_profile
    help: The name of the Google Compute Engine network profile.

node_group:
  name: node_group
  collection: compute.nodeGroups
  attributes:
  - *project
  - *zone
  - parameter_name: nodeGroup
    attribute_name: node_group
    help: The name of the Google Compute Engine node group.

node_template:
  name: node_template
  collection: compute.nodeTemplates
  attributes:
  - *project
  - *region
  - parameter_name: nodeTemplate
    attribute_name: node_template
    help: The name of the Google Compute Engine node template.

queued_resource:
  name: queued_resource
  collection: compute.zoneQueuedResources
  attributes:
  - *project
  - *zone
  - parameter_name: queuedResource
    attribute_name: queued_resource
    help: The name of the Google Compute Engine queued resource.

reservation:
  name: reservation
  collection: compute.reservations
  attributes:
  - *project
  - *zone
  - &reservation
    parameter_name: reservation
    attribute_name: reservation
    help:
      The name of the Google Compute Engine reservation.

subnet:
  name: subnetwork
  collection: compute.subnetworks
  attributes:
  - *project
  - *region
  - parameter_name: subnetwork
    attribute_name: subnetwork
    help: The name of the Google Compute Engine subnetwork.

snapshot:
  name: snapshot
  collection: compute.snapshots
  attributes:
  - *project
  - parameter_name: snapshot
    attribute_name: snapshot_name
    help: The name of the Google Compute Engine snapshot.

storage_pool:
  name: storage pool
  collection: compute.storagePools
  attributes:
  - *compute_project
  - *zone
  - parameter_name: storagePool
    attribute_name: storage_pool
    help: The name of the Google Compute Engine storage pool.

storage_pool_type:
  name: storage pool type
  collection: compute.storagePoolTypes
  attributes:
  - *compute_project
  - *zone
  - parameter_name: storagePoolType
    attribute_name: storage_pool_type
    help: The name of the Google Compute Engine storage pool type.

machine_image:
  name: machine image
  collection: compute.machineImages
  attributes:
  - *project
  - parameter_name: machineImage
    attribute_name: machine_image
    help: The name of the Google Compute Engine machine image.

resource_policy:
  name: resource policy
  collection: compute.resourcePolicies
  attributes:
  - *project
  - *region
  - parameter_name: resourcePolicy
    attribute_name: resource_policy
    help: The name of the Google Compute Engine resource policy.

ssl_policy:
  name: ssl policy
  collection: compute.sslPolicies
  attributes:
  - *project
  - parameter_name: sslPolicy
    attribute_name: ssl_policy
    help: The name of the SSL policy.

backend_bucket:
  name: backend bucket
  collection: compute.backendBuckets
  attributes:
  - *project
  - parameter_name: backendBucket
    attribute_name: backend_bucket
    help: The name of the Google Compute Engine backend bucket.

backend_service:
  name: backend service
  collection: compute.regionBackendServices
  attributes:
  - *project
  - *region
  - parameter_name: backendService
    attribute_name: backend_service
    help: The name of the Google Compute Engine backend service.

target_grpc_proxy:
  name: target GRPC proxy
  collection: compute.targetGrpcProxies
  attributes:
  - *project
  - parameter_name: targetGrpcProxy
    attribute_name: target_grpc_proxy
    help: The name of the Google Compute Engine target GRPC proxy.

target_http_proxy:
  name: target HTTP proxy
  collection: compute.targetHttpProxies
  attributes:
  - *project
  - parameter_name: targetHttpProxy
    attribute_name: target_http_proxy
    help: The name of the Google Compute Engine target HTTP proxy.

target_https_proxy:
  name: target HTTPS proxy
  collection: compute.targetHttpsProxies
  attributes:
  - *project
  - parameter_name: targetHttpsProxy
    attribute_name: target_https_proxy
    help: The name of the Google Compute Engine target HTTPS proxy.

target_instance:
  name: target instance
  collection: compute.targetInstances
  attributes:
  - *project
  - *zone
  - parameter_name: targetInstance
    attribute_name: target_instance
    help: The name of the Google Compute Engine target instance.

target_ssl_proxy:
  name: target SSL proxy
  collection: compute.targetSslProxies
  attributes:
  - *project
  - parameter_name: targetSslProxy
    attribute_name: target_ssl_proxy
    help: The name of the Google Compute Engine target SSL proxy.

target_tcp_proxy:
  name: target TCP proxy
  collection: compute.targetTcpProxies
  attributes:
  - *project
  - parameter_name: targetTcpProxy
    attribute_name: target_tcp_proxy
    help: The name of the Google Compute Engine target TCP proxy.

target_vpn_gateway:
  name: target VPN gateway
  collection: compute.targetVpnGateways
  attributes:
  - *project
  - *region
  - parameter_name: targetVpnGateway
    attribute_name: target_vpn_gateway
    help: The name of the Google Compute Engine VPN gateway.

target_pool:
  name: target pool
  collection: compute.targetPools
  attributes:
  - *project
  - *region
  - parameter_name: targetPool
    attribute_name: target_pool
    help: The name of the Google Compute Engine target pool.

vpn_gateway:
  name: VPN gateway
  collection: compute.vpnGateways
  attributes:
  - *project
  - *region
  - parameter_name: vpnGateway
    attribute_name: vpn_gateway
    help: The name of the Google Compute Engine VPN gateway.

vpn_tunnel:
  name: VPN tunnel
  collection: compute.vpnTunnels
  attributes:
  - *project
  - *region
  - parameter_name: vpnTunnel
    attribute_name: vpn_tunnel
    help: The name of the Google Compute Engine VPN tunnel.

reliability_risk:
  name: Reliability Risk
  collection: compute.reliabilityRisks
  attributes:
  - *compute_project
  - parameter_name: reliabilityRisk
    attribute_name: reliability_risk
    help: The name of the Google Compute reliability risk.
