metalcloud

package module
v3.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: Apache-2.0 Imports: 21 Imported by: 0

README

Metal Cloud Go SDK

GoDoc Build Status

This SDK allows control of the Bigstep Metal Cloud from Go.

GoDoc documentation available here

Getting started

package main
import "github.com/bigstepinc/metal-cloud-sdk-go"
import "os"
import "log"

func main(){
  user := os.Getenv("METALCLOUD_USER")
  apiKey := os.Getenv("METALCLOUD_API_KEY")
  endpoint := os.Getenv("METALCLOUD_ENDPOINT")

  if(user=="" || apiKey=="" || endpoint==""){
    log.Fatal("METALCLOUD_USER, METALCLOUD_API_KEY, METALCLOUD_ENDPOINT environment variables must be set")
  }

  client, err := metalcloud.GetMetalcloudClient(user, apiKey, endpoint)
  if err != nil {
    log.Fatal("Error initiating client: %s", err)
  }

  infras,err :=client.Infrastructures()
  if err != nil {
    log.Fatal("Error retrieving a list of infrastructures: %s", err)
  }

  for _,infra := range *infras{
    log.Printf("%s(%d)",infra.InfrastructureLabel, infra.InfrastructureID)
  }
}
Configuring a proxy:

ProxyFromEnvironment returns the URL of the proxy to use for a given request, as indicated by the environment variables HTTP_PROXY, HTTPS_PROXY and NO_PROXY (or the lowercase versions thereof). Requests use the proxy from the environment variable matching their scheme, unless excluded by NO_PROXY.

Documentation

Index

Constants

View Source
const (
	CLUSTER_TYPE_VMWARE_VSPHERE string = "vmware_vsphere"
	CLUSTER_TYPE_KUBERNETES     string = "kubernetes"
)
View Source
const (
	AuthMethodSignature string = "signature"
	AuthMethodBearer    string = "bearer"
	AuthMethodOauth     string = "oauth"
)

Variables

This section is empty.

Functions

func GetObjectByKind

func GetObjectByKind(name string) (reflect.Value, error)

GetObjectByKind creates an object of type <name>

Types

type AFC

type AFC struct {
	AFCID                     int    `json:"afc_id,omitempty" yaml:"AFCID,omitempty"`
	AFCType                   string `json:"afc_type,omitempty" yaml:"afcType,omitempty"`
	AFCResponseJSON           string `json:"afc_response_json,omitempty" yaml:"AFCResponseJSON,omitempty"`
	AFCExceptionJSON          string `json:"afc_exception_json,omitempty" yaml:"AFCExceptionJSON,omitempty"`
	InfrastructureID          int    `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	AFCIPAddressHumanReadable string `json:"afc_ip_address_human_readable,omitempty" yaml:"AFCIPAddressHumanReadable,omitempty"`
	AFCIsBlocked              int    `json:"afc_id_blocked,omitempty" yaml:"AFCIsBlocked,omitempty"`
	AFCIsBlockedBy            int    `json:"afc_id_blocked_by,omitempty" yaml:"AFCIsBlockedBy,omitempty"`
	AFCGroupID                int    `json:"afc_group_id,omitempty" yaml:"AFCGroupID,omitempty"`
	DatacenterName            string `json:"datacenter_name,omitempty" yaml:"datacenterName,omitempty"`
	InstanceID                int    `json:"instance_id,omitempty" yaml:"instanceID,omitempty"`
	ServerID                  int    `json:"server_id,omitempty" yaml:"serverID,omitempty"`
	AFCExecuteEngine          string `json:"afc_execute_engine,omitempty" yaml:"AFCExecuteEngine,omitempty"`
	AFCCallCount              int    `json:"afc_call_count,omitempty" yaml:"AFCCallCount,omitempty"`
	AFCRetryMax               int    `json:"afc_retry_max,omitempty" yaml:"AFCRetryMax,omitempty"`
	AFCRetryCount             int    `json:"afc_retry_count,omitempty" yaml:"AFCRetryCount,omitempty"`
	AFCStartTimestamp         string `json:"afc_start_timestamp,omitempty" yaml:"AFCStartTimestamp,omitempty"`
	AFCRetryMinSec            int    `json:"afc_retry_min_sec,omitempty" yaml:"AFCRetryMinSec,omitempty"`
	AFCDurationMs             int    `json:"afc_duration_milliseconds,omitempty" yaml:"AFCDurationMs,omitempty"`
	AFCUpdatedTimestamp       string `json:"afc_updated_timestamp,omitempty" yaml:"AFCUpdatedTimestamp,omitempty"`
	AFCCreatedTimestamp       string `json:"afc_created_timestamp,omitempty" yaml:"AFCCreatedTimestamp,omitempty"`
	AFCFunctionName           string `json:"afc_function_name,omitempty" yaml:"AFCFunctionName,omitempty"`
	AFCParamsJSON             string `json:"afc_params_json,omitempty" yaml:"AFCParamsJSON,omitempty"`
	AFCStatus                 string `json:"afc_status,omitempty" yaml:"AFCStatus,omitempty"`
}

AFC Represents an AFC result

type AFCSearchResult

type AFCSearchResult struct {
	AFCID                     int    `json:"afc_id,omitempty" yaml:"AFCID,omitempty"`
	AFCType                   string `json:"afc_type,omitempty" yaml:"afcType,omitempty"`
	AFCResponseJSON           string `json:"afc_response_json,omitempty" yaml:"AFCResponseJSON,omitempty"`
	AFCExceptionJSON          string `json:"afc_exception_json,omitempty" yaml:"AFCExceptionJSON,omitempty"`
	InfrastructureID          int    `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	AFCIPAddressHumanReadable string `json:"afc_ip_address_human_readable,omitempty" yaml:"AFCIPAddressHumanReadable,omitempty"`
	AFCIsBlocked              int    `json:"afc_id_blocked,omitempty" yaml:"AFCIsBlocked,omitempty"`
	AFCIsBlockedBy            int    `json:"afc_id_blocked_by,omitempty" yaml:"AFCIsBlockedBy,omitempty"`
	AFCGroupID                int    `json:"afc_group_id,omitempty" yaml:"AFCGroupID,omitempty"`
	DatacenterName            string `json:"datacenter_name,omitempty" yaml:"datacenterName,omitempty"`
	InstanceID                int    `json:"instance_id,omitempty" yaml:"instanceID,omitempty"`
	ServerID                  int    `json:"server_id,omitempty" yaml:"serverID,omitempty"`
	AFCExecuteEngine          string `json:"afc_execute_engine,omitempty" yaml:"AFCExecuteEngine,omitempty"`
	AFCCallCount              int    `json:"afc_call_count,omitempty" yaml:"AFCCallCount,omitempty"`
	AFCRetryMax               int    `json:"afc_retry_max,omitempty" yaml:"AFCRetryMax,omitempty"`
	AFCRetryCount             int    `json:"afc_retry_count,omitempty" yaml:"AFCRetryCount,omitempty"`
	AFCStartTimestamp         string `json:"afc_start_timestamp,omitempty" yaml:"AFCStartTimestamp,omitempty"`
	AFCRetryMinSec            int    `json:"afc_retry_min_sec,omitempty" yaml:"AFCRetryMinSec,omitempty"`
	AFCDurationMs             int    `json:"afc_duration_milliseconds,omitempty" yaml:"AFCDurationMs,omitempty"`
	AFCUpdatedTimestamp       string `json:"afc_updated_timestamp,omitempty" yaml:"AFCUpdatedTimestamp,omitempty"`
	AFCCreatedTimestamp       string `json:"afc_created_timestamp,omitempty" yaml:"AFCCreatedTimestamp,omitempty"`
	AFCFunctionName           string `json:"afc_function_name,omitempty" yaml:"AFCFunctionName,omitempty"`
	AFCParamsJSON             string `json:"afc_params_json,omitempty" yaml:"AFCParamsJSON,omitempty"`
	AFCStatus                 string `json:"afc_status,omitempty" yaml:"AFCStatus,omitempty"`
}

AFCSearchResult Represents an AFC search result

type AnsibleBundle

type AnsibleBundle struct {
	AnsibleBundleArchiveFilename       string `json:"ansible_bundle_archive_filename,omitempty"`
	AnsibleBundleArchiveContentsBase64 string `json:"ansible_bundle_archive_contents_base64,omitempty"`
	Type                               string `json:"type,omitempty"`
}

AnsibleBundle contains an Ansible project as a single archive file, usually .zip

type AppInstanceDetails

type AppInstanceDetails struct {
	InstanceID         int    `json:"instance_id,omitempty" yaml:"instanceId,omitempty"`
	InstanceLabel      string `json:"instance_label,omitempty" yaml:"instanceLabel,omitempty"`
	InstanceHostname   string `json:"instance_hostname,omitempty" yaml:"instanceHostname,omitempty"`
	InstanceClusterUrl string `json:"instance_cluster_url,omitempty" yaml:"instanceClusterUrl,omitempty"`
	InstanceHealth     string `json:"instance_health,omitempty" yaml:"instanceHealth,omitempty"`
	Type               string `json:"type,omitempty" yaml:"type,omitempty"`
	ESXIUsername       string `json:"esxi_username,omitempty" yaml:"esxiUsername,omitempty"`
	ESXIPassword       string `json:"esxi_password,omitempty" yaml:"esxiUsername,omitempty"`
}

type AppKubernetes

type AppKubernetes struct {
	KubernetesNodes                  map[string]AppInstanceDetails `json:"vsphere_worker,omitempty" yaml:"vsphereWorker,omitempty"`
	KubernetesMaster                 map[string]AppInstanceDetails `json:"vsphere_master,omitempty" yaml:"vsphereWorker,omitempty"`
	AdminUsername                    string                        `json:"admin_username,omitempty" yaml:"adminUsername,omitempty"`
	AdminPassword                    string                        `json:"admin_password,omitempty" yaml:"adminPassword,omitempty"`
	ClusterSoftwareAvailableVersions []string                      `json:"cluster_software_available_versions,omitempty" yaml:"clusterSoftwareAvailableVersions,omitempty"`
	ClusterSoftwareVersion           string                        `json:"cluster_software_version,omitempty" yaml:"clusterSoftwareVersion,omitempty"`
	Type                             string                        `json:"type,omitempty" yaml:"type,omitempty"`
}

type AppKubernetesWrapper

type AppKubernetesWrapper struct {
	ClusterApp AppKubernetes `json:"cluster_app,omitempty" yaml:"clusterApp,omitempty"`
	Type       string        `json:"type,omitempty" yaml:"type,omitempty"`
}

type AppVMWareVsphere

type AppVMWareVsphere struct {
	VSphereWorker                    map[string]AppInstanceDetails `json:"vsphere_worker,omitempty" yaml:"vsphereWorker,omitempty"`
	VSphereMaster                    map[string]AppInstanceDetails `json:"vsphere_master,omitempty" yaml:"vsphereWorker,omitempty"`
	AdminUsername                    string                        `json:"admin_username,omitempty" yaml:"adminUsername,omitempty"`
	AdminPassword                    string                        `json:"admin_password,omitempty" yaml:"adminPassword,omitempty"`
	ClusterSoftwareAvailableVersions []string                      `json:"cluster_software_available_versions,omitempty" yaml:"clusterSoftwareAvailableVersions,omitempty"`
	ClusterSoftwareVersion           string                        `json:"cluster_software_version,omitempty" yaml:"clusterSoftwareVersion,omitempty"`
	Type                             string                        `json:"type,omitempty" yaml:"type,omitempty"`
	InstanceVCenterServerManagement  string                        `json:"instance_vcenter_server_management,omitempty" yaml:"instanceVcenterServerManagement,omitempty"`
	InstanceVcenterWebClient         string                        `json:"instance_vcenter_web_client,omitempty" yaml:"instanceVcenterWebClient,omitempty"`
	VCSAUsername                     string                        `json:"vcsa_username,omitempty" yaml:"vcsaUsername,omitempty"`
	VCSAInitialPassword              string                        `json:"vcsa_initial_password,omitempty" yaml:"vcsaUsername,omitempty"`
}

type AppVMWareVsphereWrapper

type AppVMWareVsphereWrapper struct {
	ClusterApp AppVMWareVsphere `json:"cluster_app,omitempty" yaml:"clusterApp,omitempty"`
	Type       string           `json:"type,omitempty" yaml:"type,omitempty"`
}

type Applier

type Applier interface {
	CreateOrUpdate(MetalCloudClient) error
	Delete(MetalCloudClient) error
	Validate() error
}

Applier should create or update an object.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client struct defines a metalcloud client

func GetMetalcloudClient

func GetMetalcloudClient(user string, apiKey string, endpoint string, loggingEnabled bool, clientId string, clientSecret string, tokenURL string) (*Client, error)

func GetMetalcloudClientWithOptions

func GetMetalcloudClientWithOptions(options ClientOptions) (*Client, error)

GetMetalcloudClient returns a metal cloud client

func (*Client) AFCDelete

func (c *Client) AFCDelete(afcID int) error

AFCDelete Skips an AFC

func (*Client) AFCGet

func (c *Client) AFCGet(afcID int) (*AFC, error)

AFCGet Returns an AFC

func (*Client) AFCMarkForDeath

func (c *Client) AFCMarkForDeath(afcID int, typeOfMark string) error

AFCMarkForDeath Tries to kill an AFC

func (*Client) AFCRetryCall

func (c *Client) AFCRetryCall(afcID int) error

AFCRetryCall Retries an AFC

func (*Client) AFCSearch

func (c *Client) AFCSearch(filter string, page_start int, page_end int) (*[]AFCSearchResult, error)

AFCSearch searches for AFCs

func (*Client) AFCSkip

func (c *Client) AFCSkip(afcID int) error

AFCRetryCall Skips an AFC

func (*Client) ClusterAppKubernetes

func (c *Client) ClusterAppKubernetes(clusterID int, decryptCredentials bool) (*AppKubernetes, error)

ClusterAppKubernetes

func (*Client) ClusterAppKubernetesByLabel

func (c *Client) ClusterAppKubernetesByLabel(clusterLabel string, decryptCredentials bool) (*AppKubernetes, error)

ClusterAppKubernetesByLabel

func (*Client) ClusterAppVMWareVSphere

func (c *Client) ClusterAppVMWareVSphere(clusterID int, decryptCredentials bool) (*AppVMWareVsphere, error)

ClusterAppVMWareVSphere

func (*Client) ClusterAppVMWareVSphereByLabel

func (c *Client) ClusterAppVMWareVSphereByLabel(clusterLabel string, decryptCredentials bool) (*AppVMWareVsphere, error)

ClusterAppVMWareVSphereByLabel

func (*Client) ClusterCreate

func (c *Client) ClusterCreate(infrastructureID int, cluster Cluster) (*Cluster, error)

ClusterCreate

func (*Client) ClusterCreateByLabel

func (c *Client) ClusterCreateByLabel(infrastructureLabel string, cluster Cluster) (*Cluster, error)

ClusterCreateByLabel

func (*Client) ClusterDelete

func (c *Client) ClusterDelete(clusterID int) error

ClusterDelete array. Requires deploy.

func (*Client) ClusterDeleteByLabel

func (c *Client) ClusterDeleteByLabel(clusterLabel string) error

ClusterDeleteByLabel array. Requires deploy.

func (*Client) ClusterEdit

func (c *Client) ClusterEdit(clusterId int, clusterOperation ClusterOperation) (*Cluster, error)

ClusterEdit array. Requires deploy.

func (*Client) ClusterEditByLabel

func (c *Client) ClusterEditByLabel(clusterLabel string, clusterOperation ClusterOperation) (*Cluster, error)

ClusterEditByLabel array. Requires deploy.

func (*Client) ClusterGet

func (c *Client) ClusterGet(clusterID int) (*Cluster, error)

ClusterGet (app) with specified id

func (*Client) ClusterGetByLabel

func (c *Client) ClusterGetByLabel(clusterLabel string) (*Cluster, error)

ClusterGetByLabel (app) with specified id

func (*Client) ClusterInstanceArrays

func (c *Client) ClusterInstanceArrays(clusterId int) (*map[string]InstanceArray, error)

ClusterInstanceArrays

func (*Client) ClusterInstanceArraysByLabel

func (c *Client) ClusterInstanceArraysByLabel(clusterLabel string) (*map[string]InstanceArray, error)

ClusterInstanceArraysByLabel

func (*Client) Clusters

func (c *Client) Clusters(infrastructureId int) (*map[string]Cluster, error)

Clusters

func (*Client) ClustersByLabel

func (c *Client) ClustersByLabel(infrastructureLabel string) (*map[string]Cluster, error)

ClustersByLabel

func (*Client) CustomISOBootIntoServer

func (c *Client) CustomISOBootIntoServer(customISOID int, serverID int) (int, error)

CustomISOBootIntoServer boots a server with an iso. Returns an AFC group id

func (*Client) CustomISOCreate

func (c *Client) CustomISOCreate(customISO CustomISO) (*CustomISO, error)

CustomISOCreate creates a custom ISO record

func (*Client) CustomISODelete

func (c *Client) CustomISODelete(customISOID int) error

CustomISODelete deletes a CustomISO with specified id

func (*Client) CustomISOGet

func (c *Client) CustomISOGet(customISOID int) (*CustomISO, error)

CustomISOCreate creates a custom ISO record

func (*Client) CustomISOUpdate

func (c *Client) CustomISOUpdate(customISOID int, customISO CustomISO) (*CustomISO, error)

CustomISODelete deletes a CustomISO with specified id

func (*Client) CustomISOs

func (c *Client) CustomISOs(userID int) (*map[string]CustomISO, error)

CustomISOs returns custom ISOs for user

func (*Client) DatacenterAgentsConfigJSONDownloadURL

func (c *Client) DatacenterAgentsConfigJSONDownloadURL(datacenterName string, decrypt bool) (string, error)

DatacenterAgentsConfigJSONDownloadURL returns the agent url (and automatically decrypts it)

func (*Client) DatacenterConfigGet

func (c *Client) DatacenterConfigGet(datacenterName string) (*DatacenterConfig, error)

DatacenterConfigGet returns details of a specific datacenter

func (*Client) DatacenterConfigUpdate

func (c *Client) DatacenterConfigUpdate(datacenterName string, datacenterConfig DatacenterConfig) error

DatacenterConfigUpdate Updates configuration information for a specified Datacenter.

func (*Client) DatacenterCreate

func (c *Client) DatacenterCreate(datacenter Datacenter, datacenterConfig DatacenterConfig) (*Datacenter, error)

DatacenterCreate creates a new Datacenter

func (*Client) DatacenterDelete added in v3.0.2

func (c *Client) DatacenterDelete(datacenterName string) error

DatacenterDelete deletes storage pools, subnet pools, and other resources then marks the datacenter as deleted.

func (*Client) DatacenterGet

func (c *Client) DatacenterGet(datacenterName string) (*Datacenter, error)

DatacenterGet returns details of a specific datacenter

func (*Client) DatacenterGetForUserByEmail

func (c *Client) DatacenterGetForUserByEmail(datacenterName string, userID string) (*Datacenter, error)

DatacenterGetForUserByEmail returns details of a specific datacenter

func (*Client) DatacenterGetForUserByID

func (c *Client) DatacenterGetForUserByID(datacenterName string, userID int) (*Datacenter, error)

DatacenterGetForUserByID returns details of a specific datacenter

func (*Client) Datacenters

func (c *Client) Datacenters(onlyActive bool) (*map[string]Datacenter, error)

Datacenters returns datacenters for all users

func (*Client) DatacentersByUserEmail

func (c *Client) DatacentersByUserEmail(userEmail string, onlyActive bool) (*map[string]Datacenter, error)

DatacentersByUserEmail returns datacenters by email

func (*Client) DatacentersByUserID

func (c *Client) DatacentersByUserID(userID int, onlyActive bool) (*map[string]Datacenter, error)

DatacentersByUserID returns datacenters for specific user

func (*Client) DriveArrayCreate

func (c *Client) DriveArrayCreate(infrastructureID int, driveArray DriveArray) (*DriveArray, error)

DriveArrayCreate array. Requires deploy.

func (*Client) DriveArrayCreateByLabel

func (c *Client) DriveArrayCreateByLabel(infrastructureLabel string, driveArray DriveArray) (*DriveArray, error)

DriveArrayCreateByLabel array. Requires deploy.

func (*Client) DriveArrayDelete

func (c *Client) DriveArrayDelete(driveArrayID int) error

DriveArrayDelete

func (*Client) DriveArrayDeleteByLabel

func (c *Client) DriveArrayDeleteByLabel(driveArrayLabel string) error

DriveArrayDeleteByLabel

func (*Client) DriveArrayDrives

func (c *Client) DriveArrayDrives(driveArray int) (*map[string]Drive, error)

DriveArrayDrives

func (*Client) DriveArrayDrivesByLabel

func (c *Client) DriveArrayDrivesByLabel(driveArrLabel string) (*map[string]Drive, error)

DriveArrayDrivesByLabel

func (*Client) DriveArrayEdit

func (c *Client) DriveArrayEdit(driveArrayID int, driveArrayOperation DriveArrayOperation) (*DriveArray, error)

DriveArrayEdit array. Requires deploy.

func (*Client) DriveArrayEditByLabel

func (c *Client) DriveArrayEditByLabel(driveArrayLabel string, driveArrayOperation DriveArrayOperation) (*DriveArray, error)

DriveArrayEditByLabel array. Requires deploy.

func (*Client) DriveArrayGet

func (c *Client) DriveArrayGet(driveArrayID int) (*DriveArray, error)

DriveArrayGet retrieves a DriveArray object with specified ids

func (*Client) DriveArrayGetByLabel

func (c *Client) DriveArrayGetByLabel(driveArrayLabel string) (*DriveArray, error)

DriveArrayGetByLabel retrieves a DriveArray object with specified ids

func (*Client) DriveArrays

func (c *Client) DriveArrays(infrastructureID int) (*map[string]DriveArray, error)

DriveArrays retrieves the list of drives arrays of an infrastructure

func (*Client) DriveArraysByLabel

func (c *Client) DriveArraysByLabel(infrastructureLabel string) (*map[string]DriveArray, error)

DriveArraysByLabel retrieves the list of drives arrays of an infrastructure

func (*Client) DriveSnapshotCreate

func (c *Client) DriveSnapshotCreate(driveID int) (*Snapshot, error)

DriveSnapshotCreate creates a drive snapshot

func (*Client) DriveSnapshotDelete

func (c *Client) DriveSnapshotDelete(driveSnapshotID int) error

DriveSnapshotDelete creates a drive snapshot

func (*Client) DriveSnapshotGet

func (c *Client) DriveSnapshotGet(driveSnapshotID int) (*Snapshot, error)

DriveSnapshotGet gets a drive snapshot

func (*Client) DriveSnapshotRollback

func (c *Client) DriveSnapshotRollback(driveSnapshotID int) error

DriveSnapshotRollback rolls a Drive back to a specified DriveSnapshot. The specified snapshot is not destroyed and can be reused.

func (*Client) DriveSnapshots

func (c *Client) DriveSnapshots(driveID int) (*map[string]Snapshot, error)

DriveSnapshots retrieves a list of all the snapshot objects

func (*Client) ExternalConnectionCreate

func (c *Client) ExternalConnectionCreate(externalConnection ExternalConnection) (*ExternalConnection, error)

ExternalConnectionCreate creates an external connection.

func (*Client) ExternalConnectionDelete

func (c *Client) ExternalConnectionDelete(externalConnectionID int) error

ExternalConnectionDelete connection.

func (*Client) ExternalConnectionDeleteByLabel

func (c *Client) ExternalConnectionDeleteByLabel(externalConnectionLabel string) error

ExternalConnectionDeleteByLabel connection.

func (*Client) ExternalConnectionEdit

func (c *Client) ExternalConnectionEdit(externalConnectionID int, externalConnection ExternalConnection) (*ExternalConnection, error)

ExternalConnectionEdit connection.

func (*Client) ExternalConnectionEditByLabel

func (c *Client) ExternalConnectionEditByLabel(externalConnectionLabel string, externalConnection ExternalConnection) (*ExternalConnection, error)

ExternalConnectionEditByLabel connection.

func (*Client) ExternalConnectionGet

func (c *Client) ExternalConnectionGet(externalConnectionID int) (*ExternalConnection, error)

ExternalConnectionGet

func (*Client) ExternalConnectionGetByLabel

func (c *Client) ExternalConnectionGetByLabel(externalConnectionLabel string) (*ExternalConnection, error)

ExternalConnectionGetByLabel

func (*Client) ExternalConnections

func (c *Client) ExternalConnections(datacenterName string) (*map[int]ExternalConnection, error)

ExternalConnections returns a list of external connections for the specified datacenter

func (*Client) GetEndpoint

func (c *Client) GetEndpoint() string

GetEndpoint returns the endpoint configured for this connection

func (*Client) GetUserEmail

func (c *Client) GetUserEmail() string

GetUserEmail returns the user configured for this connection

func (*Client) GetUserID

func (c *Client) GetUserID() int

GetUserID returns the ID of the user extracted from the API key

func (*Client) InfrastructureCreate

func (c *Client) InfrastructureCreate(infrastructure Infrastructure) (*Infrastructure, error)

InfrastructureCreate creates an infrastructure

func (*Client) InfrastructureDelete

func (c *Client) InfrastructureDelete(infrastructureID int) error

InfrastructureDelete elements. Requires deploy

func (*Client) InfrastructureDeleteByLabel

func (c *Client) InfrastructureDeleteByLabel(infrastructureLabel string) error

InfrastructureDeleteByLabel elements. Requires deploy

func (*Client) InfrastructureDeploy

func (c *Client) InfrastructureDeploy(infrastructureID int, shutdownOptions ShutdownOptions, allowDataLoss bool, skipAnsible bool) error

InfrastructureDeploy

func (*Client) InfrastructureDeployByLabel

func (c *Client) InfrastructureDeployByLabel(infrastructureLabel string, shutdownOptions ShutdownOptions, allowDataLoss bool, skipAnsible bool) error

InfrastructureDeployByLabel

func (*Client) InfrastructureDeployCustomStageAddIntoRunlevel

func (c *Client) InfrastructureDeployCustomStageAddIntoRunlevel(infraID int, stageID int, runLevel int, stageRunMoment string) error

InfrastructureDeployCustomStageAddIntoRunlevel adds a stage into a runlevel

func (*Client) InfrastructureDeployCustomStageDelete

func (c *Client) InfrastructureDeployCustomStageDelete(nInfrastructureCustomDeployStageID int) error

InfrastructureDeployCustomStageDelete delete a stage

func (*Client) InfrastructureDeployCustomStages

func (c *Client) InfrastructureDeployCustomStages(infraID int, stageDefinitionType string) (*[]WorkflowStageAssociation, error)

InfrastructureDeployCustomStages retrieves a list of all the StageDefinition objects which a specified User is allowed to see through ownership or delegation. The stageDefinition objects never return the actual protected stageDefinition value.

func (*Client) InfrastructureDeployWithOptions

func (c *Client) InfrastructureDeployWithOptions(infrastructureID int, shutdownOptions ShutdownOptions, deployOptions *DeployOptions, allowDataLoss bool, skipAnsible bool) error

InfrastructureDeployWithOptions infrastructure. With options.

func (*Client) InfrastructureDeployWithOptionsByLabel

func (c *Client) InfrastructureDeployWithOptionsByLabel(infrastructureLabel string, shutdownOptions ShutdownOptions, deployOptions *DeployOptions, allowDataLoss bool, skipAnsible bool) error

InfrastructureDeployWithOptionsByLabel infrastructure. With options.

func (*Client) InfrastructureEdit

func (c *Client) InfrastructureEdit(infrastructureID int, infrastructureOperation InfrastructureOperation) (*Infrastructure, error)

InfrastructureEdit

func (*Client) InfrastructureEditByLabel

func (c *Client) InfrastructureEditByLabel(infrastructureLabel string, infrastructureOperation InfrastructureOperation) (*Infrastructure, error)

InfrastructureEditByLabel

func (*Client) InfrastructureGet

func (c *Client) InfrastructureGet(infrastructureID int) (*Infrastructure, error)

InfrastructureGet

func (*Client) InfrastructureGetByLabel

func (c *Client) InfrastructureGetByLabel(infrastructureLabel string) (*Infrastructure, error)

InfrastructureGetByLabel

func (*Client) InfrastructureOperationCancel

func (c *Client) InfrastructureOperationCancel(infrastructureID int) error

InfrastructureOperationCancel (undos) alterations done before deploy

func (*Client) InfrastructureOperationCancelByLabel

func (c *Client) InfrastructureOperationCancelByLabel(infrastructureLabel string) error

InfrastructureOperationCancelByLabel (undos) alterations done before deploy

func (*Client) InfrastructureSearch

func (c *Client) InfrastructureSearch(filter string) (*[]InfrastructuresSearchResult, error)

InfrastructureSearch searches for infrastructures with filtering support

func (*Client) InfrastructureUserLimits

func (c *Client) InfrastructureUserLimits(infrastructureID int) (*map[string]interface{}, error)

InfrastructureUserLimits

func (*Client) InfrastructureUserLimitsByLabel

func (c *Client) InfrastructureUserLimitsByLabel(infrastructureLabel string) (*map[string]interface{}, error)

InfrastructureUserLimitsByLabel

func (*Client) Infrastructures

func (c *Client) Infrastructures() (*map[string]Infrastructure, error)

Infrastructures returns a list of infrastructures

func (*Client) InstanceArrayCreate

func (c *Client) InstanceArrayCreate(infrastructureID int, instanceArray InstanceArray) (*InstanceArray, error)

InstanceArrayCreate (colletion of identical instances). Requires Deploy.

func (*Client) InstanceArrayCreateByLabel

func (c *Client) InstanceArrayCreateByLabel(infrastructureLabel string, instanceArray InstanceArray) (*InstanceArray, error)

InstanceArrayCreateByLabel (colletion of identical instances). Requires Deploy.

func (*Client) InstanceArrayDelete

func (c *Client) InstanceArrayDelete(instanceArrayID int) error

InstanceArrayDelete array. Requires deploy.

func (*Client) InstanceArrayDeleteByLabel

func (c *Client) InstanceArrayDeleteByLabel(instanceArrayLabel string) error

InstanceArrayDeleteByLabel array. Requires deploy.

func (*Client) InstanceArrayEdit

func (c *Client) InstanceArrayEdit(instanceArrayID int, instanceArrayOperation InstanceArrayOperation, bSwapExistingInstancesHardware *bool, bKeepDetachingDrives *bool, objServerTypeMatches *ServerTypeMatches, arrInstancesToBeDeleted *[]int) (*InstanceArray, error)

InstanceArrayEdit array. Requires deploy.

func (*Client) InstanceArrayEditByLabel

func (c *Client) InstanceArrayEditByLabel(instanceArrayLabel string, instanceArrayOperation InstanceArrayOperation, bSwapExistingInstancesHardware *bool, bKeepDetachingDrives *bool, objServerTypeMatches *ServerTypeMatches, arrInstancesToBeDeleted *[]int) (*InstanceArray, error)

InstanceArrayEditByLabel array. Requires deploy.

func (*Client) InstanceArrayGet

func (c *Client) InstanceArrayGet(instanceArrayID int) (*InstanceArray, error)

InstanceArrayGet

func (*Client) InstanceArrayGetByLabel

func (c *Client) InstanceArrayGetByLabel(instanceArrayLabel string) (*InstanceArray, error)

InstanceArrayGetByLabel

func (*Client) InstanceArrayInstances

func (c *Client) InstanceArrayInstances(instanceArrayID int) (*map[string]Instance, error)

InstanceArrayInstances InstanceArray.

func (*Client) InstanceArrayInstancesByLabel

func (c *Client) InstanceArrayInstancesByLabel(instanceArrayLabel string) (*map[string]Instance, error)

InstanceArrayInstancesByLabel InstanceArray.

func (*Client) InstanceArrayInterfaceAttachNetwork

func (c *Client) InstanceArrayInterfaceAttachNetwork(instanceArrayID int, instanceArrayInterfaceIndex int, networkID int) (*InstanceArray, error)

InstanceArrayInterfaceAttachNetwork attaches an InstanceArrayInterface to a Network

func (*Client) InstanceArrayInterfaceDetach

func (c *Client) InstanceArrayInterfaceDetach(instanceArrayID int, instanceArrayInterfaceIndex int) (*InstanceArray, error)

InstanceArrayInterfaceDetach detaches an InstanceArrayInterface from any Network element that is attached to.

func (*Client) InstanceArrayNetworkProfileClear

func (c *Client) InstanceArrayNetworkProfileClear(instanceArrayID int, networkID int) error

func (*Client) InstanceArrayNetworkProfileSet

func (c *Client) InstanceArrayNetworkProfileSet(instanceArrayID int, networkID int, networkProfileID int) (*map[int]int, error)

func (*Client) InstanceArrayStart

func (c *Client) InstanceArrayStart(instanceArrayID int) (*InstanceArray, error)

InstanceArrayStart InstanceArray.

func (*Client) InstanceArrayStartByLabel

func (c *Client) InstanceArrayStartByLabel(instanceArrayLabel string) (*InstanceArray, error)

InstanceArrayStartByLabel InstanceArray.

func (*Client) InstanceArrayStop

func (c *Client) InstanceArrayStop(instanceArrayID int) (*InstanceArray, error)

InstanceArrayStop InstanceArray.

func (*Client) InstanceArrayStopByLabel

func (c *Client) InstanceArrayStopByLabel(instanceArrayLabel string) (*InstanceArray, error)

InstanceArrayStopByLabel InstanceArray.

func (*Client) InstanceArrays

func (c *Client) InstanceArrays(infrastructureID int) (*map[string]InstanceArray, error)

InstanceArrays

func (*Client) InstanceArraysByLabel

func (c *Client) InstanceArraysByLabel(infrastructureLabel string) (*map[string]InstanceArray, error)

InstanceArraysByLabel

func (*Client) InstanceEdit

func (c *Client) InstanceEdit(instanceID int, instanceOperation InstanceOperation) (*Instance, error)

InstanceEdit instance. Requires deploy

func (*Client) InstanceEditByLabel

func (c *Client) InstanceEditByLabel(instanceLabel string, instanceOperation InstanceOperation) (*Instance, error)

InstanceEditByLabel instance. Requires deploy

func (*Client) InstanceGet

func (c *Client) InstanceGet(instanceID int) (*Instance, error)

InstanceGet

func (*Client) InstanceGetByLabel

func (c *Client) InstanceGetByLabel(instanceLabel string) (*Instance, error)

InstanceGetByLabel

func (*Client) InstanceServerPowerGet

func (c *Client) InstanceServerPowerGet(instanceID int) (*string, error)

InstanceServerPowerGet

func (*Client) InstanceServerPowerGetBatch

func (c *Client) InstanceServerPowerGetBatch(infrastructureID int, instanceIDs []int) (*map[string]string, error)

InstanceServerPowerGetBatch

func (*Client) InstanceServerPowerGetBatchByLabel

func (c *Client) InstanceServerPowerGetBatchByLabel(infrastructureLabel string, instanceIDs []int) (*map[string]string, error)

InstanceServerPowerGetBatchByLabel

func (*Client) InstanceServerPowerGetByLabel

func (c *Client) InstanceServerPowerGetByLabel(instanceLabel string) (*string, error)

InstanceServerPowerGetByLabel

func (*Client) InstanceServerPowerSet

func (c *Client) InstanceServerPowerSet(instanceID int, operation string) error

InstanceServerPowerSet

func (*Client) InstanceServerPowerSetByLabel

func (c *Client) InstanceServerPowerSetByLabel(instanceLabel string, operation string) error

InstanceServerPowerSetByLabel

func (*Client) InstanceServerReplace

func (c *Client) InstanceServerReplace(instanceID int, serverID int) (int, error)

InstanceServerReplace replaces a server associated to an instance. Returns an AFC Group ID to be used in the AFC Deploy Viewer.

func (*Client) NetworkCreate

func (c *Client) NetworkCreate(infrastructureID int, network Network) (*Network, error)

NetworkCreate network

func (*Client) NetworkCreateByLabel

func (c *Client) NetworkCreateByLabel(infrastructureLabel string, network Network) (*Network, error)

NetworkCreateByLabel network

func (*Client) NetworkDelete

func (c *Client) NetworkDelete(networkID int) error

NetworkDelete network.

func (*Client) NetworkDeleteByLabel

func (c *Client) NetworkDeleteByLabel(networkLabel string) error

NetworkDeleteByLabel network.

func (*Client) NetworkEdit

func (c *Client) NetworkEdit(networkID int, networkOperation NetworkOperation) (*Network, error)

NetworkEdit network

func (*Client) NetworkEditByLabel

func (c *Client) NetworkEditByLabel(networkLabel string, networkOperation NetworkOperation) (*Network, error)

NetworkEditByLabel network

func (*Client) NetworkGet

func (c *Client) NetworkGet(networkID int) (*Network, error)

NetworkGet object

func (*Client) NetworkGetByLabel

func (c *Client) NetworkGetByLabel(networkLabel string) (*Network, error)

NetworkGetByLabel object

func (*Client) NetworkJoin

func (c *Client) NetworkJoin(networkID int, networkToBeDeletedID int) error

NetworkJoin objects.

func (*Client) NetworkJoinByLabel

func (c *Client) NetworkJoinByLabel(networkLabel string, networkToBeDeletedID int) error

NetworkJoinByLabel objects.

func (*Client) NetworkProfileCreate

func (c *Client) NetworkProfileCreate(datacenterName string, networkProfile NetworkProfile) (*NetworkProfile, error)

NetworkProfileCreate creates a network profile.

func (*Client) NetworkProfileDelete

func (c *Client) NetworkProfileDelete(networkProfileID int) error

NetworkProfileDelete profile.

func (*Client) NetworkProfileDeleteByLabel

func (c *Client) NetworkProfileDeleteByLabel(networkProfileLabel string) error

NetworkProfileDeleteByLabel profile.

func (*Client) NetworkProfileGet

func (c *Client) NetworkProfileGet(networkProfileID int) (*NetworkProfile, error)

NetworkProfileGet

func (*Client) NetworkProfileGetByLabel

func (c *Client) NetworkProfileGetByLabel(networkProfileLabel string) (*NetworkProfile, error)

NetworkProfileGetByLabel

func (*Client) NetworkProfileListByInstanceArray

func (c *Client) NetworkProfileListByInstanceArray(instanceArrayID int) (*map[int]int, error)

func (*Client) NetworkProfileUpdate

func (c *Client) NetworkProfileUpdate(networkProfileID int, networkProfile NetworkProfile) (*NetworkProfile, error)

NetworkProfileUpdate profile.

func (*Client) NetworkProfileUpdateByLabel

func (c *Client) NetworkProfileUpdateByLabel(networkProfileLabel string, networkProfile NetworkProfile) (*NetworkProfile, error)

NetworkProfileUpdateByLabel profile.

func (*Client) NetworkProfiles

func (c *Client) NetworkProfiles(datacenterName string) (*map[int]NetworkProfile, error)

NetworkProfiles returns a list of network profiles for the specified datacenter

func (*Client) Networks

func (c *Client) Networks(infrastructureID int) (*map[string]Network, error)

Networks infrastructure

func (*Client) NetworksByLabel

func (c *Client) NetworksByLabel(infrastructureLabel string) (*map[string]Network, error)

NetworksByLabel infrastructure

func (*Client) OSAssetCreate

func (c *Client) OSAssetCreate(osAsset OSAsset) (*OSAsset, error)

OSAssetCreate creates a osAsset object

func (*Client) OSAssetDelete

func (c *Client) OSAssetDelete(osAssetID int) error

OSAssetDelete permanently destroys a OSAsset.

func (*Client) OSAssetGet

func (c *Client) OSAssetGet(osAssetID int) (*OSAsset, error)

OSAssetGet returns a OSAsset specified by nOSAssetID. The OSAsset's protected value is never returned.

func (*Client) OSAssetGetStoredContent

func (c *Client) OSAssetGetStoredContent(osAssetID int) (string, error)

OSAssetGetStoredContent returns the content of an OSAsset specified by nOSAssetID.

func (*Client) OSAssetMakePrivate

func (c *Client) OSAssetMakePrivate(osAssetID int, userID int) (*OSAsset, error)

OSAssetMakePrivate makes an OS Asset private and owned by the current user

func (*Client) OSAssetMakePublic

func (c *Client) OSAssetMakePublic(osAssetID int) (*OSAsset, error)

OSAssetMakePublic makes an OS Asset public

func (*Client) OSAssetUpdate

func (c *Client) OSAssetUpdate(osAssetID int, osAsset OSAsset) (*OSAsset, error)

OSAssetUpdate updates a osAsset

func (*Client) OSAssets

func (c *Client) OSAssets() (*map[string]OSAsset, error)

OSAssets retrieves a list of all the OSAsset objects which a specified User is allowed to see through ownership or delegation. The OSAsset objects never return the actual protected OSAsset value.

func (*Client) OSTemplateAddOSAsset

func (c *Client) OSTemplateAddOSAsset(osTemplateID int, osAssetID int, path string, variablesJSON string) error

OSTemplateAddOSAsset adds an asset to a template

func (*Client) OSTemplateCreate

func (c *Client) OSTemplateCreate(osTemplate OSTemplate) (*OSTemplate, error)

OSTemplateCreate creates a osTemplate object

func (*Client) OSTemplateDelete

func (c *Client) OSTemplateDelete(osTemplateID int) error

OSTemplateDelete permanently destroys a OSTemplate.

func (*Client) OSTemplateGet

func (c *Client) OSTemplateGet(osTemplateID int, decryptPasswd bool) (*OSTemplate, error)

OSTemplateGet returns a OSTemplate specified by nOSTemplateID. The OSTemplate's protected value is never returned.

func (*Client) OSTemplateMakePrivate

func (c *Client) OSTemplateMakePrivate(osTemplateID int, userID int) error

OSTemplateMakePrivate makes a template private

func (*Client) OSTemplateMakePublic

func (c *Client) OSTemplateMakePublic(osTemplateID int) error

OSTemplateMakePublic makes a template public

func (*Client) OSTemplateOSAssets

func (c *Client) OSTemplateOSAssets(osTemplateID int) (*map[string]OSTemplateOSAssetData, error)

OSTemplateOSAssets returns the OSAssets assigned to an OSTemplate.

func (*Client) OSTemplateRemoveOSAsset

func (c *Client) OSTemplateRemoveOSAsset(osTemplateID int, osAssetID int) error

OSTemplateRemoveOSAsset removes an asset from a template

func (*Client) OSTemplateUpdate

func (c *Client) OSTemplateUpdate(osTemplateID int, osTemplate OSTemplate) (*OSTemplate, error)

OSTemplateUpdate updates a osTemplate

func (*Client) OSTemplateUpdateOSAssetPath

func (c *Client) OSTemplateUpdateOSAssetPath(osTemplateID int, osAssetID int, path string) error

OSTemplateUpdateOSAssetPath updates an asset mapping

func (*Client) OSTemplateUpdateOSAssetVariables

func (c *Client) OSTemplateUpdateOSAssetVariables(osTemplateID int, osAssetID int, variablesJSON string) error

OSTemplateUpdateOSAssetVariables updates an asset variable

func (*Client) OSTemplates

func (c *Client) OSTemplates() (*map[string]OSTemplate, error)

OSTemplates retrieves a list of all the OSTemplate objects which a specified User is allowed to see through ownership or delegation. The OSTemplate objects never return the actual protected OSTemplate value.

func (*Client) OSTemplatesNetwork

func (c *Client) OSTemplatesNetwork() (*map[string]OSTemplate, error)

OSTemplatesNetwork retrieves a list of all the network OSTemplate objects which a specified User is allowed to see through ownership or delegation.

func (*Client) SecretCreate

func (c *Client) SecretCreate(secret Secret) (*Secret, error)

SecretCreate creates a secret

func (*Client) SecretDelete

func (c *Client) SecretDelete(secretID int) error

SecretDelete Permanently destroys a Secret.

func (*Client) SecretGet

func (c *Client) SecretGet(secretID int) (*Secret, error)

SecretGet returns a Secret specified by nSecretID. The secret's protected value is never returned.

func (*Client) SecretUpdate

func (c *Client) SecretUpdate(secretID int, secret Secret) (*Secret, error)

SecretUpdate This function allows updating the secret_usage, secret_label and secret_base64 of a Secret

func (*Client) Secrets

func (c *Client) Secrets(usage string) (*map[string]Secret, error)

Secrets retrieves a list of all the Secret objects which a specified User is allowed to see through ownership or delegation. The secret objects never return the actual protected secret value.

func (*Client) ServerComponentGet

func (c *Client) ServerComponentGet(serverComponentID int) (*ServerComponent, error)

ServerComponentGet returns a server's component's details

func (*Client) ServerComponents

func (c *Client) ServerComponents(serverID int, filter string) (*[]ServerComponent, error)

ServerComponents searches for servers matching certain filter

func (*Client) ServerCreate

func (c *Client) ServerCreate(server Server, autoGenerate bool) (int, error)

ServerCreate manually creates a server record. DEPRECATED

func (*Client) ServerCreateAndRegister

func (c *Client) ServerCreateAndRegister(serverCreateAndRegister ServerCreateAndRegister) (int, error)

ServerCreateAndRegister manually creates and registers a server

func (*Client) ServerDecomission

func (c *Client) ServerDecomission(serverID int, skipIPMI bool) error

ServerDecomission decomissions the server row and deletes all child rows.

func (*Client) ServerDefaultCredentials

func (c *Client) ServerDefaultCredentials(datacenter_name string, decryptPasswd bool) (*[]ServerDefaultCredentials, error)

ServerDefaultCredentials retrieves the default credentials for server BMCs for the ZTP process for a given datacenter

func (*Client) ServerDefaultCredentialsAdd

func (c *Client) ServerDefaultCredentialsAdd(credentials []ServerDefaultCredentials) error

ServerDefaultCredentialsAdd Adds BMC credentials to the default credentials list for the ZTP process

func (*Client) ServerDefaultCredentialsRemove

func (c *Client) ServerDefaultCredentialsRemove(default_credentials_id []int) error

ServerDefaultCredentialsRemove Removes BMC credentials to the default credentials list for the ZTP process

func (*Client) ServerDelete

func (c *Client) ServerDelete(serverID int, skipIPMI bool) error

ServerDelete deletes all the information about a specified Server.

func (*Client) ServerEdit

func (c *Client) ServerEdit(serverID int, serverEditType string, server Server) (*Server, error)

ServerEdit edits a server record

func (*Client) ServerEditAvailability

func (c *Client) ServerEditAvailability(serverID int, server Server) (*Server, error)

ServerEditAvailability - edit only server availability settings

func (*Client) ServerEditComplete

func (c *Client) ServerEditComplete(serverID int, server Server) (*Server, error)

ServerEditComplete - perform a complete edit

func (*Client) ServerEditIPMI

func (c *Client) ServerEditIPMI(serverID int, server Server, serverUpdateInBMC bool) (*Server, error)

ServerEditIPMI - edit only IPMI settings

func (*Client) ServerEditInventory

func (c *Client) ServerEditInventory(serverID int, serverEditInventory ServerEditInventory) (*Server, error)

ServerEditInventory returns a server's inventory details

func (*Client) ServerEditProperty

func (c *Client) ServerEditProperty(serverID int, serverPropertyToEdit string, serverPropertyValue interface{}) error

ServerEditProperty edits a specific property from the server record this is used instead of the server edit function as it does not require a marshal-unmarshal to and form the server object which sometimes is broken due to frequent changes on the server side

func (*Client) ServerEditRack

func (c *Client) ServerEditRack(serverID int, serverEditRack ServerEditRack) (*Server, error)

ServerEditRack returns a server's rack info details

func (*Client) ServerFirmwareComponentTargetVersionAdd

func (c *Client) ServerFirmwareComponentTargetVersionAdd(serverComponentID int, version string, firmareBinaryURL string) error

ServerFirmwareComponentTargetVersionAdd Adds a new available firmware version for a server component along with the url of the binary. If the version already exists the old url will be overwritten.

func (*Client) ServerFirmwareComponentTargetVersionSet

func (c *Client) ServerFirmwareComponentTargetVersionSet(serverComponentID int, serverComponentFirmwareNewVersion string) error

ServerFirmwareComponentTargetVersionSet Sets a firmware target version for the upgrading process. The system will apply the upgrade at the next upgrading session.

func (*Client) ServerFirmwareComponentTargetVersionUpdate

func (c *Client) ServerFirmwareComponentTargetVersionUpdate(serverComponentID int) error

ServerFirmwareComponentTargetVersionUpdate Updates for every component of the specified server the available firmware versions that can be used as target by the firmware upgrading process. The available versions are extracted from a vendor specific catalog.

func (*Client) ServerFirmwareComponentUpgrade

func (c *Client) ServerFirmwareComponentUpgrade(serverID int, serverComponentID int, serverComponentFirmwareNewVersion string, firmwareBinaryURL string) error

ServerFirmwareComponentUpgrade Creates a firmware upgrading session for the specified component. If no strServerComponentFirmwareNewVersion or strFirmwareBinaryURL are provided the system will use the values from the database which should have been previously added

func (*Client) ServerFirmwarePolicyAddRule

func (c *Client) ServerFirmwarePolicyAddRule(serverFirmwarePolicyID int, serverRule *ServerFirmwareUpgradePolicyRule) (*ServerFirmwareUpgradePolicy, error)

ServerFirmwarePolicyAddRule add a new rule for a policy.

func (*Client) ServerFirmwarePolicyDeleteRule

func (c *Client) ServerFirmwarePolicyDeleteRule(serverFirmwarePolicyID int, serverRule *ServerFirmwareUpgradePolicyRule) error

ServerFirmwarePolicyDeleteRule deletes a rule from a policy.

func (*Client) ServerFirmwarePolicyGet

func (c *Client) ServerFirmwarePolicyGet(serverFirmwarePolicyID int) (*ServerFirmwareUpgradePolicy, error)

ServerFirmwarePolicyGet returns a server policy's details

func (*Client) ServerFirmwareUgradePolicyInstanceArraySet

func (c *Client) ServerFirmwareUgradePolicyInstanceArraySet(serverFirmwarePolicyID int, instanceArrayList []int) error

func (*Client) ServerFirmwareUpgrade

func (c *Client) ServerFirmwareUpgrade(serverID int) error

ServerFirmwareUpgrade creates a firmware upgrading session that affects all components from the specified server that have a target version set and are updatable.

func (*Client) ServerFirmwareUpgradePolicyActionSet

func (c *Client) ServerFirmwareUpgradePolicyActionSet(serverFirmwarePolicyID int, serverFirmwarePolicyAction string) error

ServerFirmwareUpgradePolicyActionSet sets the upgrade action for a specified ServerFirmwareUpgradePolicy.

func (*Client) ServerFirmwareUpgradePolicyCreate

func (c *Client) ServerFirmwareUpgradePolicyCreate(serverFirmwarePolicy *ServerFirmwareUpgradePolicy) (*ServerFirmwareUpgradePolicy, error)

ServerFirmwareUpgradePolicyCreate creates a server firmware policy.

func (*Client) ServerFirmwareUpgradePolicyDelete

func (c *Client) ServerFirmwareUpgradePolicyDelete(serverFirmwarePolicyID int) error

ServerFirmwareUpgradePolicyDelete deletes all the information about a specified ServerFirmwareUpgradePolicy.

func (*Client) ServerFirmwareUpgradePolicyLabelSet

func (c *Client) ServerFirmwareUpgradePolicyLabelSet(serverFirmwarePolicyID int, serverFirmwarePolicyLabel string) error

ServerFirmwareUpgradePolicyLabelSet sets the label for a specified ServerFirmwareUpgradePolicy.

func (*Client) ServerGet

func (c *Client) ServerGet(serverID int, decryptPasswd bool) (*Server, error)

ServerGet returns a server's details

func (*Client) ServerGetByUUID

func (c *Client) ServerGetByUUID(serverUUID string, decryptPasswd bool) (*Server, error)

ServerGetByUUID retrieves information about a specified Server by using the server's UUID

func (*Client) ServerPowerSet

func (c *Client) ServerPowerSet(serverID int, operation string) error

ServerPowerSet reboots or powers on a server

func (*Client) ServerReregister

func (c *Client) ServerReregister(serverID int, bSkipIPMI bool, bUseBDKAgent bool) error

ServerReregister triggers a re-register of a server

func (*Client) ServerStatusUpdate

func (c *Client) ServerStatusUpdate(serverID int, status string) error

ServerStatusUpdate alters the status of a server

func (*Client) ServerTypeDatacenter

func (c *Client) ServerTypeDatacenter(datacenterName string) (*[]int, error)

ServerTypeDatacenter retrieves all the server type IDs for servers found in a specified Datacenter

func (*Client) ServerTypeGet

func (c *Client) ServerTypeGet(serverTypeID int) (*ServerType, error)

ServerTypeGet id

func (*Client) ServerTypeGetByLabel

func (c *Client) ServerTypeGetByLabel(serverTypeLabel string) (*ServerType, error)

ServerTypeGetByLabel id

func (*Client) ServerTypes

func (c *Client) ServerTypes(bOnlyAvailable bool) (*map[int]ServerType, error)

ServerTypes retrieves all ServerType objects from the database.

func (*Client) ServerTypesForDatacenter

func (c *Client) ServerTypesForDatacenter(datacenterName string, bOnlyAvailable bool) (*map[int]ServerType, error)

ServerTypesForDatacenter retrieves all ServerType objects from the database.

func (*Client) ServerTypesMatchHardwareConfiguration

func (c *Client) ServerTypesMatchHardwareConfiguration(datacenterName string, hardwareConfiguration HardwareConfiguration) (*map[int]ServerType, error)

ServerTypesMatchHardwareConfiguration Retrieves a list of server types that match the provided hardware configuration. The function does not check for availability, only compatibility, so physical servers associated with the returned server types might be unavailable.

func (*Client) ServerTypesMatches

func (c *Client) ServerTypesMatches(infrastructureID int, hardwareConfiguration HardwareConfiguration, instanceArrayID *int, bAllowServerSwap bool) (*map[string]ServerType, error)

ServerTypesMatches Instance&#39;s configuration, using the properties specified in the objHardwareConfiguration object, and returns the number of compatible servers for each server_type_id.

func (*Client) ServerTypesMatchesByLabel

func (c *Client) ServerTypesMatchesByLabel(infrastructureLabel string, hardwareConfiguration HardwareConfiguration, instanceArrayID *int, bAllowServerSwap bool) (*map[string]ServerType, error)

ServerTypesMatchesByLabel Instance&#39;s configuration, using the properties specified in the objHardwareConfiguration object, and returns the number of compatible servers for each server_type_id.

func (*Client) ServerUnmanagedImport

func (c *Client) ServerUnmanagedImport(server ServerCreateUnmanaged) (*Server, error)

ServerUnmanagedImport creates an unmanaged server

func (*Client) ServerUnmanagedImportBatch

func (c *Client) ServerUnmanagedImportBatch(servers []ServerCreateUnmanaged) (*map[string]Server, error)

ServerUnmanagedImportBatch Imports multiple unmanaged servers

func (*Client) ServersSearch

func (c *Client) ServersSearch(filter string) (*[]ServerSearchResult, error)

ServersSearch searches for servers matching certain filter

func (*Client) SharedDriveAttachInstanceArray

func (c *Client) SharedDriveAttachInstanceArray(sharedDriveID int, instanceArrayID int) (*SharedDrive, error)

func (*Client) SharedDriveCreate

func (c *Client) SharedDriveCreate(infrastructureID int, sharedDrive SharedDrive) (*SharedDrive, error)

SharedDriveCreate array. Requires deploy.

func (*Client) SharedDriveCreateByLabel

func (c *Client) SharedDriveCreateByLabel(infrastructureLabel string, sharedDrive SharedDrive) (*SharedDrive, error)

SharedDriveCreateByLabel array. Requires deploy.

func (*Client) SharedDriveDelete

func (c *Client) SharedDriveDelete(sharedDriveID int) error

SharedDriveDelete drive.

func (*Client) SharedDriveDeleteByLabel

func (c *Client) SharedDriveDeleteByLabel(sharedDriveLabel string) error

SharedDriveDeleteByLabel drive.

func (*Client) SharedDriveDetachInstanceArray

func (c *Client) SharedDriveDetachInstanceArray(sharedDriveID int, instanceArrayID int) (*SharedDrive, error)

func (*Client) SharedDriveEdit

func (c *Client) SharedDriveEdit(sharedDriveID int, sharedDriveOperation SharedDriveOperation) (*SharedDrive, error)

SharedDriveEdit array. Requires deploy.

func (*Client) SharedDriveEditByLabel

func (c *Client) SharedDriveEditByLabel(sharedDriveLabel string, sharedDriveOperation SharedDriveOperation) (*SharedDrive, error)

SharedDriveEditByLabel array. Requires deploy.

func (*Client) SharedDriveGet

func (c *Client) SharedDriveGet(sharedDriveID int) (*SharedDrive, error)

SharedDriveGet drive

func (*Client) SharedDriveGetByLabel

func (c *Client) SharedDriveGetByLabel(sharedDriveLabel string) (*SharedDrive, error)

SharedDriveGetByLabel drive

func (*Client) SharedDrives

func (c *Client) SharedDrives(infrastructureID int) (*map[string]SharedDrive, error)

SharedDrives retrieves the list of shared drives of an infrastructure

func (*Client) StageDefinitionCreate

func (c *Client) StageDefinitionCreate(stageDefinition StageDefinition) (*StageDefinition, error)

StageDefinitionCreate creates a stageDefinition

func (*Client) StageDefinitionDelete

func (c *Client) StageDefinitionDelete(stageDefinitionID int) error

StageDefinitionDelete Permanently destroys a StageDefinition.

func (*Client) StageDefinitionGet

func (c *Client) StageDefinitionGet(stageDefinitionID int) (*StageDefinition, error)

StageDefinitionGet returns a StageDefinition specified by nStageDefinitionID. The stageDefinition's protected value is never returned.

func (*Client) StageDefinitionUpdate

func (c *Client) StageDefinitionUpdate(stageDefinitionID int, stageDefinition StageDefinition) (*StageDefinition, error)

StageDefinitionUpdate This function allows updating the stageDefinition_usage, stageDefinition_label and stageDefinition_base64 of a StageDefinition

func (*Client) StageDefinitions

func (c *Client) StageDefinitions() (*map[string]StageDefinition, error)

StageDefinitions retrieves a list of all the StageDefinition objects which a specified User is allowed to see through ownership or delegation. The stageDefinition objects never return the actual protected stageDefinition value.

func (*Client) StoragePoolGet

func (c *Client) StoragePoolGet(serverID int, decryptPasswd bool) (*StoragePool, error)

StoragePoolGet returns a storage pool's details

func (*Client) StoragePoolSearch

func (c *Client) StoragePoolSearch(filter string) (*[]StoragePoolSearchResult, error)

StoragePoolSearch searches for storage pools matching certain filter

func (*Client) SubnetCreate

func (c *Client) SubnetCreate(subnet Subnet) (*Subnet, error)

func (*Client) SubnetDelete

func (c *Client) SubnetDelete(subnetID int) error

func (*Client) SubnetGet

func (c *Client) SubnetGet(subnetID int) (*Subnet, error)

func (*Client) SubnetOOBCreate added in v3.0.1

func (c *Client) SubnetOOBCreate(subnetOOB SubnetOOB) (*SubnetOOB, error)

func (*Client) SubnetOOBDelete added in v3.0.1

func (c *Client) SubnetOOBDelete(subnetOOBID int) error

func (*Client) SubnetOOBDeleteByLabel added in v3.0.1

func (c *Client) SubnetOOBDeleteByLabel(subnetOOBLabel string) error

func (*Client) SubnetOOBGet added in v3.0.1

func (c *Client) SubnetOOBGet(subnetOOBID int) (*SubnetOOB, error)

func (*Client) SubnetOOBGetByLabel added in v3.0.1

func (c *Client) SubnetOOBGetByLabel(subnetOOBLabel string) (*SubnetOOB, error)

SubnetOOBGetByLabel retrieves information regarding a specified Subnet by label.

func (*Client) SubnetOOBSearch added in v3.0.1

func (c *Client) SubnetOOBSearch(filter string) (*[]SubnetOOB, error)

SubnetOOBSearch retrieves all OOB subnets registered in the database with the specified filter

func (*Client) SubnetPoolCreate

func (c *Client) SubnetPoolCreate(subnetPool SubnetPool) (*SubnetPool, error)

SubnetPoolCreate creates a new SubnetPool.

func (*Client) SubnetPoolCreateOrUpdate

func (c *Client) SubnetPoolCreateOrUpdate(subnetPool SubnetPool) (*SubnetPool, error)

SubnetPoolCreateOrUpdate creates or updates a subnet pool

func (*Client) SubnetPoolDelete

func (c *Client) SubnetPoolDelete(subnetPoolID int) error

SubnetPoolDelete deletes the specified SubnetPool

func (*Client) SubnetPoolDeleteByLabel added in v3.0.1

func (c *Client) SubnetPoolDeleteByLabel(subnetPoolLabel string) error

func (*Client) SubnetPoolGet

func (c *Client) SubnetPoolGet(subnetPoolID int) (*SubnetPool, error)

SubnetPoolGet retrieves information regarding a specified SubnetPool.

func (*Client) SubnetPoolGetByLabel added in v3.0.1

func (c *Client) SubnetPoolGetByLabel(subnetPoolLabel string) (*SubnetPool, error)

SubnetPoolGetByLabel retrieves information regarding a specified SubnetPool by label.

func (*Client) SubnetPoolPrefixSizesStats

func (c *Client) SubnetPoolPrefixSizesStats(subnetPoolID int) (*SubnetPoolUtilization, error)

SubnetPoolPrefixSizesStats retrieves information regarding the utilization of a specified SubnetPool.

func (*Client) SubnetPoolSearch

func (c *Client) SubnetPoolSearch(filter string) (*[]SubnetPool, error)

SubnetPoolSearch retrieves all switch devices registered in the database with the specified filter

func (*Client) SubnetPools

func (c *Client) SubnetPools() (*[]SubnetPool, error)

SubnetPools retrieves all switch devices registered in the database.

func (*Client) SwitchDeviceControllerCreate

func (c *Client) SwitchDeviceControllerCreate(switchDeviceController SwitchDeviceController) (*SwitchDeviceController, error)

SwitchDeviceControllerCreate creates a record for a new SwitchDeviceController and for the switches that were detected and created.

func (*Client) SwitchDeviceControllerDelete

func (c *Client) SwitchDeviceControllerDelete(networkEquipmentControllerID int) error

SwitchDeviceControllerDelete deletes a specified switch device controller. The switches belonging to the controller need to be deleted first.

func (*Client) SwitchDeviceControllerGet

func (c *Client) SwitchDeviceControllerGet(networkEquipmentControllerID int, decryptPasswd bool) (*SwitchDeviceController, error)

SwitchDeviceControllerGet retrieves information regarding a specified SwitchDeviceController.

func (*Client) SwitchDeviceControllerGetByIdentifierString

func (c *Client) SwitchDeviceControllerGetByIdentifierString(networkEquipmentIdentifierString string, decryptPasswd bool) (*SwitchDeviceController, error)

SwitchDeviceControllerGetByIdentifierString retrieves information regarding a specified SwitchDeviceController by identifier string.

func (*Client) SwitchDeviceControllerSwitches

func (c *Client) SwitchDeviceControllerSwitches(networkEquipmentIdentifierString string) (map[int]SwitchDevice, error)

SwitchDeviceControllers retrieves all switch devices registered in the database.

func (*Client) SwitchDeviceControllerSync

func (c *Client) SwitchDeviceControllerSync(networkEquipmentControllerID int) (*map[int]SwitchDevice, error)

Creates multiple network equipment controller records, based on the output from Switch Controller. Returns the created switches. Please note that this may take some time, typically a few seconds.

func (*Client) SwitchDeviceControllerUpdate

func (c *Client) SwitchDeviceControllerUpdate(networkEquipmentControllerID int, networkEquipmentControllerData interface{}) (*SwitchDeviceController, error)

SwitchDeviceUpdate updates an existing switch configuration

func (*Client) SwitchDeviceControllers

func (c *Client) SwitchDeviceControllers(datacenter string) (*map[int]SwitchDeviceController, error)

SwitchDeviceControllers retrieves all switch controller devices registered in the database. If a datacenter is specified, only the switch device controllers for that datacenter are returned.

func (*Client) SwitchDeviceCreate

func (c *Client) SwitchDeviceCreate(switchDevice SwitchDevice, bOverwriteWithHostnameFromFetchedSwitch bool) (*SwitchDevice, error)

SwitchDeviceCreate Creates a record for a new SwitchDevice.

func (*Client) SwitchDeviceDefaults

func (c *Client) SwitchDeviceDefaults(datacenter string) (*[]SwitchDeviceDefaults, error)

SwitchDeviceDefaults retrieves all switch defaults registered in the database for a datacenter.

func (*Client) SwitchDeviceDefaultsCreate

func (c *Client) SwitchDeviceDefaultsCreate(switchDeviceDefaultsArray []SwitchDeviceDefaults) error

SwitchDeviceDefaultsCreate adds records for a new set of switch device defaults.

func (*Client) SwitchDeviceDefaultsDelete

func (c *Client) SwitchDeviceDefaultsDelete(switchDeviceDefaultsIDs []int) error

SwitchDeviceDefaultsDelete removes records for the specified switch device defaults.

func (*Client) SwitchDeviceDelete

func (c *Client) SwitchDeviceDelete(networkEquipmentID int) error

SwitchDeviceDelete deletes a specified switch device and its registered interfaces.

func (*Client) SwitchDeviceGet

func (c *Client) SwitchDeviceGet(networkEquipmentID int, decryptPasswd bool) (*SwitchDevice, error)

SwitchDeviceGet Retrieves information regarding a specified SwitchDevice.

func (*Client) SwitchDeviceGetByIdentifierString

func (c *Client) SwitchDeviceGetByIdentifierString(networkEquipmentIdentifierString string, decryptPasswd bool) (*SwitchDevice, error)

SwitchDeviceGetByIdentifierString Retrieves information regarding a specified SwitchDevice by identifier string.

func (*Client) SwitchDeviceLinkCreate

func (c *Client) SwitchDeviceLinkCreate(networkEquipmentID1 int, networkEquipmentID2 int, networkEquipmentLinkType string) (*SwitchDeviceLink, error)

SwitchDeviceLinkCreate Creates a record for a new SwitchDevice.

func (*Client) SwitchDeviceLinkDelete

func (c *Client) SwitchDeviceLinkDelete(networkEquipmentID1 int, networkEquipmentID2 int, linkType string) error

SwitchDeviceLinkDelete deletes a specified switch device and its registered interfaces.

func (*Client) SwitchDeviceLinkGet

func (c *Client) SwitchDeviceLinkGet(networkEquipmentID1 int, networkEquipmentID2 int, linkType string) (*SwitchDeviceLink, error)

SwitchDeviceLinkGet Retrieves information regarding a specified switch device link

func (c *Client) SwitchDeviceLinks() (*map[int]SwitchDeviceLink, error)

SwitchDeviceLinks Returns all the switch device links found in the database.

func (*Client) SwitchDeviceUpdate

func (c *Client) SwitchDeviceUpdate(networkEquipmentID int, switchDevice SwitchDevice, bOverwriteWithHostnameFromFetchedSwitch bool) (*SwitchDevice, error)

SwitchDeviceUpdate updates an existing switch configuration

func (*Client) SwitchDevices

func (c *Client) SwitchDevices(datacenter string, switchType string) (*map[string]SwitchDevice, error)

SwitchDevices retrieves all switch devices registered in the database.

func (*Client) SwitchDevicesInDatacenter

func (c *Client) SwitchDevicesInDatacenter(datacenter string) (*map[string]SwitchDevice, error)

SwitchDevicesInDatacenter retrieves all switch devices in a datacenter

func (*Client) SwitchInterfaceSearch

func (c *Client) SwitchInterfaceSearch(filter string) (*[]SwitchInterfaceSearchResult, error)

SwitchInterfaceSearch searches for server interfaces filtering on various elements such as switch id or server id

func (*Client) UserEmailToUserID

func (c *Client) UserEmailToUserID(userEmail string) (*int, error)

UserEmailToUserID returns the user id of an user given an email

func (*Client) UserGet

func (c *Client) UserGet(userID int) (*User, error)

UserGet describes returns user account specifications.

func (*Client) UserGetByEmail

func (c *Client) UserGetByEmail(userLabel string) (*User, error)

UserGetByEmail describes returns user account specifications.

func (*Client) UserSearch

func (c *Client) UserSearch(filter string) (*[]UsersSearchResult, error)

UserSearch searches for users with filtering support

func (*Client) VariableCreate

func (c *Client) VariableCreate(variable Variable) (*Variable, error)

VariableCreate creates a variable object

func (*Client) VariableDelete

func (c *Client) VariableDelete(variableID int) error

VariableDelete permanently destroys a Variable.

func (*Client) VariableGet

func (c *Client) VariableGet(variableID int) (*Variable, error)

VariableGet returns a Variable specified by nVariableID. The Variable's protected value is never returned.

func (*Client) VariableUpdate

func (c *Client) VariableUpdate(variableID int, variable Variable) (*Variable, error)

VariableUpdate updates a variable

func (*Client) Variables

func (c *Client) Variables(usage string) (*map[string]Variable, error)

Variables retrieves a list of all the Variable objects which a specified User is allowed to see through ownership or delegation. The Variable objects never return the actual protected Variable value.

func (*Client) VolumeTemplateCreateFromDrive

func (c *Client) VolumeTemplateCreateFromDrive(driveID int, objVolumeTemplate VolumeTemplate) (*VolumeTemplate, error)

VolumeTemplateCreateFromDrive drive

func (*Client) VolumeTemplateCreateFromDriveByLabel

func (c *Client) VolumeTemplateCreateFromDriveByLabel(driveLabel string, objVolumeTemplate VolumeTemplate) (*VolumeTemplate, error)

VolumeTemplateCreateFromDriveByLabel drive

func (*Client) VolumeTemplateGet

func (c *Client) VolumeTemplateGet(volumeTemplateID int) (*VolumeTemplate, error)

VolumeTemplateGet template

func (*Client) VolumeTemplateGetByLabel

func (c *Client) VolumeTemplateGetByLabel(volumeTemplateLabel string) (*VolumeTemplate, error)

VolumeTemplateGetByLabel template

func (*Client) VolumeTemplateMakePrivate

func (c *Client) VolumeTemplateMakePrivate(volumeTemplateID int, userID int) error

VolumeTemplateMakePrivate makes a template private

func (*Client) VolumeTemplateMakePublic

func (c *Client) VolumeTemplateMakePublic(volumeTemplateID int, bootstrapFunctionName string) error

VolumeTemplateMakePublic makes a template public

func (*Client) VolumeTemplates

func (c *Client) VolumeTemplates() (*map[string]VolumeTemplate, error)

VolumeTemplates retrives the list of available templates

func (*Client) WorkflowCreate

func (c *Client) WorkflowCreate(workflow Workflow) (*Workflow, error)

WorkflowCreate creates a workflow

func (*Client) WorkflowDelete

func (c *Client) WorkflowDelete(workflowID int) error

WorkflowDelete Permanently destroys a Workflow.

func (*Client) WorkflowGet

func (c *Client) WorkflowGet(workflowID int) (*Workflow, error)

WorkflowGet returns a Workflow specified by nWorkflowID. The workflow's protected value is never returned.

func (*Client) WorkflowMoveAsNewRunLevel

func (c *Client) WorkflowMoveAsNewRunLevel(workflowID int, stageDefinitionID int, sourceRunLevel int, destinationRunLevel int) error

WorkflowMoveAsNewRunLevel moves a stage in this workflow from a runlevel to another

func (*Client) WorkflowMoveIntoRunLevel

func (c *Client) WorkflowMoveIntoRunLevel(workflowID int, stageDefinitionID int, sourceRunLevel int, destinationRunLevel int) error

WorkflowMoveIntoRunLevel moves a stage in this workflow from a runlevel to another

func (*Client) WorkflowStageAddAsNewRunLevel

func (c *Client) WorkflowStageAddAsNewRunLevel(workflowID int, stageDefinitionID int, destinationRunLevel int) error

WorkflowStageAddAsNewRunLevel adds a new stage in this workflow

func (*Client) WorkflowStageAddIntoRunLevel

func (c *Client) WorkflowStageAddIntoRunLevel(workflowID int, stageDefinitionID int, destinationRunLevel int) error

WorkflowStageAddIntoRunLevel adds a new stage in this workflow

func (*Client) WorkflowStageDelete

func (c *Client) WorkflowStageDelete(workflowStageID int) error

WorkflowStageDelete deletes a stage from a workflow entirelly

func (*Client) WorkflowStageGet

func (c *Client) WorkflowStageGet(workflowStageID int) (*WorkflowStageDefinitionReference, error)

WorkflowStageGet returns a StageDefinition specified by workflowStageID.

func (*Client) WorkflowStages

func (c *Client) WorkflowStages(workflowID int) (*[]WorkflowStageDefinitionReference, error)

WorkflowStages retrieves a list of all the StageDefinitions objects in this workflow

func (*Client) WorkflowUpdate

func (c *Client) WorkflowUpdate(workflowID int, workflow Workflow) (*Workflow, error)

WorkflowUpdate This function allows updating the workflow_usage, workflow_label and workflow_base64 of a Workflow

func (*Client) Workflows

func (c *Client) Workflows() (*map[string]Workflow, error)

Workflows retrieves a list of all the Workflow objects which a specified User is allowed to see through ownership or delegation.

func (*Client) WorkflowsWithUsage

func (c *Client) WorkflowsWithUsage(usage string) (*map[string]Workflow, error)

WorkflowsWithUsage retrieves a list of all the Workflow objects which the current User is allowed to see through ownership or delegation with a specific usage.

type ClientOptions

type ClientOptions struct {
	User                 string
	ApiKey               string
	Endpoint             string
	UserID               int
	LoggingEnabled       bool
	ClientId             string
	ClientSecret         string
	TokenURL             string
	Timeout              time.Duration
	InsecureSkipVerify   bool
	AuthenticationMethod string
}

type Cluster

type Cluster struct {
	ClusterID                  int    `json:"cluster_id,omitempty" yaml:"clusterId,omitempty"`
	ClusterLabel               string `json:"cluster_label,omitempty" yaml:"clusterLabel,omitempty"`
	ClusterSubdomain           string `json:"cluster_subdomain,omitempty" yaml:"clusterSubdomain,omitempty"`
	ClusterSubdomainPermanent  string `json:"cluster_subdomain_permanent,omitempty" yaml:"clusterSubdomainPermanent,omitempty"`
	InfrastructureID           int    `json:"infrastructure_id,omitempty" yaml:"infrastructureId,omitempty"`
	ClusterType                string `json:"cluster_type,omitempty" yaml:"clusterType,omitempty"`
	ClusterServiceStatus       string `json:"cluster_service_status,omitempty" yaml:"clusterServiceStatus,omitempty"`
	ClusterSoftwareVersion     string `json:"cluster_software_version,omitempty" yaml:"clusterSoftwareVersion,omitempty"`
	ClusterAutomaticManagement bool   `json:"cluster_automatic_management,omitempty" yaml:"clusterAutomaticManagement,omitempty"`
	//ClusterApp                 interface{} `json:"cluster_app,omitempty" yaml:"clusterApp,omitempty"`
	ClusterChangeId   int               `json:"cluster_change_id,omitempty" yaml:"clusterChangeId,omitempty"`
	ClusterOperation  ClusterOperation  `json:"cluster_operation,omitempty" yaml:"clusterOperation,omitempty"`
	ClusterCustom     map[string]string `json:"cluster_custom,omitempty" yaml:"clusterCustom,omitempty"`
	ClusterCustomJSON string            `json:"cluster_custom_json,omitempty" yaml:"clusterCustomJson,omitempty"`
}

type ClusterOperation

type ClusterOperation struct {
	ClusterLabel               string `json:"cluster_label,omitempty" yaml:"clusterLabel,omitempty"`
	ClusterSubdomain           string `json:"cluster_subdomain,omitempty" yaml:"clusterSubdomain,omitempty"`
	ClusterSubdomainPermanent  string `json:"cluster_subdomain_permanent,omitempty" yaml:"clusterSubdomainPermanent,omitempty"`
	InfrastructureID           string `json:"infrastructure_id,omitempty" yaml:"infrastructureId,omitempty"`
	ClusterType                string `json:"cluster_type,omitempty" yaml:"clusterType,omitempty"`
	ClusterServiceStatus       string `json:"cluster_service_status,omitempty" yaml:"clusterServiceStatus,omitempty"`
	ClusterSoftwareVersion     string `json:"cluster_software_version,omitempty" yaml:"clusterSoftwareVersion,omitempty"`
	ClusterAutomaticManagement bool   `json:"cluster_automatic_management,omitempty" yaml:"clusterAutomaticManagement,omitempty"`
	ClusterDeployStatus        string `json:"cluster_deploy_status,omitempty" yaml:"clusterDeployStatus,omitempty"`
	ClusterDeployType          string `json:"cluster_deploy_type,omitempty" yaml:"clusterDeployType,omitempty"`
	ClusterChangeId            int    `json:"cluster_change_id,omitempty" yaml:"clusterChangeId,omitempty"`
}

type Copy

type Copy struct {
	Source                     interface{}         `json:"source,omitempty"`
	Destination                SCPResourceLocation `json:"destination,omitempty"`
	TimeoutMinutes             int                 `json:"timeoutMinutes,omitempty"`
	IfDestinationAlreadyExists string              `json:"ifDestinationAlreadyExists,omitempty"`
	Type                       string              `json:"type,omitempty"`
}

Copy defines the source and destination of a SCP operation. The source may be of various types. SCP and HTTP requests are streamed so they are recommended as sources. The destination has to be a SCP resource.

type CustomISO

type CustomISO struct {
	CustomISOID               int    `json:"custom_iso_id,omitempty" yaml:"customISOID,omitempty"`
	UserIDOwner               int    `json:"user_id_owner,omitempty" yaml:"userIDOwner,omitempty"`
	UserIDAuthenticated       int    `json:"user_id_authenticated,omitempty" yaml:"userIDAuthenticated,omitempty"`
	CustomISODisplayName      string `json:"custom_iso_display_name,omitempty" yaml:"customISODisplayName,omitempty"`
	CustomISOName             string `json:"custom_iso_name,omitempty" yaml:"customISOName,omitempty"`
	CustomISOType             string `json:"custom_iso_type,omitempty" yaml:"customISOType,omitempty"`
	CustomISOIsPublic         bool   `json:"custom_iso_is_public,omitempty" yaml:"customISOIsPublic,omitempty"`
	CustomISOAccessURL        string `json:"custom_iso_access_url,omitempty" yaml:"customISOAccessURL,omitempty"`
	CustomISOAccessUsername   string `json:"custom_iso_access_username,omitempty" yaml:"customISOAccessUsername,omitempty"`
	CustomISOAccessPassword   string `json:"custom_iso_access_password,omitempty" yaml:"customISOAccessPassword,omitempty"`
	CustomISOCreatedTimestamp string `json:"custom_iso_created_timestamp,omitempty" yaml:"customISOCreatedTimestamp,omitempty"`
	CustomISOUpdatedTimestamp string `json:"custom_iso_updated_timestamp,omitempty" yaml:"customISOUpdatedTimestamp,omitempty"`
}

type Datacenter

type Datacenter struct {
	DatacenterID               int               `json:"datacenter_id,omitempty" yaml:"id,omitempty"`
	DatacenterName             string            `json:"datacenter_name,omitempty" yaml:"name,omitempty"`
	DatacenterNameParent       string            `json:"datacenter_name_parent,omitempty" yaml:"parentName,omitempty"`
	UserID                     int               `json:"user_id,omitempty" yaml:"userid,omitempty"`
	DatacenterDisplayName      string            `json:"datacenter_display_name,omitempty" yaml:"displayname,omitempty"`
	DatacenterIsMaster         bool              `json:"datacenter_is_master" yaml:"ismaster"`
	DatacenterIsMaintenance    bool              `json:"datacenter_is_maintenance" yaml:"ismaintenance"`
	DatacenterType             string            `json:"datacenter_type,omitempty" yaml:"type,omitempty"`
	DatacenterCreatedTimestamp string            `json:"datacenter_created_timestamp,omitempty" yaml:"createdtimestamp,omitempty"`
	DatacenterUpdatedTimestamp string            `json:"datacenter_updated_timestamp,omitempty" yaml:"updatedtimestamp,omitempty"`
	DatacenterHidden           bool              `json:"datacenter_hidden" yaml:"ishidden"`
	DatacenterTags             []string          `json:"datacenter_tags,omitempty" yaml:"tags,omitempty"`
	DatacenterConfig           *DatacenterConfig `json:"datacenter_config_json,omitempty" yaml:"config,omitempty"`
}

Datacenter - datacenter description

func (Datacenter) CreateOrUpdate

func (dc Datacenter) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (Datacenter) Delete

func (dc Datacenter) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (Datacenter) Validate

func (dc Datacenter) Validate() error

Validate implements interface Applier

type DatacenterConfig

type DatacenterConfig struct {
	BSIMachinesSubnetIPv4CIDR                          string                 `json:"BSIMachinesSubnetIPv4CIDR,omitempty" yaml:"BSIMachinesSubnetIPv4CIDR,omitempty"`
	BSIVRRPListenIPv4                                  string                 `json:"BSIVRRPListenIPv4,omitempty" yaml:"BSIVRRPListenIPv4,omitempty"`
	BSIMachineListenIPv4List                           []string               `json:"BSIMachineListenIPv4List,omitempty" yaml:"BSIMachineListenIPv4List,omitempty"`
	BSIExternallyVisibleIPv4                           string                 `json:"BSIExternallyVisibleIPv4,omitempty" yaml:"BSIExternallyVisibleIPv4,omitempty"`
	RepoURLRoot                                        string                 `json:"repoURLRoot,omitempty" yaml:"repoURLRoot,omitempty"`
	RepoURLRootQuarantineNetwork                       string                 `json:"repoURLRootQuarantineNetwork,omitempty" yaml:"repoURLRootQuarantineNetwork,omitempty"`
	SANRoutedSubnet                                    string                 `json:"SANRoutedSubnet,omitempty" yaml:"SANRoutedSubnet,omitempty"`
	NTPServers                                         []string               `json:"NTPServers" yaml:"NTPServers"`
	DNSServers                                         []string               `json:"DNSServers,omitempty" yaml:"DNSServers,omitempty"`
	KMS                                                string                 `json:"KMS,omitempty" yaml:"KMS,omitempty"`
	TFTPServerWANVRRPListenIPv4                        string                 `json:"TFTPServerWANVRRPListenIPv4,omitempty" yaml:"TFTPServerWANVRRPListenIPv4,omitempty"`
	DataLakeEnabled                                    bool                   `json:"dataLakeEnabled" yaml:"dataLakeEnabled"`
	MonitoringGraphitePlainTextSocketHost              string                 `json:"monitoringGraphitePlainTextSocketHost,omitempty" yaml:"monitoringGraphitePlainTextSocketHost,omitempty"`
	MonitoringGraphiteRenderURLHost                    string                 `json:"monitoringGraphiteRenderURLHost,omitempty" yaml:"monitoringGraphiteRenderURLHost,omitempty"`
	Latitude                                           float64                `json:"latitude,omitempty" yaml:"latitude,omitempty"`
	Longitude                                          float64                `json:"longitude,omitempty" yaml:"longitude,omitempty"`
	Address                                            string                 `json:"address,omitempty" yaml:"address,omitempty"`
	ServerRegisterUsingGeneratedIPMICredentialsEnabled bool                   `json:"serverRegisterUsingGeneratedIPMICredentialsEnabled" yaml:"serverRegisterUsingGeneratedIPMICredentialsEnabled"`
	ServerRegisterUsingProvidedIPMICredentialsEnabled  bool                   `json:"serverRegisterUsingProvidedIPMICredentialsEnabled" yaml:"serverRegisterUsingProvidedIPMICredentialsEnabled"`
	SwitchProvisioner                                  map[string]interface{} `json:"switchProvisioner,omitempty" yaml:"switchProvisioner,omitempty"`
	EnableTenantAccessToIPMI                           bool                   `json:"enableTenantAccessToIPMI" yaml:"enableTenantAccessToIPMI"`
	AllowVLANOverrides                                 bool                   `json:"allowVLANOverrides" yaml:"allowVLANOverrides"`
	AllowNetworkProfiles                               bool                   `json:"allowNetworkProfiles" yaml:"allowNetworkProfiles"`
	EnableServerRegistrationStartedByInBandDHCP        bool                   `json:"enableServerRegistrationStartedByInBandDHCP" yaml:"enableServerRegistrationStartedByInBandDHCP"`
	ExtraInternalIPsPerSubnet                          int                    `json:"extraInternalIPsPerSubnet" yaml:"extraInternalIPsPerSubnet"`
	ExtraInternalIPsPerSANSubnet                       int                    `json:"extraInternalIPsPerSANSubnet" yaml:"extraInternalIPsPerSANSubnet"`
	ServerRAIDConfigurationEnabled                     bool                   `json:"serverRAIDConfigurationEnabled" yaml:"serverRAIDConfigurationEnabled"`
	WebProxy                                           *WebProxy              `json:"webProxy" yaml:"webProxy"`
	IsKubernetesDeployment                             bool                   `json:"isKubernetesDeployment" yaml:"isKubernetesDeployment"`
	AllowInstanceArrayFirmwarePolicies                 bool                   `json:"allowInstanceArrayFirmwarePolicies" yaml:"allowInstanceArrayFirmwarePolicies"`
	ProvisionUsingTheQuarantineNetwork                 bool                   `json:"provisionUsingTheQuarantineNetwork" yaml:"provisionUsingTheQuarantineNetwork"`
	EnableDHCPRelaySecurityForQuarantineNetwork        bool                   `json:"enableDHCPRelaySecurityForQuarantineNetwork" yaml:"enableDHCPRelaySecurityForQuarantineNetwork"`
	EnableDHCPRelaySecurityForClientNetworks           bool                   `json:"enableDHCPRelaySecurityForClientNetworks" yaml:"enableDHCPRelaySecurityForClientNetworks"`
	EnableDHCPBMCMACAddressWhitelist                   bool                   `json:"enableDHCPBMCMACAddressWhitelist" yaml:"enableDHCPBMCMACAddressWhitelist"`
	DHCPBMCMACAddressWhitelist                         []string               `json:"dhcpBMCMACAddressWhitelist" yaml:"dhcpBMCMACAddressWhitelist"`
	DefaultServerCleanupPolicyID                       int                    `json:"defaultServerCleanupPolicyID" yaml:"defaultServerCleanupPolicyID"`
	DefaultWANNetworkProfileID                         int                    `json:"defaultWANNetworkProfileID" yaml:"defaultWANNetworkProfileID"`
	DefaultDeploymentMechanism                         string                 `json:"defaultDeploymentMechanism" yaml:"defaultDeploymentMechanism"`
	DefaultCleanupAndRegistrationMechanism             string                 `json:"defaultCleanupAndRegistrationMechanism" yaml:"defaultCleanupAndRegistrationMechanism"`
	NFSServer                                          string                 `json:"NFSServer" yaml:"NFSServer"`
	Option82ToIPMapping                                Option82ToIPMapping    `json:"Option82ToIPMapping" yaml:"Option82ToIPMapping"`
}

DatacenterConfig - datacenter configuration

type DeployOptions

type DeployOptions struct {
	InstanceArrayMapping map[int]map[string]DeployOptionsServerTypeMappingObject `json:"instance_array"`
}

DeployOptions controls server allocation

type DeployOptionsServerTypeMappingObject

type DeployOptionsServerTypeMappingObject struct {
	ServerCount int   `json:"server_count"`
	ServerIDs   []int `json:"server_ids"`
}

DeployOptionsServerTypeMappingObject respresents one of the server type mappings

type Drive

type Drive struct {
	DriveID               int               `json:"drive_id,omitempty"`
	DriveLabel            string            `json:"drive_label,omitempty"`
	DriveSubdomain        string            `json:"drive_subdomain,omitempty"`
	DriveArrayID          int               `json:"drive_array_id,omitempty"`
	InstanceID            int               `json:"instance_id,omitempty"`
	DriveSizeMBytes       int               `json:"drive_size_mbytes,omitempty"`
	DriveStorageType      string            `json:"drive_storage_type,omitempty"`
	InfrastructureID      int               `json:"infrastructure_id,omitempty"`
	TemplateIDOrigin      int               `json:"template_id_origin,omitempty"`
	DriveCredentials      *DriveCredentials `json:"drive_credentials,omitempty"`
	DriveServiceStatus    string            `json:"drive_service_status,omitempty"`
	DriveCreatedTimestamp string            `json:"drive_created_timestamp,omitempty"`
	DriveUpdatedTimestamp string            `json:"drive_updated_timestamp,omitempty"`
	DriveOperatingSystem  *OperatingSystem  `json:"drive_operating_system,omitempty"`
	DriveFileSystem       *DriveFileSystem  `json:"drive_filesystem,omitempty"`
	DriveWWN              string            `json:"drive_wwn,omitempty"`
}

Drive represents a drive

type DriveArray

type DriveArray struct {
	DriveArrayID                      int                  `json:"drive_array_id,omitempty" yaml:"id,omitempty"`
	DriveArrayLabel                   string               `json:"drive_array_label,omitempty" yaml:"label,omitempty"`
	VolumeTemplateID                  int                  `json:"volume_template_id,omitempty" yaml:"volumeTemplateID,omitempty"`
	DriveArrayStorageType             string               `json:"drive_array_storage_type,omitempty" yaml:"storageType,omitempty"`
	DriveSizeMBytesDefault            int                  `json:"drive_size_mbytes_default,omitempty" yaml:"sizeMBytesDefault,omitempty"`
	InstanceArrayID                   int                  `json:"instance_array_id,omitempty" yaml:"instanceArrayID,omitempty"`
	InfrastructureID                  int                  `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	DriveArrayServiceStatus           string               `json:"drive_array_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	DriveArrayCount                   int                  `json:"drive_array_count,omitempty" yaml:"count,omitempty"`
	DriveArrayExpandWithInstanceArray bool                 `json:"drive_array_expand_with_instance_array" yaml:"expandWithInstanceArray"`
	DriveArrayOperation               *DriveArrayOperation `json:"drive_array_operation,omitempty" yaml:"operation,omitempty"`
	DriveArrayIOLimitPolicy           string               `json:"drive_array_io_limit_policy,omitempty" yaml:"ioLimit,omitempty"`
	StoragePoolID                     int                  `json:"storage_pool_id,omitempty" yaml:"storagePoolID,omitempty"`
	DriveArrayAllocationAffinity      string               `json:"drive_array_allocation_affinity,omitempty" yaml:"affinity,omitempty"`
}

DriveArray represents a collection of identical drives

func (DriveArray) CreateOrUpdate

func (da DriveArray) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (DriveArray) Delete

func (da DriveArray) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (DriveArray) Validate

func (da DriveArray) Validate() error

Validate implements interface Applier

type DriveArrayOperation

type DriveArrayOperation struct {
	DriveArrayID                      int         `json:"drive_array_id,omitempty" yaml:"id,omitempty"`
	DriveArrayLabel                   string      `json:"drive_array_label,omitempty" yaml:"label,omitempty"`
	VolumeTemplateID                  int         `json:"volume_template_id,omitempty" yaml:"volumeTemplateID,omitempty"`
	DriveArrayStorageType             string      `json:"drive_array_storage_type,omitempty" yaml:"storageType,omitempty"`
	DriveSizeMBytesDefault            int         `json:"drive_size_mbytes_default,omitempty" yaml:"sizeMBytes,omitempty"`
	InstanceArrayID                   interface{} `json:"instance_array_id" yaml:"instanceArrayID"`
	InfrastructureID                  int         `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	DriveArrayCount                   int         `json:"drive_array_count,omitempty" yaml:"count,omitempty"`
	DriveArrayExpandWithInstanceArray bool        `json:"drive_array_expand_with_instance_array" yaml:"expandWithInstanceArray"`
	DriveArrayDeployType              string      `json:"drive_array_deploy_type,omitempty" yaml:"deployType,omitempty"`
	DriveArrayDeployStatus            string      `json:"drive_array_deploy_status,omitempty" yaml:"deployStatus,omitempty"`
	DriveArrayChangeID                int         `json:"drive_array_change_id,omitempty" yaml:"changeID,omitempty"`
	DriveArrayIOLimitPolicy           string      `json:"drive_array_io_limit_policy,omitempty" yaml:"ioLimit,omitempty"`
}

DriveArrayOperation defines changes to be applied to a DriveArray

type DriveCredentials

type DriveCredentials struct {
	ISCSI ISCSI `json:"iscsi,omitempty"`
}

DriveCredentials credentials to connect to the drive

type DriveFileSystem

type DriveFileSystem struct {
	DriveFilesystemType           string `json:"drive_filesystem_type,omitempty"`
	DriveFilesystemBlockSizeBytes int    `json:"drive_filesystem_block_size_bytes,omitempty"`
	DriveFilesystemMountPath      string `json:"drive_filesystem_mount_path,omitempty"`
}

DriveFileSystem filesystem details

type ExternalConnection

type ExternalConnection struct {
	ExternalConnectionID          int    `json:"external_connection_id,omitempty" yaml:"id,omitempty"`
	ExternalConnectionLabel       string `json:"external_connection_label,omitempty" yaml:"label,omitempty"`
	DatacenterName                string `json:"datacenter_name,omitempty" yaml:"dc,omitempty"`
	ExternalConnectionHidden      bool   `json:"external_connection_hidden" yaml:"hidden"`
	ExternalConnectionDescription string `json:"external_connection_description,omitempty" yaml:"description,omitempty"`
}

ExternalConnection object describes an external connection

type FirewallRule

type FirewallRule struct {
	FirewallRuleDescription                    string `json:"firewall_rule_description,omitempty" yaml:"description,omitempty"`
	FirewallRulePortRangeStart                 int    `json:"firewall_rule_port_range_start,omitempty" yaml:"portRangeStart,omitempty"`
	FirewallRulePortRangeEnd                   int    `json:"firewall_rule_port_range_end,omitempty" yaml:"portRangeEnd,omitempty"`
	FirewallRuleSourceIPAddressRangeStart      string `json:"firewall_rule_source_ip_address_range_start,omitempty" yaml:"sourceIPAddressRangeStart,omitempty"`
	FirewallRuleSourceIPAddressRangeEnd        string `json:"firewall_rule_source_ip_address_range_end,omitempty" yaml:"sourceIPAddressRangeEnd,omitempty"`
	FirewallRuleDestinationIPAddressRangeStart string `json:"firewall_rule_destination_ip_address_range_start,omitempty" yaml:"destinationIPAddressRangeStart,omitempty"`
	FirewallRuleDestinationIPAddressRangeEnd   string `json:"firewall_rule_destination_ip_address_range_end,omitempty" yaml:"destinationIPAddressRangeEnd,omitempty"`
	FirewallRuleProtocol                       string `json:"firewall_rule_protocol,omitempty" yaml:"protocol,omitempty"`
	FirewallRuleIPAddressType                  string `json:"firewall_rule_ip_address_type,omitempty" yaml:"IPAddressType,omitempty"`
	FirewallRuleEnabled                        bool   `json:"firewall_rule_enabled" yaml:"enabled"`
}

FirewallRule describes a firewall rule that is to be applied on all instances of an array

type HTTPRequest

type HTTPRequest struct {
	URL     string              `json:"url,omitempty"`
	Options WebFetchAAPIOptions `json:"options,omitempty"`
	Type    string              `json:"type,omitempty"`
}

HTTPRequest represents an HTTP request definition compatible with the standard Web Fetch API.

type HardwareConfiguration

type HardwareConfiguration struct {
	InstanceArrayRAMGbytes          int      `json:"instance_array_ram_gbytes,omitempty"`
	InstanceArrayProcessorCount     int      `json:"instance_array_processor_count,omitempty"`
	InstanceArrayProcessorCoreMHZ   int      `json:"instance_array_processor_core_mhz,omitempty"`
	InstanceArrayProcessorCoreCount int      `json:"instance_array_processor_core_count,omitempty"`
	InstanceArrayDiskCount          int      `json:"instance_array_disk_count,omitempty"`
	InstanceArrayDiskSizeMBytes     int      `json:"instance_array_disk_size_mbytes,omitempty"`
	InstanceArrayTotalMhz           int      `json:"instance_array_total_mhz,omitempty"`
	InstanceArrayDiskTypes          []string `json:"instance_array_disk_types,omitempty"`
	InstanceArrayInstanceCount      int      `json:"instance_array_instance_count,omitempty"`
}

HardwareConfiguration holds the desired hardware configuration when trying to find available servers for provisioning.

type IDRAC

type IDRAC struct {
	ControlPanelURL string `json:"control_panel_url,omitempty"`
	Username        string `json:"username,omitempty"`
	InitialPassword string `json:"initial_password,omitempty"`
}

IDRAC control panel credentials.

type ILO

type ILO struct {
	ControlPanelURL string `json:"control_panel_url,omitempty"`
	Username        string `json:"username,omitempty"`
	InitialPassword string `json:"initial_password,omitempty"`
}

ILO control panel credentials

type IP

type IP struct {
	IPID                       int         `json:"ip_id,omitempty"`
	IPType                     string      `json:"ip_type,omitempty"`
	IPHumanReadable            string      `json:"ip_human_readable,omitempty"`
	IPHex                      string      `json:"ip_hex,omitempty"`
	IPLeaseExpires             string      `json:"ip_lease_expires,omitempty"`
	IPOperation                IPOperation `json:"ip_operation,omitempty"`
	SubnetID                   int         `json:"subnet_id,omitempty"`
	SubnetDestination          string      `json:"subnet_destination,omitempty"`
	SubnetGatewayHumanReadable string      `json:"subnet_gateway_human_readable,omitempty"`
	SubnetNetmaskHumanReadable string      `json:"subnet_netmask_human_readable,omitempty"`
	InstanceInterfaceID        int         `json:"instance_interface_id,omitempty"`
	IPChangeID                 int         `json:"ip_change_id,omitempty"`
}

IP object contains information regarding an IP address.

type IPMI

type IPMI struct {
	IPAddress       string `json:"ip_address,omitempty"`
	Version         string `json:"version,omitempty"`
	Username        string `json:"username,omitempty"`
	InitialPassword string `json:"initial_password,omitempty"`
}

IPMI credentials.

type IPOperation

type IPOperation struct {
	InstanceInterfaceID int    `json:"instance_interface_id,omitempty"`
	IPDeployStatus      string `json:"ip_deploy_status,omitempty"`
	IPDeployType        string `json:"ip_deploy_type,omitempty"`
	IPID                int    `json:"ip_id,omitempty"`
	IPType              string `json:"ip_type,omitempty"`
	IPHumanReadable     string `json:"ip_human_readable,omitempty"`
	IPHex               string `json:"ip_hex,omitempty"`
	IPLabel             string `json:"ip_label,omitempty"`
	IPSubdomain         string `json:"ip_subdomain,omitempty"`
	IPLeaseExpires      string `json:"ip_lease_expires,omitempty"`
	IPUpdatedTimestamp  string `json:"ip_updated_timestamp,omitempty"`
	SubnetID            int    `json:"subnet_id,omitempty"`
	IPChangeID          int    `json:"ip_change_id,omitempty"`
}

IPOperation contains information regarding the changes that are to be made to a product. Edit and deploy functions have to be called in order to apply the changes. The operation type and status are unique to each operation object.

type ISCSI

type ISCSI struct {
	TargetIQN        string `json:"target_iqn,omitempty" yaml:"targetIQN,omitempty"`
	StorageIPAddress string `json:"storage_ip_address,omitempty" yaml:"storageIPAddress,omitempty"`
	StoragePort      int    `json:"storage_port,omitempty" yaml:"storagePort,omitempty"`
	LunID            int    `json:"lun_id,omitempty" yaml:"LunID,omitempty"`
}

ISCSI provides target IQN, IP address, port number and the LUN ID.

type ISCSIInitiator

type ISCSIInitiator struct {
	Username           string `json:"username,omitempty"`
	Password           string `json:"password,omitempty"`
	InitiatorIQN       string `json:"initiator_iqn,omitempty"`
	Gateway            string `json:"gateway,omitempty"`
	Netmask            string `json:"netmask,omitempty"`
	InitiatorIPAddress string `json:"initiator_ip_address,omitempty"`
}

ISCSIInitiator provides initiator IQN, username and password and other iSCSI connection details.

type Infrastructure

type Infrastructure struct {
	InfrastructureID                   int                     `json:"infrastructure_id,omitempty" yaml:"id,omitempty"`
	InfrastructureLabel                string                  `json:"infrastructure_label" yaml:"label"`
	DatacenterName                     string                  `json:"datacenter_name" yaml:"datacenter"`
	InfrastructureSubdomain            string                  `json:"infrastructure_subdomain,omitempty" yaml:"subdomain,omitempty"`
	UserIDowner                        int                     `json:"user_id_owner,omitempty" yaml:"ownerID,omitempty"`
	UserEmailOwner                     string                  `json:"user_email_owner,omitempty" yaml:"ownerEmail,omitempty"`
	InfrastructureTouchUnixtime        string                  `json:"infrastructure_touch_unixtime,omitempty" yaml:"touchUnixTime,omitempty"`
	InfrastructureServiceStatus        string                  `json:"infrastructure_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	InfrastructureCreatedTimestamp     string                  `json:"infrastructure_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	InfrastructureUpdatedTimestamp     string                  `json:"infrastructure_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	InfrastructureChangeID             int                     `json:"infrastructure_change_id,omitempty" yaml:"changeID,omitempty"`
	InfrastructureDeployID             int                     `json:"infrastructure_deploy_id,omitempty" yaml:"deployID,omitempty"`
	InfrastructureDesignIsLocked       bool                    `json:"infrastructure_design_is_locked,omitempty" yaml:"designIsLocked,omitempty"`
	InfrastructureOperation            InfrastructureOperation `json:"infrastructure_operation,omitempty" yaml:"operation,omitempty"`
	InfrastructureExperimentalPriority string                  `json:"infrastructure_experimental_priority,omitempty"`
	InfrastructureCustomVariables      interface{}             `json:"infrastructure_custom_variables,omitempty" yaml:"customVariables,omitempty"`
}

Infrastructure - the main infrastructure object

func (Infrastructure) CreateOrUpdate

func (i Infrastructure) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (Infrastructure) Delete

func (i Infrastructure) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (Infrastructure) Validate

func (i Infrastructure) Validate() error

Validate implements interface Applier

type InfrastructureOperation

type InfrastructureOperation struct {
	InfrastructureID               int         `json:"infrastructure_id,omitempty" yaml:"id,omitempty"`
	InfrastructureLabel            string      `json:"infrastructure_label" yaml:"label"`
	DatacenterName                 string      `json:"datacenter_name" yaml:"datacenter"`
	InfrastructureDeployStatus     string      `json:"infrastructure_deploy_status,omitempty" yaml:"deployStatus,omitempty"`
	InfrastructureDeployType       string      `json:"infrastructure_deploy_type,omitempty" yaml:"deployType,omitempty"`
	InfrastructureSubdomain        string      `json:"infrastructure_subdomain,omitempty" yaml:"subdomain,omitempty"`
	UserIDOwner                    int         `json:"user_id_owner,omitempty" yaml:"ownerID,omitempty"`
	InfrastructureUpdatedTimestamp string      `json:"infrastructure_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	InfrastructureChangeID         int         `json:"infrastructure_change_id,omitempty" yaml:"changeID,omitempty"`
	InfrastructureDeployID         int         `json:"infrastructure_deploy_id,omitempty" yaml:"deployID,omitempty"`
	InfrastructureCustomVariables  interface{} `json:"infrastructure_custom_variables,omitempty" yaml:"customVariables,omitempty"`
}

InfrastructureOperation - object with alternations to be applied

type InfrastructuresSearchResult

type InfrastructuresSearchResult struct {
	InfrastructureID               int      `json:"infrastructure_id,omitempty" yaml:"id,omitempty"`
	InfrastructureLabel            string   `json:"infrastructure_label" yaml:"label"`
	InfrastructureSubdomain        string   `json:"infrastructure_subdomain" yaml:"label"`
	InfrastructureServiceStatus    string   `json:"infrastructure_service_status" yaml:"label"`
	InfrastructureDeployStatus     string   `json:"infrastructure_deploy_status" yaml:"label"`
	DatacenterName                 string   `json:"datacenter_name" yaml:"datacenter"`
	InfrastructureCreatedTimestamp string   `json:"infrastructure_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	InfrastructureUpdatedTimestamp string   `json:"infrastructure_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	UserIDOwner                    int      `json:"user_id_owner,omitempty" yaml:"ownerID,omitempty"`
	UserEmail                      []string `json:"user_email,omitempty" yaml:"userEmail,omitempty"`
	InfrastructureDeployID         int      `json:"infrastructure_deploy_id,omitempty" yaml:"deployID,omitempty"`
	AFCGroupCreatedTimestamp       string   `json:"afc_group_created_timestamp,omitempty" yaml:"afcGroupCreatedTimestamp,omitempty"`
	AFCGroupFinishedTimestamp      string   `json:"afc_group_finished_timestamp,omitempty" yaml:"afcGroupFinishedTimestamp,omitempty"`
	AFCThrownError                 int      `json:"thrownError,omitempty" yaml:"thrownError,omitempty"`
	AFCExecutedSuccess             int      `json:"executedSuccess,omitempty" yaml:"executedSuccess,omitempty"`
	AFCTotal                       int      `json:"total,omitempty" yaml:"total,omitempty"`
}

type Instance

type Instance struct {
	InstanceID                 int                 `json:"instance_id,omitempty"`
	InstanceLabel              string              `json:"instance_label,omitempty"`
	InstanceSubdomain          string              `json:"instance_subdomain,omitempty"`
	InstanceSubdomainPermanent string              `json:"instance_subdomain_permanent,omitempty"`
	InstanceArrayID            int                 `json:"instance_array_id,omitempty"`
	ServerID                   int                 `json:"server_id,omitempty"`
	ServerTypeID               int                 `json:"server_type_id,omitempty"`
	InstanceServiceStatus      string              `json:"instance_service_status,omitempty"`
	InstanceCredentials        InstanceCredentials `json:"instance_credentials,omitempty"`
	InstanceOperation          InstanceOperation   `json:"instance_operation,omitempty"`
	InstanceInterfaces         []InstanceInterface `json:"instance_interfaces,omitempty"`
	InstanceCreatedTimestamp   string              `json:"instance_created_timestamp,omitempty"`
	InstanceUpdatedTimestamp   string              `json:"instance_updated_timestamp,omitempty"`
	DriveIDBootable            int                 `json:"drive_id_bootable,omitempty"`
	InstanceChangeID           int                 `json:"instance_change_id,omitempty"`
	TemplateIDOrigin           int                 `json:"template_id_origin,omitempty"`
	InstanceCustomVariables    interface{}         `json:"instance_custom_variables,omitempty" yaml:"customVariables,omitempty"`
	PreferredServerIDsJSON     string              `json:"preferred_server_ids_json,omitempty" yaml:"preferredServerIDs,omitempty"`
}

Instance object describes an instance

type InstanceArray

type InstanceArray struct {
	InstanceArrayID                    int                      `json:"instance_array_id,omitempty" yaml:"instanceID,omitempty"`
	InstanceArrayLabel                 string                   `json:"instance_array_label,omitempty" yaml:"label,omitempty"`
	InstanceArraySubdomain             string                   `json:"instance_array_subdomain,omitempty" yaml:"subdomain,omitempty"`
	InstanceArrayBootMethod            string                   `json:"instance_array_boot_method,omitempty" yaml:"bootMethod,omitempty"`
	InstanceArrayInstanceCount         int                      `json:"instance_array_instance_count" yaml:"instanceCount"`
	InstanceArrayRAMGbytes             int                      `json:"instance_array_ram_gbytes,omitempty" yaml:"ramGBytes,omitempty"`
	InstanceArrayProcessorCount        int                      `json:"instance_array_processor_count" yaml:"processorCount"`
	InstanceArrayProcessorCoreMHZ      int                      `json:"instance_array_processor_core_mhz,omitempty" yaml:"processorCoreMhz,omitempty"`
	InstanceArrayProcessorCoreCount    int                      `json:"instance_array_processor_core_count" yaml:"processorCoreCount"`
	InstanceArrayDiskCount             int                      `json:"instance_array_disk_count" yaml:"diskCount"`
	InstanceArrayDiskSizeMBytes        int                      `json:"instance_array_disk_size_mbytes,omitempty" yaml:"diskSizeMBytes,omitempty"`
	InstanceArrayDiskTypes             []string                 `json:"instance_array_disk_types,omitempty" yaml:"diskTypes,omitempty"`
	InfrastructureID                   int                      `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	InstanceArrayServiceStatus         string                   `json:"instance_array_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	InstanceArrayInterfaces            []InstanceArrayInterface `json:"instance_array_interfaces,omitempty" yaml:"interfaces,omitempty"`
	ClusterID                          int                      `json:"cluster_id,omitempty" yaml:"clusterID,omitempty"`
	ClusterRoleGroup                   string                   `json:"cluster_role_group,omitempty" yaml:"clusterRoleGroup,omitempty"`
	InstanceArrayFirewallManaged       bool                     `json:"instance_array_firewall_managed" yaml:"firewallManaged"`
	InstanceArrayFirewallRules         []FirewallRule           `json:"instance_array_firewall_rules,omitempty" yaml:"firewallRules,omitempty"`
	VolumeTemplateID                   int                      `json:"volume_template_id,omitempty" yaml:"volumeTemplateID,omitempty"`
	InstanceArrayOperation             *InstanceArrayOperation  `json:"instance_array_operation,omitempty" yaml:"operation,omitempty"`
	InstanceArrayAdditionalWanIPv4JSON string                   `json:"instance_array_additional_wan_ipv4_json,omitempty" yaml:"additionalWanIPv4,omitempty"`
	InstanceArrayCustomVariables       interface{}              `json:"instance_array_custom_variables,omitempty" yaml:"customVariables,omitempty"`
	InstanceArrayFirmwarePolicies      []int                    `json:"instance_array_firmware_policies,omitempty" yaml:"firmwarePolicies,omitempty"`
	DriveArrayIDBoot                   int                      `json:"drive_array_id_boot,omitempty" yaml:"drive_array_id_boot,omitempty"`
}

InstanceArray object describes a collection of identical instances

func (InstanceArray) CreateOrUpdate

func (ia InstanceArray) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (InstanceArray) Delete

func (ia InstanceArray) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (InstanceArray) Validate

func (ia InstanceArray) Validate() error

Validate implements interface Applier

type InstanceArrayInterface

type InstanceArrayInterface struct {
	InstanceArrayInterfaceLabel            string                           `json:"instance_array_interface_label,omitempty" yaml:"label,omitempty"`
	InstanceArrayInterfaceSubdomain        string                           `json:"instance_array_interface_subdomain,omitempty" yaml:"subdomain,omitempty"`
	InstanceArrayInterfaceID               int                              `json:"instance_array_interface_id,omitempty" yaml:"id,omitempty"`
	InstanceArrayID                        int                              `json:"instance_array_id,omitempty" yaml:"instanceArrayID,omitempty"`
	NetworkID                              int                              `json:"network_id,omitempty" yaml:"networkID,omitempty"`
	InstanceArrayInterfaceLAGGIndexes      []interface{}                    `json:"instance_array_interface_lagg_indexes,omitempty" yaml:"LAGGIndexes,omitempty"`
	InstanceArrayInterfaceIndex            int                              `json:"instance_array_interface_index,omitempty" yaml:"index,omitempty"`
	InstanceArrayInterfaceServiceStatus    string                           `json:"instance_array_interface_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	InstanceArrayInterfaceCreatedTimestamp string                           `json:"instance_array_interface_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	InstanceArrayInterfaceUpdatedTimestamp string                           `json:"instance_array_interface_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	InstanceArrayInterfaceOperation        *InstanceArrayInterfaceOperation `json:"instance_array_interface_operation,omitempty" yaml:"operation,omitempty"`
	InstanceArrayInterfaceChangeID         int                              `json:"instance_array_interface_change_id,omitempty" yaml:"instance_array_interface_change_id,omitempty"`
}

InstanceArrayInterface describes a network interface of the array. It's properties will be applied to all InstanceInterfaces of the array's instances.

type InstanceArrayInterfaceOperation

type InstanceArrayInterfaceOperation struct {
	InstanceArrayInterfaceLabel            string        `json:"instance_array_interface_label,omitempty" yaml:"label,omitempty"`
	InstanceArrayInterfaceSubdomain        string        `json:"instance_array_interface_subdomain,omitempty" yaml:"subdomain,omitempty"`
	InstanceArrayInterfaceID               int           `json:"instance_array_interface_id,omitempty" yaml:"id,omitempty"`
	InstanceArrayID                        int           `json:"instance_array_id,omitempty" yaml:"instanceArrayID,omitempty"`
	NetworkID                              int           `json:"network_id,omitempty" yaml:"networkID,omitempty"`
	InstanceArrayInterfaceLAGGIndexes      []interface{} `json:"instance_array_interface_lagg_indexes,omitempty" yaml:"LAGGIndexes,omitempty"`
	InstanceArrayInterfaceIndex            int           `json:"instance_array_interface_index,omitempty" yaml:"index,omitempty"`
	InstanceArrayInterfaceServiceStatus    string        `json:"instance_array_interface_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	InstanceArrayInterfaceCreatedTimestamp string        `json:"instance_array_interface_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	InstanceArrayInterfaceUpdatedTimestamp string        `json:"instance_array_interface_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	InstanceArrayInterfaceChangeID         int           `json:"instance_array_interface_change_id,omitempty" yaml:"changeID,omitempty"`
}

InstanceArrayInterfaceOperation describes changes to a network array interface

type InstanceArrayOperation

type InstanceArrayOperation struct {
	InstanceArrayID                    int                               `json:"instance_array_id,omitempty" yaml:"id,omitempty"`
	InstanceArrayLabel                 string                            `json:"instance_array_label,omitempty" yaml:"label,omitempty"`
	InstanceArraySubdomain             string                            `json:"instance_array_subdomain,omitempty" yaml:"subdomain,omitempty"`
	InstanceArrayBootMethod            string                            `json:"instance_array_boot_method,omitempty" yaml:"bootMethod,omitempty"`
	InstanceArrayInstanceCount         int                               `json:"instance_array_instance_count" yaml:"instanceCount"`
	InstanceArrayRAMGbytes             int                               `json:"instance_array_ram_gbytes,omitempty" yaml:"ramGBytes,omitempty"`
	InstanceArrayProcessorCount        int                               `json:"instance_array_processor_count" yaml:"processorCount"`
	InstanceArrayProcessorCoreMHZ      int                               `json:"instance_array_processor_core_mhz,omitempty" yaml:"processorCoreMhz,omitempty"`
	InstanceArrayProcessorCoreCount    int                               `json:"instance_array_processor_core_count" yaml:"processorCoreCount"`
	InstanceArrayDiskCount             int                               `json:"instance_array_disk_count" yaml:"diskCount"`
	InstanceArrayDiskSizeMBytes        int                               `json:"instance_array_disk_size_mbytes,omitempty" yaml:"diskSizeMBytes,omitempty"`
	InstanceArrayDiskTypes             []string                          `json:"instance_array_disk_types,omitempty" yaml:"diskTypes,omitempty"`
	InstanceArrayServiceStatus         string                            `json:"instance_array_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	InstanceArrayInterfaces            []InstanceArrayInterfaceOperation `json:"instance_array_interfaces,omitempty" yaml:"interfaces,omitempty"`
	ClusterID                          int                               `json:"cluster_id,omitempty" yaml:"clusterID,omitempty"`
	ClusterRoleGroup                   string                            `json:"cluster_role_group,omitempty" yaml:"clusterRoleGroup,omitempty"`
	InstanceArrayFirewallManaged       bool                              `json:"instance_array_firewall_managed" yaml:"firewallManaged"`
	InstanceArrayFirewallRules         []FirewallRule                    `json:"instance_array_firewall_rules,omitempty" yaml:"firewallRules,omitempty"`
	VolumeTemplateID                   int                               `json:"volume_template_id,omitempty" yaml:"volumeTemplateID,omitempty"`
	InstanceArrayDeployType            string                            `json:"instance_array_deploy_type,omitempty" yaml:"deployType,omitempty"`
	InstanceArrayDeployStatus          string                            `json:"instance_array_deploy_status,omitempty" yaml:"deployStatus,omitempty"`
	InstanceArrayChangeID              int                               `json:"instance_array_change_id,omitempty" yaml:"changeID,omitempty"`
	InstanceArrayAdditionalWanIPv4JSON string                            `json:"instance_array_additional_wan_ipv4_json,omitempty" yaml:"additionalWanIPv4,omitempty"`
	InstanceArrayCustomVariables       interface{}                       `json:"instance_array_custom_variables,omitempty" yaml:"customVariables,omitempty"`
	InstanceArrayFirmwarePolicies      []int                             `json:"instance_array_firmware_policies" yaml:"firmwarePolicies"`
	DriveArrayIDBoot                   int                               `json:"drive_array_id_boot,omitempty" yaml:"drive_array_id_boot,omitempty"`
}

InstanceArrayOperation object describes the changes that will be applied to an instance array

type InstanceCredentials

type InstanceCredentials struct {
	SSH                *SSH            `json:"ssh,omitempty"`
	RDP                *RDP            `json:"rdp,omitempty"`
	IPMI               *IPMI           `json:"ipmi,omitempty"`
	ILO                *ILO            `json:"ilo,omitempty"`
	IDRAC              *IDRAC          `json:"idrac,omitempty"`
	ISCSI              *ISCSIInitiator `json:"iscsi,omitempty"`
	RemoteConsole      *RemoteConsole  `json:"remote_console,omitempty"`
	IPAddressesPublic  []IP            `json:"ip_addresses_public,omitempty"`
	IPAddressesPrivate []IP            `json:"ip_addresses_private,omitempty"`
	SharedDrives       map[string]ISCSI
}

InstanceCredentials contains information needed to connect to the server via IPMI, iLO etc.

func (*InstanceCredentials) UnmarshalJSON

func (b *InstanceCredentials) UnmarshalJSON(data []byte) error

UnmarshalJSON custom InstanceCredentials unmarshaling

type InstanceInterface

type InstanceInterface struct {
	InstanceInterfaceLabel         string                     `json:"instance_interface_label,omitempty"`
	InstanceInterfaceSubdomain     string                     `json:"instance_interface_subdomain,omitempty"`
	InstanceInterfaceID            int                        `json:"instance_interface_id,omitempty"`
	InstanceID                     int                        `json:"instance_id,omitempty"`
	NetworkID                      int                        `json:"network_id,omitempty"`
	InstanceInterfaceLaggIndexes   []string                   `json:"instance_interface_lagg_indexes,omitempty"`
	InstanceInterfaceIndex         int                        `json:"instance_interface_index,omitempty"`
	InstanceInterfaceCapacityMbps  int                        `json:"instance_interface_capacity_mbps,omitempty"`
	InstanceInterfaceServiceStatus string                     `json:"instance_interface_service_status,omitempty"`
	ServerInterface                ServerInterface            `json:"server_interface,omitempty"`
	InstanceInterfaceOperation     InstanceInterfaceOperation `json:"instance_interface_operation,omitempty"`
	InstanceInterfaceIPs           []IP                       `json:"instance_interface_ips,omitempty"`
	InstanceInterfaceChangeID      int                        `json:"instance_interface_change_id,omitempty"`
}

InstanceInterface objects are created automatically when instances are created. Subnets are added on networks and then IP addresses are associated automatically or manually through the API to instance interfaces.

type InstanceInterfaceOperation

type InstanceInterfaceOperation struct {
	InstanceInterfaceLabel        string   `json:"instance_interface_label,omitempty"`
	InstanceInterfaceSubdomain    string   `json:"instance_interface_subdomain,omitempty"`
	InstanceInterfaceDeployStatus string   `json:"instance_interface_deploy_status,omitempty"`
	InstanceInterfaceDeployType   string   `json:"instance_interface_deploy_type,omitempty"`
	InstanceInterfaceID           int      `json:"instance_interface_id,omitempty"`
	InstanceID                    int      `json:"instance_id,omitempty"`
	NetworkID                     int      `json:"network_id,omitempty"`
	InstanceInterfaceLaggIndexes  []string `json:"instance_interface_lagg_indexes,omitempty"`
	InstanceInterfaceIndex        int      `json:"instance_interface_index,omitempty"`
	InstanceInterfaceCapacityMbps int      `json:"instance_interface_capacity_mbps,omitempty"`
	InstanceInterfaceChangeID     int      `json:"instance_interface_change_id,omitempty"`
}

InstanceInterfaceOperation objects are created automatically when instances are created. Subnets are added on networks and then IP addresses are associated automatically or manually through the API to instance interfaces.

type InstanceOperation

type InstanceOperation struct {
	InstanceID                 int         `json:"instance_id,omitempty"`
	InstanceDeployType         string      `json:"instance_deploy_type,omitempty"`
	InstanceDeployStatus       string      `json:"instance_deploy_status,omitempty"`
	InstanceLabel              string      `json:"instance_label,omitempty"`
	InstanceSubdomain          string      `json:"instance_subdomain,omitempty"`
	InstanceSubdomainPermanent string      `json:"instance_subdomain_permanent,omitempty"`
	InstanceArrayID            int         `json:"instance_array_id,omitempty"`
	ServerID                   int         `json:"server_id,omitempty"`
	ServerTypeID               int         `json:"server_type_id,omitempty"`
	InstanceChangeID           int         `json:"instance_change_id,omitempty"`
	TemplateIDOrigin           int         `json:"template_id_origin,omitempty"`
	InstanceCustomVariables    interface{} `json:"instance_custom_variables,omitempty" yaml:"customVariables,omitempty"`
	PreferredServerIDsJSON     string      `json:"preferred_server_ids_json,omitempty" yaml:"preferredServerIDs,omitempty"`
}

InstanceOperation contains information regarding the changes that are to be made to a product. Edit and deploy functions have to be called in order to apply the changes. The operation type and status are unique to each operation object.

type MetalCloudClient

type MetalCloudClient interface {
	// AFCSearch searches for AFCs
	AFCSearch(filter string, page_start int, page_end int) (*[]AFCSearchResult, error)
	// AFCGet Returns an AFC
	AFCGet(afcID int) (*AFC, error)
	// AFCRetryCall Retries an AFC
	AFCRetryCall(afcID int) error
	// AFCRetryCall Skips an AFC
	AFCSkip(afcID int) error
	// AFCDelete Skips an AFC
	AFCDelete(afcID int) error
	// AFCMarkForDeath Tries to kill an AFC
	AFCMarkForDeath(afcID int, typeOfMark string) error
	// CustomISOs returns custom ISOs for user
	CustomISOs(userID int) (*map[string]CustomISO, error)
	// CustomISOCreate creates a custom ISO record
	CustomISOCreate(customISO CustomISO) (*CustomISO, error)
	// CustomISOCreate creates a custom ISO record
	CustomISOGet(customISOID int) (*CustomISO, error)
	// CustomISODelete deletes a CustomISO with specified id
	CustomISODelete(customISOID int) error
	// CustomISODelete deletes a CustomISO with specified id
	CustomISOUpdate(customISOID int, customISO CustomISO) (*CustomISO, error)
	// CustomISOBootIntoServer boots a server with an iso. Returns an AFC group id
	CustomISOBootIntoServer(customISOID int, serverID int) (int, error)
	// Datacenters returns datacenters for all users
	Datacenters(onlyActive bool) (*map[string]Datacenter, error)
	// DatacentersByUserID returns datacenters for specific user
	DatacentersByUserID(userID int, onlyActive bool) (*map[string]Datacenter, error)
	// DatacentersByUserEmail returns datacenters by email
	DatacentersByUserEmail(userEmail string, onlyActive bool) (*map[string]Datacenter, error)
	// DatacenterGet returns details of a specific datacenter
	DatacenterGet(datacenterName string) (*Datacenter, error)
	// DatacenterGetForUserByEmail returns details of a specific datacenter
	DatacenterGetForUserByEmail(datacenterName string, userID string) (*Datacenter, error)
	// DatacenterGetForUserByID returns details of a specific datacenter
	DatacenterGetForUserByID(datacenterName string, userID int) (*Datacenter, error)
	// DatacenterConfigGet returns details of a specific datacenter
	DatacenterConfigGet(datacenterName string) (*DatacenterConfig, error)
	// DatacenterConfigUpdate Updates configuration information for a specified Datacenter.
	DatacenterConfigUpdate(datacenterName string, datacenterConfig DatacenterConfig) error
	// DatacenterCreate creates a new Datacenter
	DatacenterCreate(datacenter Datacenter, datacenterConfig DatacenterConfig) (*Datacenter, error)
	// DatacenterDelete deletes storage pools, subnet pools, and other resources then marks the datacenter as deleted.
	DatacenterDelete(datacenterName string) error
	// DatacenterAgentsConfigJSONDownloadURL returns the agent url (and automatically decrypts it)
	DatacenterAgentsConfigJSONDownloadURL(datacenterName string, decrypt bool) (string, error)
	// DriveArrays retrieves the list of drives arrays of an infrastructure
	DriveArrays(infrastructureID int) (*map[string]DriveArray, error)
	// DriveArraysByLabel retrieves the list of drives arrays of an infrastructure
	DriveArraysByLabel(infrastructureLabel string) (*map[string]DriveArray, error)
	// DriveArrayGet retrieves a DriveArray object with specified ids
	DriveArrayGet(driveArrayID int) (*DriveArray, error)
	// DriveArrayGetByLabel retrieves a DriveArray object with specified ids
	DriveArrayGetByLabel(driveArrayLabel string) (*DriveArray, error)
	// DriveArrayCreate array. Requires deploy.
	DriveArrayCreate(infrastructureID int, driveArray DriveArray) (*DriveArray, error)
	// DriveArrayCreateByLabel array. Requires deploy.
	DriveArrayCreateByLabel(infrastructureLabel string, driveArray DriveArray) (*DriveArray, error)
	// DriveArrayEdit array. Requires deploy.
	DriveArrayEdit(driveArrayID int, driveArrayOperation DriveArrayOperation) (*DriveArray, error)
	// DriveArrayEditByLabel array. Requires deploy.
	DriveArrayEditByLabel(driveArrayLabel string, driveArrayOperation DriveArrayOperation) (*DriveArray, error)
	// DriveArrayDelete
	DriveArrayDelete(driveArrayID int) error
	// DriveArrayDeleteByLabel
	DriveArrayDeleteByLabel(driveArrayLabel string) error
	// DriveArrayDrives
	DriveArrayDrives(driveArray int) (*map[string]Drive, error)
	// DriveArrayDrivesByLabel
	DriveArrayDrivesByLabel(driveArrLabel string) (*map[string]Drive, error)
	// DriveSnapshotCreate creates a drive snapshot
	DriveSnapshotCreate(driveID int) (*Snapshot, error)
	// DriveSnapshotDelete creates a drive snapshot
	DriveSnapshotDelete(driveSnapshotID int) error
	// DriveSnapshotRollback rolls a Drive back to a specified DriveSnapshot. The specified snapshot is not destroyed and can be reused.
	DriveSnapshotRollback(driveSnapshotID int) error
	// DriveSnapshotGet gets a drive snapshot
	DriveSnapshotGet(driveSnapshotID int) (*Snapshot, error)
	// DriveSnapshots retrieves a list of all the snapshot objects
	DriveSnapshots(driveID int) (*map[string]Snapshot, error)
	// ExternalConnections returns a list of external connections for the specified datacenter
	ExternalConnections(datacenterName string) (*map[int]ExternalConnection, error)
	// ExternalConnectionCreate creates an external connection.
	ExternalConnectionCreate(externalConnection ExternalConnection) (*ExternalConnection, error)
	// ExternalConnectionGet
	ExternalConnectionGet(externalConnectionID int) (*ExternalConnection, error)
	// ExternalConnectionGetByLabel
	ExternalConnectionGetByLabel(externalConnectionLabel string) (*ExternalConnection, error)
	// ExternalConnectionEdit connection.
	ExternalConnectionEdit(externalConnectionID int, externalConnection ExternalConnection) (*ExternalConnection, error)
	// ExternalConnectionEditByLabel connection.
	ExternalConnectionEditByLabel(externalConnectionLabel string, externalConnection ExternalConnection) (*ExternalConnection, error)
	// ExternalConnectionDelete connection.
	ExternalConnectionDelete(externalConnectionID int) error
	// ExternalConnectionDeleteByLabel connection.
	ExternalConnectionDeleteByLabel(externalConnectionLabel string) error
	// InfrastructureCreate creates an infrastructure
	InfrastructureCreate(infrastructure Infrastructure) (*Infrastructure, error)
	// Infrastructures returns a list of infrastructures
	Infrastructures() (*map[string]Infrastructure, error)
	// InfrastructureSearch searches for infrastructures with filtering support
	InfrastructureSearch(filter string) (*[]InfrastructuresSearchResult, error)
	// InfrastructureEdit
	InfrastructureEdit(infrastructureID int, infrastructureOperation InfrastructureOperation) (*Infrastructure, error)
	// InfrastructureEditByLabel
	InfrastructureEditByLabel(infrastructureLabel string, infrastructureOperation InfrastructureOperation) (*Infrastructure, error)
	// InfrastructureDelete elements. Requires deploy
	InfrastructureDelete(infrastructureID int) error
	// InfrastructureDeleteByLabel elements. Requires deploy
	InfrastructureDeleteByLabel(infrastructureLabel string) error
	// InfrastructureOperationCancel (undos) alterations done before deploy
	InfrastructureOperationCancel(infrastructureID int) error
	// InfrastructureOperationCancelByLabel (undos) alterations done before deploy
	InfrastructureOperationCancelByLabel(infrastructureLabel string) error
	// InfrastructureDeploy
	InfrastructureDeploy(infrastructureID int, shutdownOptions ShutdownOptions, allowDataLoss bool, skipAnsible bool) error
	// InfrastructureDeployByLabel
	InfrastructureDeployByLabel(infrastructureLabel string, shutdownOptions ShutdownOptions, allowDataLoss bool, skipAnsible bool) error
	// InfrastructureDeployWithOptions infrastructure. With options.
	InfrastructureDeployWithOptions(infrastructureID int, shutdownOptions ShutdownOptions, deployOptions *DeployOptions, allowDataLoss bool, skipAnsible bool) error
	// InfrastructureDeployWithOptionsByLabel infrastructure. With options.
	InfrastructureDeployWithOptionsByLabel(infrastructureLabel string, shutdownOptions ShutdownOptions, deployOptions *DeployOptions, allowDataLoss bool, skipAnsible bool) error
	// InfrastructureGet
	InfrastructureGet(infrastructureID int) (*Infrastructure, error)
	// InfrastructureGetByLabel
	InfrastructureGetByLabel(infrastructureLabel string) (*Infrastructure, error)
	// InfrastructureUserLimits
	InfrastructureUserLimits(infrastructureID int) (*map[string]interface{}, error)
	// InfrastructureUserLimitsByLabel
	InfrastructureUserLimitsByLabel(infrastructureLabel string) (*map[string]interface{}, error)
	// InstanceArrayInterfaceAttachNetwork attaches an InstanceArrayInterface to a Network
	InstanceArrayInterfaceAttachNetwork(instanceArrayID int, instanceArrayInterfaceIndex int, networkID int) (*InstanceArray, error)
	// InstanceArrayInterfaceDetach detaches an InstanceArrayInterface from any Network element that is attached to.
	InstanceArrayInterfaceDetach(instanceArrayID int, instanceArrayInterfaceIndex int) (*InstanceArray, error)
	// InstanceArrayGet
	InstanceArrayGet(instanceArrayID int) (*InstanceArray, error)
	// InstanceArrayGetByLabel
	InstanceArrayGetByLabel(instanceArrayLabel string) (*InstanceArray, error)
	// InstanceArrays
	InstanceArrays(infrastructureID int) (*map[string]InstanceArray, error)
	// InstanceArraysByLabel
	InstanceArraysByLabel(infrastructureLabel string) (*map[string]InstanceArray, error)
	// InstanceArrayCreate (colletion of identical instances). Requires Deploy.
	InstanceArrayCreate(infrastructureID int, instanceArray InstanceArray) (*InstanceArray, error)
	// InstanceArrayCreateByLabel (colletion of identical instances). Requires Deploy.
	InstanceArrayCreateByLabel(infrastructureLabel string, instanceArray InstanceArray) (*InstanceArray, error)
	// InstanceArrayEdit array. Requires deploy.
	InstanceArrayEdit(instanceArrayID int, instanceArrayOperation InstanceArrayOperation, bSwapExistingInstancesHardware *bool, bKeepDetachingDrives *bool, objServerTypeMatches *ServerTypeMatches, arrInstancesToBeDeleted *[]int) (*InstanceArray, error)
	// InstanceArrayEditByLabel array. Requires deploy.
	InstanceArrayEditByLabel(instanceArrayLabel string, instanceArrayOperation InstanceArrayOperation, bSwapExistingInstancesHardware *bool, bKeepDetachingDrives *bool, objServerTypeMatches *ServerTypeMatches, arrInstancesToBeDeleted *[]int) (*InstanceArray, error)
	// InstanceArrayDelete array. Requires deploy.
	InstanceArrayDelete(instanceArrayID int) error
	// InstanceArrayDeleteByLabel array. Requires deploy.
	InstanceArrayDeleteByLabel(instanceArrayLabel string) error
	// InstanceArrayStop InstanceArray.
	InstanceArrayStop(instanceArrayID int) (*InstanceArray, error)
	// InstanceArrayStopByLabel InstanceArray.
	InstanceArrayStopByLabel(instanceArrayLabel string) (*InstanceArray, error)
	// InstanceArrayStart InstanceArray.
	InstanceArrayStart(instanceArrayID int) (*InstanceArray, error)
	// InstanceArrayStartByLabel InstanceArray.
	InstanceArrayStartByLabel(instanceArrayLabel string) (*InstanceArray, error)
	// ClusterCreate
	ClusterCreate(infrastructureID int, cluster Cluster) (*Cluster, error)
	// ClusterCreateByLabel
	ClusterCreateByLabel(infrastructureLabel string, cluster Cluster) (*Cluster, error)
	// ClusterGet (app) with specified id
	ClusterGet(clusterID int) (*Cluster, error)
	// ClusterGetByLabel (app) with specified id
	ClusterGetByLabel(clusterLabel string) (*Cluster, error)
	// ClusterAppVMWareVSphere
	ClusterAppVMWareVSphere(clusterID int, decryptCredentials bool) (*AppVMWareVsphere, error)
	// ClusterAppVMWareVSphereByLabel
	ClusterAppVMWareVSphereByLabel(clusterLabel string, decryptCredentials bool) (*AppVMWareVsphere, error)
	// ClusterAppKubernetes
	ClusterAppKubernetes(clusterID int, decryptCredentials bool) (*AppKubernetes, error)
	// ClusterAppKubernetesByLabel
	ClusterAppKubernetesByLabel(clusterLabel string, decryptCredentials bool) (*AppKubernetes, error)
	// ClusterDelete array. Requires deploy.
	ClusterDelete(clusterID int) error
	// ClusterDeleteByLabel array. Requires deploy.
	ClusterDeleteByLabel(clusterLabel string) error
	// ClusterEdit array. Requires deploy.
	ClusterEdit(clusterId int, clusterOperation ClusterOperation) (*Cluster, error)
	// ClusterEditByLabel array. Requires deploy.
	ClusterEditByLabel(clusterLabel string, clusterOperation ClusterOperation) (*Cluster, error)
	// Clusters
	Clusters(infrastructureId int) (*map[string]Cluster, error)
	// ClustersByLabel
	ClustersByLabel(infrastructureLabel string) (*map[string]Cluster, error)
	// ClusterInstanceArrays
	ClusterInstanceArrays(clusterId int) (*map[string]InstanceArray, error)
	// ClusterInstanceArraysByLabel
	ClusterInstanceArraysByLabel(clusterLabel string) (*map[string]InstanceArray, error)
	// InstanceEdit instance. Requires deploy
	InstanceEdit(instanceID int, instanceOperation InstanceOperation) (*Instance, error)
	// InstanceEditByLabel instance. Requires deploy
	InstanceEditByLabel(instanceLabel string, instanceOperation InstanceOperation) (*Instance, error)
	// InstanceArrayInstances InstanceArray.
	InstanceArrayInstances(instanceArrayID int) (*map[string]Instance, error)
	// InstanceArrayInstancesByLabel InstanceArray.
	InstanceArrayInstancesByLabel(instanceArrayLabel string) (*map[string]Instance, error)
	// InstanceGet
	InstanceGet(instanceID int) (*Instance, error)
	// InstanceGetByLabel
	InstanceGetByLabel(instanceLabel string) (*Instance, error)
	// InstanceServerPowerSet
	InstanceServerPowerSet(instanceID int, operation string) error
	// InstanceServerPowerSetByLabel
	InstanceServerPowerSetByLabel(instanceLabel string, operation string) error
	// InstanceServerPowerGet
	InstanceServerPowerGet(instanceID int) (*string, error)
	// InstanceServerPowerGetByLabel
	InstanceServerPowerGetByLabel(instanceLabel string) (*string, error)
	// InstanceServerPowerGetBatch
	InstanceServerPowerGetBatch(infrastructureID int, instanceIDs []int) (*map[string]string, error)
	// InstanceServerPowerGetBatchByLabel
	InstanceServerPowerGetBatchByLabel(infrastructureLabel string, instanceIDs []int) (*map[string]string, error)
	// GetUserEmail returns the user configured for this connection
	GetUserEmail() string
	// GetEndpoint returns the endpoint configured for this connection
	GetEndpoint() string
	// GetUserID returns the ID of the user extracted from the API key
	GetUserID() int
	// NetworkGet object
	NetworkGet(networkID int) (*Network, error)
	// NetworkGetByLabel object
	NetworkGetByLabel(networkLabel string) (*Network, error)
	// Networks infrastructure
	Networks(infrastructureID int) (*map[string]Network, error)
	// NetworksByLabel infrastructure
	NetworksByLabel(infrastructureLabel string) (*map[string]Network, error)
	// NetworkCreate network
	NetworkCreate(infrastructureID int, network Network) (*Network, error)
	// NetworkCreateByLabel network
	NetworkCreateByLabel(infrastructureLabel string, network Network) (*Network, error)
	// NetworkEdit network
	NetworkEdit(networkID int, networkOperation NetworkOperation) (*Network, error)
	// NetworkEditByLabel network
	NetworkEditByLabel(networkLabel string, networkOperation NetworkOperation) (*Network, error)
	// NetworkDelete network.
	NetworkDelete(networkID int) error
	// NetworkDeleteByLabel network.
	NetworkDeleteByLabel(networkLabel string) error
	// NetworkJoin objects.
	NetworkJoin(networkID int, networkToBeDeletedID int) error
	// NetworkJoinByLabel objects.
	NetworkJoinByLabel(networkLabel string, networkToBeDeletedID int) error
	// NetworkProfiles returns a list of network profiles for the specified datacenter
	NetworkProfiles(datacenterName string) (*map[int]NetworkProfile, error)
	// NetworkProfileCreate creates a network profile.
	NetworkProfileCreate(datacenterName string, networkProfile NetworkProfile) (*NetworkProfile, error)
	InstanceArrayNetworkProfileSet(instanceArrayID int, networkID int, networkProfileID int) (*map[int]int, error)
	InstanceArrayNetworkProfileClear(instanceArrayID int, networkID int) error
	NetworkProfileListByInstanceArray(instanceArrayID int) (*map[int]int, error)
	// NetworkProfileGet
	NetworkProfileGet(networkProfileID int) (*NetworkProfile, error)
	// NetworkProfileGetByLabel
	NetworkProfileGetByLabel(networkProfileLabel string) (*NetworkProfile, error)
	// NetworkProfileUpdate profile.
	NetworkProfileUpdate(networkProfileID int, networkProfile NetworkProfile) (*NetworkProfile, error)
	// NetworkProfileUpdateByLabel profile.
	NetworkProfileUpdateByLabel(networkProfileLabel string, networkProfile NetworkProfile) (*NetworkProfile, error)
	// NetworkProfileDelete profile.
	NetworkProfileDelete(networkProfileID int) error
	// NetworkProfileDeleteByLabel profile.
	NetworkProfileDeleteByLabel(networkProfileLabel string) error
	// OSAssetCreate creates a osAsset object
	OSAssetCreate(osAsset OSAsset) (*OSAsset, error)
	// OSAssetDelete permanently destroys a OSAsset.
	OSAssetDelete(osAssetID int) error
	// OSAssetUpdate updates a osAsset
	OSAssetUpdate(osAssetID int, osAsset OSAsset) (*OSAsset, error)
	// OSAssetGet returns a OSAsset specified by nOSAssetID. The OSAsset's protected value is never returned.
	OSAssetGet(osAssetID int) (*OSAsset, error)
	// OSAssetGetStoredContent returns the content of an OSAsset specified by nOSAssetID.
	OSAssetGetStoredContent(osAssetID int) (string, error)
	// OSAssets retrieves a list of all the OSAsset objects which a specified User is allowed to see through ownership or delegation. The OSAsset objects never return the actual protected OSAsset value.
	OSAssets() (*map[string]OSAsset, error)
	// OSAssetMakePublic makes an OS Asset public
	OSAssetMakePublic(osAssetID int) (*OSAsset, error)
	// OSAssetMakePrivate makes an OS Asset private and owned by the current user
	OSAssetMakePrivate(osAssetID int, userID int) (*OSAsset, error)
	// OSTemplateCreate creates a osTemplate object
	OSTemplateCreate(osTemplate OSTemplate) (*OSTemplate, error)
	// OSTemplateDelete permanently destroys a OSTemplate.
	OSTemplateDelete(osTemplateID int) error
	// OSTemplateUpdate updates a osTemplate
	OSTemplateUpdate(osTemplateID int, osTemplate OSTemplate) (*OSTemplate, error)
	// OSTemplateGet returns a OSTemplate specified by nOSTemplateID. The OSTemplate's protected value is never returned.
	OSTemplateGet(osTemplateID int, decryptPasswd bool) (*OSTemplate, error)
	// OSTemplates retrieves a list of all the OSTemplate objects which a specified User is allowed to see through ownership or delegation. The OSTemplate objects never return the actual protected OSTemplate value.
	OSTemplates() (*map[string]OSTemplate, error)
	// OSTemplatesNetwork retrieves a list of all the network OSTemplate objects which a specified User is allowed to see through ownership or delegation.
	OSTemplatesNetwork() (*map[string]OSTemplate, error)
	// OSTemplateOSAssets returns the OSAssets assigned to an OSTemplate.
	OSTemplateOSAssets(osTemplateID int) (*map[string]OSTemplateOSAssetData, error)
	// OSTemplateAddOSAsset adds an asset to a template
	OSTemplateAddOSAsset(osTemplateID int, osAssetID int, path string, variablesJSON string) error
	// OSTemplateRemoveOSAsset removes an asset from a template
	OSTemplateRemoveOSAsset(osTemplateID int, osAssetID int) error
	// OSTemplateUpdateOSAssetPath updates an asset mapping
	OSTemplateUpdateOSAssetPath(osTemplateID int, osAssetID int, path string) error
	// OSTemplateUpdateOSAssetVariables updates an asset variable
	OSTemplateUpdateOSAssetVariables(osTemplateID int, osAssetID int, variablesJSON string) error
	// OSTemplateMakePublic makes a template public
	OSTemplateMakePublic(osTemplateID int) error
	// OSTemplateMakePrivate makes a template private
	OSTemplateMakePrivate(osTemplateID int, userID int) error
	// SecretCreate creates a secret
	SecretCreate(secret Secret) (*Secret, error)
	// SecretDelete Permanently destroys a Secret.
	SecretDelete(secretID int) error
	// SecretUpdate This function allows updating the secret_usage, secret_label and secret_base64 of a Secret
	SecretUpdate(secretID int, secret Secret) (*Secret, error)
	// SecretGet returns a Secret specified by nSecretID. The secret's protected value is never returned.
	SecretGet(secretID int) (*Secret, error)
	// Secrets retrieves a list of all the Secret objects which a specified User is allowed to see through ownership or delegation. The secret objects never return the actual protected secret value.
	Secrets(usage string) (*map[string]Secret, error)
	// ServersSearch searches for servers matching certain filter
	ServersSearch(filter string) (*[]ServerSearchResult, error)
	// ServerGetByUUID retrieves information about a specified Server by using the server's UUID
	ServerGetByUUID(serverUUID string, decryptPasswd bool) (*Server, error)
	// ServerGet returns a server's details
	ServerGet(serverID int, decryptPasswd bool) (*Server, error)
	// ServerCreate manually creates a server record. DEPRECATED
	ServerCreate(server Server, autoGenerate bool) (int, error)
	// ServerUnmanagedImport creates an unmanaged server
	ServerUnmanagedImport(server ServerCreateUnmanaged) (*Server, error)
	// ServerUnmanagedImportBatch Imports multiple unmanaged servers
	ServerUnmanagedImportBatch(servers []ServerCreateUnmanaged) (*map[string]Server, error)
	// ServerCreateAndRegister manually creates and registers a server
	ServerCreateAndRegister(serverCreateAndRegister ServerCreateAndRegister) (int, error)
	// ServerEditComplete - perform a complete edit
	ServerEditComplete(serverID int, server Server) (*Server, error)
	// ServerEditIPMI - edit only IPMI settings
	ServerEditIPMI(serverID int, server Server, serverUpdateInBMC bool) (*Server, error)
	// ServerEditAvailability - edit only server availability settings
	ServerEditAvailability(serverID int, server Server) (*Server, error)
	// ServerEdit edits a server record
	ServerEdit(serverID int, serverEditType string, server Server) (*Server, error)
	// ServerEditProperty edits a specific property from the server record
	// this is used instead of the server edit function as it does not require a marshal-unmarshal to and form the server object
	// which sometimes is broken due to frequent changes on the server side
	ServerEditProperty(serverID int, serverPropertyToEdit string, serverPropertyValue interface{}) error
	// ServerDelete deletes all the information about a specified Server.
	ServerDelete(serverID int, skipIPMI bool) error
	// ServerDecomission decomissions the server row and deletes all child rows.
	ServerDecomission(serverID int, skipIPMI bool) error
	// ServerFirmwareComponentUpgrade Creates a firmware upgrading session for the specified component.
	// If no strServerComponentFirmwareNewVersion or strFirmwareBinaryURL are provided the system will use the values from the database which should have been previously added
	ServerFirmwareComponentUpgrade(serverID int, serverComponentID int, serverComponentFirmwareNewVersion string, firmwareBinaryURL string) error
	// ServerFirmwareUpgrade creates a firmware upgrading session that affects all components from the specified server that have a target version set and are updatable.
	ServerFirmwareUpgrade(serverID int) error
	// ServerFirmwareComponentTargetVersionSet Sets a firmware target version for the upgrading process. The system will apply the upgrade at the next upgrading session.
	ServerFirmwareComponentTargetVersionSet(serverComponentID int, serverComponentFirmwareNewVersion string) error
	// ServerFirmwareComponentTargetVersionUpdate Updates for every component of the specified server the available firmware versions that can be used as target by the firmware upgrading process. The available versions are extracted from a vendor specific catalog.
	ServerFirmwareComponentTargetVersionUpdate(serverComponentID int) error
	// ServerFirmwareComponentTargetVersionAdd Adds a new available firmware version for a server component along with the url of the binary. If the version already exists the old url will be overwritten.
	ServerFirmwareComponentTargetVersionAdd(serverComponentID int, version string, firmareBinaryURL string) error
	// ServerComponentGet returns a server's component's details
	ServerComponentGet(serverComponentID int) (*ServerComponent, error)
	// ServerComponents searches for servers matching certain filter
	ServerComponents(serverID int, filter string) (*[]ServerComponent, error)
	// ServerPowerSet reboots or powers on a server
	ServerPowerSet(serverID int, operation string) error
	// ServerReregister triggers a re-register of a server
	ServerReregister(serverID int, bSkipIPMI bool, bUseBDKAgent bool) error
	// ServerStatusUpdate alters the status of a server
	ServerStatusUpdate(serverID int, status string) error
	// ServerEditRack returns a server's rack info details
	ServerEditRack(serverID int, serverEditRack ServerEditRack) (*Server, error)
	// ServerEditInventory returns a server's inventory details
	ServerEditInventory(serverID int, serverEditInventory ServerEditInventory) (*Server, error)
	// InstanceServerReplace replaces a server associated to an instance. Returns an AFC Group ID to be used in the AFC Deploy Viewer.
	InstanceServerReplace(instanceID int, serverID int) (int, error)
	// ServerDefaultCredentialsAdd Adds BMC credentials to the default credentials list for the ZTP process
	ServerDefaultCredentialsAdd(credentials []ServerDefaultCredentials) error
	// ServerDefaultCredentials retrieves the default credentials for server BMCs for the ZTP process for a given datacenter
	ServerDefaultCredentials(datacenter_name string, decryptPasswd bool) (*[]ServerDefaultCredentials, error)
	// ServerDefaultCredentialsRemove Removes BMC credentials to the default credentials list for the ZTP process
	ServerDefaultCredentialsRemove(default_credentials_id []int) error
	// ServerFirmwarePolicyGet returns a server policy's details
	ServerFirmwarePolicyGet(serverFirmwarePolicyID int) (*ServerFirmwareUpgradePolicy, error)
	// ServerFirmwareUpgradePolicyCreate creates a server firmware policy.
	ServerFirmwareUpgradePolicyCreate(serverFirmwarePolicy *ServerFirmwareUpgradePolicy) (*ServerFirmwareUpgradePolicy, error)
	// ServerFirmwarePolicyAddRule add a new rule for a policy.
	ServerFirmwarePolicyAddRule(serverFirmwarePolicyID int, serverRule *ServerFirmwareUpgradePolicyRule) (*ServerFirmwareUpgradePolicy, error)
	// ServerFirmwarePolicyDeleteRule deletes a rule from a policy.
	ServerFirmwarePolicyDeleteRule(serverFirmwarePolicyID int, serverRule *ServerFirmwareUpgradePolicyRule) error
	// ServerFirmwareUpgradePolicyDelete deletes all the information about a specified ServerFirmwareUpgradePolicy.
	ServerFirmwareUpgradePolicyDelete(serverFirmwarePolicyID int) error
	ServerFirmwareUgradePolicyInstanceArraySet(serverFirmwarePolicyID int, instanceArrayList []int) error
	// ServerFirmwareUpgradePolicyActionSet sets the upgrade action for a specified ServerFirmwareUpgradePolicy.
	ServerFirmwareUpgradePolicyActionSet(serverFirmwarePolicyID int, serverFirmwarePolicyAction string) error
	// ServerFirmwareUpgradePolicyLabelSet sets the label for a specified ServerFirmwareUpgradePolicy.
	ServerFirmwareUpgradePolicyLabelSet(serverFirmwarePolicyID int, serverFirmwarePolicyLabel string) error
	// ServerTypesMatchHardwareConfiguration Retrieves a list of server types that match the provided hardware configuration. The function does not check for availability, only compatibility, so physical servers associated with the returned server types might be unavailable.
	ServerTypesMatchHardwareConfiguration(datacenterName string, hardwareConfiguration HardwareConfiguration) (*map[int]ServerType, error)
	// ServerTypeDatacenter retrieves all the server type IDs for servers found in a specified Datacenter
	ServerTypeDatacenter(datacenterName string) (*[]int, error)
	// ServerTypes retrieves all ServerType objects from the database.
	ServerTypes(bOnlyAvailable bool) (*map[int]ServerType, error)
	// ServerTypesForDatacenter retrieves all ServerType objects from the database.
	ServerTypesForDatacenter(datacenterName string, bOnlyAvailable bool) (*map[int]ServerType, error)
	// ServerTypeGet id
	ServerTypeGet(serverTypeID int) (*ServerType, error)
	// ServerTypeGetByLabel id
	ServerTypeGetByLabel(serverTypeLabel string) (*ServerType, error)
	// ServerTypesMatches Instance&#39;s configuration, using the properties specified in the objHardwareConfiguration object, and returns the number of compatible servers for each server_type_id.
	ServerTypesMatches(infrastructureID int, hardwareConfiguration HardwareConfiguration, instanceArrayID *int, bAllowServerSwap bool) (*map[string]ServerType, error)
	// ServerTypesMatchesByLabel Instance&#39;s configuration, using the properties specified in the objHardwareConfiguration object, and returns the number of compatible servers for each server_type_id.
	ServerTypesMatchesByLabel(infrastructureLabel string, hardwareConfiguration HardwareConfiguration, instanceArrayID *int, bAllowServerSwap bool) (*map[string]ServerType, error)
	SharedDriveAttachInstanceArray(sharedDriveID int, instanceArrayID int) (*SharedDrive, error)
	SharedDriveDetachInstanceArray(sharedDriveID int, instanceArrayID int) (*SharedDrive, error)
	// SharedDrives retrieves the list of shared drives of an infrastructure
	SharedDrives(infrastructureID int) (*map[string]SharedDrive, error)
	// SharedDriveCreate array. Requires deploy.
	SharedDriveCreate(infrastructureID int, sharedDrive SharedDrive) (*SharedDrive, error)
	// SharedDriveCreateByLabel array. Requires deploy.
	SharedDriveCreateByLabel(infrastructureLabel string, sharedDrive SharedDrive) (*SharedDrive, error)
	// SharedDriveGet drive
	SharedDriveGet(sharedDriveID int) (*SharedDrive, error)
	// SharedDriveGetByLabel drive
	SharedDriveGetByLabel(sharedDriveLabel string) (*SharedDrive, error)
	// SharedDriveEdit array. Requires deploy.
	SharedDriveEdit(sharedDriveID int, sharedDriveOperation SharedDriveOperation) (*SharedDrive, error)
	// SharedDriveEditByLabel array. Requires deploy.
	SharedDriveEditByLabel(sharedDriveLabel string, sharedDriveOperation SharedDriveOperation) (*SharedDrive, error)
	// SharedDriveDelete drive.
	SharedDriveDelete(sharedDriveID int) error
	// SharedDriveDeleteByLabel drive.
	SharedDriveDeleteByLabel(sharedDriveLabel string) error
	// StageDefinitionCreate creates a stageDefinition
	StageDefinitionCreate(stageDefinition StageDefinition) (*StageDefinition, error)
	// StageDefinitionDelete Permanently destroys a StageDefinition.
	StageDefinitionDelete(stageDefinitionID int) error
	// StageDefinitionUpdate This function allows updating the stageDefinition_usage, stageDefinition_label and stageDefinition_base64 of a StageDefinition
	StageDefinitionUpdate(stageDefinitionID int, stageDefinition StageDefinition) (*StageDefinition, error)
	// StageDefinitionGet returns a StageDefinition specified by nStageDefinitionID. The stageDefinition's protected value is never returned.
	StageDefinitionGet(stageDefinitionID int) (*StageDefinition, error)
	// StageDefinitions retrieves a list of all the StageDefinition objects which a specified User is allowed to see through ownership or delegation. The stageDefinition objects never return the actual protected stageDefinition value.
	StageDefinitions() (*map[string]StageDefinition, error)
	// StoragePoolSearch searches for storage pools matching certain filter
	StoragePoolSearch(filter string) (*[]StoragePoolSearchResult, error)
	// StoragePoolGet returns a storage pool's details
	StoragePoolGet(serverID int, decryptPasswd bool) (*StoragePool, error)
	SubnetGet(subnetID int) (*Subnet, error)
	SubnetCreate(subnet Subnet) (*Subnet, error)
	SubnetDelete(subnetID int) error
	// SubnetPoolCreateOrUpdate creates or updates a subnet pool
	SubnetPoolCreateOrUpdate(subnetPool SubnetPool) (*SubnetPool, error)
	SubnetOOBGet(subnetOOBID int) (*SubnetOOB, error)
	// SubnetOOBGetByLabel retrieves information regarding a specified Subnet by label.
	SubnetOOBGetByLabel(subnetOOBLabel string) (*SubnetOOB, error)
	SubnetOOBCreate(subnetOOB SubnetOOB) (*SubnetOOB, error)
	SubnetOOBDelete(subnetOOBID int) error
	SubnetOOBDeleteByLabel(subnetOOBLabel string) error
	// SubnetOOBSearch retrieves all OOB subnets registered in the database with the specified filter
	SubnetOOBSearch(filter string) (*[]SubnetOOB, error)
	// SubnetPoolCreate creates a new SubnetPool.
	SubnetPoolCreate(subnetPool SubnetPool) (*SubnetPool, error)
	// SubnetPoolGet retrieves information regarding a specified SubnetPool.
	SubnetPoolGet(subnetPoolID int) (*SubnetPool, error)
	// SubnetPoolGetByLabel retrieves information regarding a specified SubnetPool by label.
	SubnetPoolGetByLabel(subnetPoolLabel string) (*SubnetPool, error)
	// SubnetPoolPrefixSizesStats retrieves information regarding the utilization of a specified SubnetPool.
	SubnetPoolPrefixSizesStats(subnetPoolID int) (*SubnetPoolUtilization, error)
	// SubnetPoolDelete deletes the specified SubnetPool
	SubnetPoolDelete(subnetPoolID int) error
	SubnetPoolDeleteByLabel(subnetPoolLabel string) error
	// SubnetPools retrieves all switch devices registered in the database.
	SubnetPools() (*[]SubnetPool, error)
	// SubnetPoolSearch retrieves all switch devices registered in the database with the specified filter
	SubnetPoolSearch(filter string) (*[]SubnetPool, error)
	// SwitchDeviceGet Retrieves information regarding a specified SwitchDevice.
	SwitchDeviceGet(networkEquipmentID int, decryptPasswd bool) (*SwitchDevice, error)
	// SwitchDeviceGetByIdentifierString Retrieves information regarding a specified SwitchDevice by identifier string.
	SwitchDeviceGetByIdentifierString(networkEquipmentIdentifierString string, decryptPasswd bool) (*SwitchDevice, error)
	// SwitchDeviceCreate Creates a record for a new SwitchDevice.
	SwitchDeviceCreate(switchDevice SwitchDevice, bOverwriteWithHostnameFromFetchedSwitch bool) (*SwitchDevice, error)
	// SwitchDeviceDelete deletes a specified switch device and its registered interfaces.
	SwitchDeviceDelete(networkEquipmentID int) error
	// SwitchDevices retrieves all switch devices registered in the database.
	SwitchDevices(datacenter string, switchType string) (*map[string]SwitchDevice, error)
	// SwitchDevicesInDatacenter retrieves all switch devices in a datacenter
	SwitchDevicesInDatacenter(datacenter string) (*map[string]SwitchDevice, error)
	// SwitchDeviceUpdate updates an existing switch configuration
	SwitchDeviceUpdate(networkEquipmentID int, switchDevice SwitchDevice, bOverwriteWithHostnameFromFetchedSwitch bool) (*SwitchDevice, error)
	// SwitchDeviceControllerGet retrieves information regarding a specified SwitchDeviceController.
	SwitchDeviceControllerGet(networkEquipmentControllerID int, decryptPasswd bool) (*SwitchDeviceController, error)
	// SwitchDeviceControllerGetByIdentifierString retrieves information regarding a specified SwitchDeviceController by identifier string.
	SwitchDeviceControllerGetByIdentifierString(networkEquipmentIdentifierString string, decryptPasswd bool) (*SwitchDeviceController, error)
	// SwitchDeviceControllerCreate creates a record for a new SwitchDeviceController and for the switches that were detected and created.
	SwitchDeviceControllerCreate(switchDeviceController SwitchDeviceController) (*SwitchDeviceController, error)
	// SwitchDeviceControllers retrieves all switch controller devices registered in the database.
	// If a datacenter is specified, only the switch device controllers for that datacenter are returned.
	SwitchDeviceControllers(datacenter string) (*map[int]SwitchDeviceController, error)
	// SwitchDeviceControllers retrieves all switch devices registered in the database.
	SwitchDeviceControllerSwitches(networkEquipmentIdentifierString string) (map[int]SwitchDevice, error)
	// SwitchDeviceUpdate updates an existing switch configuration
	SwitchDeviceControllerUpdate(networkEquipmentControllerID int, networkEquipmentControllerData interface{}) (*SwitchDeviceController, error)
	// Creates multiple network equipment controller records, based on the output from Switch Controller.
	// Returns the created switches.
	// Please note that this may take some time, typically a few seconds.
	SwitchDeviceControllerSync(networkEquipmentControllerID int) (*map[int]SwitchDevice, error)
	// SwitchDeviceControllerDelete deletes a specified switch device controller. The switches belonging to the controller need to be deleted first.
	SwitchDeviceControllerDelete(networkEquipmentControllerID int) error
	// SwitchDeviceDefaults retrieves all switch defaults registered in the database for a datacenter.
	SwitchDeviceDefaults(datacenter string) (*[]SwitchDeviceDefaults, error)
	// SwitchDeviceDefaultsCreate adds records for a new set of switch device defaults.
	SwitchDeviceDefaultsCreate(switchDeviceDefaultsArray []SwitchDeviceDefaults) error
	// SwitchDeviceDefaultsDelete removes records for the specified switch device defaults.
	SwitchDeviceDefaultsDelete(switchDeviceDefaultsIDs []int) error
	// SwitchDeviceLinks Returns all the switch device links found in the database.
	SwitchDeviceLinks() (*map[int]SwitchDeviceLink, error)
	// SwitchDeviceLinkCreate Creates a record for a new SwitchDevice.
	SwitchDeviceLinkCreate(networkEquipmentID1 int, networkEquipmentID2 int, networkEquipmentLinkType string) (*SwitchDeviceLink, error)
	// SwitchDeviceLinkGet Retrieves information regarding a specified switch device link
	SwitchDeviceLinkGet(networkEquipmentID1 int, networkEquipmentID2 int, linkType string) (*SwitchDeviceLink, error)
	// SwitchDeviceLinkDelete deletes a specified switch device and its registered interfaces.
	SwitchDeviceLinkDelete(networkEquipmentID1 int, networkEquipmentID2 int, linkType string) error
	// SwitchInterfaceSearch searches for server interfaces filtering on various elements such as switch id or server id
	SwitchInterfaceSearch(filter string) (*[]SwitchInterfaceSearchResult, error)
	// UserGet describes returns user account specifications.
	UserGet(userID int) (*User, error)
	// UserGetByEmail describes returns user account specifications.
	UserGetByEmail(userLabel string) (*User, error)
	// UserEmailToUserID returns the user id of an user given an email
	UserEmailToUserID(userEmail string) (*int, error)
	// UserSearch searches for users with filtering support
	UserSearch(filter string) (*[]UsersSearchResult, error)
	// VariableCreate creates a variable object
	VariableCreate(variable Variable) (*Variable, error)
	// VariableDelete permanently destroys a Variable.
	VariableDelete(variableID int) error
	// VariableUpdate updates a variable
	VariableUpdate(variableID int, variable Variable) (*Variable, error)
	// VariableGet returns a Variable specified by nVariableID. The Variable's protected value is never returned.
	VariableGet(variableID int) (*Variable, error)
	// Variables retrieves a list of all the Variable objects which a specified User is allowed to see through ownership or delegation. The Variable objects never return the actual protected Variable value.
	Variables(usage string) (*map[string]Variable, error)
	// VolumeTemplates retrives the list of available templates
	VolumeTemplates() (*map[string]VolumeTemplate, error)
	// VolumeTemplateMakePublic makes a template public
	VolumeTemplateMakePublic(volumeTemplateID int, bootstrapFunctionName string) error
	// VolumeTemplateMakePrivate makes a template private
	VolumeTemplateMakePrivate(volumeTemplateID int, userID int) error
	// VolumeTemplateGet template
	VolumeTemplateGet(volumeTemplateID int) (*VolumeTemplate, error)
	// VolumeTemplateGetByLabel template
	VolumeTemplateGetByLabel(volumeTemplateLabel string) (*VolumeTemplate, error)
	// VolumeTemplateCreateFromDrive drive
	VolumeTemplateCreateFromDrive(driveID int, objVolumeTemplate VolumeTemplate) (*VolumeTemplate, error)
	// VolumeTemplateCreateFromDriveByLabel drive
	VolumeTemplateCreateFromDriveByLabel(driveLabel string, objVolumeTemplate VolumeTemplate) (*VolumeTemplate, error)
	// WorkflowCreate creates a workflow
	WorkflowCreate(workflow Workflow) (*Workflow, error)
	// WorkflowDelete Permanently destroys a Workflow.
	WorkflowDelete(workflowID int) error
	// WorkflowUpdate This function allows updating the workflow_usage, workflow_label and workflow_base64 of a Workflow
	WorkflowUpdate(workflowID int, workflow Workflow) (*Workflow, error)
	// WorkflowGet returns a Workflow specified by nWorkflowID. The workflow's protected value is never returned.
	WorkflowGet(workflowID int) (*Workflow, error)
	// Workflows retrieves a list of all the Workflow objects which a specified User is allowed to see through ownership or delegation.
	Workflows() (*map[string]Workflow, error)
	// WorkflowsWithUsage retrieves a list of all the Workflow objects which the current User is allowed to see through ownership or delegation with a specific usage.
	WorkflowsWithUsage(usage string) (*map[string]Workflow, error)
	// WorkflowStages retrieves a list of all the StageDefinitions objects in this workflow
	WorkflowStages(workflowID int) (*[]WorkflowStageDefinitionReference, error)
	// WorkflowStageGet returns a StageDefinition specified by workflowStageID.
	WorkflowStageGet(workflowStageID int) (*WorkflowStageDefinitionReference, error)
	// WorkflowStageAddAsNewRunLevel adds a new stage in this workflow
	WorkflowStageAddAsNewRunLevel(workflowID int, stageDefinitionID int, destinationRunLevel int) error
	// WorkflowStageAddIntoRunLevel adds a new stage in this workflow
	WorkflowStageAddIntoRunLevel(workflowID int, stageDefinitionID int, destinationRunLevel int) error
	// WorkflowMoveAsNewRunLevel moves a stage in this workflow from a runlevel to another
	WorkflowMoveAsNewRunLevel(workflowID int, stageDefinitionID int, sourceRunLevel int, destinationRunLevel int) error
	// WorkflowMoveIntoRunLevel moves a stage in this workflow from a runlevel to another
	WorkflowMoveIntoRunLevel(workflowID int, stageDefinitionID int, sourceRunLevel int, destinationRunLevel int) error
	// WorkflowStageDelete deletes a stage from a workflow entirelly
	WorkflowStageDelete(workflowStageID int) error
	// InfrastructureDeployCustomStageAddIntoRunlevel adds a stage into a runlevel
	InfrastructureDeployCustomStageAddIntoRunlevel(infraID int, stageID int, runLevel int, stageRunMoment string) error
	// InfrastructureDeployCustomStageDelete delete a stage
	InfrastructureDeployCustomStageDelete(nInfrastructureCustomDeployStageID int) error
	// InfrastructureDeployCustomStages retrieves a list of all the StageDefinition objects which a specified User is allowed to see through ownership or delegation. The stageDefinition objects never return the actual protected stageDefinition value.
	InfrastructureDeployCustomStages(infraID int, stageDefinitionType string) (*[]WorkflowStageAssociation, error)
}

MetalCloudClient interface used for mocking and abstracting the backend

type Network

type Network struct {
	NetworkID                 int               `json:"network_id,omitempty" yaml:"id,omitempty"`
	NetworkLabel              string            `json:"network_label,omitempty" yaml:"label,omitempty"`
	NetworkSubdomain          string            `json:"network_subdomain,omitempty" yaml:"subdomain,omitempty"`
	NetworkType               string            `json:"network_type,omitempty" yaml:"type,omitempty"`
	InfrastructureID          int               `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	NetworkCreatedTimestamp   string            `json:"network_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	NetworkUpdatedTimestamp   string            `json:"network_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	NetworkLANAutoAllocateIPs bool              `json:"network_lan_autoallocate_ips,omitempty" yaml:"LANAutoAllocateIPs,omitempty"`
	NetworkOperation          *NetworkOperation `json:"network_operation,omitempty" yaml:"operation,omitempty"`
}

Network object describes an high level connection construct

func (Network) CreateOrUpdate

func (n Network) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (Network) Delete

func (n Network) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (Network) Validate

func (n Network) Validate() error

Validate implements interface Applier

type NetworkOperatingSystem

type NetworkOperatingSystem struct {
	OperatingSystemArchitecture   string `json:"operating_system_architecture,omitempty" yaml:"architecture,omitempty"`
	OperatingSystemDatacenterName string `json:"operating_system_datacenter_name,omitempty" yaml:"datacenter_name,omitempty"`
	OperatingSystemMachine        string `json:"operating_system_machine,omitempty" yaml:"machine,omitempty"`
	OperatingSystemSwitchDriver   string `json:"operating_system_switch_driver,omitempty" yaml:"switchDriver,omitempty"`
	OperatingSystemSwitchRole     string `json:"operating_system_switch_role,omitempty" yaml:"switchRole,omitempty"`
	OperatingSystemVendor         string `json:"operating_system_vendor,omitempty" yaml:"vendor,omitempty"`
	OperatingSystemVersion        string `json:"operating_system_version,omitempty" yaml:"version,omitempty"`
}

type NetworkOperation

type NetworkOperation struct {
	NetworkID                 int    `json:"network_id,omitempty" yaml:"id,omitempty"`
	NetworkLabel              string `json:"network_label,omitempty" yaml:"label,omitempty"`
	NetworkSubdomain          string `json:"network_subdomain,omitempty" yaml:"subdomain,omitempty"`
	NetworkType               string `json:"network_type,omitempty" yaml:"type,omitempty"`
	InfrastructureID          int    `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	NetworkLANAutoAllocateIPs bool   `json:"network_lan_autoallocate_ips" yaml:"LANAutoAllocateIPs"`
	NetworkDeployType         string `json:"network_deploy_type,omitempty" yaml:"deployType,omitempty"`
	NetworkChangeID           int    `json:"network_change_id,omitempty" yaml:"changeID,omitempty"`
}

NetworkOperation object describes the change(s) required to be applied to a Network

type NetworkProfile

type NetworkProfile struct {
	NetworkProfileID               int                  `json:"network_profile_id,omitempty" yaml:"id,omitempty"`
	NetworkProfileLabel            string               `json:"network_profile_label,omitempty" yaml:"label,omitempty"`
	DatacenterName                 string               `json:"datacenter_name,omitempty" yaml:"dc,omitempty"`
	NetworkProfileIsPublic         bool                 `json:"network_profile_is_public,omitempty" yaml:"networkProfileIsPublic,omitempty"`
	NetworkType                    string               `json:"network_type,omitempty" yaml:"networkType,omitempty"`
	NetworkProfileVLANs            []NetworkProfileVLAN `json:"network_profile_vlans" yaml:"vlans"`
	NetworkProfileCreatedTimestamp string               `json:"nework_profile_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	NetworkProfileUpdatedTimestamp string               `json:"nework_profile_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
}

NetworkProfile object describes a network profile

type NetworkProfileSubnetPool

type NetworkProfileSubnetPool struct {
	SubnetPoolID                   *int   `json:"subnet_pool_id" yaml:"subnetPoolID"`
	SubnetPoolType                 string `json:"subnet_pool_type" yaml:"subnetPoolType"`
	SubnetPoolProvidesDefaultRoute bool   `json:"subnet_pool_provides_default_route" yaml:"subnetPoolProvidesDefaultRoute"`
}

type NetworkProfileVLAN

type NetworkProfileVLAN struct {
	VlanID                  *int                       `json:"vlan_id" yaml:"vlanID"`
	PortMode                string                     `json:"port_mode,omitempty" yaml:"portMode,omitempty"`
	ProvisionSubnetGateways bool                       `json:"provision_subnet_gateways" yaml:"provisionSubnetGateways"`
	ProvisionVXLAN          bool                       `json:"provision_vxlan" yaml:"provisionVXLAN"`
	ExternalConnectionIDs   []int                      `json:"external_connection_ids" yaml:"extConnectionIDs"`
	SubnetPools             []NetworkProfileSubnetPool `json:"subnet_pools" yaml:"subnetPools"`
}

NetworkProfileVLAN object describes a VLAN

type OSAsset

type OSAsset struct {
	OSAssetID                    int      `json:"os_asset_id,omitempty" yaml:"id,omitempty"`
	UserIDOwner                  int      `json:"user_id_owner,omitempty" yaml:"ownerID,omitempty"`
	UserIDAuthenticated          int      `json:"user_id_authenticated,omitempty" yaml:"userIDAuthenticated,omitempty"`
	OSAssetFileName              string   `json:"os_asset_filename,omitempty" yaml:"fileName,omitempty"`
	OSAssetFileSizeBytes         int      `json:"os_asset_file_size_bytes,omitempty" yaml:"fileSizeBytes,omitempty"`
	OSAssetFileMime              string   `json:"os_asset_file_mime,omitempty" yaml:"fileMime,omitempty"`
	OSAssetTemplateType          string   `json:"os_asset_template_type,omitempty" yaml:"templateType,omitempty"`
	OSAssetContentsBase64        string   `json:"os_asset_contents_base64,omitempty" yaml:"contentBase64,omitempty"`
	OSAssetContentsSHA256Hex     string   `json:"os_asset_contents_sha256_hex,omitempty" yaml:"contentSHA256Hex,omitempty"`
	OSAssetUsage                 string   `json:"os_asset_usage,omitempty" yaml:"usage,omitempty"`
	OSAssetSourceURL             string   `json:"os_asset_source_url,omitempty" yaml:"sourceURL,omitempty"`
	OSAssetVariableNamesRequired []string `json:"os_asset_variable_names_required,omitempty" yaml:"variables,omitempty"`
	OSAssetTags                  []string `json:"os_asset_tags,omitempty" yaml:"tags,omitempty"`
	OSAssetCreatedTimestamp      string   `json:"os_asset_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	OSAssetUpdatedTimestamp      string   `json:"os_asset_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
}

OSAsset struct defines a server type

func (OSAsset) CreateOrUpdate

func (asset OSAsset) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (OSAsset) Delete

func (asset OSAsset) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (OSAsset) Validate

func (asset OSAsset) Validate() error

Validate implements interface Applier

type OSTemplate

type OSTemplate struct {
	VolumeTemplateID                      int                     `json:"volume_template_id,omitempty" yaml:"id,omitempty"`
	VolumeTemplateLabel                   string                  `json:"volume_template_label,omitempty" yaml:"label,omitempty"`
	VolumeTemplateDisplayName             string                  `json:"volume_template_display_name,omitempty" yaml:"name,omitempty"`
	VolumeTemplateSizeMBytes              int                     `json:"volume_template_size_mbytes,omitempty" yaml:"sizeMBytes,omitempty"`
	VolumeTemplateLocalDiskSupported      bool                    `json:"volume_template_local_disk_supported,omitempty" yaml:"localDisk,omitempty"`
	VolumeTemplateIsOSTemplate            bool                    `json:"volume_template_is_os_template,omitempty" yaml:"isOsTemplate,omitempty"`
	VolumeTemplateIsForSwitch             bool                    `json:"volume_template_is_for_switch,omitempty"`
	VolumeTemplateImageBuildRequired      bool                    `json:"volume_template_image_build_required,omitempty" yaml:"isImageBuildRequired,omitempty"`
	VolumeTemplateProvisionViaOOB         bool                    `json:"volume_template_provision_via_oob,omitempty" yaml:"provisionViaOOB,omitempty"`
	VolumeTemplateBootMethodsSupported    string                  `json:"volume_template_boot_methods_supported,omitempty" yaml:"bootMethods,omitempty"`
	VolumeTemplateOsBootstrapFunctionName string                  `json:"volume_template_os_bootstrap_function_name,omitempty"`
	VolumeTemplateBootType                string                  `json:"volume_template_boot_type,omitempty" yaml:"bootType,omitempty"`
	VolumeTemplateDescription             string                  `json:"volume_template_description,omitempty" yaml:"description,omitempty"`
	VolumeTemplateCreatedTimestamp        string                  `json:"volume_template_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	VolumeTemplateUpdatedTimestamp        string                  `json:"volume_template_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	UserID                                int                     `json:"user_id,omitempty" yaml:"userID,omitempty"`
	VolumeTemplateOperatingSystem         *OperatingSystem        `json:"volume_template_operating_system,omitempty" yaml:"os,omitempty"`
	VolumeTemplateRepoURL                 string                  `json:"volume_template_repo_url,omitempty" yaml:"repoURL,omitempty"`
	VolumeTemplateDeprecationStatus       string                  `json:"volume_template_deprecation_status,omitempty" yaml:"deprecationStatus,omitempty"`
	OSTemplateCredentials                 *OSTemplateCredentials  `json:"os_template_credentials,omitempty" yaml:"credentials,omitempty"`
	VolumeTemplateTags                    []string                `json:"volume_template_tags,omitempty" yaml:"tags,omitempty"`
	OSTemplatePreBootArchitecture         string                  `json:"os_template_pre_boot_architecture,omitempty" yaml:"preBootArchitecture,omitempty"`
	OSAssetBootloaderLocalInstall         int                     `json:"os_asset_id_bootloader_local_install" yaml:"OSAssetIDBootloaderLocalInstall"`
	OSAssetBootloaderOSBoot               int                     `json:"os_asset_id_bootloader_os_boot" yaml:"OSAssetIDBootloaderOSBoot"`
	VolumeTemplateVariablesJSON           string                  `json:"volume_template_variables_json,omitempty" yaml:"variablesJSON,omitempty"`
	VolumeTemplateNetworkOperatingSystem  *NetworkOperatingSystem `json:"volume_template_network_operating_system,omitempty" yaml:"networkOS,omitempty"`
	VolumeTemplateVersion                 string                  `json:"volume_template_version,omitempty"`
	VolumeTemplateOSReadyMethod           string                  `json:"volume_template_os_ready_method,omitempty"`
}

OSTemplate A template can be created based on a drive and it has the same characteristics and holds the same information as the parent drive.

func (OSTemplate) CreateOrUpdate

func (t OSTemplate) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (OSTemplate) Delete

func (t OSTemplate) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (OSTemplate) Validate

func (t OSTemplate) Validate() error

Validate implements interface Applier

type OSTemplateCredentials

type OSTemplateCredentials struct {
	OSTemplateInitialUser                     string `json:"os_template_initial_user,omitempty" yaml:"initialUser,omitempty"`
	OSTemplateInitialPasswordEncrypted        string `json:"os_template_initial_password_encrypted,omitempty" yaml:"initialPasswordEncrypted,omitempty"`
	OSTemplateInitialPassword                 string `json:"os_template_initial_password,omitempty" yaml:"initialPassword,omitempty"`
	OSTemplateInitialSSHPort                  int    `json:"os_template_initial_ssh_port,omitempty" yaml:"initialSSHPort,omitempty"`
	OSTemplateChangePasswordAfterDeploy       bool   `json:"os_template_change_password_after_deploy,omitempty" yaml:"changePasswordAfterDeploy,omitempty"`
	OSTemplateUseAutogeneratedInitialPassword bool   `json:"os_template_use_autogenerated_initial_password,omitempty" yaml:"useAutogeneratedInitialPassword,omitempty"`
}

OSTemplateCredentials holds information needed to connect to an OS installed by an OSTemplate.

type OSTemplateOSAssetData

type OSTemplateOSAssetData struct {
	OSAsset                           *OSAsset `json:"os_asset,omitempty"`
	OSAssetFilePath                   string   `json:"os_asset_file_path,omitempty"`
	OSTemplateOSAssetUpdatedTimestamp string   `json:"volume_template_os_asset_updated_timestamp,omitempty"`
	OSTemplateOSAssetVariablesJSON    string   `json:"volume_template_os_asset_variables_json,omitempty"`
}

OSTemplateOSAssetData holds asset-template information

type OperatingSystem

type OperatingSystem struct {
	OperatingSystemType         string `json:"operating_system_type,omitempty" yaml:"type,omitempty"`
	OperatingSystemVersion      string `json:"operating_system_version,omitempty" yaml:"version,omitempty"`
	OperatingSystemArchitecture string `json:"operating_system_architecture,omitempty" yaml:"architecture,omitempty"`
}

OperatingSystem describes an OS

type Option82ToIPMapping

type Option82ToIPMapping map[string]string

func (*Option82ToIPMapping) UnmarshalJSON

func (m *Option82ToIPMapping) UnmarshalJSON(data []byte) error

type RDP

type RDP struct {
	Port            int    `json:"port,omitempty"`
	Username        string `json:"username,omitempty"`
	InitialPassword string `json:"initial_password,omitempty"`
}

RDP credentials for the installed OS.

type RemoteConsole

type RemoteConsole struct {
	RemoteProtocol        string `json:"remote_protocol,omitempty"`
	TunnelPathURL         string `json:"tunnel_path_url,omitempty"`
	RemoteControlPanelURL string `json:"remote_control_panel_url,omitempty"`
}

RemoteConsole provides credentials needed to connect to the server via the HTML interface

type SCPResourceLocation

type SCPResourceLocation struct {
	Path      string           `json:"path,omitempty"`
	SSHTarget SSHClientOptions `json:"ssh_target,omitempty"`
}

SCPResourceLocation defines a file path and SSH client connection options for use with Secure Copy Protocol (SCP).

type SSH

type SSH struct {
	Port            int    `json:"port,omitempty"`
	Username        string `json:"username,omitempty"`
	InitialPassword string `json:"initial_password,omitempty"`
}

SSH credentials for the installed OS.

type SSHAlgorithms

type SSHAlgorithms struct {
	Kex           []string `json:"kex,omitempty"`
	Cipher        []string `json:"cipher,omitempty"`
	ServerHostKey []string `json:"serverHostKey,omitempty"`
	HMAC          []string `json:"hmac,omitempty"`
	Compress      []string `json:"compress,omitempty"`
}

SSHAlgorithms defines algorithms that can be used during an ssh session

type SSHClientOptions

type SSHClientOptions struct {
	Host         string        `json:"host,omitempty"`
	Port         int           `json:"port,omitempty"`
	ForceIPv4    bool          `json:"forceIPv4,omitempty"`
	ForceIPv6    bool          `json:"forceIPv6,omitempty"`
	HostHash     string        `json:"hostHash,omitempty"`
	HashedKey    string        `json:"hashedKey,omitempty"`
	Username     string        `json:"username,omitempty"`
	Password     string        `json:"password,omitempty"`
	PrivateKey   string        `json:"privateKey,omitempty"`
	Passphrase   string        `json:"passphrase,omitempty"`
	ReadyTimeout int           `json:"readyTimeout,omitempty"`
	StrictVendor bool          `json:"strictVendor,omitempty"`
	Algorithms   SSHAlgorithms `json:"algorithms,omitempty"`
	Compress     interface{}   `json:"compress,omitempty"`
}

SSHClientOptions defines an ssh cnnection such as the host, port, user, password, private keys, etc. All properties support template-like variables; for example, ${{instance_credentials_password}} may be used as value for the password property.

type SSHExec

type SSHExec struct {
	Command   string           `json:"command,omitempty"`
	SSHTarget SSHClientOptions `json:"ssh_target,omitempty"`
	Timeout   int              `json:"timeout,omitempty"`
	Type      string           `json:"type,omitempty"`
}

SSHExec executes a command on a remote server using the SSH exec functionality (not through a shell).

type SSHKey

type SSHKey struct {
	UserSSHKeyID               int    `json:"user_ssh_key_id,omitempty"`
	UserID                     int    `json:"user_id,omitempty"`
	UserSSHKey                 string `json:"user_ssh_key,omitempty"`
	UserSSHKeyCreatedTimeStamp string `json:"user_ssh_key_created_timestamp,omitempty"`
	UserSSHKeyStatus           string `json:"user_ssh_key_status,omitempty"`
}

SSHKey represents an SSH keys added by a user

type SearchResultForServerComponents

type SearchResultForServerComponents struct {
	DurationMilliseconds int               `json:"duration_millisecnds,omitempty"`
	Rows                 []ServerComponent `json:"rows,omitempty"`
	RowsOrder            [][]string        `json:"rows_order,omitempty"`
	RowsTotal            int               `json:"rows_total,omitempty"`
}

SearchResultForServerComponents describes a search result

type SearchResultForServers

type SearchResultForServers struct {
	DurationMilliseconds int                  `json:"duration_millisecnds,omitempty"`
	Rows                 []ServerSearchResult `json:"rows,omitempty"`
	RowsOrder            [][]string           `json:"rows_order,omitempty"`
	RowsTotal            int                  `json:"rows_total,omitempty"`
}

SearchResultForServers describes a serach result

type Secret

type Secret struct {
	SecretID               int    `json:"secret_id,omitempty" yaml:"id,omitempty"`
	UserIDOwner            int    `json:"user_id_owner,omitempty" yaml:"ownerID,omitempty"`
	UserIDAuthenticated    int    `json:"user_id_authenticated,omitempty" yaml:"userIDAuthenticated,omitempty"`
	SecretName             string `json:"secret_name,omitempty" yaml:"name,omitempty"`
	SecretUsage            string `json:"secret_usage,omitempty" yaml:"usage,omitempty"`
	SecretBase64           string `json:"secret_base64,omitempty" yaml:"base64,omitempty"`
	SecretCreatedTimestamp string `json:"secret_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	SecretUpdatedTimestamp string `json:"secret_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
}

Secret struct defines a server type

func (Secret) CreateOrUpdate

func (s Secret) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (Secret) Delete

func (s Secret) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (Secret) Validate

func (s Secret) Validate() error

Validate implements interface Applier

type Server

type Server struct {
	ServerID                                   int                         `json:"server_id,omitempty" yaml:"id,omitempty"`
	ServerUUID                                 string                      `json:"server_uuid,omitempty" yaml:"UUID,omitempty"`
	ServerStatus                               string                      `json:"server_status,omitempty" yaml:"status,omitempty"`
	ServerSerialNumber                         string                      `json:"server_serial_number,omitempty" yaml:"serialNumber,omitempty"`
	ServerVendor                               string                      `json:"server_vendor,omitempty" yaml:"vendor,omitempty"`
	DatacenterName                             string                      `json:"datacenter_name,omitempty" yaml:"datacenter,omitempty"`
	ServerNetworkTotalCapacityMbps             int                         `json:"server_network_total_capacity_mbps,omitempty" yaml:"networkTotalCapacityMbps,omitempty"`
	ServerBootType                             string                      `json:"server_boot_type,omitempty" yaml:"bootType,omitempty"`
	ServerPowerStatus                          string                      `json:"server_power_status,omitempty" yaml:"powerStatus,omitempty"`
	ServerProcessorName                        string                      `json:"server_processor_name,omitempty" yaml:"processorName,omitempty"`
	ServerProcessorCoreCount                   int                         `json:"server_processor_core_count,omitempty" yaml:"processorCoreCount,omitempty"`
	ServerProcessorCoreMhz                     int                         `json:"server_processor_core_mhz,omitempty" yaml:"processorCoreMhz,omitempty"`
	ServerProcessorCount                       int                         `json:"server_processor_count,omitempty" yaml:"processorCount,omitempty"`
	ServerProcessorThreads                     int                         `json:"server_processor_threads,omitempty" yaml:"processorThreads,omitempty"`
	ServerProcessorCPUMark                     int                         `json:"server_processor_cpu_mark" yaml:"processorCPUMark"`
	ServerRAMGbytes                            int                         `json:"server_ram_gbytes,omitempty" yaml:"ramGbytes,omitempty"`
	ServerDisks                                []ServerDisk                `json:"server_disks" yaml:"disks,omitempty"`
	ServerDiskCount                            int                         `json:"server_disk_count" yaml:"diskCount,omitempty"`
	ServerDiskSizeMbytes                       int                         `json:"server_disk_size_mbytes" yaml:"diskSizeMbytes"`
	ServerDiskType                             string                      `json:"server_disk_type,omitempty" yaml:"diskType,omitempty"`
	ServerRackName                             *string                     `json:"server_rack_name" yaml:"rackName"`
	ServerRackPositionLowerUnit                *string                     `json:"server_rack_position_lower_unit" yaml:"rackPositionLowerUnit"`
	ServerRackPositionUpperUnit                *string                     `json:"server_rack_position_upper_unit" yaml:"rackPositionUpperUnit"`
	ServerRackId                               *string                     `json:"server_rack_id" yaml:"rackID"`
	ChassisRackId                              *int                        `json:"chassis_rack_id" yaml:"chassisRackID"`
	ServerInventoryId                          *string                     `json:"server_inventory_id" yaml:"inventoryId"`
	ServerProductName                          string                      `json:"server_product_name,omitempty" yaml:"productName,omitempty"`
	ServerClass                                string                      `json:"server_class,omitempty" yaml:"serverClass,omitempty"`
	ServerTypeID                               int                         `json:"server_type_id,omitempty" yaml:"serverTypeID,omitempty"`
	ServerInterfaces                           []ServerInterface           `json:"server_interfaces,omitempty" yaml:"interfaces,omitempty"`
	ServerSupportsOOBProvisioning              bool                        `json:"server_supports_oob_provisioning" yaml:"supportsOOBProvisioning"`
	ServerTags                                 []string                    `json:"server_tags" yaml:"tags"`
	ServerIPMIChannel                          int                         `json:"server_ipmi_channel" yaml:"IPMIChannel"`
	ServerIPMIHost                             string                      `json:"server_ipmi_host,omitempty" yaml:"IPMIHostname,omitempty"`
	ServerIPMInternalUsername                  string                      `json:"server_ipmi_internal_username,omitempty" yaml:"IPMIUsername,omitempty"`
	ServerIPMInternalPassword                  string                      `json:"server_ipmi_internal_password,omitempty" yaml:"IPMIPassword,omitempty"`
	ServerIPMInternalPasswordEncrypted         string                      `json:"server_ipmi_internal_password_encrypted,omitempty" yaml:"IPMIPasswordEncrypted,omitempty"`
	ServerIPMCredentialsNeedUpdate             bool                        `json:"server_ipmi_credentials_need_update" yaml:"IPMICredentialsNeedUpdate"`
	ServerVendorSKUID                          string                      `json:"server_vendor_sku_id,omitempty" yaml:"vendorSKU,omitempty"`
	ServerComments                             string                      `json:"server_comments" yaml:"comments,omitempty"`
	ServerBIOSInfoJSON                         string                      `json:"server_bios_info_json" yaml:"BIOSInfoJson"`
	ServerCustomJSON                           *string                     `json:"server_custom_json" yaml:"CustomJSON"`
	ServerInfoJSON                             *string                     `json:"server_info_json" yaml:"infoJSON"`
	ServerDetailXML                            string                      `json:"server_details_xml" yaml:"serverDetailsXML"`
	ServerInstanceCustomJSON                   *string                     `json:"server_instance_custom_json" yaml:"instanceCustomJSON"`
	ServerSupportsSOL                          bool                        `json:"server_supports_sol" yaml:"supportsSOL"`
	ServerILOResetTimestamp                    string                      `json:"server_ilo_reset_timestamp" yaml:"ILOResetTimestamp"`
	ServerBootLastUpdateTimestamp              string                      `json:"server_boot_last_update_timestamp" yaml:"BootLastUpdateTimestamp"`
	ServerPowerStatusUpdateTimestamp           string                      `json:"server_power_status_last_update_timestamp" yaml:"PowerStatusUpdateTimestamp"`
	SubnetOOBID                                int                         `json:"subnet_oob_id" yaml:"subnetOOBID"`
	ServerDHCPStatus                           string                      `json:"server_dhcp_status" yaml:"subnetDHCPStatus"`
	ServerBMCMACAddress                        string                      `json:"server_bmc_mac_address" yaml:"BMCMACAddress"`
	ServerCommunityPasswordDCEncrypted         string                      `json:"snmp_community_password_dcencrypted" yaml:"SNMPCommunityPaswordDCencrypted"`
	ServerMgmtSNMPCommunityPasswordDCEncrypted string                      `json:"server_mgmt_snmp_community_password_dcencrypted" yaml:"MGMTNMPCommunityPasswordDCEncrypted"`
	ServerMgmtSNMPVersion                      int                         `json:"server_mgmt_snmp_version" yaml:"MGMTSNMPVersion"`
	ServerMgmtSNMPPort                         int                         `json:"server_mgmt_snmp_port" yaml:"MGMTSNMPPort"`
	ServerSecureBootIsEnabled                  bool                        `json:"server_secure_boot_is_enabled" yaml:"secureBootIsEnabled"`
	ServerOOBIndex                             int                         `json:"subnet_oob_index" yaml:"subnetOOBIndex"`
	ServerIPMIVersion                          string                      `json:"server_ipmi_version" yaml:"subnetIPMIVersion"`
	ServerCreatedTimestamp                     string                      `json:"server_created_timestamp" yaml:"createdTimestamp"`
	ServerLastCleanupStart                     string                      `json:"server_last_cleanup_start" yaml:"lastCleanupStart"`
	ServerVersionInfoJSON                      string                      `json:"server_vendor_info_json" yaml:"vendorInfoJSON"`
	ServerChipsetName                          string                      `json:"server_chipset_name" yaml:"chipsetName"`
	ServerRequiresReregister                   bool                        `json:"server_requires_reregister" yaml:"requiresReregiter"`
	ServerGPUCount                             int                         `json:"server_gpu_count" yaml:"GPUCount"`
	ServerGPUModel                             string                      `json:"server_gpu_model" yaml:"GPUModel"`
	ServerGPUVendor                            string                      `json:"server_gpu_vendor" yaml:"GPUVendor"`
	ServerAllocationTimestamp                  string                      `json:"server_allocation_timestamp" yaml:"allocationTimestamp"`
	ServerDHCPRelaySecurityIsEnabled           bool                        `json:"server_dhcp_relay_security_is_enabled" yaml:"DHCPRelaySecurityIsEnabled"`
	ServerRequiresManualCleaning               bool                        `json:"server_requires_manual_cleaning" yaml:"requiresManualCleaning"`
	ServerCleanupInProgress                    bool                        `json:"server_cleanup_in_progress" yaml:"cleanupInProgress"`
	ServerSupportsVirtualMedia                 bool                        `json:"server_supports_virtual_media" yaml:"serverSupportsVirtualMedia"`
	ServerIsInDiagnostics                      bool                        `json:"server_is_in_diagnostics" yaml:"serverIsInDiagnostics"`
	ServerDiskWipe                             bool                        `json:"server_disk_wipe" yaml:"diskWipe"`
	ServerMetricsMetadataJSON                  *string                     `json:"server_metrics_metadata_json" yaml:"metricsMetadataJSON"`
	AgentID                                    int                         `json:"agent_id" yaml:"agentID"`
	ServerDHCPPacketSniffingIsEnabled          bool                        `json:"server_dhcp_packet_sniffing_is_enabled" yaml:"DHCPPacketSniffingIsEnabled"`
	ServerBDKDEbug                             bool                        `json:"server_bdk_debug" yaml:"BDKDebug"`
	ServerKeysJSON                             string                      `json:"server_keys_json" yaml:"keysJSON"`
	NICDetails                                 map[string]ServerNICDetails `json:"nic_details,omitempty" yaml:"NICDetails,omitempty"`
	ServerSubmodel                             string                      `json:"server_submodel,omitempty" yaml:"submodel,omitempty"`
}

Server represents a server in a datacenter.

func (Server) CreateOrUpdate

func (s Server) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (Server) Delete

func (s Server) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (Server) Validate

func (s Server) Validate() error

Validate implements interface Applier

type ServerComponent

type ServerComponent struct {
	ServerComponentID                              int      `json:"server_component_id,omitempty" yaml:"id,omitempty"`
	ServerID                                       int      `json:"server_id,omitempty" yaml:"serverID,omitempty"`
	ServerComponentName                            string   `json:"server_component_name,omitempty" yaml:"componentName,omitempty"`
	ServerComponentFirmwareVersion                 string   `json:"server_component_firmware_version,omitempty" yaml:"firmwareVersion,omitempty"`
	ServerComponentFirmwareUpdateable              bool     `json:"server_component_firmware_updateable,omitempty" yaml:"firmwareUpdateable,omitempty"`
	ServerComponentFirmwareJSON                    string   `json:"server_component_firmware_json,omitempty" yaml:"firmwareJSON,omitempty"`
	ServerComponentFirmwareUpdateAvailableVersions []string `json:"server_component_firmware_update_available_versions,omitempty" yaml:"firmwareUpdateAvailableVersions,omitempty"`
	ServerComponentFirmwareStatus                  string   `json:"server_component_firmware_status,omitempty" yaml:"firmwareStatus,omitempty"`
	ServerComponentType                            string   `json:"server_component_type,omitempty" yaml:"type,omitempty"`
	ServerComponentFirmwareUpdateTimestamp         string   `json:"server_component_firmware_update_timestamp,omitempty" yaml:"firmwareUpdateTimestamp,omitempty"`
	ServerComponentFirmwareTargetVersion           string   `json:"server_component_firmware_target_version,omitempty" yaml:"firmwareTargetVersion,omitempty"`
	ServerComponentFirmwareScheduledTimestamp      string   `json:"server_component_firmware_scheduled_timestamp,omitempty" yaml:"firmwareScheduledTimestamp,omitempty"`
}

ServerComponent information about a server's components

type ServerCreateAndRegister

type ServerCreateAndRegister struct {
	DatacenterName           string `json:"datacenter_name" yaml:"datacenter"`
	ServerVendor             string `json:"server_vendor" yaml:"vendor"`
	ServerManagementAddress  string `json:"server_ipmi_host" yaml:"address"`
	ServerManagementUser     string `json:"server_ipmi_user" yaml:"user"`
	ServerManagementPassword string `json:"server_ipmi_password" yaml:"pass"`
}

type ServerCreateUnmanaged

type ServerCreateUnmanaged struct {
	DatacenterName           string                  `json:"datacenter_name" yaml:"datacenter"`
	ServerSerialNumber       string                  `json:"server_serial_number,omitempty" yaml:"serialNumber,omitempty"`
	ServerManagementAddress  string                  `json:"server_ipmi_host,omitempty" yaml:"address,omitempty"`
	ServerManagementUser     string                  `json:"server_ipmi_user,omitempty" yaml:"user,omitempty"`
	ServerManagementPassword string                  `json:"server_ipmi_password,omitempty" yaml:"pass,omitempty"`
	ServerInterfaces         []ServerInterfaceCreate `json:"server_interfaces,omitempty" yaml:"interfaces,omitempty"`
	ServerTypeID             int                     `json:"server_type_id,omitempty" yaml:"serverTypeID,omitempty"`
}

type ServerDefaultCredentials

type ServerDefaultCredentials struct {
	ServerDefaultCredentialsID       int    `json:"server_default_credentials_id,omitempty" yaml:"id,omitempty"`
	DatacenterName                   string `json:"datacenter_name,omitempty" yaml:"datacenter,omitempty"`
	ServerSerialNumber               string `json:"server_serial_number,omitempty" yaml:"serialNumber,omitempty"`
	ServerBMCMACAddress              string `json:"server_bmc_mac_address" yaml:"BMCMACAddress"`
	ServerDefaultCredentialsUsername string `json:"server_default_credentials_username" yaml:"username"`
	ServerDefaultCredentialsPassword string `json:"server_default_credentials_password" yaml:"password"`
}

type ServerDisk

type ServerDisk struct {
	ServerDiskID     int    `json:"server_disk_id,omitempty" yaml:"id,omitempty"`
	ServerDiskModel  string `json:"server_disk_model,omitempty" yaml:"model,omitempty"`
	ServerDiskType   string `json:"server_disk_type,omitempty" yaml:"type,omitempty"`
	ServerDiskVendor string `json:"server_disk_vendor,omitempty" yaml:"vendor,omitempty"`
	ServerDiskStatus string `json:"server_disk_status,omitempty" yaml:"status,omitempty"`
	ServerDiskSerial string `json:"server_disk_serial,omitempty" yaml:"serial_number,omitempty"`
	ServerDiskSizeGB int    `json:"server_disk_size_gb,omitempty" yaml:"sizeGB,omitempty"`
}

ServerDisk describes a disk

type ServerEditInventory

type ServerEditInventory struct {
	ServerInventoryId *string `json:"server_inventory_id" yaml:"inventoryId"`
}

type ServerEditRack

type ServerEditRack struct {
	ServerRackName              *string `json:"server_rack_name" yaml:"rackName"`
	ServerRackPositionLowerUnit *string `json:"server_rack_position_lower_unit" yaml:"rackPositionLowerUnit"`
	ServerRackPositionUpperUnit *string `json:"server_rack_position_upper_unit" yaml:"rackPositionUpperUnit"`
}

type ServerFirmwareUpgradePolicy

type ServerFirmwareUpgradePolicy struct {
	ServerFirmwareUpgradePolicyID     int                               `json:"server_firmware_upgrade_policy_id,omitempty" yaml:"id,omitempty"`
	ServerFirmwareUpgradePolicyLabel  string                            `json:"server_firmware_upgrade_policy_label,omitempty" yaml:"label,omitempty"`
	ServerFirmwareUpgradePolicyRules  []ServerFirmwareUpgradePolicyRule `json:"server_firmware_upgrade_policy_rules,omitempty" yaml:"rules,omitempty"`
	ServerFirmwareUpgradePolicyAction string                            `json:"server_firmware_upgrade_policy_action,omitempty" yaml:"action,omitempty"`
	InstanceArrayIDList               []int                             `json:"instance_array_ids,omitempty" yaml:"instanceArrayList,omitempty"`
}

ServerFirmwareUpgradePolicy represents a server firmware policy.

type ServerFirmwareUpgradePolicyRule

type ServerFirmwareUpgradePolicyRule struct {
	Operation string `json:"operation,omitempty" yaml:"operation,omitempty"`
	Property  string `json:"property,omitempty" yaml:"property,omitempty"`
	Value     string `json:"value,omitempty" yaml:"value,omitempty"`
}

ServerFirmwareUpgradePolicyRule describes a policy rule.

type ServerInterface

type ServerInterface struct {
	ServerInterfaceMACAddress string `json:"server_interface_mac_address,omitempty" yaml:"macAddress,omitempty"`
}

ServerInterface contains server connectivity information.

type ServerInterfaceCreate

type ServerInterfaceCreate struct {
	NetworkEquipmentIdentifierString          string `json:"network_equipment_identifier_string,omitempty" yaml:"switch,omitempty"`
	ServerInterfaceMACAddress                 string `json:"server_interface_mac_address,omitempty" yaml:"mac,omitempty"`
	NetworkEquipmentInterfaceIdentifierString string `json:"network_equipment_interface_identifier_string,omitempty" yaml:"switchInterface,omitempty"`
}

type ServerNICDetails

type ServerNICDetails struct {
	NetworkEquipmentInterfaceLLDPInformation string `json:"network_equipment_interface_lldp_information,omitempty" yaml:"networkEquipmentInterfaceLLDPInformation,omitempty"`
	NetworkEquipmentInterfaceMACAddress      string `json:"network_equipment_interface_mac_address,omitempty" yaml:"networkEquipmentInterfaceMACAddress,omitempty"`
	SwitchPortID                             string `json:"switch_port_id,omitempty" yaml:"switchPortID,omitempty"`
	SwitchPortDescription                    string `json:"switch_port_description,omitempty" yaml:"switchPortDescription,omitempty"`
	SwitchHostname                           string `json:"switch_hostname,omitempty" yaml:"switchHostname,omitempty"`
	NetworkEquipmentDescription              string `json:"network_equipment_description,omitempty" yaml:"networkEquipmentDescription,omitempty"`
	SwitchVLANID                             string `json:"switch_vlan_id,omitempty" yaml:"switchVLANID,omitempty"`
	SwitchInterfaceIndex                     int    `json:"server_interface_index,omitempty" yaml:"switchInterfaceIndex,omitempty"`
	ServerInterfaceMACAddress                string `json:"server_interface_mac_address,omitempty" yaml:"serverInterfaceMACAddress,omitempty"`
	ServerInterfaceCapacityMBPs              int    `json:"server_interface_capacity_mbps,omitempty" yaml:"serverInterfaceCapacityMBPs,omitempty"`
}

type ServerSearchResult

type ServerSearchResult struct {
	ServerID                       int               `json:"server_id,omitempty" yaml:"id,omitempty"`
	ServerUUID                     string            `json:"server_uuid,omitempty" yaml:"uuid,omitempty"`
	ServerStatus                   string            `json:"server_status,omitempty" yaml:"status,omitempty"`
	ServerSerialNumber             string            `json:"server_serial_number,omitempty" yaml:"serial_number,omitempty"`
	ServerVendor                   string            `json:"server_vendor,omitempty" yaml:"vendor,omitempty"`
	ServerNetworkTotalCapacityMbps int               `json:"server_network_total_capacity_mbps,omitempty" yaml:"networkTotalCapacityMbps,omitempty"`
	ServerBootType                 string            `json:"server_boot_type,omitempty" yaml:"bootType,omitempty"`
	ServerPowerStatus              string            `json:"server_power_status,omitempty" yaml:"powerStatus,omitempty"`
	ServerProcessorName            string            `json:"server_processor_name,omitempty" yaml:"processorName,omitempty"`
	ServerProcessorCoreCount       int               `json:"server_processor_core_count,omitempty" yaml:"processorCoreCount,omitempty"`
	ServerProcessorCoreMhz         int               `json:"server_processor_core_mhz,omitempty" yaml:"processorCoreMhz,omitempty"`
	ServerProcessorCount           int               `json:"server_processor_count,omitempty" yaml:"processorCount,omitempty"`
	ServerProcessorThreads         int               `json:"server_processor_threads,omitempty" yaml:"processorThreads,omitempty"`
	ServerProcessorCPUMark         int               `json:"server_processor_cpu_mark" yaml:"processorCPUMark"`
	ServerRAMGbytes                int               `json:"server_ram_gbytes,omitempty" yaml:"ramGbytes,omitempty"`
	ServerDiskCount                int               `json:"server_disk_count,omitempty" yaml:"diskCount,omitempty"`
	ServerDiskSizeMbytes           int               `json:"server_disk_size_mbytes" yaml:"diskSizeMbytes,omitempty"`
	ServerDiskType                 string            `json:"server_disk_type,omitempty" yaml:"diskType,omitempty"`
	ServerProductName              string            `json:"server_product_name,omitempty" yaml:"productName,omitempty"`
	ServerClass                    string            `json:"server_class,omitempty" yaml:"class,omitempty"`
	ServerTypeID                   int               `json:"server_type_id,omitempty" yaml:"typeID,omitempty"`
	ServerTypeName                 string            `json:"server_type_name,omitempty" yaml:"type,omitempty"`
	ServerTypeBootType             string            `json:"server_type_boot_type,omitempty" yaml:"serverBootType,omitempty"`
	ServerInterfaces               []ServerInterface `json:"server_interfaces,omitempty" yaml:"interfaces,omitempty"`
	ServerRackName                 string            `json:"server_rack_name" yaml:"rackName"`
	ServerRackPositionLowerUnit    string            `json:"server_rack_position_lower_unit,omitempty" yaml:"rackPositionLowerUnit,omitempty"`
	ServerRackPositionUpperUnit    string            `json:"server_rack_position_upper_unit,omitempty" yaml:"rackPositionUpperUnit,omitempty"`
	ServerInventoryId              string            `json:"server_inventory_id,omitempty" yaml:"inventoryId,omitempty"`
	ServerDisks                    []ServerDisk      `json:"server_disks,omitempty" yaml:"disks,omitempty"`
	ServerSupportsOOBProvisioning  bool              `json:"server_supports_oob_provisioning" yaml:"supportsOOBProvisioning"`
	ServerTags                     []string          `json:"server_tags,omitempty" yaml:"tags,omitempty"`
	ServerIPMIChannel              int               `json:"server_ipmi_channel,omitempty" yaml:"IPMIChannel,omitempty"`
	ServerIPMIHost                 string            `json:"server_ipmi_host,omitempty" yaml:"IPMIHostname,omitempty"`
	ServerIPMInternalUsername      string            `json:"server_ipmi_internal_username,omitempty" yaml:"IPMIUsername,omitempty"`
	ServerIPMInternalPassword      string            `json:"server_ipmi_internal_password,omitempty" yaml:"IPMIPassword,omitempty"`
	ServerIPMCredentialsNeedUpdate bool              `json:"server_ipmi_credentials_need_update,omitempty" yaml:"IPMICredentialsNeedUpdate,omitempty"`
	ServerVendorSKUID              string            `json:"server_vendor_sku_id,omitempty" yaml:"vendorSKUID,omitempty"`
	ServerComments                 string            `json:"server_comments,omitempty" yaml:"comments,omitempty"`
	InstanceLabel                  []string          `json:"instance_label,omitempty" yaml:"instanceLabel,omitempty"`
	InstanceID                     []int             `json:"instance_id,omitempty" yaml:"instanceID,omitempty"`
	InstanceArrayID                []int             `json:"instance_array_id,omitempty" yaml:"instanceArrayID,omitempty"`
	InfrastructureID               []int             `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	UserEmail                      [][]string        `json:"user_email,omitempty" yaml:"userEmail,omitempty"`
	UserID                         [][]int           `json:"user_id,omitempty" yaml:"users,omitempty"`
	DatacenterName                 string            `json:"datacenter_name,omitempty" yaml:"datacenter,omitempty"`
	ServerSubmodel                 string            `json:"server_submodel,omitempty" yaml:"submodel,omitempty"`
}

ServerSearchResult represents a server in a datacenter.

type ServerType

type ServerType struct {
	ServerTypeID                      int    `json:"server_type_id,omitempty"`
	ServerNetworkTotalCapacityMBps    int    `json:"server_network_total_capacity_mbps,omitempty"`
	ServerTypeName                    string `json:"server_type_name,omitempty"`
	ServerTypeDisplayName             string `json:"server_type_display_name,omitempty"`
	ServerTypeLabel                   string `json:"server_type_label,omitempty"`
	ServerProcessorCoreCount          int    `json:"server_processor_core_count,omitempty"`
	ServerProcessorCoreMHz            int    `json:"server_processor_core_mhz,omitempty"`
	ServerProcessorCount              int    `json:"server_processor_count,omitempty"`
	ServerRAMGbytes                   int    `json:"server_ram_gbytes,omitempty"`
	ServerDiskCount                   int    `json:"server_disk_count,omitempty"`
	ServerDiskType                    string `json:"server_disk_type,omitempty"`
	ServerDiskSizeMBytes              int    `json:"server_disk_size_mbytes,omitempty"`
	ServerProcessorNamesJSON          string `json:"server_processor_names_json,omitempty"`
	ServerProcessorName               string `json:"server_processor_name,omitempty"`
	ServerClass                       string `json:"server_class,omitempty"`
	ServerTypeSupportsOOBProvisioning bool   `json:"server_type_supports_oob_provisioning,omitempty"`
	ServerTypeIsExperimental          bool   `json:"server_type_is_experimental,omitempty"`
	ServerCount                       int    `json:"server_count,omitempty"`
	ServerTypeAllowedVendorSkuIdsJSON string `json:"server_type_allowed_vendor_sku_ids_json,omitempty"`
}

ServerType struct defines a server type

type ServerTypeMatch

type ServerTypeMatch struct {
	ServerCount int `json:"server_count,omitempty"`
}

ServerTypeMatch what exact server types to use

type ServerTypeMatches

type ServerTypeMatches struct {
	ServerTypes map[int]ServerTypeMatch `json:"server_types,omitempty"`
}

ServerTypeMatches used in InstanceArrayEdit operations to specify which server types to use

type SharedDrive

type SharedDrive struct {
	SharedDriveLabel                  string                 `json:"shared_drive_label,omitempty" yaml:"label,omitempty"`
	SharedDriveSubdomain              string                 `json:"shared_drive_subdomain,omitempty" yaml:"subdomain,omitempty"`
	SharedDriveID                     int                    `json:"shared_drive_id,omitempty" yaml:"id,omitempty"`
	SharedDriveStorageType            string                 `json:"shared_drive_storage_type,omitempty" yaml:"storageType,omitempty"`
	SharedDriveHasGFS                 bool                   `json:"shared_drive_has_gfs,omitempty" yaml:"hasGFS,omitempty"`
	InfrastructureID                  int                    `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	SharedDriveServiceStatus          string                 `json:"shared_drive_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	SharedDriveCreatedTimestamp       string                 `json:"shared_drive_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	SharedDriveUpdatedTimestamp       string                 `json:"shared_drive_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	SharedDriveSizeMbytes             int                    `json:"shared_drive_size_mbytes,omitempty" yaml:"sizeMBytes,omitempty"`
	SharedDriveAttachedInstanceArrays []int                  `json:"shared_drive_attached_instance_arrays,omitempty" yaml:"attachedInstaceArrays,omitempty"`
	SharedDriveOperation              SharedDriveOperation   `json:"shared_drive_operation,omitempty" yaml:"operation,omitempty"`
	SharedDriveCredentials            SharedDriveCredentials `json:"shared_drive_credentials,omitempty" yaml:"credentials,omitempty"`
	SharedDriveChangeID               int                    `json:"shared_drive_change_id,omitempty" yaml:"changeID,omitempty"`
	SharedDriveTargetsJSON            string                 `json:"shared_drive_targets_json,omitempty" yaml:"targetsJSON,omitempty"`
	SharedDriveIOLimitPolicy          string                 `json:"shared_drive_io_limit_policy,omitempty" yaml:"ioLimit,omitempty"`
	SharedDriveWWN                    string                 `json:"shared_drive_wwn,omitempty" yaml:"wwn,omitempty"`
	StoragePoolID                     int                    `json:"storage_pool_id,omitempty" yaml:"storagePoolID,omitempty"`
	SharedDriveAllocationAffinity     string                 `json:"shared_drive_allocation_affinity,omitempty" yaml:"affinity,omitempty"`
}

SharedDrive represents a drive that can be shared between instances

func (SharedDrive) CreateOrUpdate

func (sd SharedDrive) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (SharedDrive) Delete

func (sd SharedDrive) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (SharedDrive) Validate

func (sd SharedDrive) Validate() error

Validate implements interface Applier

type SharedDriveCredentials

type SharedDriveCredentials struct {
	ISCSI ISCSI `json:"iscsi,omitempty" yaml:"iscsi,omitempty"`
}

SharedDriveCredentials iscsi or other forms of connection details

type SharedDriveOperation

type SharedDriveOperation struct {
	SharedDriveDeployStatus           string `json:"shared_drive_deploy_status,omitempty" yaml:"deployStatus,omitempty"`
	SharedDriveDeployType             string `json:"shared_drive_deploy_type,omitempty" yaml:"deployType,omitempty"`
	SharedDriveLabel                  string `json:"shared_drive_label,omitempty" yaml:"label,omitempty"`
	SharedDriveSubdomain              string `json:"shared_drive_subdomain,omitempty" yaml:"subdomain,omitempty"`
	SharedDriveID                     int    `json:"shared_drive_id,omitempty" yaml:"id,omitempty"`
	SharedDriveSizeMbytes             int    `json:"shared_drive_size_mbytes,omitempty" yaml:"sizeMBytes,omitempty"`
	SharedDriveStorageType            string `json:"shared_drive_storage_type,omitempty" yaml:"storageType,omitempty"`
	SharedDriveHasGFS                 bool   `json:"shared_drive_has_gfs" yaml:"hasGFS"`
	InfrastructureID                  int    `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	SharedDriveServiceStatus          string `json:"shared_drive_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	SharedDriveAttachedInstanceArrays []int  `json:"shared_drive_attached_instance_arrays,omitempty" yaml:"attachedInstanceArrays,omitempty"`
	SharedDriveChangeID               int    `json:"shared_drive_change_id,omitempty" yaml:"changeID,omitempty"`
	SharedDriveIOLimitPolicy          string `json:"shared_drive_io_limit_policy,omitempty" yaml:"ioLimit,omitempty"`
}

SharedDriveOperation represents an ongoing or new operation on a shared drive

type ShutdownOptions

type ShutdownOptions struct {
	HardShutdownAfterTimeout   bool `json:"hard_shutdown_after_timeout"`
	AttemptSoftShutdown        bool `json:"attempt_soft_shutdown"`
	SoftShutdownTimeoutSeconds int  `json:"soft_shutdown_timeout_seconds"`
}

ShutdownOptions controls how the deploy engine handles running instances

type Snapshot

type Snapshot struct {
	DriveSnapshotID               int    `json:"drive_snapshot_id,omitempty"`
	DriveSnapshotLabel            string `json:"drive_snapshot_label,omitempty"`
	DriveID                       int    `json:"drive_id,omitempty"`
	DriveSnapshotCreatedTimestamp string `json:"drive_snapshot_created_timestamp,omitempty"`
}

Snapshot A snapshot of a drive created at a specific time.

type StageDefinition

type StageDefinition struct {
	StageDefinitionID                              int         `json:"stage_definition_id,omitempty" yaml:"id,omitempty"`
	UserIDOwner                                    int         `json:"user_id_owner,omitempty" yaml:"ownerID,omitempty"`
	UserIDAuthenticated                            int         `json:"user_id_authenticated,omitempty" yaml:"userIDAuthenticated,omitempty"`
	StageDefinitionLabel                           string      `json:"stage_definition_label,omitempty" yaml:"label,omitempty"`
	IconAssetDataURI                               string      `json:"icon_asset_data_uri,omitempty" yaml:"iconAssetDataURI,omitempty"`
	StageDefinitionTitle                           string      `json:"stage_definition_title,omitempty" yaml:"title,omitempty"`
	StageDefinitionDescription                     string      `json:"stage_definition_description,omitempty" yaml:"description,omitempty"`
	StageDefinitionType                            string      `json:"stage_definition_type,omitempty" yaml:"type,omitempty"`
	StageDefinitionVariablesNamesRequired          []string    `json:"stage_definition_variable_names_required,omitempty" yaml:"variableNames,omitempty"`
	StageDefinition                                interface{} `json:"stage_definition,omitempty" yaml:"stageDefinition,omitempty"`
	StageDefinitionCreatedTimestamp                string      `json:"stage_definition_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	StageDefinitionUpdatedTimestamp                string      `json:"stage_definition_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	StageDefinitionContext                         string      `json:"stage_definition_context,omitempty" yaml:"context,omitempty"`
	StageDefinitionAutomaticallyAddedToPreDeploys  int         `json:"stage_definition_automatically_added_to_pre_deploys,omitempty" yaml:"automaticallyAddedToPreDeploys,omitempty"`
	StageDefinitionAutomaticallyAddedToPostDeploys int         `json:"stage_definition_automatically_added_to_post_deploys,omitempty" yaml:"automaticallyAddedToPostDeploys,omitempty"`
}

StageDefinition contains a JavaScript file, HTTP request url and options, an AnsibleBundle or an API call template.

func (StageDefinition) CreateOrUpdate

func (s StageDefinition) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (StageDefinition) Delete

func (s StageDefinition) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (*StageDefinition) UnmarshalJSON

func (s *StageDefinition) UnmarshalJSON(b []byte) error

UnmarshalJSON custom json marshaling

func (StageDefinition) Validate

func (s StageDefinition) Validate() error

Validate implements interface Applier

type StoragePool

type StoragePool struct {
	StoragePoolID                              int      `json:"storage_pool_id,omitempty" yaml:"id,omitempty"`
	StoragePoolName                            string   `json:"storage_pool_name,omitempty" yaml:"name,omitempty"`
	StoragePoolStatus                          string   `json:"storage_pool_status,omitempty" yaml:"status,omitempty"`
	StoragePoolInMaintenance                   bool     `json:"storage_pool_in_maintenance" yaml:"maintenance"`
	StoragePoolIsExperimental                  bool     `json:"storage_pool_is_experimental" yaml:"experimental"`
	DatacenterName                             string   `json:"datacenter_name,omitempty" yaml:"datacenter,omitempty"`
	StorageType                                string   `json:"storage_type,omitempty" yaml:"type,omitempty"`
	UserID                                     int      `json:"user_id,omitempty" yaml:"user,omitempty"`
	StoragePoolISCSIHost                       string   `json:"storage_pool_iscsi_host,omitempty" yaml:"host,omitempty"`
	StoragePoolISCSIPort                       int      `json:"storage_pool_iscsi_port,omitempty" yaml:"port,omitempty"`
	StoragePoolCapacityTotalCachedRealMbytes   int      `json:"storage_pool_capacity_total_cached_real_mbytes,omitempty" yaml:"capacityTotalRealMbytes,omitempty"`
	StoragePoolCapacityUsableCachedRealMbytes  int      `json:"storage_pool_capacity_usable_cached_real_mbytes,omitempty" yaml:"capacityUsableRealMbytes,omitempty"`
	StoragePoolCapacityFreeCachedRealMbytes    int      `json:"storage_pool_capacity_free_cached_real_mbytes,omitempty" yaml:"capacityFreeRealMbytes,omitempty"`
	StoragePoolCapacityUsedCachedVirtualMbytes int      `json:"storage_pool_capacity_used_cached_virtual_mbytes,omitempty" yaml:"capacityUsedRealMbytes,omitempty"`
	StoragePoolCreatedTimestamp                string   `json:"storage_pool_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	StoragePoolUpdatedTimestamp                string   `json:"storage_pool_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	StoragePoolDrivePriority                   int      `json:"storage_pool_drive_priority,omitempty" yaml:"drivePriority,omitempty"`
	StoragePoolEndpoint                        string   `json:"storage_pool_endpoint,omitempty" yaml:"endpoint,omitempty"`
	StoragePoolOptionsJSON                     string   `json:"storage_pool_options_json,omitempty" yaml:"optionsJSON,omitempty"`
	StoragePoolUsername                        string   `json:"storage_pool_username,omitempty" yaml:"username,omitempty"`
	StoragePoolPassword                        string   `json:"storage_pool_password,omitempty" yaml:"password,omitempty"`
	StoragePoolPortGroupAllocationOrderJSON    string   `json:"storage_pool_port_group_allocation_order_json,omitempty" yaml:"portGroupAllocationOrderJSON,omitempty"`
	StoragePoolPortGroupPhysicalPortsJSON      string   `json:"storage_pool_port_group_physical_ports_json,omitempty" yaml:"portGroupPhysicalPortsJSON,omitempty"`
	StoragePoolSharedDrivePriority             int      `json:"storage_pool_shared_drive_priority,omitempty" yaml:"sharedDrivePriority,omitempty"`
	StoragePoolTags                            []string `json:"storage_pool_tags,omitempty" yaml:"tags,omitempty"`
	StoragePoolTargetIQN                       string   `json:"storage_pool_target_iqn,omitempty" yaml:"targetIQN,omitempty"`
}

StoragePool represents a storage appliance in a datacenter.

type StoragePoolSearchResult

type StoragePoolSearchResult struct {
	StoragePoolID                              int    `json:"storage_pool_id,omitempty" yaml:"id,omitempty"`
	StoragePoolName                            string `json:"storage_pool_name,omitempty" yaml:"name,omitempty"`
	StoragePoolStatus                          string `json:"storage_pool_status,omitempty" yaml:"status,omitempty"`
	StoragePoolInMaintenance                   bool   `json:"storage_pool_in_maintenance" yaml:"maintenance"`
	StoragePoolIsExperimental                  bool   `json:"storage_pool_is_experimental" yaml:"experimental"`
	DatacenterName                             string `json:"datacenter_name,omitempty" yaml:"datacenter,omitempty"`
	StorageType                                string `json:"storage_type,omitempty" yaml:"type,omitempty"`
	UserID                                     int    `json:"user_id,omitempty" yaml:"user,omitempty"`
	StoragePoolISCSIHost                       string `json:"storage_pool_iscsi_host,omitempty" yaml:"host,omitempty"`
	StoragePoolISCSIPort                       int    `json:"storage_pool_iscsi_port,omitempty" yaml:"port,omitempty"`
	StoragePoolEndpoint                        string `json:"storage_pool_endpoint,omitempty" yaml:"endpoint,omitempty"`
	StoragePoolCapacityTotalCachedRealMbytes   int    `json:"storage_pool_capacity_total_cached_real_mbytes,omitempty" yaml:"capacityTotalRealMbytes,omitempty"`
	StoragePoolCapacityUsableCachedRealMbytes  int    `json:"storage_pool_capacity_usable_cached_real_mbytes,omitempty" yaml:"capacityUsableRealMbytes,omitempty"`
	StoragePoolCapacityFreeCachedRealMbytes    int    `json:"storage_pool_capacity_free_cached_real_mbytes,omitempty" yaml:"capacityFreeRealMbytes,omitempty"`
	StoragePoolCapacityUsedCachedVirtualMbytes int    `json:"storage_pool_capacity_used_cached_virtual_mbytes,omitempty" yaml:"capacityUsedRealMbytes,omitempty"`
}

StoragePoolSearchResult represents a storage appliance in a datacenter.

type Subnet

type Subnet struct {
	SubnetID                                    int    `json:"subnet_id,omitempty" yaml:"id,omitempty"`
	SubnetType                                  string `json:"subnet_type,omitempty" yaml:"type,omitempty"`
	NetworkID                                   int    `json:"network_id,omitempty" yaml:"networkID,omitempty"`
	InfrastructureID                            int    `json:"infrastructure_id,omitempty" yaml:"infrastructureID,omitempty"`
	SubnetPoolID                                int    `json:"subnet_pool_id,omitempty" yaml:"subnetPoolID,omitempty"`
	ClusterID                                   int    `json:"cluster_id,omitempty" yaml:"clusterID,omitempty"`
	SubnetNetmaskHumanReadable                  string `json:"subnet_netmask_human_readable,omitempty" yaml:"netmask,omitempty"`
	SubnetGatewayHumanReadable                  string `json:"subnet_gateway_human_readable,omitempty" yaml:"gateway,omitempty"`
	SubnetPrefixSize                            int    `json:"subnet_prefix_size,omitempty" yaml:"prefixSize,omitempty"`
	SubnetChangeID                              int    `json:"subnet_change_id,omitempty" yaml:"changeID,omitempty"`
	SubnetServiceStatus                         string `json:"subnet_service_status,omitempty" yaml:"serviceStatus,omitempty"`
	SubnetDestination                           string `json:"subnet_destination,omitempty" yaml:"destination,omitempty"`
	SubnetAutomaticAllocation                   bool   `json:"subnet_automatic_allocation" yaml:"automaticAllocation,omitempty"`
	SubnetLabel                                 string `json:"subnet_label,omitempty" yaml:"label,omitempty"`
	DNSSubdomainPermanentID                     int    `json:"dns_subdomain_permanent_id,omitempty" yaml:"dnsSubdomainPermanentID,omitempty"`
	SubnetSubdomain                             string `json:"subnet_subdomain,omitempty" yaml:"subdomain,omitempty"`
	SubnetSubdomainPermanent                    string `json:"subnet_subdomain_permanent,omitempty" yaml:"subdomainPermanent,omitempty"`
	SubnetTrafficDownloadBytes                  int    `json:"subnet_traffic_download_bytes,omitempty" yaml:"trafficDownloadBytes,omitempty"`
	SubnetTrafficUploadBytes                    int    `json:"subnet_traffic_upload_bytes,omitempty" yaml:"trafficUploadBytes,omitempty"`
	SubnetTrafficDatacenterBytes                int    `json:"subnet_traffic_datacenter_bytes,omitempty" yaml:"trafficDatacenterBytes,omitempty"`
	SubnetDirtyBit                              bool   `json:"subnet_dirty_bit,omitempty" yaml:"dirtyBit,omitempty"`
	SubnetUpdatedTimestamp                      string `json:"subnet_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
	SubnetCreatedTimestamp                      string `json:"subnet_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	SubnetIsAPIPrivate                          bool   `json:"subnet_is_api_private,omitempty" yaml:"isAPIPrivate,omitempty"`
	SubnetTrafficDownloadBytesTemporary         int    `json:"subnet_traffic_download_bytes_temporary,omitempty" yaml:"trafficDownloadBytesTemporary,omitempty"`
	SubnetTrafficUploadBytesTemporary           int    `json:"subnet_traffic_upload_bytes_temporary,omitempty" yaml:"trafficUploadBytesTemporary,omitempty"`
	SubnetTrafficDatacenterBytesTemporary       int    `json:"subnet_traffic_datacenter_bytes_temporary,omitempty" yaml:"trafficDatacenterBytesTemporary,omitempty"`
	SubnetTrafficFetchedUntilTimestamp          string `json:"subnet_traffic_fetched_until_timestamp,omitempty" yaml:"trafficFetchedUntilTimestamp,omitempty"`
	SubnetTrafficFetchedUntilTimestampTemporary string `json:"subnet_traffic_fetched_until_timestamp_temporary,omitempty" yaml:"trafficFetchedUntilTimestampTemporary,omitempty"`
	SubnetFromSubnetPoolForcedOnly              bool   `json:"subnet_from_subnet_pool_forced_only,omitempty" yaml:"fromSubnetPoolForcedOnly,omitempty"`
	SubnetOverrideVLANID                        int    `json:"subnet_override_vlan_id,omitempty" yaml:"overrideVLANID,omitempty"`
	SubnetOverrideVLANAutoAllocationIndex       int    `json:"subnet_override_vlan_auto_allocation_index,omitempty" yaml:"overrideVLANAutoAllocationIndex,omitempty"`
	SubnetIsIPRange                             bool   `json:"subnet_is_ip_range,omitempty" yaml:"isIPRange,omitempty"`
	SubnetRangeStartHumanReadable               string `json:"subnet_range_start_human_readable,omitempty" yaml:"rangeStart,omitempty"`
}

Subnet represents a subnet

func (Subnet) CreateOrUpdate

func (s Subnet) CreateOrUpdate(client MetalCloudClient) error

func (Subnet) Delete

func (s Subnet) Delete(client MetalCloudClient) error

func (Subnet) Validate

func (s Subnet) Validate() error

type SubnetOOB added in v3.0.1

type SubnetOOB struct {
	SubnetOOBID                                int      `json:"subnet_oob_id,omitempty" yaml:"id,omitempty"`
	SubnetOOBLabel                             string   `json:"subnet_oob_label,omitempty" yaml:"label,omitempty"`
	SubnetOOBType                              string   `json:"subnet_oob_type,omitempty" yaml:"type,omitempty"`
	SubnetOOBAllocateForResourceType           string   `json:"subent_oob_allocate_for_resource_type,omitempty" yaml:"forResourceType,omitempty"`
	SubnetOOBBlackList                         []string `json:"subnet_oob_blacklist,omitempty" yaml:"blacklist,omitempty"`
	SubnetOOBGatewayHex                        string   `json:"subnet_oob_gateway_hex,omitempty" yaml:"gatewayHex,omitempty"`
	SubnetOOBGatewayHumanReadable              string   `json:"subnet_oob_gateway_human_readable,omitempty" yaml:"gateway,omitempty"`
	SubnetOOBNetmaskHex                        string   `json:"subnet_oob_netmask_hex,omitempty" yaml:"netmaskHex,omitempty"`
	SubnetOOBNetmaskHumanReadable              string   `json:"subnet_oob_netmask_human_readable,omitempty" yaml:"netmask,omitempty"`
	SubnetOOBPrefixSize                        int      `json:"subnet_oob_prefix_size,omitempty" yaml:"size,omitempty"`
	SubnetOOBRangeStartHex                     string   `json:"subnet_oob_range_start_hex,omitempty" yaml:"rangeStartHex,omitempty"`
	SubnetOOBRangeStartHumanReadable           string   `json:"subnet_oob_range_start_human_readable,omitempty" yaml:"rangeStart,omitempty"`
	SubnetOOBRangeStartHumanReadableCompressed string   `json:"subnet_oob_range_start_human_readable_compressed,omitempty" yaml:"rangeStartCompressed,omitempty"`
	SubnetOOBRangeEndHex                       string   `json:"subnet_oob_range_end_hex,omitempty" yaml:"rangeEndHex,omitempty"`
	SubnetOOBRangeEndHumanReadable             string   `json:"subnet_oob_range_end_human_readable,omitempty" yaml:"rangeEnd,omitempty"`
	SubnetOOBRangeEndHumanReadableCompressed   string   `json:"subnet_oob_range_end_human_readable_compressed,omitempty" yaml:"rangeEndCompressed,omitempty"`
	SubnetOOBUseForAutoAllocation              bool     `json:"subnet_oob_use_for_auto_allocation,omitempty" yaml:"useForAutoAllocation,omitempty"`
	DatacenterName                             string   `json:"datacenter_name,omitempty" yaml:"datacenter,omitempty"`
}

Subnet represents a subnet

func (SubnetOOB) CreateOrUpdate added in v3.0.1

func (s SubnetOOB) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (SubnetOOB) Delete added in v3.0.1

func (s SubnetOOB) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (SubnetOOB) Validate added in v3.0.1

func (s SubnetOOB) Validate() error

type SubnetPool

type SubnetPool struct {
	SubnetPoolID                                int    `json:"subnet_pool_id,omitempty" yaml:"id,omitempty"`
	DatacenterName                              string `json:"datacenter_name,omitempty" yaml:"datacenter,omitempty"`
	NetworkEquipmentID                          int    `json:"network_equipment_id,omitempty" yaml:"networkEquipmentID,omitempty"`
	UserID                                      int    `json:"user_id,omitempty" yaml:"user,omitempty"`
	SubnetPoolPrefixHumanReadable               string `json:"subnet_pool_prefix_human_readable,omitempty" yaml:"prefix,omitempty"`
	SubnetPoolLabel                             string `json:"subnet_pool_label,omitempty" yaml:"label,omitempty"`
	SubnetPoolPrefixHex                         string `json:"subnet_pool_prefix_hex,omitempty" yaml:"prefixHex,omitempty"`
	SubnetPoolNetmaskHumanReadable              string `json:"subnet_pool_netmask_human_readable,omitempty" yaml:"netmask,omitempty"`
	SubnetPoolNetmaskHex                        string `json:"subnet_pool_netmask_hex,omitempty" yaml:"netmaskHex,omitempty"`
	SubnetPoolPrefixSize                        int    `json:"subnet_pool_prefix_size,omitempty" yaml:"size,omitempty"`
	SubnetPoolType                              string `json:"subnet_pool_type,omitempty" yaml:"type,omitempty"`
	SubnetPoolRoutable                          bool   `json:"subnet_pool_routable" yaml:"routable"`
	SubnetPoolDestination                       string `json:"subnet_pool_destination,omitempty" yaml:"destination,omitempty"`
	SubnetPoolUtilizationCachedJSON             string `json:"subnet_pool_utilization_cached_json,omitempty" yaml:"currentUtilizationJSON,omitempty"`
	SubnetPoolUtilizationCachedUpdatedTimestamp string `json:"subnet_pool_cached_updated_timestamp,omitempty" yaml:"currentUtilizationLastUpdated,omitempty"`
	SubnetPoolIsOnlyForManualAllocation         bool   `json:"subnet_pool_is_only_for_manual_allocation" yaml:"manualAllocationOnly"`
}

SubnetPool represents a pool of subnets

func (SubnetPool) CreateOrUpdate

func (s SubnetPool) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (SubnetPool) Delete

func (s SubnetPool) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (SubnetPool) Validate

func (s SubnetPool) Validate() error

Validate implements interface Applier

type SubnetPoolUtilization

type SubnetPoolUtilization struct {
	PrefixCountFree                        map[string]int `json:"prefix_count_free,omitempty" yaml:"availableSubnets,omitempty"`
	PrefixCountAllocated                   map[string]int `json:"prefix_count_allocated,omitempty" yaml:"allocatedSubnets,omitempty"`
	IPAddressesUsableCountFree             string         `json:"ip_addresses_usable_count_free,omitempty" yaml:"availableUsableIps,omitempty"`
	IPAddressesUsableCountAllocated        string         `json:"ip_addresses_usable_count_allocated,omitempty" yaml:"allocatedUsableIps,omitempty"`
	IPAddressesUsableFreePercentOptimistic string         `json:"ip_addresses_usable_free_percent_optimistic,omitempty" yaml:"availablePercentage,omitempty"`
}

SubnetPoolUtilization describes the current utilization of the subnet

func (*SubnetPoolUtilization) UnmarshalJSON

func (s *SubnetPoolUtilization) UnmarshalJSON(data []byte) error

UnmarshalJSON to handle the shity [] to {} and 0 and "123123" cases

type SwitchDevice

type SwitchDevice struct {
	NetworkEquipmentID                             int      `json:"network_equipment_id,omitempty" yaml:"id,omitempty"`
	NetworkEquipmentIdentifierString               string   `json:"network_equipment_identifier_string,omitempty" yaml:"identifierString,omitempty"`
	DatacenterName                                 string   `json:"datacenter_name,omitempty" yaml:"datacenterName,omitempty"`
	NetworkEquipmentProvisionerType                string   `json:"network_equipment_provisioner_type,omitempty" yaml:"provisionerType,omitempty"`
	NetworkEquipmentProvisionerPosition            string   `json:"network_equipment_position,omitempty" yaml:"provisionerPosition,omitempty"`
	NetworkEquipmentDriver                         string   `json:"network_equipment_driver,omitempty" yaml:"driver,omitempty"`
	NetworkEquipmentManagementUsername             string   `json:"network_equipment_management_username,omitempty" yaml:"managementUsername,omitempty"`
	NetworkEquipmentManagementPassword             string   `json:"network_equipment_management_password,omitempty" yaml:"managementPassword,omitempty"`
	NetworkEquipmentManagementAddress              string   `json:"network_equipment_management_address,omitempty" yaml:"managementAddress,omitempty"`
	NetworkEquipmentManagementPort                 int      `json:"network_equipment_management_port,omitempty" yaml:"managementPort,omitempty"`
	NetworkEquipmentManagementProtocol             string   `json:"network_equipment_management_protocol,omitempty" yaml:"managementProtocol,omitempty"`
	NetworkEquipmentManagementAddressMask          string   `json:"network_equipment_management_address_mask,omitempty" yaml:"managementAddressMask,omitempty"`
	NetworkEquipmentManagementAddressGateway       string   `json:"network_equipment_management_address_gateway,omitempty" yaml:"managementAddressGateway,omitempty"`
	NetworkEquipmentManagementMACAddress           string   `json:"network_equipment_management_mac_address,omitempty" yaml:"managementMACAddress,omitempty"`
	NetworkEquipmentPrimaryWANIPv4SubnetPool       string   `json:"network_equipment_primary_wan_ipv4_subnet_pool,omitempty" yaml:"primaryWANIPv4SubnetPool,omitempty"`
	NetworkEquipmentPrimaryWANIPv4SubnetPrefixSize int      `json:"network_equipment_primary_wan_ipv4_subnet_prefix_size,omitempty" yaml:"primaryWANIPv4SubnetPrefixSize,omitempty"`
	NetworkEquipmentPrimaryWANIPv6SubnetPool       string   `json:"network_equipment_primary_wan_ipv6_subnet_pool,omitempty" yaml:"primaryWANIPv6SubnetPool,omitempty"`
	NetworkEquipmentPrimaryWANIPv6SubnetPoolID     int      `json:"network_equipment_primary_wan_ipv6_subnet_pool_id,omitempty" yaml:"primaryWANIPv6SubnetPoolID,omitempty"`
	NetworkEquipmentPrimaryWANIPv6SubnetCIDR       string   `json:"network_equipment_primary_wan_ipv6_subnet_cidr,omitempty" yaml:"primaryWANIPv6SubnetCIDR,omitempty"`
	NetworkEquipmentPrimaryWANIPv6SubnetPrefixSize int      `json:"network_equipment_primary_wan_ipv6_subnet_prefix_size,omitempty" yaml:"primaryWANIPv6SubnetPrefixSize,omitempty"`
	NetworkEquipmentPrimarySANSubnetPool           string   `json:"network_equipment_primary_san_subnet_pool,omitempty" yaml:"primarySANSubnetPool,omitempty"`
	NetworkEquipmentPrimarySANSubnetPrefixSize     int      `json:"network_equipment_primary_san_subnet_prefix_size,omitempty" yaml:"primarySANSubnetPrefixSize,omitempty"`
	NetworkEquipmentQuarantineSubnetStart          string   `json:"network_equipment_quarantine_subnet_start,omitempty" yaml:"quarantineSubnetStart,omitempty"`
	NetworkEquipmentQuarantineSubnetEnd            string   `json:"network_equipment_quarantine_subnet_end,omitempty" yaml:"quarantineSubnetEnd,omitempty"`
	NetworkEquipmentQuarantineSubnetPrefixSize     int      `json:"network_equipment_quarantine_subnet_prefix_size,omitempty" yaml:"quarantineSubnetPrefixSize,omitempty"`
	NetworkEquipmentQuarantineSubnetGateway        string   `json:"network_equipment_quarantine_subnet_gateway,omitempty" yaml:"quarantineSubnetGateway,omitempty"`
	NetworkEquipmentDescription                    string   `json:"network_equipment_description,omitempty" yaml:"description,omitempty"`
	NetworkEquipmentCountry                        string   `json:"network_equipment_country,omitempty" yaml:"country,omitempty"`
	NetworkEquipmentCity                           string   `json:"network_equipment_city,omitempty" yaml:"city,omitempty"`
	NetworkEquipmentDatacenter                     string   `json:"network_equipment_datacenter,omitempty" yaml:"netDatacenter,omitempty"`
	NetworkEquipmentDatacenterRoom                 string   `json:"network_equipment_datacenter_room,omitempty" yaml:"datacenterRoom,omitempty"`
	NetworkEquipmentDatacenterRack                 string   `json:"network_equipment_datacenter_rack,omitempty" yaml:"datacenterRack,omitempty"`
	NetworkEquipmentRackPositionUpperUnit          int      `json:"network_equipment_rack_position_upper_unit,omitempty" yaml:"rackPositionUpperUnit,omitempty"`
	NetworkEquipmentRackPositionLowerUnit          int      `json:"network_equipment_rack_position_lower_unit,omitempty" yaml:"rackPositionLowerUnit,omitempty"`
	NetworkEquipmentSerialNumber                   string   `json:"network_equipment_serial_number,omitempty" yaml:"serialNumber,omitempty"`
	ChassisRackID                                  int      `json:"chassis_rack_id,omitempty" yaml:"chassisRackID,omitempty"`
	NetworkEquipmentTORLinkedID                    int      `json:"network_equipment_tor_linked_id,omitempty"  yaml:"TORLinkedID,omitempty"`
	NetworkEquipmentTags                           []string `json:"network_equipment_tags,omitempty" yaml:"tags,omitempty"`
	NetworkEquipmentRequiresOSInstall              bool     `json:"network_equipment_requires_os_install" yaml:"requiresOSInstall"`
	NetworkEquipmentIsBorderDevice                 bool     `json:"network_equipment_is_border_device" yaml:"isBorderDevice"`
	NetworkEquipmentIsStorageSwitch                bool     `json:"network_equipment_is_storage_switch" yaml:"isStorageSwitch"`
	NetworkEquipmentIsGateway                      bool     `json:"network_equipment_is_gateway" yaml:"isGateway"`
	NetworkEquipmentNetworkTypesAllowed            []string `json:"network_equipment_network_types_allowed,omitempty" yaml:"networkTypesAllowed,omitempty"`
	VolumeTemplateID                               int      `json:"volume_template_id,omitempty" yaml:"volumeTemplateID,omitempty"`
	NetworkEquipmentLoopbackAddress                string   `json:"network_equipment_loopback_address,omitempty" yaml:"LoopbackAddress,omitempty"`
	NetworkEquipmentVTEPAddress                    string   `json:"network_equipment_vtep_address,omitempty" yaml:"VTEPAddress,omitempty"`
	NetworkEquipmentASN                            int      `json:"network_equipment_asn,omitempty" yaml:"ASN,omitempty"`
	NetworkEquipmentControllerID                   int      `json:"network_equipment_controller_id,omitempty" yaml:"controllerID,omitempty"`
}

SwitchDevice Represents a switch installed in a datacenter.

func (SwitchDevice) CreateOrUpdate

func (s SwitchDevice) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (SwitchDevice) Delete

func (s SwitchDevice) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (*SwitchDevice) UnmarshalJSON

func (s *SwitchDevice) UnmarshalJSON(data []byte) error

UnmarshalJSON to handle the shitty boolean being returned as 0 and 1 and true and false in different environments

func (SwitchDevice) Validate

func (s SwitchDevice) Validate() error

Validate implements interface Applier

type SwitchDeviceController

type SwitchDeviceController struct {
	DatacenterName                                string      `json:"datacenter_name,omitempty" yaml:"datacenterName,omitempty"`
	NetworkEquipmentControllerProvisionerType     string      `json:"network_equipment_controller_provisioner_type,omitempty" yaml:"provisionerType,omitempty"`
	NetworkEquipmentControllerDriver              string      `json:"network_equipment_controller_driver,omitempty" yaml:"driver,omitempty"`
	NetworkEquipmentControllerManagementUsername  string      `json:"network_equipment_controller_management_username,omitempty" yaml:"managementUsername,omitempty"`
	NetworkEquipmentControllerManagementPassword  string      `json:"network_equipment_controller_management_password,omitempty" yaml:"managementPassword,omitempty"`
	NetworkEquipmentControllerManagementAddress   string      `json:"network_equipment_controller_management_address,omitempty" yaml:"managementAddress,omitempty"`
	NetworkEquipmentControllerManagementPort      int         `json:"network_equipment_controller_management_port,omitempty" yaml:"managementPort,omitempty"`
	NetworkEquipmentControllerManagementProtocol  string      `json:"network_equipment_controller_management_protocol,omitempty" yaml:"managementProtocol,omitempty"`
	NetworkEquipmentControllerDescription         string      `json:"network_equipment_controller_description,omitempty" yaml:"description,omitempty"`
	NetworkEquipmentControllerID                  int         `json:"network_equipment_controller_id,omitempty" yaml:"id,omitempty"`
	NetworkEquipmentControllerIdentifierString    string      `json:"network_equipment_controller_identifier_string,omitempty" yaml:"identifierString,omitempty"`
	NetworkEquipmentControllerOptions             interface{} `json:"network_equipment_controller_options,omitempty" yaml:"options,omitempty"`
	NetworkEquipmentControllerFabricConfiguration interface{} `json:"network_equipment_controller_fabric_configuration,omitempty" yaml:"fabricConfiguration,omitempty"`
}

SwitchDeviceController represents a switch controller installed in a datacenter.

type SwitchDeviceDefaults

type SwitchDeviceDefaults struct {
	NetworkEquipmentDefaultsID                int               `json:"network_equipment_defaults_id,omitempty" yaml:"id,omitempty"`
	DatacenterName                            string            `json:"datacenter_name,omitempty" yaml:"datacenterName,omitempty"`
	NetworkEquipmentSerialNumber              *string           `json:"network_equipment_serial_number" yaml:"serialNumber"`
	NetworkEquipmentManagementMacAddress      *string           `json:"network_equipment_management_mac_address" yaml:"managementMacAddress"`
	NetworkEquipmentPosition                  string            `json:"network_equipment_position,omitempty" yaml:"position,omitempty"`
	NetworkEquipmentIdentifierString          string            `json:"network_equipment_identifier_string,omitempty" yaml:"identifierString,omitempty"`
	NetworkEquipmentAsn                       int               `json:"network_equipment_asn,omitempty" yaml:"asn,omitempty"`
	NetworkEquipmentPartOfMlagPair            bool              `json:"network_equipment_part_of_mlag_pair,omitempty" yaml:"partOfMlagPair,omitempty"`
	NetworkEquipmentMlagSystemMac             string            `json:"network_equipment_mlag_system_mac,omitempty" yaml:"mlagSystemMac,omitempty"`
	NetworkEquipmentMlagDomainId              int               `json:"network_equipment_mlag_domain_id,omitempty" yaml:"mlagDomainId,omitempty"`
	NetworkEquipmentMlagPeerLinkPortChannelId int               `json:"network_equipment_mlag_peer_link_port_channel_id,omitempty" yaml:"mlagPeerLinkPortChannelId,omitempty"`
	NetworkEquipmentMlagPartnerVlanId         int               `json:"network_equipment_mlag_partner_vlan_id,omitempty" yaml:"mlagPartnerVlanId,omitempty"`
	NetworkEquipmentMlagPartnerHostname       string            `json:"network_equipment_mlag_partner_hostname,omitempty" yaml:"mlagPartnerHostname,omitempty"`
	NetworkEquipmentLoopbackAddressIpv4       string            `json:"network_equipment_loopback_address_ipv4,omitempty" yaml:"loopbackAddressIpv4,omitempty"`
	NetworkEquipmentLoopbackAddressIpv6       string            `json:"network_equipment_loopback_address_ipv6,omitempty" yaml:"loopbackAddressIpv6,omitempty"`
	NetworkEquipmentVtepAddressIpv4           string            `json:"network_equipment_vtep_address_ipv4,omitempty" yaml:"vtepAddressIpv4,omitempty"`
	NetworkEquipmentVtepAddressIpv6           string            `json:"network_equipment_vtep_address_ipv6,omitempty" yaml:"vtepAddressIpv6,omitempty"`
	NetworkEquipmentSkipInitialConfiguration  bool              `json:"network_equipment_skip_initial_configuration,omitempty" yaml:"skipInitialConfiguration,omitempty"`
	VolumeTemplateID                          int               `json:"volume_template_id,omitempty" yaml:"volumeTemplateID,omitempty"`
	NetworkEquipmentCustomVariables           map[string]string `json:"network_equipment_custom_variables,omitempty" yaml:"customVariables,omitempty"`
}

SwitchDeviceDefaults represents a set of switch device defaults for a datacenter.

type SwitchDeviceLink struct {
	NetworkEquipmentLinkID   int    `json:"network_equipment_link_id,omitempty" yaml:"id,omitempty"`
	NetworkEquipmentID1      int    `json:"network_equipment_id_1,omitempty" yaml:"switchID1,omitempty"`
	NetworkEquipmentID2      int    `json:"network_equipment_id_2,omitempty" yaml:"switchID2,omitempty"`
	NetworkEquipmentLinkType string `json:"network_equipment_link_type,omitempty" yaml:"type,omitempty"`
}

type SwitchInterfaceSearchResult

type SwitchInterfaceSearchResult struct {
	ServerID                                  int        `json:"server_id,omitempty" yaml:"serverID,omitempty"`
	ServerIPMIHost                            string     `json:"server_ipmi_host,omitempty" yaml:"serverIPMIHost,omitempty"`
	ServerSerialNumber                        string     `json:"server_serial_number,omitempty" yaml:"serverSerialNumber,omitempty"`
	ServerTypeID                              int        `json:"server_type_id,omitempty" yaml:"ServerTypeID,omitempty"`
	NetworkEquipmentID                        int        `json:"network_equipment_id,omitempty" yaml:"networkEquipmentID,omitempty"`
	NetworkEquipmentIdentifierString          string     `json:"network_equipment_identifier_string,omitempty" yaml:"networkEquipmentIdentifierString,omitempty"`
	NetworkEquipmentManagementAddress         string     `json:"network_equipment_management_address,omitempty" yaml:"networkEquipmentManagementAddress,omitempty"`
	NetworkEquipmentInterfaceID               int        `json:"network_equipment_interface_id,omitempty" yaml:"networkEquipmentInterfaceID,omitempty"`
	NetworkEquipmentInterfaceMACAddress       string     `json:"network_equipment_interface_mac_address,omitempty" yaml:"networkEquipmentInterfaceMACAddress,omitempty"`
	NetworkEquipmentInterfaceIdentifierString string     `json:"network_equipment_interface_identifier_string,omitempty" yaml:"networkEquipmentInterfaceIdentifierString,omitempty"`
	ServerInterfaceMACAddress                 string     `json:"server_interface_mac_address,omitempty" yaml:"serverInterfaceMACAddress,omitempty"`
	ServerInterfaceIndex                      int        `json:"server_interface_index,omitempty" yaml:"serverInterfaceIndex,omitempty"`
	ServerInterfaceCapacityMBPs               int        `json:"server_interface_capacity_mbps,omitempty" yaml:"serverInterfaceCapacityMBPs,omitempty"`
	IP                                        [][]string `json:"ip_human_readable,omitempty" yaml:"ip,omitempty"`
	SubnetRangeStart                          [][]string `json:"subnet_range_start_human_readable,omitempty" yaml:"rangeStart,omitempty"`
	NetworkType                               []string   `json:"network_type,omitempty" yaml:"networkType,omitempty"`
	NetworkID                                 []int      `json:"network_id,omitempty" yaml:"networkID,omitempty"`
	SubnetPrefixSize                          [][]int    `json:"subnet_prefix_size,omitempty" yaml:"subnetPrefixSize,omitempty"`
	SubnetPoolID                              [][]int    `json:"subnet_pool_id,omitempty" yaml:"subnetPoolID,omitempty"`
}

SwitchInterfaceSearchResult Represents a switch interface-to-server interface mapping.

type User

type User struct {
	UserID          int    `json:"user_id,omitempty"`
	UserDisplayName string `json:"user_display_name,omitempty"`
	UserEmail       string `json:"user_email,omitempty"`
}

User describes user account specifications.

type UsersSearchResult

type UsersSearchResult struct {
	Franchise                            string `json:"franchise" yaml:"franchise"`
	UserAccessLevel                      string `json:"user_access_level" yaml:"user_access_level"`
	UserAuthFailedAttemptsSinceLastLogin int    `json:"user_auth_failed_attempts_since_last_login" yaml:"userFailedLoginAttempts"`
	UserAuthenticatorCreatedTimestamp    string `json:"user_authenticator_created_timestamp" yaml:"userCreatedTimestamp"`
	UserAuthenticatorIsMandatory         bool   `json:"user_authenticator_is_mandatory,omitempty" yaml:"userAuthenticatorIsMandatory,omitempty"`
	UserAuthenticatorMustChange          bool   `json:"user_authenticator_must_change,omitempty" yaml:"userAuthenticatorMustChange,omitempty"`
	UserBlocked                          bool   `json:"user_blocked" yaml:"userBlocked"`
	UserBrand                            string `json:"user_brand,omitempty" yaml:"userBrand,omitempty"`
	UserCreatedTimestamp                 string `json:"user_created_timestamp" yaml:"userCreatedTimestamp"`
	UserCustomPricesJson                 string `json:"user_custom_prices_json,omitempty" yaml:"userCustomPricesJson,omitempty"`
	UserDisplayName                      string `json:"user_display_name" yaml:"displayName"`
	UserEmail                            string `json:"user_email" yaml:"email"`
	UserEmailStatus                      string `json:"user_email_status,omitempty" yaml:"emailStatus,omitempty"`
	UserExcludeFromReports               bool   `json:"user_exclude_from_reports,omitempty" yaml:"userExcludeFromReports,omitempty"`
	UserExperimentalTagsJson             string `json:"user_experimental_tags_json,omitempty" yaml:"userExperimentalTagsJson,omitempty"`
	UserExternalIDsJson                  string `json:"user_external_ids_json,omitempty" yaml:"userExternalIDsJson,omitempty"`
	UserGuiSettingsJson                  string `json:"user_gui_settings_json,omitempty" yaml:"userGuiSettingsJson,omitempty"`
	UserID                               int    `json:"user_id" yaml:"id"`
	UserInfrastructureIDDefault          int    `json:"user_infrastructure_id_default,omitempty" yaml:"userInfrastructureIDDefault,omitempty"`
	UserIsBillable                       bool   `json:"user_is_billable,omitempty" yaml:"userIsBillable,omitempty"`
	UserIsBrandManager                   bool   `json:"user_is_brand_manager,omitempty" yaml:"userIsBrandManager,omitempty"`
	UserIsDatastorePublisher             bool   `json:"user_is_datastore_publisher,omitempty" yaml:"userIsDatastorePublisher,omitempty"`
	UserIsSuspended                      bool   `json:"user_is_suspended,omitempty" yaml:"userIsSuspended,omitempty"`
	UserIsTestAccount                    bool   `json:"user_is_test_account,omitempty" yaml:"userIsTestAccount,omitempty"`
	UserIsTestingMode                    bool   `json:"user_is_testing_mode,omitempty" yaml:"userIsTestingMode,omitempty"`
	UserKerberosPrincipalName            string `json:"user_kerberos_principal_name,omitempty" yaml:"userKerberosPrincipalName,omitempty"`
	UserLanguage                         string `json:"user_language,omitempty" yaml:"userLanguage,omitempty"`
	UserLastLoginTimestamp               string `json:"user_last_login_timestamp" yaml:"userLastLoginTimestamp"`
	UserLastLoginType                    string `json:"user_last_login_type,omitempty" yaml:"userLastLoginType,omitempty"`
	UserLimitsJson                       string `json:"user_limits_json,omitempty" yaml:"userLimitsJson,omitempty"`
	UserPasswordChangeRequired           bool   `json:"user_password_change_required,omitempty" yaml:"userPasswordChangeRequired,omitempty"`
	UserPermissionsJson                  string `json:"user_permissions_json,omitempty" yaml:"userPermissionsJson,omitempty"`
	UserPlanType                         string `json:"user_plan_type,omitempty" yaml:"userPlanType,omitempty"`
	UserPromotionTagsJson                string `json:"user_promotion_tags_json,omitempty" yaml:"userPromotionTagsJson,omitempty"`
}

type Variable

type Variable struct {
	VariableID               int    `json:"variable_id,omitempty" yaml:"id,omitempty"`
	UserIDOwner              int    `json:"user_id_owner,omitempty" yaml:"ownerID,omitempty"`
	UserIDAuthenticated      int    `json:"user_id_authenticated,omitempty" yaml:"userIDAuthenticated,omitempty"`
	VariableName             string `json:"variable_name,omitempty" yaml:"name,omitempty"`
	VariableUsage            string `json:"variable_usage,omitempty" yaml:"usage,omitempty"`
	VariableJSON             string `json:"variable_json,omitempty" yaml:"json,omitempty"`
	VariableCreatedTimestamp string `json:"variable_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	VariableUpdatedTimestamp string `json:"variable_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
}

Variable struct defines a Variable type

func (Variable) CreateOrUpdate

func (v Variable) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (Variable) Delete

func (v Variable) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (Variable) Validate

func (v Variable) Validate() error

Validate implements interface Applier

type VolumeTemplate

type VolumeTemplate struct {
	VolumeTemplateID                      int                    `json:"volume_template_id,omitempty"`
	VolumeTemplateLabel                   string                 `json:"volume_template_label,omitempty"`
	VolumeTemplateSizeMBytes              int                    `json:"volume_template_size_mbytes,omitempty"`
	VolumeTemplateDisplayName             string                 `json:"volume_template_display_name,omitempty"`
	VolumeTemplateDescription             string                 `json:"volume_template_description,omitempty"`
	VolumeTemplateLocalDiskSupported      bool                   `json:"volume_template_local_supported,omitempty"`
	VolumeTemplateBootMethodsSupported    string                 `json:"volume_template_boot_methods_supported,omitempty"`
	VolumeTemplateBootType                string                 `json:"volume_template_boot_type,omitempty"`
	VolumeTemplateDeprecationStatus       string                 `json:"volume_template_deprecation_status,omitempty"`
	VolumeTemplateRepoURL                 string                 `json:"volume_template_repo_url,omitempty"`
	VolumeTemplateOperatingSystem         OperatingSystem        `json:"volume_template_operating_system,omitempty"`
	VolumeTemplateTags                    []string               `json:"volume_template_tags,omitempty"`
	VolumeTemplateOsBootstrapFunctionName string                 `json:"volume_template_os_bootstrap_function_name,omitempty"`
	VolumeTemplateNetworkOperatingSystem  NetworkOperatingSystem `json:"volume_template_network_operating_system,omitempty"`
	VolumeTemplateVersion                 string                 `json:"volume_template_version,omitempty"`
	VolumeTemplateIsExperimental          bool                   `json:"volume_template_is_experimental,omitempty"`
	VolumeTemplateIsForSwitch             bool                   `json:"volume_template_is_for_switch,omitempty"`
	VolumeTemplateOSReadyMethod           string                 `json:"volume_template_os_ready_method,omitempty"`
}

VolumeTemplate describes an OS template

type WebFetchAAPIOptions

type WebFetchAAPIOptions struct {
	Method           string                    `json:"method,omitempty"`
	Redirect         string                    `json:"redirect,omitempty"`
	Follow           int                       `json:"follow,omitempty"`
	Compress         bool                      `json:"compress"`
	Timeout          int                       `json:"timeout,omitempty"`
	Size             int                       `json:"size,omitempty"`
	Headers          WebFetchAPIRequestHeaders `json:"headers,omitempty"`
	Body             string                    `json:"body,omitempty"`
	BodyBufferBase64 string                    `json:"bodyBufferBase64,omitempty"`
}

WebFetchAAPIOptions represents node-fetch options which is follows the Web API Fetch specification. See https://github.com/node-fetch/node-fetch

type WebFetchAPIRequestHeaders

type WebFetchAPIRequestHeaders struct {
	Accept             string `json:"Accept,omitempty"`
	UserAgent          string `json:"User-Agent,omitempty"`
	ContentType        string `json:"Content-Type,omitempty"`
	Cookie             string `json:"Cookie,omitempty"`
	Authorization      string `json:"Authorization,omitempty"`
	ProxyAuthorization string `json:"Proxy-Authorization,omitempty"`
	ContentMD5         string `json:"Content-MD5,omitempty"`
}

WebFetchAPIRequestHeaders HTTP request headers. null means undefined (the default for most) so the header will not be included with the request.

type WebProxy

type WebProxy struct {
	WebProxyServerIP   string `json:"web_proxy_server_ip,omitempty" yaml:"ip,omitempty"`
	WebProxyServerPort int    `json:"web_proxy_server_port,omitempty" yaml:"port,omitempty"`
	WebProxyUsername   string `json:"web_proxy_username,omitempty" yaml:"username,omitempty"`
	WebProxyPassword   string `json:"web_proxy_password,omitempty" yaml:"password,omitempty"`
}

type Workflow

type Workflow struct {
	WorkflowID               int    `json:"workflow_id,omitempty" yaml:"id,omitempty"`
	UserIDOwner              int    `json:"user_id_owner,omitempty" yaml:"ownerID,omitempty"`
	UserIDAuthenticated      int    `json:"user_id_authenticated,omitempty" yaml:"userIDAuthenticated,omitempty"`
	WorkflowLabel            string `json:"workflow_label,omitempty" yaml:"label,omitempty"`
	WorkflowUsage            string `json:"workflow_usage,omitempty" yaml:"usage,omitempty"`
	WorkflowTitle            string `json:"workflow_title,omitempty" yaml:"title,omitempty"`
	WorkflowDescription      string `json:"workflow_description,omitempty" yaml:"description,omitempty"`
	WorkflowIsDeprecated     bool   `json:"workflow_is_deprecated,omitempty" yaml:"isDeprecated,omitempty"`
	IconAssetDataURI         string `json:"icon_asset_data_uri,omitempty" yaml:"assetDataURI,omitempty"`
	WorkflowCreatedTimestamp string `json:"workflow_created_timestamp,omitempty" yaml:"createdTimestamp,omitempty"`
	WorkflowUpdatedTimestamp string `json:"workflow_updated_timestamp,omitempty" yaml:"updatedTimestamp,omitempty"`
}

Workflow struct defines a server type

func (Workflow) CreateOrUpdate

func (w Workflow) CreateOrUpdate(client MetalCloudClient) error

CreateOrUpdate implements interface Applier

func (Workflow) Delete

func (w Workflow) Delete(client MetalCloudClient) error

Delete implements interface Applier

func (Workflow) Validate

func (w Workflow) Validate() error

Validate implements interface Applier

type WorkflowReference

type WorkflowReference struct {
	WorkflowID int    `json:"workflow_id,omitempty"`
	Type       string `json:"type,omitempty"`
}

WorkflowReference points to a Workflow object via its workflow_id. To be used as a stage definition.

type WorkflowStageAssociation

type WorkflowStageAssociation struct {
	InfrastructureDeployCustomStageID             int    `json:"infrastructure_deploy_custom_stage_id,omitempty"`
	InfrastructureID                              int    `json:"infrastructure_id"`
	StageDefinitionID                             int    `json:"stage_definition_id,omitempty"`
	InfrastructureDeployCustomStageType           string `json:"infrastructure_deploy_custom_stage_type,omitempty"`
	InfrastructureDeployCustomStageRunLevel       int    `json:"infrastructure_deploy_custom_stage_run_level,omitempty"`
	InfrastructureDeployCustomStageExecOutputJSON string `json:"infrastructure_deploy_custom_stage_exec_output_json,omitempty"`
}

WorkflowStageAssociation associations

type WorkflowStageDefinitionReference

type WorkflowStageDefinitionReference struct {
	WorkflowStageID       int `json:"workflow_stage_id,omitempty"`
	WorkflowID            int `json:"workflow_id,omitempty"`
	StageDefinitionID     int `json:"stage_definition_id,omitempty"`
	WorkflowStageRunLevel int `json:"workflow_stage_run_level,omitempty"`
}

WorkflowStageDefinitionReference defines where in a workflow a stage definition resides

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL