<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="manager_v1beta2.html">Deployment Manager API</a> . <a href="manager_v1beta2.templates.html">templates</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, templateName)</a></code></p>
<p class="firstline"></p>
<p class="toc_element">
  <code><a href="#get">get(projectId, templateName)</a></code></p>
<p class="firstline"></p>
<p class="toc_element">
  <code><a href="#insert">insert(projectId, body)</a></code></p>
<p class="firstline"></p>
<p class="toc_element">
  <code><a href="#list">list(projectId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline"></p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(projectId, templateName)</code>
  <pre>

Args:
  projectId: string, A parameter (required)
  templateName: string, A parameter (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, templateName)</code>
  <pre>

Args:
  projectId: string, A parameter (required)
  templateName: string, A parameter (required)

Returns:
  An object of the form:

    { # A Template represents a complete configuration for a Deployment.
      "modules": { # A list of modules for this Template.
        "a_key": { # A module in a configuration. A module represents a single homogeneous, possibly replicated task. # Name of the module. The name must conform to the following regular expression: [a-zA-Z0-9-_]{1,64}
          "lbModule": {
            "description": "A String",
            "portRange": "A String",
            "sessionAffinity": "A String",
            "ipProtocol": "A String",
            "healthChecks": [
              "A String",
            ],
            "ipAddress": "A String",
            "targetModules": [
              "A String",
            ],
          },
          "networkModule": {
            "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16.
            "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typicall the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
            "description": "A String", # The description of the network.
          },
          "firewallModule": { # A Firewall resource
            "network": "A String", # The NetworkModule to which this firewall should apply. If not specified, or if specified as 'default', this firewall will be applied to the 'default' network.
            "sourceTags": [ # Source Tags to apply this firewall to, see the GCE Spec for details on syntax
              "A String",
            ],
            "sourceRanges": [ # Source IP ranges to apply this firewall to, see the GCE Spec for details on syntax
              "A String",
            ],
            "targetTags": [ # Target Tags to apply this firewall to, see the GCE Spec for details on syntax
              "A String",
            ],
            "allowed": [ # The allowed ports or port ranges.
              { # An allowed port resource.
                "IPProtocol": "A String", # ?tcp?, ?udp? or ?icmp?
                "ports": [ # List of ports or port ranges (Example inputs include: ["22"], [?33?, "12345-12349"].
                  "A String",
                ],
              },
            ],
            "description": "A String", # The description of the firewall (optional)
          },
          "healthCheckModule": {
            "description": "A String",
            "timeoutSec": 42,
            "checkIntervalSec": 42,
            "unhealthyThreshold": 42,
            "healthyThreshold": 42,
            "host": "A String",
            "path": "A String",
            "port": 42,
          },
          "autoscalingModule": {
            "maxNumReplicas": 42,
            "description": "A String",
            "targetModule": "A String",
            "targetUtilization": 3.14, # target_utilization should be in range [0,1].
            "signalType": "A String",
            "coolDownPeriodSec": 42,
            "minNumReplicas": 42,
          },
          "replicaPoolModule": {
            "numReplicas": 42, # Number of replicas in this module.
            "healthChecks": [ # The Health Checks to configure for the ReplicaPoolModule
              "A String",
            ],
            "resourceView": "A String", # [Output Only] The name of the Resource View associated with a ReplicaPoolModule. This field will be generated by the service.
            "envVariables": { # A list of environment variables.
              "a_key": { # An environment variable. # Name of the environment variable. The name must conform to the following regular expression: [a-zA-Z_]+[a-zA-Z0-9_]+.
                "hidden": True or False, # Whether this variable is hidden or visible.
                "value": "A String", # Value of the environment variable.
              },
            },
            "replicaPoolParams": { # Configuration information for a ReplicaPools resource. Specifying an item within will determine the ReplicaPools API version used for a ReplicaPoolModule. Only one may be specified. # Information for a ReplicaPoolModule.
              "v1beta1": { # Configuration information for a ReplicaPools v1beta1 API resource. Directly maps to ReplicaPool InitTemplate. # ReplicaPoolParams specifications for use with ReplicaPools v1beta1.
                "disksToCreate": [ # A list of Disk resources to create and attach to each Replica in the Pool. Currently, you can only define one disk and it must be a root persistent disk. Note that Replica Pool will create a root persistent disk for each replica.
                  { # A Persistent Disk resource that will be created and attached to each Replica in the Pool. Each Replica will have a unique persistent disk that is created and attached to that Replica.
                    "initializeParams": { # Initialization parameters for creating a new disk. # Create the new disk using these parameters. The name of the disk will be <instance_name>-<five_random_charactersgt;.
                      "diskSizeGb": "A String", # The size of the created disk in gigabytes.
                      "sourceImage": "A String", # The fully-qualified URL of a source image to use to create this disk.
                      "diskType": "A String", # Name of the disk type resource describing which disk type to use to create the disk. For example 'pd-ssd' or 'pd-standard'. Default is 'pd-standard'
                    },
                    "boot": True or False, # If true, indicates that this is the root persistent disk.
                    "attachment": { # How to attach a disk to a Replica. # How the disk will be attached to the Replica.
                      "deviceName": "A String", # The device name of this disk.
                      "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, this is assigned by the server.
                    },
                    "autoDelete": True or False, # If true, then this disk will be deleted when the instance is deleted.
                  },
                ],
                "autoRestart": True or False, # Whether these replicas should be restarted if they experience a failure. The default value is true.
                "canIpForward": True or False, # Enables IP Forwarding
                "description": "A String", # An optional textual description of the resource.
                "zone": "A String", # The zone for this ReplicaPool.
                "tags": { # A Compute Engine Instance tag, identical to the tags on the corresponding Compute Engine Instance resource. # A list of tags to apply to the Google Compute Engine instance to identify resources.
                  "items": [ # Items contained in this tag.
                    "A String",
                  ],
                  "fingerPrint": "A String", # The fingerprint of the tag.
                },
                "onHostMaintenance": "A String",
                "disksToAttach": [ # A list of existing Persistent Disk resources to attach to each replica in the pool. Each disk will be attached in read-only mode to every replica.
                  { # A pre-existing persistent disk that will be attached to every Replica in the Pool.
                    "source": "A String", # The fully-qualified URL of the Persistent Disk resource. It must be in the same zone as the Pool.
                    "attachment": { # How to attach a disk to a Replica. # Optional. How the disk will be attached to the Replica.
                      "deviceName": "A String", # The device name of this disk.
                      "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, this is assigned by the server.
                    },
                  },
                ],
                "machineType": "A String", # The machine type for this instance. Either a complete URL, or the resource name (e.g. n1-standard-1).
                "baseInstanceName": "A String", # The base name for instances within this ReplicaPool.
                "initAction": "A String", # Name of the Action to be run during initialization of a ReplicaPoolModule.
                "networkInterfaces": [ # A list of network interfaces for the instance. Currently only one interface is supported by Google Compute Engine.
                  { # A Compute Engine NetworkInterface resource. Identical to the NetworkInterface on the corresponding Compute Engine resource.
                    "accessConfigs": [ # An array of configurations for this interface. This specifies how this interface is configured to interact with other network services
                      { # A Compute Engine network accessConfig. Identical to the accessConfig on corresponding Compute Engine resource.
                        "type": "A String", # Type of this access configuration file. (Currently only ONE_TO_ONE_NAT is legal.)
                        "name": "A String", # Name of this access configuration.
                        "natIp": "A String", # An external IP address associated with this instance.
                      },
                    ],
                    "networkIp": "A String", # An optional IPV4 internal network address to assign to the instance for this network interface.
                    "name": "A String", # Name of the interface.
                    "network": "A String", # The name of the NetworkModule to which this interface applies. If not specified, or specified as 'default', this will use the 'default' network.
                  },
                ],
                "serviceAccounts": [ # A list of Service Accounts to enable for this instance.
                  { # A Compute Engine service account, identical to the Compute Engine resource.
                    "scopes": [ # List of OAuth2 scopes to obtain for the service account.
                      "A String",
                    ],
                    "email": "A String", # Service account email address.
                  },
                ],
                "metadata": { # A Compute Engine metadata entry. Identical to the metadata on the corresponding Compute Engine resource. # The metadata key/value pairs assigned to this instance.
                  "items": [ # A list of metadata items.
                    { # A Compute Engine metadata item, defined as a key:value pair. Identical to the metadata on the corresponding Compute Engine resource.
                      "value": "A String", # A metadata value.
                      "key": "A String", # A metadata key.
                    },
                  ],
                  "fingerPrint": "A String", # The fingerprint of the metadata.
                },
              },
            },
          },
          "type": "A String", # The type of this module. Valid values ("AUTOSCALING", "FIREWALL", "HEALTH_CHECK", "LOAD_BALANCING", "NETWORK", "REPLICA_POOL")
        },
      },
      "description": "A String", # A user-supplied description of this Template.
      "actions": { # Action definitions for use in Module intents in this Template.
        "a_key": { # An Action encapsulates a set of commands as a single runnable module with additional information needed during run-time. # The name of this action, used when specifying Actions in Module definitions.
          "timeoutMs": 42, # The timeout in milliseconds for this action to run.
          "commands": [ # A list of commands to run sequentially for this action.
            "A String",
          ],
        },
      },
      "name": "A String", # Name of this Template. The name must conform to the expression: [a-zA-Z0-9-_]{1,64}
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(projectId, body)</code>
  <pre>

Args:
  projectId: string, A parameter (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A Template represents a complete configuration for a Deployment.
    "modules": { # A list of modules for this Template.
      "a_key": { # A module in a configuration. A module represents a single homogeneous, possibly replicated task. # Name of the module. The name must conform to the following regular expression: [a-zA-Z0-9-_]{1,64}
        "lbModule": {
          "description": "A String",
          "portRange": "A String",
          "sessionAffinity": "A String",
          "ipProtocol": "A String",
          "healthChecks": [
            "A String",
          ],
          "ipAddress": "A String",
          "targetModules": [
            "A String",
          ],
        },
        "networkModule": {
          "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16.
          "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typicall the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
          "description": "A String", # The description of the network.
        },
        "firewallModule": { # A Firewall resource
          "network": "A String", # The NetworkModule to which this firewall should apply. If not specified, or if specified as 'default', this firewall will be applied to the 'default' network.
          "sourceTags": [ # Source Tags to apply this firewall to, see the GCE Spec for details on syntax
            "A String",
          ],
          "sourceRanges": [ # Source IP ranges to apply this firewall to, see the GCE Spec for details on syntax
            "A String",
          ],
          "targetTags": [ # Target Tags to apply this firewall to, see the GCE Spec for details on syntax
            "A String",
          ],
          "allowed": [ # The allowed ports or port ranges.
            { # An allowed port resource.
              "IPProtocol": "A String", # ?tcp?, ?udp? or ?icmp?
              "ports": [ # List of ports or port ranges (Example inputs include: ["22"], [?33?, "12345-12349"].
                "A String",
              ],
            },
          ],
          "description": "A String", # The description of the firewall (optional)
        },
        "healthCheckModule": {
          "description": "A String",
          "timeoutSec": 42,
          "checkIntervalSec": 42,
          "unhealthyThreshold": 42,
          "healthyThreshold": 42,
          "host": "A String",
          "path": "A String",
          "port": 42,
        },
        "autoscalingModule": {
          "maxNumReplicas": 42,
          "description": "A String",
          "targetModule": "A String",
          "targetUtilization": 3.14, # target_utilization should be in range [0,1].
          "signalType": "A String",
          "coolDownPeriodSec": 42,
          "minNumReplicas": 42,
        },
        "replicaPoolModule": {
          "numReplicas": 42, # Number of replicas in this module.
          "healthChecks": [ # The Health Checks to configure for the ReplicaPoolModule
            "A String",
          ],
          "resourceView": "A String", # [Output Only] The name of the Resource View associated with a ReplicaPoolModule. This field will be generated by the service.
          "envVariables": { # A list of environment variables.
            "a_key": { # An environment variable. # Name of the environment variable. The name must conform to the following regular expression: [a-zA-Z_]+[a-zA-Z0-9_]+.
              "hidden": True or False, # Whether this variable is hidden or visible.
              "value": "A String", # Value of the environment variable.
            },
          },
          "replicaPoolParams": { # Configuration information for a ReplicaPools resource. Specifying an item within will determine the ReplicaPools API version used for a ReplicaPoolModule. Only one may be specified. # Information for a ReplicaPoolModule.
            "v1beta1": { # Configuration information for a ReplicaPools v1beta1 API resource. Directly maps to ReplicaPool InitTemplate. # ReplicaPoolParams specifications for use with ReplicaPools v1beta1.
              "disksToCreate": [ # A list of Disk resources to create and attach to each Replica in the Pool. Currently, you can only define one disk and it must be a root persistent disk. Note that Replica Pool will create a root persistent disk for each replica.
                { # A Persistent Disk resource that will be created and attached to each Replica in the Pool. Each Replica will have a unique persistent disk that is created and attached to that Replica.
                  "initializeParams": { # Initialization parameters for creating a new disk. # Create the new disk using these parameters. The name of the disk will be <instance_name>-<five_random_charactersgt;.
                    "diskSizeGb": "A String", # The size of the created disk in gigabytes.
                    "sourceImage": "A String", # The fully-qualified URL of a source image to use to create this disk.
                    "diskType": "A String", # Name of the disk type resource describing which disk type to use to create the disk. For example 'pd-ssd' or 'pd-standard'. Default is 'pd-standard'
                  },
                  "boot": True or False, # If true, indicates that this is the root persistent disk.
                  "attachment": { # How to attach a disk to a Replica. # How the disk will be attached to the Replica.
                    "deviceName": "A String", # The device name of this disk.
                    "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, this is assigned by the server.
                  },
                  "autoDelete": True or False, # If true, then this disk will be deleted when the instance is deleted.
                },
              ],
              "autoRestart": True or False, # Whether these replicas should be restarted if they experience a failure. The default value is true.
              "canIpForward": True or False, # Enables IP Forwarding
              "description": "A String", # An optional textual description of the resource.
              "zone": "A String", # The zone for this ReplicaPool.
              "tags": { # A Compute Engine Instance tag, identical to the tags on the corresponding Compute Engine Instance resource. # A list of tags to apply to the Google Compute Engine instance to identify resources.
                "items": [ # Items contained in this tag.
                  "A String",
                ],
                "fingerPrint": "A String", # The fingerprint of the tag.
              },
              "onHostMaintenance": "A String",
              "disksToAttach": [ # A list of existing Persistent Disk resources to attach to each replica in the pool. Each disk will be attached in read-only mode to every replica.
                { # A pre-existing persistent disk that will be attached to every Replica in the Pool.
                  "source": "A String", # The fully-qualified URL of the Persistent Disk resource. It must be in the same zone as the Pool.
                  "attachment": { # How to attach a disk to a Replica. # Optional. How the disk will be attached to the Replica.
                    "deviceName": "A String", # The device name of this disk.
                    "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, this is assigned by the server.
                  },
                },
              ],
              "machineType": "A String", # The machine type for this instance. Either a complete URL, or the resource name (e.g. n1-standard-1).
              "baseInstanceName": "A String", # The base name for instances within this ReplicaPool.
              "initAction": "A String", # Name of the Action to be run during initialization of a ReplicaPoolModule.
              "networkInterfaces": [ # A list of network interfaces for the instance. Currently only one interface is supported by Google Compute Engine.
                { # A Compute Engine NetworkInterface resource. Identical to the NetworkInterface on the corresponding Compute Engine resource.
                  "accessConfigs": [ # An array of configurations for this interface. This specifies how this interface is configured to interact with other network services
                    { # A Compute Engine network accessConfig. Identical to the accessConfig on corresponding Compute Engine resource.
                      "type": "A String", # Type of this access configuration file. (Currently only ONE_TO_ONE_NAT is legal.)
                      "name": "A String", # Name of this access configuration.
                      "natIp": "A String", # An external IP address associated with this instance.
                    },
                  ],
                  "networkIp": "A String", # An optional IPV4 internal network address to assign to the instance for this network interface.
                  "name": "A String", # Name of the interface.
                  "network": "A String", # The name of the NetworkModule to which this interface applies. If not specified, or specified as 'default', this will use the 'default' network.
                },
              ],
              "serviceAccounts": [ # A list of Service Accounts to enable for this instance.
                { # A Compute Engine service account, identical to the Compute Engine resource.
                  "scopes": [ # List of OAuth2 scopes to obtain for the service account.
                    "A String",
                  ],
                  "email": "A String", # Service account email address.
                },
              ],
              "metadata": { # A Compute Engine metadata entry. Identical to the metadata on the corresponding Compute Engine resource. # The metadata key/value pairs assigned to this instance.
                "items": [ # A list of metadata items.
                  { # A Compute Engine metadata item, defined as a key:value pair. Identical to the metadata on the corresponding Compute Engine resource.
                    "value": "A String", # A metadata value.
                    "key": "A String", # A metadata key.
                  },
                ],
                "fingerPrint": "A String", # The fingerprint of the metadata.
              },
            },
          },
        },
        "type": "A String", # The type of this module. Valid values ("AUTOSCALING", "FIREWALL", "HEALTH_CHECK", "LOAD_BALANCING", "NETWORK", "REPLICA_POOL")
      },
    },
    "description": "A String", # A user-supplied description of this Template.
    "actions": { # Action definitions for use in Module intents in this Template.
      "a_key": { # An Action encapsulates a set of commands as a single runnable module with additional information needed during run-time. # The name of this action, used when specifying Actions in Module definitions.
        "timeoutMs": 42, # The timeout in milliseconds for this action to run.
        "commands": [ # A list of commands to run sequentially for this action.
          "A String",
        ],
      },
    },
    "name": "A String", # Name of this Template. The name must conform to the expression: [a-zA-Z0-9-_]{1,64}
  }


Returns:
  An object of the form:

    { # A Template represents a complete configuration for a Deployment.
      "modules": { # A list of modules for this Template.
        "a_key": { # A module in a configuration. A module represents a single homogeneous, possibly replicated task. # Name of the module. The name must conform to the following regular expression: [a-zA-Z0-9-_]{1,64}
          "lbModule": {
            "description": "A String",
            "portRange": "A String",
            "sessionAffinity": "A String",
            "ipProtocol": "A String",
            "healthChecks": [
              "A String",
            ],
            "ipAddress": "A String",
            "targetModules": [
              "A String",
            ],
          },
          "networkModule": {
            "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16.
            "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typicall the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
            "description": "A String", # The description of the network.
          },
          "firewallModule": { # A Firewall resource
            "network": "A String", # The NetworkModule to which this firewall should apply. If not specified, or if specified as 'default', this firewall will be applied to the 'default' network.
            "sourceTags": [ # Source Tags to apply this firewall to, see the GCE Spec for details on syntax
              "A String",
            ],
            "sourceRanges": [ # Source IP ranges to apply this firewall to, see the GCE Spec for details on syntax
              "A String",
            ],
            "targetTags": [ # Target Tags to apply this firewall to, see the GCE Spec for details on syntax
              "A String",
            ],
            "allowed": [ # The allowed ports or port ranges.
              { # An allowed port resource.
                "IPProtocol": "A String", # ?tcp?, ?udp? or ?icmp?
                "ports": [ # List of ports or port ranges (Example inputs include: ["22"], [?33?, "12345-12349"].
                  "A String",
                ],
              },
            ],
            "description": "A String", # The description of the firewall (optional)
          },
          "healthCheckModule": {
            "description": "A String",
            "timeoutSec": 42,
            "checkIntervalSec": 42,
            "unhealthyThreshold": 42,
            "healthyThreshold": 42,
            "host": "A String",
            "path": "A String",
            "port": 42,
          },
          "autoscalingModule": {
            "maxNumReplicas": 42,
            "description": "A String",
            "targetModule": "A String",
            "targetUtilization": 3.14, # target_utilization should be in range [0,1].
            "signalType": "A String",
            "coolDownPeriodSec": 42,
            "minNumReplicas": 42,
          },
          "replicaPoolModule": {
            "numReplicas": 42, # Number of replicas in this module.
            "healthChecks": [ # The Health Checks to configure for the ReplicaPoolModule
              "A String",
            ],
            "resourceView": "A String", # [Output Only] The name of the Resource View associated with a ReplicaPoolModule. This field will be generated by the service.
            "envVariables": { # A list of environment variables.
              "a_key": { # An environment variable. # Name of the environment variable. The name must conform to the following regular expression: [a-zA-Z_]+[a-zA-Z0-9_]+.
                "hidden": True or False, # Whether this variable is hidden or visible.
                "value": "A String", # Value of the environment variable.
              },
            },
            "replicaPoolParams": { # Configuration information for a ReplicaPools resource. Specifying an item within will determine the ReplicaPools API version used for a ReplicaPoolModule. Only one may be specified. # Information for a ReplicaPoolModule.
              "v1beta1": { # Configuration information for a ReplicaPools v1beta1 API resource. Directly maps to ReplicaPool InitTemplate. # ReplicaPoolParams specifications for use with ReplicaPools v1beta1.
                "disksToCreate": [ # A list of Disk resources to create and attach to each Replica in the Pool. Currently, you can only define one disk and it must be a root persistent disk. Note that Replica Pool will create a root persistent disk for each replica.
                  { # A Persistent Disk resource that will be created and attached to each Replica in the Pool. Each Replica will have a unique persistent disk that is created and attached to that Replica.
                    "initializeParams": { # Initialization parameters for creating a new disk. # Create the new disk using these parameters. The name of the disk will be <instance_name>-<five_random_charactersgt;.
                      "diskSizeGb": "A String", # The size of the created disk in gigabytes.
                      "sourceImage": "A String", # The fully-qualified URL of a source image to use to create this disk.
                      "diskType": "A String", # Name of the disk type resource describing which disk type to use to create the disk. For example 'pd-ssd' or 'pd-standard'. Default is 'pd-standard'
                    },
                    "boot": True or False, # If true, indicates that this is the root persistent disk.
                    "attachment": { # How to attach a disk to a Replica. # How the disk will be attached to the Replica.
                      "deviceName": "A String", # The device name of this disk.
                      "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, this is assigned by the server.
                    },
                    "autoDelete": True or False, # If true, then this disk will be deleted when the instance is deleted.
                  },
                ],
                "autoRestart": True or False, # Whether these replicas should be restarted if they experience a failure. The default value is true.
                "canIpForward": True or False, # Enables IP Forwarding
                "description": "A String", # An optional textual description of the resource.
                "zone": "A String", # The zone for this ReplicaPool.
                "tags": { # A Compute Engine Instance tag, identical to the tags on the corresponding Compute Engine Instance resource. # A list of tags to apply to the Google Compute Engine instance to identify resources.
                  "items": [ # Items contained in this tag.
                    "A String",
                  ],
                  "fingerPrint": "A String", # The fingerprint of the tag.
                },
                "onHostMaintenance": "A String",
                "disksToAttach": [ # A list of existing Persistent Disk resources to attach to each replica in the pool. Each disk will be attached in read-only mode to every replica.
                  { # A pre-existing persistent disk that will be attached to every Replica in the Pool.
                    "source": "A String", # The fully-qualified URL of the Persistent Disk resource. It must be in the same zone as the Pool.
                    "attachment": { # How to attach a disk to a Replica. # Optional. How the disk will be attached to the Replica.
                      "deviceName": "A String", # The device name of this disk.
                      "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, this is assigned by the server.
                    },
                  },
                ],
                "machineType": "A String", # The machine type for this instance. Either a complete URL, or the resource name (e.g. n1-standard-1).
                "baseInstanceName": "A String", # The base name for instances within this ReplicaPool.
                "initAction": "A String", # Name of the Action to be run during initialization of a ReplicaPoolModule.
                "networkInterfaces": [ # A list of network interfaces for the instance. Currently only one interface is supported by Google Compute Engine.
                  { # A Compute Engine NetworkInterface resource. Identical to the NetworkInterface on the corresponding Compute Engine resource.
                    "accessConfigs": [ # An array of configurations for this interface. This specifies how this interface is configured to interact with other network services
                      { # A Compute Engine network accessConfig. Identical to the accessConfig on corresponding Compute Engine resource.
                        "type": "A String", # Type of this access configuration file. (Currently only ONE_TO_ONE_NAT is legal.)
                        "name": "A String", # Name of this access configuration.
                        "natIp": "A String", # An external IP address associated with this instance.
                      },
                    ],
                    "networkIp": "A String", # An optional IPV4 internal network address to assign to the instance for this network interface.
                    "name": "A String", # Name of the interface.
                    "network": "A String", # The name of the NetworkModule to which this interface applies. If not specified, or specified as 'default', this will use the 'default' network.
                  },
                ],
                "serviceAccounts": [ # A list of Service Accounts to enable for this instance.
                  { # A Compute Engine service account, identical to the Compute Engine resource.
                    "scopes": [ # List of OAuth2 scopes to obtain for the service account.
                      "A String",
                    ],
                    "email": "A String", # Service account email address.
                  },
                ],
                "metadata": { # A Compute Engine metadata entry. Identical to the metadata on the corresponding Compute Engine resource. # The metadata key/value pairs assigned to this instance.
                  "items": [ # A list of metadata items.
                    { # A Compute Engine metadata item, defined as a key:value pair. Identical to the metadata on the corresponding Compute Engine resource.
                      "value": "A String", # A metadata value.
                      "key": "A String", # A metadata key.
                    },
                  ],
                  "fingerPrint": "A String", # The fingerprint of the metadata.
                },
              },
            },
          },
          "type": "A String", # The type of this module. Valid values ("AUTOSCALING", "FIREWALL", "HEALTH_CHECK", "LOAD_BALANCING", "NETWORK", "REPLICA_POOL")
        },
      },
      "description": "A String", # A user-supplied description of this Template.
      "actions": { # Action definitions for use in Module intents in this Template.
        "a_key": { # An Action encapsulates a set of commands as a single runnable module with additional information needed during run-time. # The name of this action, used when specifying Actions in Module definitions.
          "timeoutMs": 42, # The timeout in milliseconds for this action to run.
          "commands": [ # A list of commands to run sequentially for this action.
            "A String",
          ],
        },
      },
      "name": "A String", # Name of this Template. The name must conform to the expression: [a-zA-Z0-9-_]{1,64}
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, pageToken=None, maxResults=None)</code>
  <pre>

Args:
  projectId: string, A parameter (required)
  pageToken: string, Specifies a nextPageToken returned by a previous list request. This token can be used to request the next page of results from a previous list request.
  maxResults: integer, Maximum count of results to be returned. Acceptable values are 0 to 100, inclusive. (Default: 50)

Returns:
  An object of the form:

    {
    "nextPageToken": "A String",
    "resources": [
      { # A Template represents a complete configuration for a Deployment.
          "modules": { # A list of modules for this Template.
            "a_key": { # A module in a configuration. A module represents a single homogeneous, possibly replicated task. # Name of the module. The name must conform to the following regular expression: [a-zA-Z0-9-_]{1,64}
              "lbModule": {
                "description": "A String",
                "portRange": "A String",
                "sessionAffinity": "A String",
                "ipProtocol": "A String",
                "healthChecks": [
                  "A String",
                ],
                "ipAddress": "A String",
                "targetModules": [
                  "A String",
                ],
              },
              "networkModule": {
                "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16.
                "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typicall the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
                "description": "A String", # The description of the network.
              },
              "firewallModule": { # A Firewall resource
                "network": "A String", # The NetworkModule to which this firewall should apply. If not specified, or if specified as 'default', this firewall will be applied to the 'default' network.
                "sourceTags": [ # Source Tags to apply this firewall to, see the GCE Spec for details on syntax
                  "A String",
                ],
                "sourceRanges": [ # Source IP ranges to apply this firewall to, see the GCE Spec for details on syntax
                  "A String",
                ],
                "targetTags": [ # Target Tags to apply this firewall to, see the GCE Spec for details on syntax
                  "A String",
                ],
                "allowed": [ # The allowed ports or port ranges.
                  { # An allowed port resource.
                    "IPProtocol": "A String", # ?tcp?, ?udp? or ?icmp?
                    "ports": [ # List of ports or port ranges (Example inputs include: ["22"], [?33?, "12345-12349"].
                      "A String",
                    ],
                  },
                ],
                "description": "A String", # The description of the firewall (optional)
              },
              "healthCheckModule": {
                "description": "A String",
                "timeoutSec": 42,
                "checkIntervalSec": 42,
                "unhealthyThreshold": 42,
                "healthyThreshold": 42,
                "host": "A String",
                "path": "A String",
                "port": 42,
              },
              "autoscalingModule": {
                "maxNumReplicas": 42,
                "description": "A String",
                "targetModule": "A String",
                "targetUtilization": 3.14, # target_utilization should be in range [0,1].
                "signalType": "A String",
                "coolDownPeriodSec": 42,
                "minNumReplicas": 42,
              },
              "replicaPoolModule": {
                "numReplicas": 42, # Number of replicas in this module.
                "healthChecks": [ # The Health Checks to configure for the ReplicaPoolModule
                  "A String",
                ],
                "resourceView": "A String", # [Output Only] The name of the Resource View associated with a ReplicaPoolModule. This field will be generated by the service.
                "envVariables": { # A list of environment variables.
                  "a_key": { # An environment variable. # Name of the environment variable. The name must conform to the following regular expression: [a-zA-Z_]+[a-zA-Z0-9_]+.
                    "hidden": True or False, # Whether this variable is hidden or visible.
                    "value": "A String", # Value of the environment variable.
                  },
                },
                "replicaPoolParams": { # Configuration information for a ReplicaPools resource. Specifying an item within will determine the ReplicaPools API version used for a ReplicaPoolModule. Only one may be specified. # Information for a ReplicaPoolModule.
                  "v1beta1": { # Configuration information for a ReplicaPools v1beta1 API resource. Directly maps to ReplicaPool InitTemplate. # ReplicaPoolParams specifications for use with ReplicaPools v1beta1.
                    "disksToCreate": [ # A list of Disk resources to create and attach to each Replica in the Pool. Currently, you can only define one disk and it must be a root persistent disk. Note that Replica Pool will create a root persistent disk for each replica.
                      { # A Persistent Disk resource that will be created and attached to each Replica in the Pool. Each Replica will have a unique persistent disk that is created and attached to that Replica.
                        "initializeParams": { # Initialization parameters for creating a new disk. # Create the new disk using these parameters. The name of the disk will be <instance_name>-<five_random_charactersgt;.
                          "diskSizeGb": "A String", # The size of the created disk in gigabytes.
                          "sourceImage": "A String", # The fully-qualified URL of a source image to use to create this disk.
                          "diskType": "A String", # Name of the disk type resource describing which disk type to use to create the disk. For example 'pd-ssd' or 'pd-standard'. Default is 'pd-standard'
                        },
                        "boot": True or False, # If true, indicates that this is the root persistent disk.
                        "attachment": { # How to attach a disk to a Replica. # How the disk will be attached to the Replica.
                          "deviceName": "A String", # The device name of this disk.
                          "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, this is assigned by the server.
                        },
                        "autoDelete": True or False, # If true, then this disk will be deleted when the instance is deleted.
                      },
                    ],
                    "autoRestart": True or False, # Whether these replicas should be restarted if they experience a failure. The default value is true.
                    "canIpForward": True or False, # Enables IP Forwarding
                    "description": "A String", # An optional textual description of the resource.
                    "zone": "A String", # The zone for this ReplicaPool.
                    "tags": { # A Compute Engine Instance tag, identical to the tags on the corresponding Compute Engine Instance resource. # A list of tags to apply to the Google Compute Engine instance to identify resources.
                      "items": [ # Items contained in this tag.
                        "A String",
                      ],
                      "fingerPrint": "A String", # The fingerprint of the tag.
                    },
                    "onHostMaintenance": "A String",
                    "disksToAttach": [ # A list of existing Persistent Disk resources to attach to each replica in the pool. Each disk will be attached in read-only mode to every replica.
                      { # A pre-existing persistent disk that will be attached to every Replica in the Pool.
                        "source": "A String", # The fully-qualified URL of the Persistent Disk resource. It must be in the same zone as the Pool.
                        "attachment": { # How to attach a disk to a Replica. # Optional. How the disk will be attached to the Replica.
                          "deviceName": "A String", # The device name of this disk.
                          "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, this is assigned by the server.
                        },
                      },
                    ],
                    "machineType": "A String", # The machine type for this instance. Either a complete URL, or the resource name (e.g. n1-standard-1).
                    "baseInstanceName": "A String", # The base name for instances within this ReplicaPool.
                    "initAction": "A String", # Name of the Action to be run during initialization of a ReplicaPoolModule.
                    "networkInterfaces": [ # A list of network interfaces for the instance. Currently only one interface is supported by Google Compute Engine.
                      { # A Compute Engine NetworkInterface resource. Identical to the NetworkInterface on the corresponding Compute Engine resource.
                        "accessConfigs": [ # An array of configurations for this interface. This specifies how this interface is configured to interact with other network services
                          { # A Compute Engine network accessConfig. Identical to the accessConfig on corresponding Compute Engine resource.
                            "type": "A String", # Type of this access configuration file. (Currently only ONE_TO_ONE_NAT is legal.)
                            "name": "A String", # Name of this access configuration.
                            "natIp": "A String", # An external IP address associated with this instance.
                          },
                        ],
                        "networkIp": "A String", # An optional IPV4 internal network address to assign to the instance for this network interface.
                        "name": "A String", # Name of the interface.
                        "network": "A String", # The name of the NetworkModule to which this interface applies. If not specified, or specified as 'default', this will use the 'default' network.
                      },
                    ],
                    "serviceAccounts": [ # A list of Service Accounts to enable for this instance.
                      { # A Compute Engine service account, identical to the Compute Engine resource.
                        "scopes": [ # List of OAuth2 scopes to obtain for the service account.
                          "A String",
                        ],
                        "email": "A String", # Service account email address.
                      },
                    ],
                    "metadata": { # A Compute Engine metadata entry. Identical to the metadata on the corresponding Compute Engine resource. # The metadata key/value pairs assigned to this instance.
                      "items": [ # A list of metadata items.
                        { # A Compute Engine metadata item, defined as a key:value pair. Identical to the metadata on the corresponding Compute Engine resource.
                          "value": "A String", # A metadata value.
                          "key": "A String", # A metadata key.
                        },
                      ],
                      "fingerPrint": "A String", # The fingerprint of the metadata.
                    },
                  },
                },
              },
              "type": "A String", # The type of this module. Valid values ("AUTOSCALING", "FIREWALL", "HEALTH_CHECK", "LOAD_BALANCING", "NETWORK", "REPLICA_POOL")
            },
          },
          "description": "A String", # A user-supplied description of this Template.
          "actions": { # Action definitions for use in Module intents in this Template.
            "a_key": { # An Action encapsulates a set of commands as a single runnable module with additional information needed during run-time. # The name of this action, used when specifying Actions in Module definitions.
              "timeoutMs": 42, # The timeout in milliseconds for this action to run.
              "commands": [ # A list of commands to run sequentially for this action.
                "A String",
              ],
            },
          },
          "name": "A String", # Name of this Template. The name must conform to the expression: [a-zA-Z0-9-_]{1,64}
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>