// Package manager provides access to the Deployment Manager API. // // See https://developers.google.com/deployment-manager/ // // Usage example: // // import "google.golang.org/api/manager/v1beta2" // ... // managerService, err := manager.New(oauthHttpClient) package manager import ( "bytes" "encoding/json" "errors" "fmt" "google.golang.org/api/googleapi" "io" "net/http" "net/url" "strconv" "strings" ) // Always reference these packages, just in case the auto-generated code // below doesn't. var _ = bytes.NewBuffer var _ = strconv.Itoa var _ = fmt.Sprintf var _ = json.NewDecoder var _ = io.Copy var _ = url.Parse var _ = googleapi.Version var _ = errors.New var _ = strings.Replace const apiId = "manager:v1beta2" const apiName = "manager" const apiVersion = "v1beta2" const basePath = "https://www.googleapis.com/manager/v1beta2/projects/" // OAuth2 scopes used by this API. const ( // View and manage your applications deployed on Google App Engine AppengineAdminScope = "https://www.googleapis.com/auth/appengine.admin" // View and manage your data across Google Cloud Platform services CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" // View and manage your Google Compute Engine resources ComputeScope = "https://www.googleapis.com/auth/compute" // Manage your data in Google Cloud Storage DevstorageRead_writeScope = "https://www.googleapis.com/auth/devstorage.read_write" // View and manage your Google Cloud Platform management resources and // deployment status information NdevCloudmanScope = "https://www.googleapis.com/auth/ndev.cloudman" // View your Google Cloud Platform management resources and deployment // status information NdevCloudmanReadonlyScope = "https://www.googleapis.com/auth/ndev.cloudman.readonly" ) func New(client *http.Client) (*Service, error) { if client == nil { return nil, errors.New("client is nil") } s := &Service{client: client, BasePath: basePath} s.Deployments = NewDeploymentsService(s) s.Templates = NewTemplatesService(s) return s, nil } type Service struct { client *http.Client BasePath string // API endpoint base URL Deployments *DeploymentsService Templates *TemplatesService } func NewDeploymentsService(s *Service) *DeploymentsService { rs := &DeploymentsService{s: s} return rs } type DeploymentsService struct { s *Service } func NewTemplatesService(s *Service) *TemplatesService { rs := &TemplatesService{s: s} return rs } type TemplatesService struct { s *Service } type AccessConfig struct { // Name: Name of this access configuration. Name string `json:"name,omitempty"` // NatIp: An external IP address associated with this instance. NatIp string `json:"natIp,omitempty"` // Type: Type of this access configuration file. (Currently only // ONE_TO_ONE_NAT is legal.) Type string `json:"type,omitempty"` } type Action struct { // Commands: A list of commands to run sequentially for this action. Commands []string `json:"commands,omitempty"` // TimeoutMs: The timeout in milliseconds for this action to run. TimeoutMs int64 `json:"timeoutMs,omitempty"` } type AllowedRule struct { // IPProtocol: ?tcp?, ?udp? or ?icmp? IPProtocol string `json:"IPProtocol,omitempty"` // Ports: List of ports or port ranges (Example inputs include: ["22"], // [?33?, "12345-12349"]. Ports []string `json:"ports,omitempty"` } type AutoscalingModule struct { CoolDownPeriodSec int64 `json:"coolDownPeriodSec,omitempty"` Description string `json:"description,omitempty"` MaxNumReplicas int64 `json:"maxNumReplicas,omitempty"` MinNumReplicas int64 `json:"minNumReplicas,omitempty"` SignalType string `json:"signalType,omitempty"` TargetModule string `json:"targetModule,omitempty"` // TargetUtilization: target_utilization should be in range [0,1]. TargetUtilization float64 `json:"targetUtilization,omitempty"` } type AutoscalingModuleStatus struct { // AutoscalingConfigUrl: [Output Only] The URL of the corresponding // Autoscaling configuration. AutoscalingConfigUrl string `json:"autoscalingConfigUrl,omitempty"` } type DeployState struct { // Details: [Output Only] Human readable details about the current // state. Details string `json:"details,omitempty"` // Status: [Output Only] The status of the deployment. Possible values // include: // - UNKNOWN // - DEPLOYING // - DEPLOYED // - DEPLOYMENT_FAILED // - // DELETING // - DELETED // - DELETE_FAILED Status string `json:"status,omitempty"` } type Deployment struct { // CreationDate: [Output Only] The time when this deployment was // created. CreationDate string `json:"creationDate,omitempty"` // Description: A user-supplied description of this Deployment. Description string `json:"description,omitempty"` // Modules: [Output Only] List of status for the modules in this // deployment. Modules map[string]ModuleStatus `json:"modules,omitempty"` // Name: Name of this deployment. The name must conform to the following // regular expression: [a-zA-Z0-9-_]{1,64} Name string `json:"name,omitempty"` // Overrides: The set of parameter overrides to apply to the // corresponding Template before deploying. Overrides []*ParamOverride `json:"overrides,omitempty"` // State: [Output Only] Current status of this deployment. State *DeployState `json:"state,omitempty"` // TemplateName: The name of the Template on which this deployment is // based. TemplateName string `json:"templateName,omitempty"` } type DeploymentsListResponse struct { NextPageToken string `json:"nextPageToken,omitempty"` Resources []*Deployment `json:"resources,omitempty"` } type DiskAttachment struct { // DeviceName: The device name of this disk. DeviceName string `json:"deviceName,omitempty"` // Index: 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. Index int64 `json:"index,omitempty"` } type EnvVariable struct { // Hidden: Whether this variable is hidden or visible. Hidden bool `json:"hidden,omitempty"` // Value: Value of the environment variable. Value string `json:"value,omitempty"` } type ExistingDisk struct { // Attachment: Optional. How the disk will be attached to the Replica. Attachment *DiskAttachment `json:"attachment,omitempty"` // Source: The fully-qualified URL of the Persistent Disk resource. It // must be in the same zone as the Pool. Source string `json:"source,omitempty"` } type FirewallModule struct { // Allowed: The allowed ports or port ranges. Allowed []*AllowedRule `json:"allowed,omitempty"` // Description: The description of the firewall (optional) Description string `json:"description,omitempty"` // Network: 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. Network string `json:"network,omitempty"` // SourceRanges: Source IP ranges to apply this firewall to, see the GCE // Spec for details on syntax SourceRanges []string `json:"sourceRanges,omitempty"` // SourceTags: Source Tags to apply this firewall to, see the GCE Spec // for details on syntax SourceTags []string `json:"sourceTags,omitempty"` // TargetTags: Target Tags to apply this firewall to, see the GCE Spec // for details on syntax TargetTags []string `json:"targetTags,omitempty"` } type FirewallModuleStatus struct { // FirewallUrl: [Output Only] The URL of the corresponding Firewall // resource. FirewallUrl string `json:"firewallUrl,omitempty"` } type HealthCheckModule struct { CheckIntervalSec int64 `json:"checkIntervalSec,omitempty"` Description string `json:"description,omitempty"` HealthyThreshold int64 `json:"healthyThreshold,omitempty"` Host string `json:"host,omitempty"` Path string `json:"path,omitempty"` Port int64 `json:"port,omitempty"` TimeoutSec int64 `json:"timeoutSec,omitempty"` UnhealthyThreshold int64 `json:"unhealthyThreshold,omitempty"` } type HealthCheckModuleStatus struct { // HealthCheckUrl: [Output Only] The HealthCheck URL. HealthCheckUrl string `json:"healthCheckUrl,omitempty"` } type LbModule struct { Description string `json:"description,omitempty"` HealthChecks []string `json:"healthChecks,omitempty"` IpAddress string `json:"ipAddress,omitempty"` IpProtocol string `json:"ipProtocol,omitempty"` PortRange string `json:"portRange,omitempty"` SessionAffinity string `json:"sessionAffinity,omitempty"` TargetModules []string `json:"targetModules,omitempty"` } type LbModuleStatus struct { // ForwardingRuleUrl: [Output Only] The URL of the corresponding // ForwardingRule in GCE. ForwardingRuleUrl string `json:"forwardingRuleUrl,omitempty"` // TargetPoolUrl: [Output Only] The URL of the corresponding TargetPool // resource in GCE. TargetPoolUrl string `json:"targetPoolUrl,omitempty"` } type Metadata struct { // FingerPrint: The fingerprint of the metadata. FingerPrint string `json:"fingerPrint,omitempty"` // Items: A list of metadata items. Items []*MetadataItem `json:"items,omitempty"` } type MetadataItem struct { // Key: A metadata key. Key string `json:"key,omitempty"` // Value: A metadata value. Value string `json:"value,omitempty"` } type Module struct { AutoscalingModule *AutoscalingModule `json:"autoscalingModule,omitempty"` FirewallModule *FirewallModule `json:"firewallModule,omitempty"` HealthCheckModule *HealthCheckModule `json:"healthCheckModule,omitempty"` LbModule *LbModule `json:"lbModule,omitempty"` NetworkModule *NetworkModule `json:"networkModule,omitempty"` ReplicaPoolModule *ReplicaPoolModule `json:"replicaPoolModule,omitempty"` // Type: The type of this module. Valid values ("AUTOSCALING", // "FIREWALL", "HEALTH_CHECK", "LOAD_BALANCING", "NETWORK", // "REPLICA_POOL") Type string `json:"type,omitempty"` } type ModuleStatus struct { // AutoscalingModuleStatus: [Output Only] The status of the // AutoscalingModule, set for type AUTOSCALING. AutoscalingModuleStatus *AutoscalingModuleStatus `json:"autoscalingModuleStatus,omitempty"` // FirewallModuleStatus: [Output Only] The status of the FirewallModule, // set for type FIREWALL. FirewallModuleStatus *FirewallModuleStatus `json:"firewallModuleStatus,omitempty"` // HealthCheckModuleStatus: [Output Only] The status of the // HealthCheckModule, set for type HEALTH_CHECK. HealthCheckModuleStatus *HealthCheckModuleStatus `json:"healthCheckModuleStatus,omitempty"` // LbModuleStatus: [Output Only] The status of the LbModule, set for // type LOAD_BALANCING. LbModuleStatus *LbModuleStatus `json:"lbModuleStatus,omitempty"` // NetworkModuleStatus: [Output Only] The status of the NetworkModule, // set for type NETWORK. NetworkModuleStatus *NetworkModuleStatus `json:"networkModuleStatus,omitempty"` // ReplicaPoolModuleStatus: [Output Only] The status of the // ReplicaPoolModule, set for type VM. ReplicaPoolModuleStatus *ReplicaPoolModuleStatus `json:"replicaPoolModuleStatus,omitempty"` // State: [Output Only] The current state of the module. State *DeployState `json:"state,omitempty"` // Type: [Output Only] The type of the module. Type string `json:"type,omitempty"` } type NetworkInterface struct { // AccessConfigs: An array of configurations for this interface. This // specifies how this interface is configured to interact with other // network services AccessConfigs []*AccessConfig `json:"accessConfigs,omitempty"` // Name: Name of the interface. Name string `json:"name,omitempty"` // Network: The name of the NetworkModule to which this interface // applies. If not specified, or specified as 'default', this will use // the 'default' network. Network string `json:"network,omitempty"` // NetworkIp: An optional IPV4 internal network address to assign to the // instance for this network interface. NetworkIp string `json:"networkIp,omitempty"` } type NetworkModule struct { // IPv4Range: 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. IPv4Range string `json:"IPv4Range,omitempty"` // Description: The description of the network. Description string `json:"description,omitempty"` // GatewayIPv4: 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. GatewayIPv4 string `json:"gatewayIPv4,omitempty"` } type NetworkModuleStatus struct { // NetworkUrl: [Output Only] The URL of the corresponding Network // resource. NetworkUrl string `json:"networkUrl,omitempty"` } type NewDisk struct { // Attachment: How the disk will be attached to the Replica. Attachment *DiskAttachment `json:"attachment,omitempty"` // AutoDelete: If true, then this disk will be deleted when the instance // is deleted. AutoDelete bool `json:"autoDelete,omitempty"` // Boot: If true, indicates that this is the root persistent disk. Boot bool `json:"boot,omitempty"` // InitializeParams: Create the new disk using these parameters. The // name of the disk will be -