Documentation
¶
Index ¶
- type CloudBoltActionResult
- type CloudBoltClient
- func (c *CloudBoltClient) Authenticate() (int, error)
- func (c *CloudBoltClient) DecomOrder(grpPath string, envPath string, servers []string) (*CloudBoltOrder, error)
- func (c *CloudBoltClient) DeployBlueprint(grpPath string, bpPath string, resourceName string, ...) (*CloudBoltOrder, error)
- func (c *CloudBoltClient) GetCloudBoltObject(objPath string, objName string) (*CloudBoltObject, error)
- func (c *CloudBoltClient) GetGroup(groupPath string) (*CloudBoltObject, error)
- func (c *CloudBoltClient) GetJob(jobPath string) (*CloudBoltJob, error)
- func (c *CloudBoltClient) GetOrder(orderID string) (*CloudBoltOrder, error)
- func (c *CloudBoltClient) GetResource(resourcePath string) (*CloudBoltResource, error)
- func (c *CloudBoltClient) GetServer(serverPath string) (*CloudBoltServer, error)
- func (c *CloudBoltClient) SubmitAction(actionPath string) (*CloudBoltActionResult, error)
- type CloudBoltGroup
- type CloudBoltHALItem
- type CloudBoltJob
- type CloudBoltObject
- type CloudBoltOrder
- type CloudBoltResource
- type CloudBoltResult
- type CloudBoltServer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CloudBoltActionResult ¶
type CloudBoltActionResult struct {
RunActionJob struct {
Self CloudBoltHALItem `json:"self"`
} `json:"run-action-job"`
}
CloudBoltActionResult stores metadata about the result of running an action.
type CloudBoltClient ¶
type CloudBoltClient struct {
// contains filtered or unexported fields
}
CloudBoltClient stores the important metadata necessary to make API requests. - BaseURL follows the pattern "https://cloudbolt.myco.ext:443/". - HTTPClient is a client used to make the API calls. - Token is retrieved in `New` and is included in the Bearer Token of request headers.
func New ¶
func New(protocol string, host string, port string, apiVersion string, username string, password string, httpClient *http.Client) *CloudBoltClient
New returns an initialized CloudBoltClient object. Accepts as input: - HTTP Protocol (protocol) e.g., "https" - HTTP Host (host) e.g., "cloudbolt.intranet" - HTTP Port (port) e.g., "443" - apiVersion (apiVersion) e.g., "v2" - Username (username) e.g., "myUserName" - Password (password) e.g., "My Passphrase!" - User-provided *HTTPClient (httpClient); provide `nil` to get a server with the following defaults:
- Timeout set to 60 seconds Provide a custom http.Client if you require unique certificate, timeout, etc., configured.
New does not make any API calls. CloudBoltClient.Authenticate must be called to initialize CloudBoltClient.token. This is done automatically when a request receives an HTTP Authorization error.
func (*CloudBoltClient) Authenticate ¶
func (c *CloudBoltClient) Authenticate() (int, error)
Authenticate forces the CloudBoltClient to re-authenticate Returns an error if there is an HTTP error, or if the HTTP Status Code is >=400
func (*CloudBoltClient) DecomOrder ¶
func (c *CloudBoltClient) DecomOrder(grpPath string, envPath string, servers []string) (*CloudBoltOrder, error)
DecomOrder orders the deletion of a CloudBolt resource
- Group Path (grpPath) e.g., "/api/v2/groups/GRP-123/"
- Environment Path (envPath) e.g., "/api/v2/environments/ENV-123/"
- Servers (servers) e.g., []string{ `/api/v2/servers/123/`, `/api/v2/servers/4567/`, `/api/v2/servers/891011/`, }
func (*CloudBoltClient) DeployBlueprint ¶
func (c *CloudBoltClient) DeployBlueprint(grpPath string, bpPath string, resourceName string, bpItems []map[string]interface{}) (*CloudBoltOrder, error)
DeployBlueprint deploys the given:
- Blueprint (bpPath) e.g., "/api/v2/blueprints/BG-6ic2tw7x/"
- Group (grpPath) e.g., "/api/v2/groups/GRP-5ukhved7/"
- Resource Name (resourceName) e.g., "My Resource Name"
- Blueprint Items/request parameters (bpItems) e.g., []map[string]interface{}{ map[string]interface{}{ "bp-item-name": "bp item name", "bp-item-paramas": map[string]interface{}} "some-param": "param value", "other-param": "foo bar baz", }, "environment": "bp environment", "osbuild": "bp osbuild", } }
func (*CloudBoltClient) GetCloudBoltObject ¶
func (c *CloudBoltClient) GetCloudBoltObject(objPath string, objName string) (*CloudBoltObject, error)
GetCloudBoltObject fetches a given object of type "objPath" with the name "objName" e.g., GetCloudBoltObject("users", "Susan") gets the user with username "Susan"
Caveat:
This makes a generic request to `/api/v2/objPath/?filter=name:objName` it returns the first element of the `_embedded` list, so if multiple objects are returned from this query, only the first one will be returned. So don't lean on this without some sanity checks.
func (*CloudBoltClient) GetGroup ¶
func (c *CloudBoltClient) GetGroup(groupPath string) (*CloudBoltObject, error)
GetGroup accepts a groupPath string parameter of the following format: "/my parent group/some subgroup/a child group/" or just "my parent group"
verifyGroup recursively verifies that this is a valid group/subgroup.
func (*CloudBoltClient) GetJob ¶
func (c *CloudBoltClient) GetJob(jobPath string) (*CloudBoltJob, error)
GetJob fetches the Job object from CloudBolt at the given path - Job Path (jobPath) e.g., "/api/v2/jobs/123/"
func (*CloudBoltClient) GetOrder ¶
func (c *CloudBoltClient) GetOrder(orderID string) (*CloudBoltOrder, error)
GetOrder fetches an Order from CloudBolt - Order ID (orderID) e.g., "123"; formatted into a string like "/api/v2/orders/123"
func (*CloudBoltClient) GetResource ¶
func (c *CloudBoltClient) GetResource(resourcePath string) (*CloudBoltResource, error)
GetResource fetches a Resource object from CloudBolt at the given path - Resource Path (resourcePath) e.g., "/api/v2/resources/service/123/"
func (*CloudBoltClient) GetServer ¶
func (c *CloudBoltClient) GetServer(serverPath string) (*CloudBoltServer, error)
GetServer fetches a Server object from CloudBolt at the given path - Server Path (serverPath) e.g., "/api/v2/servers/123/"
func (*CloudBoltClient) SubmitAction ¶
func (c *CloudBoltClient) SubmitAction(actionPath string) (*CloudBoltActionResult, error)
SubmitAction runs an action on the CloudBolt server - Action Path (actionPath) e.g., "/api/v2/actions/123/"
type CloudBoltGroup ¶
type CloudBoltGroup struct {
Links struct {
Self CloudBoltHALItem `json:"self"`
Parent CloudBoltHALItem `json:"parent"`
Subgroups []CloudBoltHALItem `json:"subgroups"`
Environments []interface{} `json:"environments"`
OrderableEnvironments CloudBoltHALItem `json:"orderable-environments"`
} `json:"_links"`
Name string `json:"name"`
ID string `json:"id"`
Type string `json:"type"`
Rate string `json:"rate"`
AutoApproval bool `json:"auto-approval"`
}
CloudBoltGroup contains metadata about a Group in CloudBolt
type CloudBoltHALItem ¶
CloudBoltHALItem stores an object's title and API endpoint. This is a common pattern in the CloudBolt API, so it gets used a lot.
type CloudBoltJob ¶
type CloudBoltJob struct {
Links struct {
Self CloudBoltHALItem `json:"self"`
Owner CloudBoltHALItem `json:"owner"`
Parent CloudBoltHALItem `json:"parent"`
Subjobs []interface{} `json:"subjobs"`
Prerequisite struct {
} `json:"prerequisite"`
DependentJobs []interface{} `json:"dependent-jobs"`
Order CloudBoltHALItem `json:"order"`
Resource CloudBoltHALItem `json:"resource"`
Servers []CloudBoltHALItem `json:"servers"`
LogUrls struct {
RawLog string `json:"raw-log"`
ZipLog string `json:"zip-log"`
} `json:"log_urls"`
} `json:"_links"`
Status string `json:"status"`
Type string `json:"type"`
Progress struct {
TotalTasks int `json:"total-tasks"`
Completed int `json:"completed"`
Messages []string `json:"messages"`
} `json:"progress"`
StartDate string `json:"start-date"`
EndDate string `json:"end-date"`
Output string `json:"output"`
}
CloudBoltJob contains metadata about a Job. Useful for getting the status of a running or completed job.
type CloudBoltObject ¶
type CloudBoltObject struct {
Links struct {
Self CloudBoltHALItem `json:"self"`
} `json:"_links"`
Name string `json:"name"`
ID string `json:"id"`
}
CloudBoltObject stores the generic output of objects. Most objects in CloudBolt include Links.Self.Href, Links.Self.Title, Name, and ID
type CloudBoltOrder ¶
type CloudBoltOrder struct {
Links struct {
Self CloudBoltHALItem `json:"self"`
Group CloudBoltHALItem `json:"group"`
Owner CloudBoltHALItem `json:"owner"`
ApprovedBy CloudBoltHALItem `json:"approved-by"`
Actions CloudBoltHALItem `json:"actions"`
Jobs []CloudBoltHALItem `json:"jobs"`
} `json:"_links"`
Name string `json:"name"`
ID string `json:"id"`
Status string `json:"status"`
Rate string `json:"rate"`
CreateDate string `json:"create-date"`
ApproveDate string `json:"approve-date"`
Items struct {
DeployItems []struct {
Blueprint string `json:"blueprint"`
BlueprintItemsArguments struct {
BuildItemBuildServer struct {
Attributes struct {
Hostname string `json:"hostname"`
Quantity int `json:"quantity"`
} `json:"attributes"`
OsBuild string `json:"os-build,omitempty"`
Environment string `json:"environment,omitempty"`
Parameters map[string]interface{} `json:"parameters"`
} `json:"build-item-Server"`
} `json:"blueprint-items-arguments"`
ResourceName string `json:"resource-name"`
ResourceParameters struct {
} `json:"resource-parameters"`
} `json:"deploy-items"`
} `json:"items"`
}
CloudBoltOrder contains metadata about a CloudBolt Order Returned by DeployBlueprint, GetOrder, and DecomOrder
type CloudBoltResource ¶
type CloudBoltResource struct {
Links struct {
Self CloudBoltHALItem `json:"self"`
Blueprint CloudBoltHALItem `json:"blueprint"`
Owner CloudBoltHALItem `json:"owner"`
Group CloudBoltHALItem `json:"group"`
ResourceType CloudBoltHALItem `json:"resource-type"`
Servers []struct {
Href string `json:"href"`
Title string `json:"title"`
Tier string `json:"tier"`
} `json:"servers"`
Actions []struct {
Delete CloudBoltHALItem `json:"Delete,omitempty"`
Scale CloudBoltHALItem `json:"Scale,omitempty"`
} `json:"actions"`
Jobs CloudBoltHALItem `json:"jobs"`
History CloudBoltHALItem `json:"history"`
} `json:"_links"`
Name string `json:"name"`
ID string `json:"id"`
Status string `json:"status"`
InstallDate string `json:"install-date"`
}
CloudBoltResource contains metadata about Resources (e.g., "Services") in CloudBolt
type CloudBoltResult ¶
type CloudBoltResult struct {
Links struct {
Self CloudBoltHALItem `json:"self"`
} `json:"_links"`
Total int `json:"total"`
Count int `json:"count"`
Embedded []CloudBoltObject `json:"_embedded"` // TODO: Maybe call this Items?
}
CloudBoltResult stores the response of paginated calls like `/api/v2/blueprints/` These include a link to the page and an `embedded` list of response objects.
type CloudBoltServer ¶
type CloudBoltServer struct {
Links struct {
Self CloudBoltHALItem `json:"self"`
Owner CloudBoltHALItem `json:"owner"`
Group CloudBoltHALItem `json:"group"`
Environment CloudBoltHALItem `json:"environment"`
ResourceHandler CloudBoltHALItem `json:"resource-handler"`
Actions []struct {
PowerOn CloudBoltHALItem `json:"power_on,omitempty"`
PowerOff CloudBoltHALItem `json:"power_off,omitempty"`
Reboot CloudBoltHALItem `json:"reboot,omitempty"`
RefreshInfo CloudBoltHALItem `json:"refresh_info,omitempty"`
Snapshot CloudBoltHALItem `json:"snapshot,omitempty"`
AdHocScript CloudBoltHALItem `json:"Ad Hoc Script,omitempty"`
} `json:"actions"`
ProvisionJob CloudBoltHALItem `json:"provision-job"`
OsBuild CloudBoltHALItem `json:"os-build"`
Jobs CloudBoltHALItem `json:"jobs"`
History CloudBoltHALItem `json:"history"`
} `json:"_links"`
Hostname string `json:"hostname"`
PowerStatus string `json:"power-status"`
Status string `json:"status"`
IP string `json:"ip"`
Mac string `json:"mac"`
DateAddedToCloudbolt string `json:"date-added-to-cloudbolt"`
CPUCnt int `json:"cpu-cnt"`
MemSize string `json:"mem-size"`
DiskSize string `json:"disk-size"`
OsFamily string `json:"os-family"`
Notes string `json:"notes"`
Labels []interface{} `json:"labels"`
Credentials struct {
Username string `json:"username"`
Password string `json:"password"`
} `json:"credentials"`
// TODO: This should be a more generic map
Disks []struct {
UUID string `json:"uuid"`
DiskSize int `json:"disk-size"`
Name string `json:"name"`
Datastore string `json:"datastore"`
ProvisioningType string `json:"provisioning-type"`
} `json:"disks"`
Networks []struct {
Name string `json:"name"`
Network string `json:"network"`
Mac string `json:"mac"`
IP interface{} `json:"ip"`
PrivateIP string `json:"private-ip"`
AdditionalIps string `json:"additional-ips"`
} `json:"networks"`
Parameters struct {
} `json:"parameters"`
// TODO: This should be a more generic map
TechSpecificDetails struct {
VmwareLinkedClone bool `json:"vmware-linked-clone"`
VmwareCluster string `json:"vmware-cluster"`
} `json:"tech-specific-details"`
}
CloudBoltServer stores metadata about servers in CloudBolt.