<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="baremetalsolution_v2.html">Bare Metal Solution API</a> . <a href="baremetalsolution_v2.projects.html">projects</a> . <a href="baremetalsolution_v2.projects.locations.html">locations</a> . <a href="baremetalsolution_v2.projects.locations.provisioningConfigs.html">provisioningConfigs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, email=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create new ProvisioningConfig.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get ProvisioningConfig by name.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, email=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update existing ProvisioningConfig.</p>
<p class="toc_element">
  <code><a href="#submit">submit(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Submit a provisiong configuration for a given project.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, email=None, x__xgafv=None)</code>
  <pre>Create new ProvisioningConfig.

Args:
  parent: string, Required. The parent project and location containing the ProvisioningConfig. (required)
  body: object, The request body.
    The object takes the form of:

{ # A provisioning configuration.
  &quot;cloudConsoleUri&quot;: &quot;A String&quot;, # Output only. URI to Cloud Console UI view of this provisioning config.
  &quot;email&quot;: &quot;A String&quot;, # Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.
  &quot;handoverServiceAccount&quot;: &quot;A String&quot;, # A service account to enable customers to access instance credentials upon handover.
  &quot;instances&quot;: [ # Instances to be created.
    { # Configuration parameters for a new instance.
      &quot;accountNetworksEnabled&quot;: True or False, # If true networks can be from different projects of the same vendor account.
      &quot;clientNetwork&quot;: { # A network. # Client network address.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;hyperthreading&quot;: True or False, # Whether the instance should be provisioned with Hyperthreading enabled.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to idenfity an instance within an ProvisioningConfig request.
      &quot;instanceType&quot;: &quot;A String&quot;, # Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the instance config.
      &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team .
    },
  ],
  &quot;location&quot;: &quot;A String&quot;, # Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the provisioning config.
  &quot;networks&quot;: [ # Networks to be created.
    { # Configuration parameters for a new network.
      &quot;bandwidth&quot;: &quot;A String&quot;, # Interconnect bandwidth. Set only when type is CLIENT.
      &quot;cidr&quot;: &quot;A String&quot;, # CIDR range of the network.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the network config.
      &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
      &quot;type&quot;: &quot;A String&quot;, # The type of this network, either Client or Private.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
      &quot;vlanAttachments&quot;: [ # List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).
        { # A GCP vlan attachment.
          &quot;id&quot;: &quot;A String&quot;, # Identifier of the VLAN attachment.
          &quot;pairingKey&quot;: &quot;A String&quot;, # Attachment pairing key.
        },
      ],
      &quot;vlanSameProject&quot;: True or False, # Whether the VLAN attachment pair is located in the same project.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of ProvisioningConfig.
  &quot;ticketId&quot;: &quot;A String&quot;, # A generated buganizer id to track provisioning request.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last update timestamp.
  &quot;volumes&quot;: [ # Volumes to be created.
    { # Configuration parameters for a new volume.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
        { # A LUN(Logical Unit Number) range.
          &quot;quantity&quot;: 42, # Number of LUNs to create.
          &quot;sizeGb&quot;: 42, # The requested size of each LUN, in GB.
        },
      ],
      &quot;machineIds&quot;: [ # Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the volume config.
      &quot;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
        { # A NFS export entry.
          &quot;allowDev&quot;: True or False, # Allow dev flag in NfsShare AllowedClientsRequest.
          &quot;allowSuid&quot;: True or False, # Allow the setuid flag.
          &quot;cidr&quot;: &quot;A String&quot;, # A CIDR range.
          &quot;machineId&quot;: &quot;A String&quot;, # Either a single machine, identified by an ID, or a comma-separated list of machine IDs.
          &quot;networkId&quot;: &quot;A String&quot;, # Network to use to publish the export.
          &quot;noRootSquash&quot;: True or False, # Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.
          &quot;permissions&quot;: &quot;A String&quot;, # Export permissions.
        },
      ],
      &quot;protocol&quot;: &quot;A String&quot;, # Volume protocol.
      &quot;sizeGb&quot;: 42, # The requested size of this volume, in GB.
      &quot;snapshotsEnabled&quot;: True or False, # Whether snapshots should be enabled.
      &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
    },
  ],
}

  email: string, Optional. Email provided to send a confirmation with provisioning config to.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A provisioning configuration.
  &quot;cloudConsoleUri&quot;: &quot;A String&quot;, # Output only. URI to Cloud Console UI view of this provisioning config.
  &quot;email&quot;: &quot;A String&quot;, # Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.
  &quot;handoverServiceAccount&quot;: &quot;A String&quot;, # A service account to enable customers to access instance credentials upon handover.
  &quot;instances&quot;: [ # Instances to be created.
    { # Configuration parameters for a new instance.
      &quot;accountNetworksEnabled&quot;: True or False, # If true networks can be from different projects of the same vendor account.
      &quot;clientNetwork&quot;: { # A network. # Client network address.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;hyperthreading&quot;: True or False, # Whether the instance should be provisioned with Hyperthreading enabled.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to idenfity an instance within an ProvisioningConfig request.
      &quot;instanceType&quot;: &quot;A String&quot;, # Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the instance config.
      &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team .
    },
  ],
  &quot;location&quot;: &quot;A String&quot;, # Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the provisioning config.
  &quot;networks&quot;: [ # Networks to be created.
    { # Configuration parameters for a new network.
      &quot;bandwidth&quot;: &quot;A String&quot;, # Interconnect bandwidth. Set only when type is CLIENT.
      &quot;cidr&quot;: &quot;A String&quot;, # CIDR range of the network.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the network config.
      &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
      &quot;type&quot;: &quot;A String&quot;, # The type of this network, either Client or Private.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
      &quot;vlanAttachments&quot;: [ # List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).
        { # A GCP vlan attachment.
          &quot;id&quot;: &quot;A String&quot;, # Identifier of the VLAN attachment.
          &quot;pairingKey&quot;: &quot;A String&quot;, # Attachment pairing key.
        },
      ],
      &quot;vlanSameProject&quot;: True or False, # Whether the VLAN attachment pair is located in the same project.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of ProvisioningConfig.
  &quot;ticketId&quot;: &quot;A String&quot;, # A generated buganizer id to track provisioning request.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last update timestamp.
  &quot;volumes&quot;: [ # Volumes to be created.
    { # Configuration parameters for a new volume.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
        { # A LUN(Logical Unit Number) range.
          &quot;quantity&quot;: 42, # Number of LUNs to create.
          &quot;sizeGb&quot;: 42, # The requested size of each LUN, in GB.
        },
      ],
      &quot;machineIds&quot;: [ # Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the volume config.
      &quot;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
        { # A NFS export entry.
          &quot;allowDev&quot;: True or False, # Allow dev flag in NfsShare AllowedClientsRequest.
          &quot;allowSuid&quot;: True or False, # Allow the setuid flag.
          &quot;cidr&quot;: &quot;A String&quot;, # A CIDR range.
          &quot;machineId&quot;: &quot;A String&quot;, # Either a single machine, identified by an ID, or a comma-separated list of machine IDs.
          &quot;networkId&quot;: &quot;A String&quot;, # Network to use to publish the export.
          &quot;noRootSquash&quot;: True or False, # Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.
          &quot;permissions&quot;: &quot;A String&quot;, # Export permissions.
        },
      ],
      &quot;protocol&quot;: &quot;A String&quot;, # Volume protocol.
      &quot;sizeGb&quot;: 42, # The requested size of this volume, in GB.
      &quot;snapshotsEnabled&quot;: True or False, # Whether snapshots should be enabled.
      &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get ProvisioningConfig by name.

Args:
  name: string, Required. Name of the ProvisioningConfig. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A provisioning configuration.
  &quot;cloudConsoleUri&quot;: &quot;A String&quot;, # Output only. URI to Cloud Console UI view of this provisioning config.
  &quot;email&quot;: &quot;A String&quot;, # Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.
  &quot;handoverServiceAccount&quot;: &quot;A String&quot;, # A service account to enable customers to access instance credentials upon handover.
  &quot;instances&quot;: [ # Instances to be created.
    { # Configuration parameters for a new instance.
      &quot;accountNetworksEnabled&quot;: True or False, # If true networks can be from different projects of the same vendor account.
      &quot;clientNetwork&quot;: { # A network. # Client network address.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;hyperthreading&quot;: True or False, # Whether the instance should be provisioned with Hyperthreading enabled.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to idenfity an instance within an ProvisioningConfig request.
      &quot;instanceType&quot;: &quot;A String&quot;, # Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the instance config.
      &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team .
    },
  ],
  &quot;location&quot;: &quot;A String&quot;, # Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the provisioning config.
  &quot;networks&quot;: [ # Networks to be created.
    { # Configuration parameters for a new network.
      &quot;bandwidth&quot;: &quot;A String&quot;, # Interconnect bandwidth. Set only when type is CLIENT.
      &quot;cidr&quot;: &quot;A String&quot;, # CIDR range of the network.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the network config.
      &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
      &quot;type&quot;: &quot;A String&quot;, # The type of this network, either Client or Private.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
      &quot;vlanAttachments&quot;: [ # List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).
        { # A GCP vlan attachment.
          &quot;id&quot;: &quot;A String&quot;, # Identifier of the VLAN attachment.
          &quot;pairingKey&quot;: &quot;A String&quot;, # Attachment pairing key.
        },
      ],
      &quot;vlanSameProject&quot;: True or False, # Whether the VLAN attachment pair is located in the same project.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of ProvisioningConfig.
  &quot;ticketId&quot;: &quot;A String&quot;, # A generated buganizer id to track provisioning request.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last update timestamp.
  &quot;volumes&quot;: [ # Volumes to be created.
    { # Configuration parameters for a new volume.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
        { # A LUN(Logical Unit Number) range.
          &quot;quantity&quot;: 42, # Number of LUNs to create.
          &quot;sizeGb&quot;: 42, # The requested size of each LUN, in GB.
        },
      ],
      &quot;machineIds&quot;: [ # Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the volume config.
      &quot;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
        { # A NFS export entry.
          &quot;allowDev&quot;: True or False, # Allow dev flag in NfsShare AllowedClientsRequest.
          &quot;allowSuid&quot;: True or False, # Allow the setuid flag.
          &quot;cidr&quot;: &quot;A String&quot;, # A CIDR range.
          &quot;machineId&quot;: &quot;A String&quot;, # Either a single machine, identified by an ID, or a comma-separated list of machine IDs.
          &quot;networkId&quot;: &quot;A String&quot;, # Network to use to publish the export.
          &quot;noRootSquash&quot;: True or False, # Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.
          &quot;permissions&quot;: &quot;A String&quot;, # Export permissions.
        },
      ],
      &quot;protocol&quot;: &quot;A String&quot;, # Volume protocol.
      &quot;sizeGb&quot;: 42, # The requested size of this volume, in GB.
      &quot;snapshotsEnabled&quot;: True or False, # Whether snapshots should be enabled.
      &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, email=None, updateMask=None, x__xgafv=None)</code>
  <pre>Update existing ProvisioningConfig.

Args:
  name: string, Output only. The name of the provisioning config. (required)
  body: object, The request body.
    The object takes the form of:

{ # A provisioning configuration.
  &quot;cloudConsoleUri&quot;: &quot;A String&quot;, # Output only. URI to Cloud Console UI view of this provisioning config.
  &quot;email&quot;: &quot;A String&quot;, # Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.
  &quot;handoverServiceAccount&quot;: &quot;A String&quot;, # A service account to enable customers to access instance credentials upon handover.
  &quot;instances&quot;: [ # Instances to be created.
    { # Configuration parameters for a new instance.
      &quot;accountNetworksEnabled&quot;: True or False, # If true networks can be from different projects of the same vendor account.
      &quot;clientNetwork&quot;: { # A network. # Client network address.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;hyperthreading&quot;: True or False, # Whether the instance should be provisioned with Hyperthreading enabled.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to idenfity an instance within an ProvisioningConfig request.
      &quot;instanceType&quot;: &quot;A String&quot;, # Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the instance config.
      &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team .
    },
  ],
  &quot;location&quot;: &quot;A String&quot;, # Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the provisioning config.
  &quot;networks&quot;: [ # Networks to be created.
    { # Configuration parameters for a new network.
      &quot;bandwidth&quot;: &quot;A String&quot;, # Interconnect bandwidth. Set only when type is CLIENT.
      &quot;cidr&quot;: &quot;A String&quot;, # CIDR range of the network.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the network config.
      &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
      &quot;type&quot;: &quot;A String&quot;, # The type of this network, either Client or Private.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
      &quot;vlanAttachments&quot;: [ # List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).
        { # A GCP vlan attachment.
          &quot;id&quot;: &quot;A String&quot;, # Identifier of the VLAN attachment.
          &quot;pairingKey&quot;: &quot;A String&quot;, # Attachment pairing key.
        },
      ],
      &quot;vlanSameProject&quot;: True or False, # Whether the VLAN attachment pair is located in the same project.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of ProvisioningConfig.
  &quot;ticketId&quot;: &quot;A String&quot;, # A generated buganizer id to track provisioning request.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last update timestamp.
  &quot;volumes&quot;: [ # Volumes to be created.
    { # Configuration parameters for a new volume.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
        { # A LUN(Logical Unit Number) range.
          &quot;quantity&quot;: 42, # Number of LUNs to create.
          &quot;sizeGb&quot;: 42, # The requested size of each LUN, in GB.
        },
      ],
      &quot;machineIds&quot;: [ # Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the volume config.
      &quot;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
        { # A NFS export entry.
          &quot;allowDev&quot;: True or False, # Allow dev flag in NfsShare AllowedClientsRequest.
          &quot;allowSuid&quot;: True or False, # Allow the setuid flag.
          &quot;cidr&quot;: &quot;A String&quot;, # A CIDR range.
          &quot;machineId&quot;: &quot;A String&quot;, # Either a single machine, identified by an ID, or a comma-separated list of machine IDs.
          &quot;networkId&quot;: &quot;A String&quot;, # Network to use to publish the export.
          &quot;noRootSquash&quot;: True or False, # Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.
          &quot;permissions&quot;: &quot;A String&quot;, # Export permissions.
        },
      ],
      &quot;protocol&quot;: &quot;A String&quot;, # Volume protocol.
      &quot;sizeGb&quot;: 42, # The requested size of this volume, in GB.
      &quot;snapshotsEnabled&quot;: True or False, # Whether snapshots should be enabled.
      &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
    },
  ],
}

  email: string, Optional. Email provided to send a confirmation with provisioning config to.
  updateMask: string, Required. The list of fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A provisioning configuration.
  &quot;cloudConsoleUri&quot;: &quot;A String&quot;, # Output only. URI to Cloud Console UI view of this provisioning config.
  &quot;email&quot;: &quot;A String&quot;, # Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.
  &quot;handoverServiceAccount&quot;: &quot;A String&quot;, # A service account to enable customers to access instance credentials upon handover.
  &quot;instances&quot;: [ # Instances to be created.
    { # Configuration parameters for a new instance.
      &quot;accountNetworksEnabled&quot;: True or False, # If true networks can be from different projects of the same vendor account.
      &quot;clientNetwork&quot;: { # A network. # Client network address.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;hyperthreading&quot;: True or False, # Whether the instance should be provisioned with Hyperthreading enabled.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to idenfity an instance within an ProvisioningConfig request.
      &quot;instanceType&quot;: &quot;A String&quot;, # Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the instance config.
      &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
      &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
        &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
        &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
      },
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team .
    },
  ],
  &quot;location&quot;: &quot;A String&quot;, # Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the provisioning config.
  &quot;networks&quot;: [ # Networks to be created.
    { # Configuration parameters for a new network.
      &quot;bandwidth&quot;: &quot;A String&quot;, # Interconnect bandwidth. Set only when type is CLIENT.
      &quot;cidr&quot;: &quot;A String&quot;, # CIDR range of the network.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the network config.
      &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
      &quot;type&quot;: &quot;A String&quot;, # The type of this network, either Client or Private.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
      &quot;vlanAttachments&quot;: [ # List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).
        { # A GCP vlan attachment.
          &quot;id&quot;: &quot;A String&quot;, # Identifier of the VLAN attachment.
          &quot;pairingKey&quot;: &quot;A String&quot;, # Attachment pairing key.
        },
      ],
      &quot;vlanSameProject&quot;: True or False, # Whether the VLAN attachment pair is located in the same project.
    },
  ],
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of ProvisioningConfig.
  &quot;ticketId&quot;: &quot;A String&quot;, # A generated buganizer id to track provisioning request.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last update timestamp.
  &quot;volumes&quot;: [ # Volumes to be created.
    { # Configuration parameters for a new volume.
      &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
        { # A LUN(Logical Unit Number) range.
          &quot;quantity&quot;: 42, # Number of LUNs to create.
          &quot;sizeGb&quot;: 42, # The requested size of each LUN, in GB.
        },
      ],
      &quot;machineIds&quot;: [ # Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the volume config.
      &quot;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
        { # A NFS export entry.
          &quot;allowDev&quot;: True or False, # Allow dev flag in NfsShare AllowedClientsRequest.
          &quot;allowSuid&quot;: True or False, # Allow the setuid flag.
          &quot;cidr&quot;: &quot;A String&quot;, # A CIDR range.
          &quot;machineId&quot;: &quot;A String&quot;, # Either a single machine, identified by an ID, or a comma-separated list of machine IDs.
          &quot;networkId&quot;: &quot;A String&quot;, # Network to use to publish the export.
          &quot;noRootSquash&quot;: True or False, # Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.
          &quot;permissions&quot;: &quot;A String&quot;, # Export permissions.
        },
      ],
      &quot;protocol&quot;: &quot;A String&quot;, # Volume protocol.
      &quot;sizeGb&quot;: 42, # The requested size of this volume, in GB.
      &quot;snapshotsEnabled&quot;: True or False, # Whether snapshots should be enabled.
      &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
      &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="submit">submit(parent, body=None, x__xgafv=None)</code>
  <pre>Submit a provisiong configuration for a given project.

Args:
  parent: string, Required. The parent project and location containing the ProvisioningConfig. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for SubmitProvisioningConfig.
  &quot;email&quot;: &quot;A String&quot;, # Optional. Email provided to send a confirmation with provisioning config to.
  &quot;provisioningConfig&quot;: { # A provisioning configuration. # Required. The ProvisioningConfig to create.
    &quot;cloudConsoleUri&quot;: &quot;A String&quot;, # Output only. URI to Cloud Console UI view of this provisioning config.
    &quot;email&quot;: &quot;A String&quot;, # Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.
    &quot;handoverServiceAccount&quot;: &quot;A String&quot;, # A service account to enable customers to access instance credentials upon handover.
    &quot;instances&quot;: [ # Instances to be created.
      { # Configuration parameters for a new instance.
        &quot;accountNetworksEnabled&quot;: True or False, # If true networks can be from different projects of the same vendor account.
        &quot;clientNetwork&quot;: { # A network. # Client network address.
          &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
          &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
          &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
        },
        &quot;hyperthreading&quot;: True or False, # Whether the instance should be provisioned with Hyperthreading enabled.
        &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to idenfity an instance within an ProvisioningConfig request.
        &quot;instanceType&quot;: &quot;A String&quot;, # Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
        &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the instance config.
        &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
        &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
          &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
          &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
          &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
        },
        &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team .
      },
    ],
    &quot;location&quot;: &quot;A String&quot;, # Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the provisioning config.
    &quot;networks&quot;: [ # Networks to be created.
      { # Configuration parameters for a new network.
        &quot;bandwidth&quot;: &quot;A String&quot;, # Interconnect bandwidth. Set only when type is CLIENT.
        &quot;cidr&quot;: &quot;A String&quot;, # CIDR range of the network.
        &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
        &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the network config.
        &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
        &quot;type&quot;: &quot;A String&quot;, # The type of this network, either Client or Private.
        &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
        &quot;vlanAttachments&quot;: [ # List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).
          { # A GCP vlan attachment.
            &quot;id&quot;: &quot;A String&quot;, # Identifier of the VLAN attachment.
            &quot;pairingKey&quot;: &quot;A String&quot;, # Attachment pairing key.
          },
        ],
        &quot;vlanSameProject&quot;: True or False, # Whether the VLAN attachment pair is located in the same project.
      },
    ],
    &quot;state&quot;: &quot;A String&quot;, # Output only. State of ProvisioningConfig.
    &quot;ticketId&quot;: &quot;A String&quot;, # A generated buganizer id to track provisioning request.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last update timestamp.
    &quot;volumes&quot;: [ # Volumes to be created.
      { # Configuration parameters for a new volume.
        &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
        &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
        &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
          { # A LUN(Logical Unit Number) range.
            &quot;quantity&quot;: 42, # Number of LUNs to create.
            &quot;sizeGb&quot;: 42, # The requested size of each LUN, in GB.
          },
        ],
        &quot;machineIds&quot;: [ # Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.
          &quot;A String&quot;,
        ],
        &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the volume config.
        &quot;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
          { # A NFS export entry.
            &quot;allowDev&quot;: True or False, # Allow dev flag in NfsShare AllowedClientsRequest.
            &quot;allowSuid&quot;: True or False, # Allow the setuid flag.
            &quot;cidr&quot;: &quot;A String&quot;, # A CIDR range.
            &quot;machineId&quot;: &quot;A String&quot;, # Either a single machine, identified by an ID, or a comma-separated list of machine IDs.
            &quot;networkId&quot;: &quot;A String&quot;, # Network to use to publish the export.
            &quot;noRootSquash&quot;: True or False, # Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.
            &quot;permissions&quot;: &quot;A String&quot;, # Export permissions.
          },
        ],
        &quot;protocol&quot;: &quot;A String&quot;, # Volume protocol.
        &quot;sizeGb&quot;: 42, # The requested size of this volume, in GB.
        &quot;snapshotsEnabled&quot;: True or False, # Whether snapshots should be enabled.
        &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
        &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
      },
    ],
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for SubmitProvisioningConfig.
  &quot;provisioningConfig&quot;: { # A provisioning configuration. # The submitted provisioning config.
    &quot;cloudConsoleUri&quot;: &quot;A String&quot;, # Output only. URI to Cloud Console UI view of this provisioning config.
    &quot;email&quot;: &quot;A String&quot;, # Email provided to send a confirmation with provisioning config to. Deprecated in favour of email field in request messages.
    &quot;handoverServiceAccount&quot;: &quot;A String&quot;, # A service account to enable customers to access instance credentials upon handover.
    &quot;instances&quot;: [ # Instances to be created.
      { # Configuration parameters for a new instance.
        &quot;accountNetworksEnabled&quot;: True or False, # If true networks can be from different projects of the same vendor account.
        &quot;clientNetwork&quot;: { # A network. # Client network address.
          &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
          &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
          &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
        },
        &quot;hyperthreading&quot;: True or False, # Whether the instance should be provisioned with Hyperthreading enabled.
        &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to idenfity an instance within an ProvisioningConfig request.
        &quot;instanceType&quot;: &quot;A String&quot;, # Instance type. [Available types](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
        &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the instance config.
        &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance. [Available images](https://cloud.google.com/bare-metal/docs/bms-planning#server_configurations)
        &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
          &quot;address&quot;: &quot;A String&quot;, # IPv4 address to be assigned to the server.
          &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use.
          &quot;networkId&quot;: &quot;A String&quot;, # Id of the network to use, within the same ProvisioningConfig request.
        },
        &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team .
      },
    ],
    &quot;location&quot;: &quot;A String&quot;, # Optional. Location name of this ProvisioningConfig. It is optional only for Intake UI transition period.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the provisioning config.
    &quot;networks&quot;: [ # Networks to be created.
      { # Configuration parameters for a new network.
        &quot;bandwidth&quot;: &quot;A String&quot;, # Interconnect bandwidth. Set only when type is CLIENT.
        &quot;cidr&quot;: &quot;A String&quot;, # CIDR range of the network.
        &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the network. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
        &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the network config.
        &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
        &quot;type&quot;: &quot;A String&quot;, # The type of this network, either Client or Private.
        &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
        &quot;vlanAttachments&quot;: [ # List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).
          { # A GCP vlan attachment.
            &quot;id&quot;: &quot;A String&quot;, # Identifier of the VLAN attachment.
            &quot;pairingKey&quot;: &quot;A String&quot;, # Attachment pairing key.
          },
        ],
        &quot;vlanSameProject&quot;: True or False, # Whether the VLAN attachment pair is located in the same project.
      },
    ],
    &quot;state&quot;: &quot;A String&quot;, # Output only. State of ProvisioningConfig.
    &quot;ticketId&quot;: &quot;A String&quot;, # A generated buganizer id to track provisioning request.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Last update timestamp.
    &quot;volumes&quot;: [ # Volumes to be created.
      { # Configuration parameters for a new volume.
        &quot;gcpService&quot;: &quot;A String&quot;, # The GCP service of the storage volume. Available gcp_service are in https://cloud.google.com/bare-metal/docs/bms-planning.
        &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
        &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
          { # A LUN(Logical Unit Number) range.
            &quot;quantity&quot;: 42, # Number of LUNs to create.
            &quot;sizeGb&quot;: 42, # The requested size of each LUN, in GB.
          },
        ],
        &quot;machineIds&quot;: [ # Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.
          &quot;A String&quot;,
        ],
        &quot;name&quot;: &quot;A String&quot;, # Output only. The name of the volume config.
        &quot;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
          { # A NFS export entry.
            &quot;allowDev&quot;: True or False, # Allow dev flag in NfsShare AllowedClientsRequest.
            &quot;allowSuid&quot;: True or False, # Allow the setuid flag.
            &quot;cidr&quot;: &quot;A String&quot;, # A CIDR range.
            &quot;machineId&quot;: &quot;A String&quot;, # Either a single machine, identified by an ID, or a comma-separated list of machine IDs.
            &quot;networkId&quot;: &quot;A String&quot;, # Network to use to publish the export.
            &quot;noRootSquash&quot;: True or False, # Disable root squashing, which is a feature of NFS. Root squash is a special mapping of the remote superuser (root) identity when using identity authentication.
            &quot;permissions&quot;: &quot;A String&quot;, # Export permissions.
          },
        ],
        &quot;protocol&quot;: &quot;A String&quot;, # Volume protocol.
        &quot;sizeGb&quot;: 42, # The requested size of this volume, in GB.
        &quot;snapshotsEnabled&quot;: True or False, # Whether snapshots should be enabled.
        &quot;type&quot;: &quot;A String&quot;, # The type of this Volume.
        &quot;userNote&quot;: &quot;A String&quot;, # User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).
      },
    ],
  },
}</pre>
</div>

</body></html>