<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_v1alpha1.html">Bare Metal Solution API</a> . <a href="baremetalsolution_v1alpha1.projects.html">projects</a> . <a href="baremetalsolution_v1alpha1.projects.locations.html">locations</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="#submitProvisioningConfig">submitProvisioningConfig(project, location, 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="submitProvisioningConfig">submitProvisioningConfig(project, location, body=None, x__xgafv=None)</code>
  <pre>Submit a provisiong configuration for a given project.

Args:
  project: string, Required. The target project of the provisioning request. (required)
  location: string, Required. The target location of the provisioning request. (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;: { # An provisioning configuration. # Required. The ProvisioningConfig to submit.
    &quot;instances&quot;: [ # Instances to be created.
      { # Configuration parameters for a new instance.
        &quot;clientNetwork&quot;: { # A network. # Client network address.
          &quot;address&quot;: &quot;A String&quot;, # IP address to be assigned to the server.
          &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use. Will be of the format at--vlan for pre-intake UI networks like for eg, at-123456-vlan001 or any user-defined name like for eg, my-network-name for networks provisioned using intake UI. The field is exclusively filled only in case of an already existing network. Mutually exclusive with network_id.
          &quot;networkId&quot;: &quot;A String&quot;, # Name of the network to use, within the same ProvisioningConfig request. This represents a new network being provisioned in the same request. Can have any user-defined name like for eg, my-network-name. Mutually exclusive with existing_network_id.
        },
        &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.
        &quot;location&quot;: &quot;A String&quot;, # Location where to deploy the instance.
        &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance.
        &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
          &quot;address&quot;: &quot;A String&quot;, # IP address to be assigned to the server.
          &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use. Will be of the format at--vlan for pre-intake UI networks like for eg, at-123456-vlan001 or any user-defined name like for eg, my-network-name for networks provisioned using intake UI. The field is exclusively filled only in case of an already existing network. Mutually exclusive with network_id.
          &quot;networkId&quot;: &quot;A String&quot;, # Name of the network to use, within the same ProvisioningConfig request. This represents a new network being provisioned in the same request. Can have any user-defined name like for eg, my-network-name. Mutually exclusive with existing_network_id.
        },
        &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;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;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
        &quot;location&quot;: &quot;A String&quot;, # Location where to deploy the network.
        &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
        &quot;type&quot;: &quot;A String&quot;, # The type of this network.
        &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;ticketId&quot;: &quot;A String&quot;, # A reference to track the request.
    &quot;volumes&quot;: [ # Volumes to be created.
      { # Configuration parameters for a new volume.
        &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
        &quot;location&quot;: &quot;A String&quot;, # Location where to deploy the volume.
        &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
          { # A LUN 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;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
          { # A NFS export entry.
            &quot;allowDev&quot;: True or False, # Allow dev.
            &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.
            &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. This will be updated in a later iteration with a generic size field.
        &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:

    { # An provisioning configuration.
  &quot;instances&quot;: [ # Instances to be created.
    { # Configuration parameters for a new instance.
      &quot;clientNetwork&quot;: { # A network. # Client network address.
        &quot;address&quot;: &quot;A String&quot;, # IP address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use. Will be of the format at--vlan for pre-intake UI networks like for eg, at-123456-vlan001 or any user-defined name like for eg, my-network-name for networks provisioned using intake UI. The field is exclusively filled only in case of an already existing network. Mutually exclusive with network_id.
        &quot;networkId&quot;: &quot;A String&quot;, # Name of the network to use, within the same ProvisioningConfig request. This represents a new network being provisioned in the same request. Can have any user-defined name like for eg, my-network-name. Mutually exclusive with existing_network_id.
      },
      &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.
      &quot;location&quot;: &quot;A String&quot;, # Location where to deploy the instance.
      &quot;osImage&quot;: &quot;A String&quot;, # OS image to initialize the instance.
      &quot;privateNetwork&quot;: { # A network. # Private network address, if any.
        &quot;address&quot;: &quot;A String&quot;, # IP address to be assigned to the server.
        &quot;existingNetworkId&quot;: &quot;A String&quot;, # Name of the existing network to use. Will be of the format at--vlan for pre-intake UI networks like for eg, at-123456-vlan001 or any user-defined name like for eg, my-network-name for networks provisioned using intake UI. The field is exclusively filled only in case of an already existing network. Mutually exclusive with network_id.
        &quot;networkId&quot;: &quot;A String&quot;, # Name of the network to use, within the same ProvisioningConfig request. This represents a new network being provisioned in the same request. Can have any user-defined name like for eg, my-network-name. Mutually exclusive with existing_network_id.
      },
      &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;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;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;location&quot;: &quot;A String&quot;, # Location where to deploy the network.
      &quot;serviceCidr&quot;: &quot;A String&quot;, # Service CIDR, if any.
      &quot;type&quot;: &quot;A String&quot;, # The type of this network.
      &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;ticketId&quot;: &quot;A String&quot;, # A reference to track the request.
  &quot;volumes&quot;: [ # Volumes to be created.
    { # Configuration parameters for a new volume.
      &quot;id&quot;: &quot;A String&quot;, # A transient unique identifier to identify a volume within an ProvisioningConfig request.
      &quot;location&quot;: &quot;A String&quot;, # Location where to deploy the volume.
      &quot;lunRanges&quot;: [ # LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.
        { # A LUN 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;nfsExports&quot;: [ # NFS exports. Set only when protocol is PROTOCOL_NFS.
        { # A NFS export entry.
          &quot;allowDev&quot;: True or False, # Allow dev.
          &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.
          &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. This will be updated in a later iteration with a generic size field.
      &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>