project:
  name: project
  collection: networkservices.projects
  attributes:
  - &project
    parameter_name: projectsId
    attribute_name: project
    help: |
      The project ID.
    property: core/project

location:
  name: location
  collection: networkservices.projects.locations
  attributes:
  - *project
  - &location
    parameter_name: locationsId
    attribute_name: location
    help: |
      Cloud region in which the resource is located.

optionalLocation:
  name: location
  collection: networkservices.projects.locations
  attributes:
  - *project
  - &optionalLocation
    parameter_name: locationsId
    attribute_name: location
    help: |
      The location ID.
    fallthroughs:
    # If the location is not specified, assume 'global' by default.
    - hook: googlecloudsdk.command_lib.service_extensions.util:SetLocationAsGlobal
      hint: use global location

lbTrafficExtension:
  name: LbTrafficExtension
  collection: networkservices.projects.locations.lbTrafficExtensions
  request_id_field: lbTrafficExtensionId
  attributes:
  - *project
  - *location
  - &lbTrafficExtension:
    parameter_name: lbTrafficExtensionsId
    attribute_name: lb_traffic_extension
    help: |
      The ID of the `LbTrafficExtension`.

lbRouteExtension:
  name: LbRouteExtension
  collection: networkservices.projects.locations.lbRouteExtensions
  request_id_field: lbRouteExtensionId
  attributes:
  - *project
  - *location
  - &lbRouteExtension:
    parameter_name: lbRouteExtensionsId
    attribute_name: lb_route_extension
    help: |
      The ID of the `LbRouteExtension`.

lbEdgeExtension:
  name: LbEdgeExtension
  collection: networkservices.projects.locations.lbEdgeExtensions
  request_id_field: lbEdgeExtensionId
  attributes:
  - *project
  - *location
  - &lbEdgeExtension:
    parameter_name: lbEdgeExtensionsId
    attribute_name: lb_edge_extension
    help: |
      The ID of the `LbEdgeExtension`.

lbTcpExtension:
  name: LbTcpExtension
  collection: networkservices.projects.locations.lbTcpExtensions
  request_id_field: lbTcpExtensionId
  attributes:
  - *project
  - *location
  - &lbTcpExtension:
    parameter_name: lbTcpExtensionsId
    attribute_name: lb_tcp_extension
    help: |
      The ID of the `LbTcpExtension`.

swpSecurityExtension:
  name: SwpSecurityExtension
  collection: networkservices.projects.locations.swpSecurityExtensions
  request_id_field: swpSecurityExtensionId
  attributes:
  - *project
  - *location
  - &swpSecurityExtension:
    parameter_name: swpSecurityExtensionsId
    attribute_name: swp_security_extension
    help: |
      The ID of the `SwpSecurityExtension`.

lbObservabilityExtension:
  name: LbObservabilityExtension
  collection: networkservices.projects.locations.lbObservabilityExtensions
  request_id_field: lbObservabilityExtensionId
  attributes:
  - *project
  - *location
  - &lbObservabilityExtension:
    parameter_name: lbObservabilityExtensionsId
    attribute_name: lb_observability_extension
    help: |
      The ID of the `LbObservabilityExtension`.

authzExtension:
  name: AuthzExtension
  collection: networkservices.projects.locations.authzExtensions
  request_id_field: authzExtensionId
  attributes:
  - *project
  - *location
  - &authzExtension:
    parameter_name: authzExtensionsId
    attribute_name: authz_extension
    help: |
      The ID of the `AuthzExtension`.

wasmAction:
  name: WasmAction
  collection: networkservices.projects.locations.wasmActions
  request_id_field: wasmActionId
  attributes:
  - *project
  - *optionalLocation
  - &wasmAction
    parameter_name: wasmActionsId
    attribute_name: wasm_action
    help: The ID of the `WasmAction`.

wasmPlugin:
  name: WasmPlugin
  collection: networkservices.projects.locations.wasmPlugins
  request_id_field: wasmPluginId
  attributes:
  - *project
  - *optionalLocation
  - &wasmPlugin
    parameter_name: wasmPluginsId
    attribute_name: wasm_plugin
    help: The ID of the `WasmPlugin`.

wasmPluginVersion:
  name: WasmPluginVersion
  collection: networkservices.projects.locations.wasmPlugins.versions
  request_id_field: wasmPluginVersionId
  attributes:
  - *project
  - *optionalLocation
  - *wasmPlugin
  - &version
    parameter_name: versionsId
    attribute_name: wasm_plugin_version
    help: The ID of the `WasmPluginVersion`.
