govcd

package
v2.4.0-alpha-2....-9f7cdf3 Latest Latest
Warning

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

Go to latest
Published: Oct 24, 2019 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package govcd provides a simple binding for vCloud Director REST APIs.

Contains auxiliary functions to show library entities structure. Used for debugging and testing.

Index

Constants

View Source
const (
	OrgUserRoleOrganizationAdministrator = "Organization Administrator"
	OrgUserRoleCatalogAuthor             = "Catalog Author"
	OrgUserRoleVappAuthor                = "vApp Author"
	OrgUserRoleVappUser                  = "vApp User"
	OrgUserRoleConsoleAccessOnly         = "Console Access Only"
	OrgUserRoleDeferToIdentityProvider   = "Defer to Identity Provider"

	// Allowed values for provider types
	OrgUserProviderIntegrated = "INTEGRATED" // The user is created locally or imported from LDAP
	OrgUserProviderSAML       = "SAML"       // The user is imported from a SAML identity provider.
	OrgUserProviderOAUTH      = "OAUTH"      // The user is imported from an OAUTH identity provider
)
View Source
const MinimumDiskSize int64 = 1048576 // = 1Mb

While theoretically we can use smaller amounts, there is an issue when updating disks with size < 1MB

Variables

View Source
var ErrorEntityNotFound = fmt.Errorf(errorEntityNotFoundMessage)

Used to check the validity of provider type on creation

Functions

func ContainsNotFound

func ContainsNotFound(err error) bool

ContainsNotFound is a convenience function, similar to os.IsNotExist that checks whether a given error contains a "Not found" error. It is almost the same as `IsNotFound` but checks if an error contains substring ErrorEntityNotFound

func GetExternalNetworkByName deprecated

func GetExternalNetworkByName(vcdClient *VCDClient, networkName string) (*types.ExternalNetworkReference, error)

Deprecated: please use GetExternalNetwork function instead

func GetNetworkPoolByHREF

func GetNetworkPoolByHREF(client *VCDClient, href string) (*types.VMWNetworkPool, error)

GetNetworkPoolByHREF functions fetches an network pool using VDC client and network pool href

func GetStorageProfileByHref

func GetStorageProfileByHref(vcdClient *VCDClient, url string) (*types.VdcStorageProfile, error)

GetStorageProfileByHref fetches storage profile using provided HREF.

func IsNotFound

func IsNotFound(err error) bool

Convenience function, similar to os.IsNotExist that checks whether a given error is a "Not found" error, such as

if isNotFound(err) {
   // do what is needed in case of not found
}

func LogAdminCatalog

func LogAdminCatalog(catalog types.AdminCatalog)

func LogAdminOrg

func LogAdminOrg(org types.AdminOrg)

func LogCatalog

func LogCatalog(catalog types.Catalog)

func LogCatalogItem

func LogCatalogItem(catalogItem types.CatalogItem)

func LogDisk

func LogDisk(disk types.Disk)

func LogExternalNetwork

func LogExternalNetwork(network types.ExternalNetwork)

func LogNetwork

func LogNetwork(conf types.OrgVDCNetwork)

func LogOrg

func LogOrg(org types.Org)

func LogTask

func LogTask(task *types.Task, howManyTimes int, elapsed time.Duration, first, last bool)

func LogUser

func LogUser(user types.User)

func LogVapp

func LogVapp(vapp types.VApp)

func LogVdc

func LogVdc(vdc types.Vdc)

func ParseErr

func ParseErr(resp *http.Response, errType error) error

ParseErr takes an error XML resp, error interface for unmarshaling and returns a single string for use in error messages.

func QueryDistributedPortGroup

func QueryDistributedPortGroup(vcdCli *VCDClient, name string) ([]*types.PortGroupRecordType, error)

Find a Distributed port group by name

func QueryNetworkPoolByName

func QueryNetworkPoolByName(vcdCli *VCDClient, name string) ([]*types.QueryResultNetworkPoolRecordType, error)

QueryNetworkPoolByName finds a network pool by name

func QueryNetworkPortGroup

func QueryNetworkPortGroup(vcdCli *VCDClient, name string) ([]*types.PortGroupRecordType, error)

Find a Network port group by name

func QueryOrgVdcNetworkByName

func QueryOrgVdcNetworkByName(vcdCli *VCDClient, name string) ([]*types.QueryResultOrgVdcNetworkRecordType, error)

QueryOrgVdcNetworkByName finds a org VDC network by name which has edge gateway as reference

func QueryPortGroups

func QueryPortGroups(vcdCli *VCDClient, filter string) ([]*types.PortGroupRecordType, error)

Find a list of Port groups matching the filter parameter.

func QueryProviderVdcByName

func QueryProviderVdcByName(vcdCli *VCDClient, name string) ([]*types.QueryResultVMWProviderVdcRecordType, error)

QueryProviderVdcByName finds a provider VDC by name

func QueryProviderVdcStorageProfileByName

func QueryProviderVdcStorageProfileByName(vcdCli *VCDClient, name string) ([]*types.QueryResultProviderVdcStorageProfileRecordType, error)

QueryProviderVdcStorageProfileByName finds a provider VDC storage profile by name

func QueryVirtualCenters

func QueryVirtualCenters(vcdClient *VCDClient, filter string) ([]*types.QueryResultVirtualCenterRecordType, error)

Find a list of Virtual Centers matching the filter parameter. Filter constructing guide: https://pubs.vmware.com/vcloud-api-1-5/wwhelp/wwhimpl/js/html/wwhelp.htm#href=api_prog/GUID-CDF04296-5EB5-47E1-9BEC-228837C584CE.html Possible parameters are any attribute from QueryResultVirtualCenterRecordType struct E.g. filter could look like: (name==vC1)

func RemoveMediaImageIfExists

func RemoveMediaImageIfExists(vdc Vdc, mediaName string) error

Looks for media and, if found, will delete it. Deprecated: Use catalog.RemoveMediaIfExist

func RemoveOrgVdcNetworkIfExists

func RemoveOrgVdcNetworkIfExists(vdc Vdc, networkName string) error

Looks for an Org Vdc network and, if found, will delete it.

func ShowAdminCatalog

func ShowAdminCatalog(catalog types.AdminCatalog)

func ShowAdminOrg

func ShowAdminOrg(org types.AdminOrg)

func ShowCatalog

func ShowCatalog(catalog types.Catalog)

func ShowCatalogItem

func ShowCatalogItem(catalogItem types.CatalogItem)

func ShowDisk

func ShowDisk(disk types.Disk)

func ShowExternalNetwork

func ShowExternalNetwork(network types.ExternalNetwork)

func ShowNetwork

func ShowNetwork(conf types.OrgVDCNetwork)

func ShowOrg

func ShowOrg(org types.Org)

func ShowTask

func ShowTask(task *types.Task, howManyTimes int, elapsed time.Duration, first, last bool)

func ShowUser

func ShowUser(user types.User)

func ShowVapp

func ShowVapp(vapp types.VApp)

func ShowVdc

func ShowVdc(vdc types.Vdc)

func SimpleLogTask

func SimpleLogTask(task *types.Task, howManyTimes int, elapsed time.Duration, first, last bool)

func SimpleShowTask

func SimpleShowTask(task *types.Task, howManyTimes int, elapsed time.Duration, first, last bool)

Types

type AdminCatalog

type AdminCatalog struct {
	AdminCatalog *types.AdminCatalog
	// contains filtered or unexported fields
}

AdminCatalog is a admin view of a vCloud Director Catalog To be able to get an AdminCatalog representation, users must have admin credentials to the System org. AdminCatalog is used for creating, updating, and deleting a Catalog. Definition: https://code.vmware.com/apis/220/vcloud#/doc/doc/types/AdminCatalogType.html

func CreateCatalog

func CreateCatalog(client *Client, links types.LinkList, Name, Description string) (AdminCatalog, error)

func NewAdminCatalog

func NewAdminCatalog(client *Client) *AdminCatalog

func (*AdminCatalog) Delete

func (adminCatalog *AdminCatalog) Delete(force, recursive bool) error

Deletes the Catalog, returning an error if the vCD call fails. Link to API call: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/DELETE-Catalog.html

func (*AdminCatalog) GetMediaByHref

func (adminCatalog *AdminCatalog) GetMediaByHref(mediaHref string) (*Media, error)

GetMediaByHref finds a Media by HREF On success, returns a pointer to the Media structure and a nil error On failure, returns a nil pointer and an error

func (*AdminCatalog) GetMediaById

func (adminCatalog *AdminCatalog) GetMediaById(mediaId string) (*Media, error)

GetMediaById finds a Media by ID On success, returns a pointer to the Media structure and a nil error On failure, returns a nil pointer and an error

func (*AdminCatalog) GetMediaByName

func (adminCatalog *AdminCatalog) GetMediaByName(mediaName string, refresh bool) (*Media, error)

GetMediaByName finds a Media by Name On success, returns a pointer to the Media structure and a nil error On failure, returns a nil pointer and an error

func (*AdminCatalog) GetMediaByNameOrId

func (adminCatalog *AdminCatalog) GetMediaByNameOrId(identifier string, refresh bool) (*Media, error)

GetMediaByNameOrId finds a Media by Name or ID On success, returns a pointer to the Media structure and a nil error On failure, returns a nil pointer and an error

func (*AdminCatalog) QueryMedia

func (adminCatalog *AdminCatalog) QueryMedia(mediaName string) (*MediaRecord, error)

QueryMedia returns media image found in system using `name` and `catalog name` as query.

func (*AdminCatalog) Refresh

func (adminCatalog *AdminCatalog) Refresh() error

func (*AdminCatalog) RemoveMediaIfExists

func (adminCatalog *AdminCatalog) RemoveMediaIfExists(mediaName string) error

Looks for media and, if found, will delete it.

func (*AdminCatalog) Update

func (adminCatalog *AdminCatalog) Update() error

Updates the Catalog definition from current Catalog struct contents. Any differences that may be legally applied will be updated. Returns an error if the call to vCD fails. Update automatically performs a refresh with the admin catalog it gets back from the rest api Link to API call: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/PUT-Catalog.html

func (*AdminCatalog) UploadOvf

func (adminCatalog *AdminCatalog) UploadOvf(ovaFileName, itemName, description string, uploadPieceSize int64) (UploadTask, error)

Uploads an ova file to a catalog. This method only uploads bits to vCD spool area. Returns errors if any occur during upload from vCD or upload process. On upload fail client may need to remove vCD catalog item which waits for files to be uploaded. Files from ova are extracted to system temp folder "govcd+random number" and left for inspection on error.

type AdminOrg

type AdminOrg struct {
	AdminOrg *types.AdminOrg
	// contains filtered or unexported fields
}

AdminOrg gives an admin representation of an org. Administrators can delete and update orgs with an admin org object. AdminOrg includes all members of the Org element, and adds several elements that can be viewed and modified only by system administrators. Definition: https://code.vmware.com/apis/220/vcloud#/doc/doc/types/AdminOrgType.html

func GetAdminOrgByName

func GetAdminOrgByName(vcdClient *VCDClient, orgName string) (AdminOrg, error)

If user specifies valid organization name, then this returns an admin organization object. If no valid org is found, it returns an empty org and no error. Otherwise returns an empty AdminOrg and an error. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/GET-Organization-AdminView.html Deprecated: Use vcdClient.GetAdminOrgByName instead

func NewAdminOrg

func NewAdminOrg(cli *Client) *AdminOrg

func (*AdminOrg) CreateCatalog

func (adminOrg *AdminOrg) CreateCatalog(name, description string) (AdminCatalog, error)

CreateCatalog creates a catalog with given name and description under the the given organization. Returns an AdminCatalog that contains a creation task. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/POST-CreateCatalog.html

func (*AdminOrg) CreateUser

func (adminOrg *AdminOrg) CreateUser(userConfiguration *types.User) (*OrgUser, error)

CreateUser creates an OrgUser from a full configuration structure The timeOut variable is the maximum time we wait for the user to be ready (This operation does not return a task) This function returns as soon as the user has been created, which could be as little as 200ms or as much as Client.MaxRetryTimeout Mandatory fields are: Name, Role, Password. https://code.vmware.com/apis/442/vcloud-director#/doc/doc/operations/POST-CreateUser.html

func (*AdminOrg) CreateUserSimple

func (adminOrg *AdminOrg) CreateUserSimple(userData OrgUserConfiguration) (*OrgUser, error)

CreateUserSimple creates an org user from a simplified structure

func (*AdminOrg) CreateVdc

func (adminOrg *AdminOrg) CreateVdc(vdcConfiguration *types.VdcConfiguration) (Task, error)

CreateVdc creates a VDC with the given params under the given organization. Returns an AdminVdc. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/POST-VdcConfiguration.html

func (*AdminOrg) CreateVdcWait

func (adminOrg *AdminOrg) CreateVdcWait(vdcDefinition *types.VdcConfiguration) error

Creates the vdc and waits for the asynchronous task to complete.

func (*AdminOrg) Delete

func (adminOrg *AdminOrg) Delete(force bool, recursive bool) error

Deletes the org, returning an error if the vCD call fails. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/DELETE-Organization.html

func (*AdminOrg) Disable

func (adminOrg *AdminOrg) Disable() error

Disables the org. Returns an error if the call to vCD fails. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/POST-DisableOrg.html

func (*AdminOrg) FetchUserByHref

func (adminOrg *AdminOrg) FetchUserByHref(href string) (*OrgUser, error)

FetchUserByHref returns a user by its HREF Deprecated: use GetUserByHref instead

func (*AdminOrg) FetchUserById

func (adminOrg *AdminOrg) FetchUserById(id string, refresh bool) (*OrgUser, error)

FetchUserById returns a user by its ID Deprecated: use GetUserById instead

func (*AdminOrg) FetchUserByName

func (adminOrg *AdminOrg) FetchUserByName(name string, refresh bool) (*OrgUser, error)

FetchUserByName returns a user by its Name Deprecated: use GetUserByName instead

func (*AdminOrg) FetchUserByNameOrId

func (adminOrg *AdminOrg) FetchUserByNameOrId(identifier string, refresh bool) (*OrgUser, error)

FetchUserById returns a user by its Name or ID Deprecated: use GetUserByNameOrId instead

func (*AdminOrg) FindAdminCatalog

func (adminOrg *AdminOrg) FindAdminCatalog(catalogName string) (AdminCatalog, error)

Given a valid catalog name, FindAdminCatalog returns an AdminCatalog object. If no catalog is found, then returns an empty AdminCatalog and no error. Otherwise it returns an error. Function allows user to use an AdminOrg to also fetch a Catalog. If user does not have proper credentials to perform administrator tasks then function returns an error. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/GET-Catalog-AdminView.html Deprecated: Use adminOrg.GetAdminCatalog instead

func (*AdminOrg) FindAdminCatalogRecords

func (adminOrg *AdminOrg) FindAdminCatalogRecords(name string) ([]*types.AdminCatalogRecord, error)

FindAdminCatalogRecords uses catalog name to return AdminCatalogRecord information.

func (*AdminOrg) FindCatalog

func (adminOrg *AdminOrg) FindCatalog(catalogName string) (Catalog, error)

Given a valid catalog name, FindCatalog returns a Catalog object. If no catalog is found, then returns an empty catalog and no error. Otherwise it returns an error. Function allows user to use an AdminOrg to also fetch a Catalog. Deprecated: Use adminOrg.GetCatalogByName instead

func (*AdminOrg) GetAdminCatalogByHref

func (adminOrg *AdminOrg) GetAdminCatalogByHref(catalogHref string) (*AdminCatalog, error)

GetAdminCatalogByHref finds an AdminCatalog by HREF On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetAdminCatalogById

func (adminOrg *AdminOrg) GetAdminCatalogById(catalogId string, refresh bool) (*AdminCatalog, error)

GetCatalogById finds an AdminCatalog by ID On success, returns a pointer to the AdminCatalog structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetAdminCatalogByName

func (adminOrg *AdminOrg) GetAdminCatalogByName(catalogName string, refresh bool) (*AdminCatalog, error)

GetCatalogByName finds an AdminCatalog by Name On success, returns a pointer to the AdminCatalog structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetAdminCatalogByNameOrId

func (adminOrg *AdminOrg) GetAdminCatalogByNameOrId(identifier string, refresh bool) (*AdminCatalog, error)

GetAdminCatalogByNameOrId finds an AdminCatalog by name or ID On success, returns a pointer to the AdminCatalog structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetAdminVDCByHref

func (adminOrg *AdminOrg) GetAdminVDCByHref(vdcHref string) (*AdminVdc, error)

GetVDCByHref retrieves a VDC using a direct call with the HREF

func (*AdminOrg) GetAdminVDCById

func (adminOrg *AdminOrg) GetAdminVDCById(vdcId string, refresh bool) (*AdminVdc, error)

GetAdminVDCById finds an Admin VDC by ID On success, returns a pointer to the AdminVdc structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetAdminVDCByName

func (adminOrg *AdminOrg) GetAdminVDCByName(vdcName string, refresh bool) (*AdminVdc, error)

GetAdminVDCByName finds an Admin VDC by Name On success, returns a pointer to the AdminVdc structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetAdminVDCByNameOrId

func (adminOrg *AdminOrg) GetAdminVDCByNameOrId(identifier string, refresh bool) (*AdminVdc, error)

GetAdminVDCByNameOrId finds an Admin VDC by Name Or ID On success, returns a pointer to the AdminVdc structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetAdminVdcByName

func (adminOrg *AdminOrg) GetAdminVdcByName(vdcname string) (AdminVdc, error)

GetAdminVdcByName function uses a valid VDC name and returns a admin VDC object. If no VDC is found, then it returns an empty VDC and no error. Otherwise it returns an empty VDC and an error. Deprecated: Use adminOrg.GetAdminVDCByName

func (*AdminOrg) GetCatalogByHref

func (adminOrg *AdminOrg) GetCatalogByHref(catalogHref string) (*Catalog, error)

GetCatalogByHref finds a Catalog by HREF On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetCatalogById

func (adminOrg *AdminOrg) GetCatalogById(catalogId string, refresh bool) (*Catalog, error)

GetCatalogById finds a Catalog by ID On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetCatalogByName

func (adminOrg *AdminOrg) GetCatalogByName(catalogName string, refresh bool) (*Catalog, error)

GetCatalogByName finds a Catalog by Name On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetCatalogByNameOrId

func (adminOrg *AdminOrg) GetCatalogByNameOrId(identifier string, refresh bool) (*Catalog, error)

GetCatalogByNameOrId finds a Catalog by name or ID On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetRole

func (adminOrg *AdminOrg) GetRole(roleName string) (*types.Reference, error)

GetRole finds a role within the organization Deprecated: use GetRoleReference

func (*AdminOrg) GetRoleReference

func (adminOrg *AdminOrg) GetRoleReference(roleName string) (*types.Reference, error)

GetRoleReference finds a role within the organization

func (*AdminOrg) GetUserByHref

func (adminOrg *AdminOrg) GetUserByHref(href string) (*OrgUser, error)

GetUserByHref returns a user by its HREF, without need for searching in the adminOrg user list

func (*AdminOrg) GetUserById

func (adminOrg *AdminOrg) GetUserById(id string, refresh bool) (*OrgUser, error)

GetUserById retrieves a user within an admin organization by ID Returns a valid user if it exists. If it doesn't, returns nil and ErrorEntityNotFound If argument refresh is true, the AdminOrg will be refreshed before searching. This is usually done after creating, modifying, or deleting users. If it is false, it will search within the data already in memory (useful when looping through the users and we know that no changes have occurred in the meantime)

func (*AdminOrg) GetUserByName

func (adminOrg *AdminOrg) GetUserByName(name string, refresh bool) (*OrgUser, error)

GetUserByName retrieves a user within an admin organization by name Returns a valid user if it exists. If it doesn't, returns nil and ErrorEntityNotFound If argument refresh is true, the AdminOrg will be refreshed before searching. This is usually done after creating, modifying, or deleting users. If it is false, it will search within the data already in memory (useful when looping through the users and we know that no changes have occurred in the meantime)

func (*AdminOrg) GetUserByNameOrId

func (adminOrg *AdminOrg) GetUserByNameOrId(identifier string, refresh bool) (*OrgUser, error)

GetUserByNameOrId retrieves a user within an admin organization by either name or ID Returns a valid user if it exists. If it doesn't, returns nil and ErrorEntityNotFound If argument refresh is true, the AdminOrg will be refreshed before searching. This is usually done after creating, modifying, or deleting users. If it is false, it will search within the data already in memory (useful when looping through the users and we know that no changes have occurred in the meantime)

func (*AdminOrg) GetVDCByHref

func (adminOrg *AdminOrg) GetVDCByHref(vdcHref string) (*Vdc, error)

GetVDCByHref retrieves a VDC using a direct call with the HREF

func (*AdminOrg) GetVDCById

func (adminOrg *AdminOrg) GetVDCById(vdcId string, refresh bool) (*Vdc, error)

GetVDCById finds a VDC by ID On success, returns a pointer to the Vdc structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetVDCByName

func (adminOrg *AdminOrg) GetVDCByName(vdcName string, refresh bool) (*Vdc, error)

GetVDCByName finds a VDC by Name On success, returns a pointer to the Vdc structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetVDCByNameOrId

func (adminOrg *AdminOrg) GetVDCByNameOrId(identifier string, refresh bool) (*Vdc, error)

GetVDCByNameOrId finds a VDC by name or ID On success, returns a pointer to the VDC structure and a nil error On failure, returns a nil pointer and an error

func (*AdminOrg) GetVdcByName

func (adminOrg *AdminOrg) GetVdcByName(vdcname string) (Vdc, error)

If user specifies valid vdc name then this returns a vdc object. If no vdc is found, then it returns an empty vdc and no error. Otherwise it returns an empty vdc and an error. This function allows users to use an AdminOrg to fetch a vdc as well. Deprecated: Use adminOrg.GetVDCByName instead

func (*AdminOrg) Refresh

func (adminOrg *AdminOrg) Refresh() error

Given an adminorg with a valid HREF, the function refetches the adminorg and updates the user's adminorg data. Otherwise if the function fails, it returns an error. Users should use refresh whenever they have a stale org due to the creation/update/deletion of a resource within the org or the org itself.

func (*AdminOrg) Update

func (adminOrg *AdminOrg) Update() (Task, error)

Updates the Org definition from current org struct contents. Any differences that may be legally applied will be updated. Returns an error if the call to vCD fails. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/PUT-Organization.html

type AdminVdc

type AdminVdc struct {
	AdminVdc *types.AdminVdc
	// contains filtered or unexported fields
}

func NewAdminVdc

func NewAdminVdc(cli *Client) *AdminVdc

func (*AdminVdc) Refresh

func (adminVdc *AdminVdc) Refresh() error

Given an adminVdc with a valid HREF, the function refresh the adminVdc and updates the adminVdc data. Returns an error on failure Users should use refresh whenever they suspect a stale VDC due to the creation/update/deletion of a resource within the the VDC itself.

func (*AdminVdc) Update

func (adminVdc *AdminVdc) Update() (AdminVdc, error)

Update function updates an Admin VDC from current VDC struct contents. Any differences that may be legally applied will be updated. Returns an empty AdminVdc struct and error if the call to vCD fails. API Documentation: https://vdc-repo.vmware.com/vmwb-repository/dcr-public/7a028e78-bd37-4a6a-8298-9c26c7eeb9aa/09142237-dd46-4dee-8326-e07212fb63a8/doc/doc/operations/PUT-Vdc.html

func (*AdminVdc) UpdateAsync

func (adminVdc *AdminVdc) UpdateAsync() (Task, error)

UpdateAsync updates VDC from current VDC struct contents. Any differences that may be legally applied will be updated. Returns an error if the call to vCD fails. API Documentation: https://vdc-repo.vmware.com/vmwb-repository/dcr-public/7a028e78-bd37-4a6a-8298-9c26c7eeb9aa/09142237-dd46-4dee-8326-e07212fb63a8/doc/doc/operations/PUT-Vdc.html

type Catalog

type Catalog struct {
	Catalog *types.Catalog
	// contains filtered or unexported fields
}

func NewCatalog

func NewCatalog(client *Client) *Catalog

func (*Catalog) Delete

func (catalog *Catalog) Delete(force, recursive bool) error

Deletes the Catalog, returning an error if the vCD call fails. Link to API call: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/DELETE-Catalog.html

func (*Catalog) FindCatalogItem

func (cat *Catalog) FindCatalogItem(catalogItemName string) (CatalogItem, error)

If catalog item is a valid CatalogItem and the call succeeds, then the function returns a CatalogItem. If the item does not exist, then it returns an empty CatalogItem. If the call fails at any point, it returns an error. Deprecated: use GetCatalogItemByName instead

func (*Catalog) GetCatalogItemByHref

func (cat *Catalog) GetCatalogItemByHref(catalogItemHref string) (*CatalogItem, error)

GetCatalogItemByHref finds a CatalogItem by HREF On success, returns a pointer to the CatalogItem structure and a nil error On failure, returns a nil pointer and an error

func (*Catalog) GetCatalogItemById

func (cat *Catalog) GetCatalogItemById(catalogItemId string, refresh bool) (*CatalogItem, error)

GetCatalogItemById finds a Catalog Item by ID On success, returns a pointer to the CatalogItem structure and a nil error On failure, returns a nil pointer and an error

func (*Catalog) GetCatalogItemByName

func (cat *Catalog) GetCatalogItemByName(catalogItemName string, refresh bool) (*CatalogItem, error)

GetCatalogItemByName finds a CatalogItem by Name On success, returns a pointer to the CatalogItem structure and a nil error On failure, returns a nil pointer and an error

func (*Catalog) GetCatalogItemByNameOrId

func (cat *Catalog) GetCatalogItemByNameOrId(identifier string, refresh bool) (*CatalogItem, error)

GetCatalogItemByNameOrId finds a Catalog Item by Name or ID On success, returns a pointer to the CatalogItem structure and a nil error On failure, returns a nil pointer and an error

func (*Catalog) GetMediaByHref

func (cat *Catalog) GetMediaByHref(mediaHref string) (*Media, error)

GetMediaByHref finds a Media by HREF On success, returns a pointer to the Media structure and a nil error On failure, returns a nil pointer and an error

func (*Catalog) GetMediaById

func (catalog *Catalog) GetMediaById(mediaId string) (*Media, error)

GetMediaById finds a Media by ID On success, returns a pointer to the Media structure and a nil error On failure, returns a nil pointer and an error

func (*Catalog) GetMediaByName

func (cat *Catalog) GetMediaByName(mediaName string, refresh bool) (*Media, error)

GetMediaByName finds a Media by Name On success, returns a pointer to the Media structure and a nil error On failure, returns a nil pointer and an error

func (*Catalog) GetMediaByNameOrId

func (cat *Catalog) GetMediaByNameOrId(identifier string, refresh bool) (*Media, error)

GetMediaByNameOrId finds a Media by Name or ID On success, returns a pointer to the Media structure and a nil error On failure, returns a nil pointer and an error

func (*Catalog) QueryMedia

func (catalog *Catalog) QueryMedia(mediaName string) (*MediaRecord, error)

QueryMedia returns media image found in system using `name` and `catalog name` as query.

func (*Catalog) Refresh

func (cat *Catalog) Refresh() error

Refresh gets a fresh copy of the catalog from vCD

func (*Catalog) UploadMediaImage

func (cat *Catalog) UploadMediaImage(mediaName, mediaDescription, filePath string, uploadPieceSize int64) (UploadTask, error)

func (*Catalog) UploadOvf

func (cat *Catalog) UploadOvf(ovaFileName, itemName, description string, uploadPieceSize int64) (UploadTask, error)

Uploads an ova file to a catalog. This method only uploads bits to vCD spool area. Returns errors if any occur during upload from vCD or upload process. On upload fail client may need to remove vCD catalog item which waits for files to be uploaded. Files from ova are extracted to system temp folder "govcd+random number" and left for inspection on error.

type CatalogItem

type CatalogItem struct {
	CatalogItem *types.CatalogItem
	// contains filtered or unexported fields
}

func FindMediaAsCatalogItem

func FindMediaAsCatalogItem(org *Org, catalogName, mediaName string) (CatalogItem, error)

Finds media in catalog and returns catalog item Deprecated: Use catalog.GetMediaByName()

func NewCatalogItem

func NewCatalogItem(cli *Client) *CatalogItem

func (*CatalogItem) Delete

func (catalogItem *CatalogItem) Delete() error

Deletes the Catalog Item, returning an error if the vCD call fails. Link to API call: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/DELETE-CatalogItem.html

func (*CatalogItem) GetVAppTemplate

func (catalogItem *CatalogItem) GetVAppTemplate() (VAppTemplate, error)

type Client

type Client struct {
	APIVersion    string      // The API version required
	VCDToken      string      // Access Token (authorization header)
	VCDAuthHeader string      // Authorization header
	VCDHREF       url.URL     // VCD API ENDPOINT
	Http          http.Client // HttpClient is the client to use. Default will be used if not provided.
	IsSysAdmin    bool        // flag if client is connected as system administrator

	// MaxRetryTimeout specifies a time limit (in seconds) for retrying requests made by the SDK
	// where vCloud director may take time to respond and retry mechanism is needed.
	// This must be >0 to avoid instant timeout errors.
	MaxRetryTimeout int
}

Client provides a client to vCloud Director, values can be populated automatically using the Authenticate method.

func (*Client) ExecuteParamRequestWithCustomError

func (client *Client) ExecuteParamRequestWithCustomError(pathURL string, params map[string]string,
	requestType, contentType, errorMessage string, payload interface{}, errType error) (*http.Response, error)

ExecuteParamRequestWithCustomError behaves exactly like ExecuteRequestWithCustomError but accepts query parameter specification

func (*Client) ExecuteRequest

func (client *Client) ExecuteRequest(pathURL, requestType, contentType, errorMessage string, payload, out interface{}) (*http.Response, error)

Helper function creates request, runs it, check responses and parses out interface from response. pathURL - request URL requestType - HTTP method type contentType - value to set for "Content-Type" errorMessage - error message to return when error happens payload - XML struct which will be marshalled and added as body/payload out - structure to be used for unmarshalling xml E.g. unmarshalledAdminOrg := &types.AdminOrg{} client.ExecuteRequest(adminOrg.AdminOrg.HREF, http.MethodGet, "", "error refreshing organization: %s", nil, unmarshalledAdminOrg)

func (*Client) ExecuteRequestWithCustomError

func (client *Client) ExecuteRequestWithCustomError(pathURL, requestType, contentType, errorMessage string,
	payload interface{}, errType error) (*http.Response, error)

ExecuteRequestWithCustomError sends the request and checks for 2xx response. If the returned status code was not as expected - the returned error will be unmarshaled to `errType` which implements Go's standard `error` interface.

func (*Client) ExecuteRequestWithoutResponse

func (client *Client) ExecuteRequestWithoutResponse(pathURL, requestType, contentType, errorMessage string, payload interface{}) error

Helper function creates request, runs it, checks response and do not expect any values from it. pathURL - request URL requestType - HTTP method type contentType - value to set for "Content-Type" errorMessage - error message to return when error happens payload - XML struct which will be marshalled and added as body/payload E.g. client.ExecuteRequestWithoutResponse(catalogItemHREF.String(), http.MethodDelete, "", "error deleting Catalog item: %s", nil)

func (*Client) ExecuteTaskRequest

func (client *Client) ExecuteTaskRequest(pathURL, requestType, contentType, errorMessage string, payload interface{}) (Task, error)

Helper function creates request, runs it, checks response and parses task from response. pathURL - request URL requestType - HTTP method type contentType - value to set for "Content-Type" errorMessage - error message to return when error happens payload - XML struct which will be marshalled and added as body/payload E.g. client.ExecuteTaskRequest(updateDiskLink.HREF, http.MethodPut, updateDiskLink.Type, "error updating disk: %s", xmlPayload)

func (*Client) FindVMByHREF deprecated

func (cli *Client) FindVMByHREF(vmHREF string) (VM, error)

Deprecated: use client.GetVMByHref instead

func (*Client) GetVMByHref

func (client *Client) GetVMByHref(vmHref string) (*VM, error)

GetVMByHref returns a VM reference by running a vCD API call If no valid VM is found, it returns a nil VM reference and an error Note that the pointer receiver here is a Client instead of a VApp, because there are cases where we know the VM HREF but not which VApp it belongs to.

func (*Client) NewRequest

func (cli *Client) NewRequest(params map[string]string, method string, reqUrl url.URL, body io.Reader) *http.Request

NewRequest creates a new HTTP request and applies necessary auth headers if set.

func (*Client) NewRequestWitNotEncodedParams

func (cli *Client) NewRequestWitNotEncodedParams(params map[string]string, notEncodedParams map[string]string, method string, reqUrl url.URL, body io.Reader) *http.Request

Function allow to pass complex values params which shouldn't be encoded like for queries. e.g. /query?filter=(name=foo)

func (*Client) QueryWithNotEncodedParams

func (client *Client) QueryWithNotEncodedParams(params map[string]string, notEncodedParams map[string]string) (Results, error)

QueryWithNotEncodedParams uses Query API to search for requested data

type DhcpSettings

type DhcpSettings struct {
	IsEnabled        bool
	MaxLeaseTime     int
	DefaultLeaseTime int
	IPRange          *types.IPRange
}

struct type used to pass information for vApp network DHCP

type Disk

type Disk struct {
	Disk *types.Disk
	// contains filtered or unexported fields
}

Independent disk

func FindDiskByHREF

func FindDiskByHREF(client *Client, href string) (*Disk, error)

Find an independent disk by VDC client and disk href Deprecated: Use VDC.GetDiskByHref()

func NewDisk

func NewDisk(cli *Client) *Disk

Init independent disk struct

func (*Disk) AttachedVM

func (disk *Disk) AttachedVM() (*types.Reference, error)

Get a VM that is attached the disk An independent disk can be attached to at most one virtual machine. If the disk isn't attached to any VM, return empty VM reference and no error. Otherwise return the first VM reference and no error. Reference: vCloud API Programming Guide for Service Providers vCloud API 30.0 PDF Page 107, https://vdc-download.vmware.com/vmwb-repository/dcr-public/1b6cf07d-adb3-4dba-8c47-9c1c92b04857/ 241956dd-e128-4fcc-8131-bf66e1edd895/vcloud_sp_api_guide_30_0.pdf

func (*Disk) Delete

func (disk *Disk) Delete() (Task, error)

Remove an independent disk 1 Verify the independent disk is not connected to any VM 2 Delete the independent disk. Make a DELETE request to the URL in the rel="remove" link in the Disk 3 Return task of independent disk deletion If the independent disk is connected to a VM, the task will be failed. Reference: vCloud API Programming Guide for Service Providers vCloud API 30.0 PDF Page 106 - 107, https://vdc-download.vmware.com/vmwb-repository/dcr-public/1b6cf07d-adb3-4dba-8c47-9c1c92b04857/ 241956dd-e128-4fcc-8131-bf66e1edd895/vcloud_sp_api_guide_30_0.pdf

func (*Disk) Refresh

func (disk *Disk) Refresh() error

Refresh the disk information by disk href

func (*Disk) Update

func (disk *Disk) Update(newDiskInfo *types.Disk) (Task, error)

Update an independent disk 1 Verify the independent disk is not connected to any VM 2 Use newDiskInfo to change update the independent disk 3 Return task of independent disk update If the independent disk is connected to a VM, the task will be failed. Reference: vCloud API Programming Guide for Service Providers vCloud API 30.0 PDF Page 104 - 106, https://vdc-download.vmware.com/vmwb-repository/dcr-public/1b6cf07d-adb3-4dba-8c47-9c1c92b04857/ 241956dd-e128-4fcc-8131-bf66e1edd895/vcloud_sp_api_guide_30_0.pdf

type DiskRecord

type DiskRecord struct {
	Disk *types.DiskRecordType
	// contains filtered or unexported fields
}

Independent disk query record

func NewDiskRecord

func NewDiskRecord(cli *Client) *DiskRecord

Create instance with reference to types.DiskRecordType

type EdgeGateway

type EdgeGateway struct {
	EdgeGateway *types.EdgeGateway
	// contains filtered or unexported fields
}

func CreateAndConfigureEdgeGateway

func CreateAndConfigureEdgeGateway(vcdClient *VCDClient, orgName, vdcName, egwName string, egwConfiguration *types.EdgeGateway) (EdgeGateway, error)

CreateAndConfigureEdgeGateway creates an edge gateway using a full configuration structure

func CreateEdgeGateway

func CreateEdgeGateway(vcdClient *VCDClient, egwc EdgeGatewayCreation) (EdgeGateway, error)

CreateEdgeGateway creates an edge gateway using a simplified configuration structure

func NewEdgeGateway

func NewEdgeGateway(cli *Client) *EdgeGateway

func (*EdgeGateway) AddDNATRule

func (egw *EdgeGateway) AddDNATRule(ruleDetails NatRule) (*types.NatRule, error)

AddDNATRule creates DNAT rule and returns the NAT struct that was created or an error. Allows assigning a specific Org VDC or an external network. When edge gateway is advanced vCD API uses element <tag> to map with NSX edge gateway ID. A known issue is that updating rule using User interface resets <tag> and as result mapping is lost. Getting using NatRule.ID won't be valid anymore. Old functions AddNATPortMapping and AddNATMapping assigned rule only to first external network

func (*EdgeGateway) AddDhcpPool

func (egw *EdgeGateway) AddDhcpPool(network *types.OrgVDCNetwork, dhcppool []interface{}) (Task, error)

func (*EdgeGateway) AddIpsecVPN

func (egw *EdgeGateway) AddIpsecVPN(ipsecVPNConfig *types.EdgeGatewayServiceConfiguration) (Task, error)

func (*EdgeGateway) AddNATMapping deprecated

func (egw *EdgeGateway) AddNATMapping(natType, externalIP, internalIP string) (Task, error)

Deprecated: Use eGW.AddNATRule()

func (*EdgeGateway) AddNATPortMapping deprecated

func (egw *EdgeGateway) AddNATPortMapping(natType, externalIP, externalPort, internalIP, internalPort, protocol, icmpSubType string) (Task, error)

Deprecated: Use eGW.AddNATPortMappingWithUplink()

func (egw *EdgeGateway) AddNATPortMappingWithUplink(network *types.OrgVDCNetwork, natType, externalIP, externalPort, internalIP, internalPort, protocol, icmpSubType string) (Task, error)

Deprecated: Use eGW.AddNATFirewallRule()

func (*EdgeGateway) AddNATRule deprecated

func (egw *EdgeGateway) AddNATRule(network *types.OrgVDCNetwork, natType, externalIP, internalIP string) (Task, error)

Deprecated: Use eGW.AddSNATRule() or eGW.AddDNATRule()

func (*EdgeGateway) AddNATRuleAsync

func (egw *EdgeGateway) AddNATRuleAsync(ruleDetails NatRule) (Task, error)

AddNATRuleAsync creates NAT rule and return task or err Allows assigning specific network Org VDC or external. Old function AddNATPortMapping and AddNATMapping function shouldn't be used because assigns rule to first external network

func (*EdgeGateway) AddSNATRule

func (egw *EdgeGateway) AddSNATRule(networkHref, externalIP, internalIP, description string) (*types.NatRule, error)

AddSNATRule creates SNAT rule and returns created NAT rule or error. Allows assigning a specific Org VDC or an external network. Old functions AddNATPortMapping and AddNATMapping aren't correct as assigned rule only to first external network

func (*EdgeGateway) Create1to1Mapping

func (egw *EdgeGateway) Create1to1Mapping(internal, external, description string) (Task, error)

func (*EdgeGateway) CreateFirewallRules

func (egw *EdgeGateway) CreateFirewallRules(defaultAction string, rules []*types.FirewallRule) (Task, error)

func (*EdgeGateway) CreateLbAppProfile

func (egw *EdgeGateway) CreateLbAppProfile(lbAppProfileConfig *types.LbAppProfile) (*types.LbAppProfile, error)

CreateLbAppProfile creates a load balancer application profile based on mandatory fields. It is a synchronous operation. It returns created object with all fields (including ID) populated or an error.

func (*EdgeGateway) CreateLbAppRule

func (egw *EdgeGateway) CreateLbAppRule(lbAppRuleConfig *types.LbAppRule) (*types.LbAppRule, error)

CreateLbAppRule creates a load balancer application rule based on mandatory fields. It is a synchronous operation. It returns created object with all fields (including ID) populated or an error.

func (*EdgeGateway) CreateLbServerPool

func (egw *EdgeGateway) CreateLbServerPool(lbPoolConfig *types.LbPool) (*types.LbPool, error)

CreateLbServerPool creates a load balancer server pool based on mandatory fields. It is a synchronous operation. It returns created object with all fields (including ID) populated or an error. Name and Algorithm fields must be populated.

func (*EdgeGateway) CreateLbServiceMonitor

func (egw *EdgeGateway) CreateLbServiceMonitor(lbMonitorConfig *types.LbMonitor) (*types.LbMonitor, error)

CreateLbServiceMonitor creates a load balancer service monitor based on mandatory fields. It is a synchronous operation. It returns created object with all fields (including ID) populated or an error.

func (*EdgeGateway) CreateLbVirtualServer

func (egw *EdgeGateway) CreateLbVirtualServer(lbVirtualServerConfig *types.LbVirtualServer) (*types.LbVirtualServer, error)

CreateLbVirtualServer creates a load balancer virtual server based on mandatory fields. It is a synchronous operation. It returns created object with all fields (including ID) populated or an error. Name, Protocol, Port and IpAddress fields must be populated

func (*EdgeGateway) CreateNsxvFirewallRule

func (egw *EdgeGateway) CreateNsxvFirewallRule(firewallRuleConfig *types.EdgeFirewallRule, aboveRuleId string) (*types.EdgeFirewallRule, error)

CreateNsxvFirewallRule creates firewall rule using proxied NSX-V API. It is a synchronuous operation. It returns an object with all fields populated (including ID) If aboveRuleId is not empty, it will send a query parameter aboveRuleId= which instructs NSX to place this rule above the specified rule ID

func (*EdgeGateway) CreateNsxvNatRule

func (egw *EdgeGateway) CreateNsxvNatRule(natRuleConfig *types.EdgeNatRule) (*types.EdgeNatRule, error)

CreateNsxvNatRule creates NAT rule using proxied NSX-V API. It is a synchronuous operation. It returns an object with all fields populated (including ID)

func (*EdgeGateway) Delete

func (egw *EdgeGateway) Delete(force bool, recursive bool) error

Deletes the edge gateway, returning an error with the operation result. https://code.vmware.com/apis/442/vcloud-director/doc/doc/operations/DELETE-EdgeGateway.html

func (*EdgeGateway) DeleteAsync

func (egw *EdgeGateway) DeleteAsync(force bool, recursive bool) (Task, error)

Deletes the edge gateway, returning a task and an error with the operation result. https://code.vmware.com/apis/442/vcloud-director/doc/doc/operations/DELETE-EdgeGateway.html

func (*EdgeGateway) DeleteLbAppProfile

func (egw *EdgeGateway) DeleteLbAppProfile(lbAppProfileConfig *types.LbAppProfile) error

DeleteLbAppProfile is able to delete the types.LbAppProfile type by Name and/or ID. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match.

func (*EdgeGateway) DeleteLbAppProfileById

func (egw *EdgeGateway) DeleteLbAppProfileById(id string) error

DeleteLbAppProfileById wraps DeleteLbAppProfile and requires only ID for deletion

func (*EdgeGateway) DeleteLbAppProfileByName

func (egw *EdgeGateway) DeleteLbAppProfileByName(name string) error

DeleteLbAppProfileByName wraps DeleteLbAppProfile and requires only Name for deletion

func (*EdgeGateway) DeleteLbAppRule

func (egw *EdgeGateway) DeleteLbAppRule(lbAppRuleConfig *types.LbAppRule) error

DeleteLbAppRule is able to delete the types.LbAppRule type by Name and/or ID. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match.

func (*EdgeGateway) DeleteLbAppRuleById

func (egw *EdgeGateway) DeleteLbAppRuleById(id string) error

DeleteLBAppRuleById wraps DeleteLbAppRule and requires only ID for deletion

func (*EdgeGateway) DeleteLbAppRuleByName

func (egw *EdgeGateway) DeleteLbAppRuleByName(name string) error

DeleteLbAppRuleByName wraps DeleteLbAppRule and requires only Name for deletion

func (*EdgeGateway) DeleteLbServerPool

func (egw *EdgeGateway) DeleteLbServerPool(lbPoolConfig *types.LbPool) error

DeleteLbServerPool is able to delete the types.LbPool type by Name and/or ID. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match.

func (*EdgeGateway) DeleteLbServerPoolById

func (egw *EdgeGateway) DeleteLbServerPoolById(id string) error

DeleteLbServerPoolById wraps DeleteLbServerPool and requires only ID for deletion

func (*EdgeGateway) DeleteLbServerPoolByName

func (egw *EdgeGateway) DeleteLbServerPoolByName(name string) error

DeleteLbServerPoolByName wraps DeleteLbServerPool and requires only Name for deletion

func (*EdgeGateway) DeleteLbServiceMonitor

func (egw *EdgeGateway) DeleteLbServiceMonitor(lbMonitorConfig *types.LbMonitor) error

DeleteLbServiceMonitor is able to delete the types.LbMonitor type by Name and/or ID. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match.

func (*EdgeGateway) DeleteLbServiceMonitorById

func (egw *EdgeGateway) DeleteLbServiceMonitorById(id string) error

DeleteLbServiceMonitorById wraps DeleteLbServiceMonitor and requires only ID for deletion

func (*EdgeGateway) DeleteLbServiceMonitorByName

func (egw *EdgeGateway) DeleteLbServiceMonitorByName(name string) error

DeleteLbServiceMonitorByName wraps DeleteLbServiceMonitor and requires only Name for deletion

func (*EdgeGateway) DeleteLbVirtualServer

func (egw *EdgeGateway) DeleteLbVirtualServer(lbVirtualServerConfig *types.LbVirtualServer) error

DeleteLbVirtualServer is able to delete the types.LbVirtualServer type by Name and/or ID. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match.

func (*EdgeGateway) DeleteLbVirtualServerById

func (egw *EdgeGateway) DeleteLbVirtualServerById(id string) error

DeleteLbVirtualServerById wraps DeleteLbVirtualServer and requires only ID for deletion

func (*EdgeGateway) DeleteLbVirtualServerByName

func (egw *EdgeGateway) DeleteLbVirtualServerByName(name string) error

DeleteLbVirtualServerByName wraps DeleteLbVirtualServer and requires only Name for deletion

func (*EdgeGateway) DeleteNsxvFirewallRuleById

func (egw *EdgeGateway) DeleteNsxvFirewallRuleById(id string) error

DeleteNsxvFirewallRuleById deletes types.EdgeFirewallRule by real (not the number shown in UI) firewall rule ID as shown in the UI using proxied NSX-V API. It returns and error `ErrorEntityNotFound` if the firewall rule is not found.

func (*EdgeGateway) DeleteNsxvNatRuleById

func (egw *EdgeGateway) DeleteNsxvNatRuleById(id string) error

DeleteNsxvNatRuleById deletes types.EdgeNatRule by NAT rule ID as shown in the UI using proxied NSX-V API. It returns and error `ErrorEntityNotFound` if the NAT rule is now found.

func (*EdgeGateway) GetAllNsxvFirewallRules

func (egw *EdgeGateway) GetAllNsxvFirewallRules() ([]*types.EdgeFirewallRule, error)

GetAllNsxvFirewallRules retrieves all firewall rules and returns []*types.EdgeFirewallRule or an error of type ErrorEntityNotFound if there are no firewall rules

func (*EdgeGateway) GetAnyVnicIndexByNetworkName

func (egw *EdgeGateway) GetAnyVnicIndexByNetworkName(networkName string) (*int, string, error)

GetAnyVnicIndexByNetworkName parses XML structure of vNic mapping to networks in edge gateway XML and returns *int of vNic index and network type by network name networkName cannot be empty networkType will be one of: 'internal', 'uplink', 'trunk', 'subinterface'

Warning: this function assumes that there are no duplicate network names attached. If it is so this function will return the first network

func (*EdgeGateway) GetFirewallConfig

func (egw *EdgeGateway) GetFirewallConfig() (*types.FirewallConfigWithXml, error)

GetFirewallConfig retrieves firewall configuration and can be used to alter master configuration options. These are 3 fields only: FirewallConfigWithXml.Enabled, FirewallConfigWithXml.DefaultPolicy.LoggingEnabled and FirewallConfigWithXml.DefaultPolicy.Action

func (*EdgeGateway) GetLBGeneralParams

func (egw *EdgeGateway) GetLBGeneralParams() (*types.LbGeneralParamsWithXml, error)

GetLBGeneralParams retrieves load balancer configuration of `&types.LoadBalancer` and can be used to access global configuration options. These are 4 fields only: LoadBalancer.Enabled, LoadBalancer.AccelerationEnabled, LoadBalancer.Logging.Enable, LoadBalancer.Logging.LogLevel

func (*EdgeGateway) GetLbAppProfileById

func (egw *EdgeGateway) GetLbAppProfileById(id string) (*types.LbAppProfile, error)

GetLbAppProfileById wraps getLbAppProfile and needs only an ID for lookup

func (*EdgeGateway) GetLbAppProfileByName

func (egw *EdgeGateway) GetLbAppProfileByName(name string) (*types.LbAppProfile, error)

GetLbAppProfileByName wraps getLbAppProfile and needs only a Name for lookup

func (*EdgeGateway) GetLbAppRuleById

func (egw *EdgeGateway) GetLbAppRuleById(id string) (*types.LbAppRule, error)

ReadLBAppRuleById wraps getLbAppRule and needs only an ID for lookup

func (*EdgeGateway) GetLbAppRuleByName

func (egw *EdgeGateway) GetLbAppRuleByName(name string) (*types.LbAppRule, error)

GetLbAppRuleByName wraps getLbAppRule and needs only a Name for lookup

func (*EdgeGateway) GetLbServerPoolById

func (egw *EdgeGateway) GetLbServerPoolById(id string) (*types.LbPool, error)

GetLbServerPoolByName wraps getLbServerPool and needs only an ID for lookup

func (*EdgeGateway) GetLbServerPoolByName

func (egw *EdgeGateway) GetLbServerPoolByName(name string) (*types.LbPool, error)

GetLbServerPoolByName wraps getLbServerPool and needs only a Name for lookup

func (*EdgeGateway) GetLbServiceMonitorById

func (egw *EdgeGateway) GetLbServiceMonitorById(id string) (*types.LbMonitor, error)

GetLbServiceMonitorById wraps getLbServiceMonitor and needs only an ID for lookup

func (*EdgeGateway) GetLbServiceMonitorByName

func (egw *EdgeGateway) GetLbServiceMonitorByName(name string) (*types.LbMonitor, error)

GetLbServiceMonitorByName wraps getLbServiceMonitor and needs only a Name for lookup

func (*EdgeGateway) GetLbVirtualServerById

func (egw *EdgeGateway) GetLbVirtualServerById(id string) (*types.LbVirtualServer, error)

GetLbVirtualServerById wraps getLbVirtualServer and needs only an ID for lookup

func (*EdgeGateway) GetLbVirtualServerByName

func (egw *EdgeGateway) GetLbVirtualServerByName(name string) (*types.LbVirtualServer, error)

GetLbVirtualServerByName wraps getLbVirtualServer and needs only a Name for lookup

func (*EdgeGateway) GetNatRule

func (egw *EdgeGateway) GetNatRule(id string) (*types.NatRule, error)

GetNatRule returns NAT rule or error.

func (*EdgeGateway) GetNetworkNameAndTypeByVnicIndex

func (egw *EdgeGateway) GetNetworkNameAndTypeByVnicIndex(vNicIndex int) (string, string, error)

GetNetworkNameAndTypeByVnicIndex returns network name and network type for given vNic index returned networkType can be one of: 'internal', 'uplink', 'trunk', 'subinterface'

func (*EdgeGateway) GetNetworks

func (egw *EdgeGateway) GetNetworks() ([]SimpleNetworkIdentifier, error)

GetNetworks returns the list of networks associated with an edge gateway In the return structure, an interfaceType of "uplink" indicates an external network, while "internal" is for Org VDC routed networks

func (*EdgeGateway) GetNsxvFirewallRuleById

func (egw *EdgeGateway) GetNsxvFirewallRuleById(id string) (*types.EdgeFirewallRule, error)

GetNsxvFirewallRuleById retrieves types.EdgeFirewallRule by real (not the number shown in UI) firewall rule ID as shown in the UI using proxied NSX-V API. It returns and error `ErrorEntityNotFound` if the firewall rule is not found

func (*EdgeGateway) GetNsxvNatRuleById

func (egw *EdgeGateway) GetNsxvNatRuleById(id string) (*types.EdgeNatRule, error)

GetNsxvNatRuleById retrieves types.EdgeNatRule by NAT rule ID as shown in the UI using proxied NSX-V API. It returns and error `ErrorEntityNotFound` if the NAT rule is now found.

func (*EdgeGateway) GetVnicIndexByNetworkNameAndType

func (egw *EdgeGateway) GetVnicIndexByNetworkNameAndType(networkName, networkType string) (*int, error)

GetVnicIndexByNetworkNameAndType returns *int of vNic index for specified network name and network type networkType one of: 'internal', 'uplink', 'trunk', 'subinterface' networkName cannot be empty

func (*EdgeGateway) HasAdvancedNetworking

func (egw *EdgeGateway) HasAdvancedNetworking() bool

HasAdvancedNetworking returns true if the edge gateway has advanced network configuration enabled

func (*EdgeGateway) HasDefaultGateway

func (egw *EdgeGateway) HasDefaultGateway() bool

HasDefaultGateway returns true if the edge gateway uses one of the external networks as default gateway

func (*EdgeGateway) Refresh

func (egw *EdgeGateway) Refresh() error

func (*EdgeGateway) Remove1to1Mapping

func (egw *EdgeGateway) Remove1to1Mapping(internal, external string) (Task, error)

func (*EdgeGateway) RemoveIpsecVPN

func (egw *EdgeGateway) RemoveIpsecVPN() (Task, error)

Removes an Edge Gateway VPN, by passing an empty configuration

func (*EdgeGateway) RemoveNATMapping deprecated

func (egw *EdgeGateway) RemoveNATMapping(natType, externalIP, internalIP, port string) (Task, error)

Deprecated: use one of RemoveNATRuleAsync, RemoveNATRule

func (*EdgeGateway) RemoveNATPortMapping deprecated

func (egw *EdgeGateway) RemoveNATPortMapping(natType, externalIP, externalPort, internalIP, internalPort string) (Task, error)

Deprecated: use one of RemoveNATRuleAsync, RemoveNATRule

func (*EdgeGateway) RemoveNATRule

func (egw *EdgeGateway) RemoveNATRule(id string) error

RemoveNATRule removes NAT removes NAT rule identified by ID and handles task. Returns error if issues rise. Old functions RemoveNATPortMapping and RemoveNATMapping removed using rule details and expected interface to be of external network type.

func (*EdgeGateway) RemoveNATRuleAsync

func (egw *EdgeGateway) RemoveNATRuleAsync(id string) (Task, error)

RemoveNATRuleAsync removes NAT rule or returns an error. Old functions RemoveNATPortMapping and RemoveNATMapping removed using rule details and expected interface to be of external network type.

func (*EdgeGateway) UpdateFirewallConfig

func (egw *EdgeGateway) UpdateFirewallConfig(enabled, defaultLoggingEnabled bool, defaultAction string) (*types.FirewallConfigWithXml, error)

UpdateFirewallConfig allows to update firewall configuration. It accepts three fields (Enabled, DefaultLoggingEnabled, DefaultAction) and uses them to construct types.FirewallConfigWithXml without altering other options to prevent config corruption. They are represented in firewall configuration page in the UI.

func (*EdgeGateway) UpdateLBGeneralParams

func (egw *EdgeGateway) UpdateLBGeneralParams(enabled, accelerationEnabled, loggingEnabled bool, logLevel string) (*types.LbGeneralParamsWithXml, error)

UpdateLBGeneralParams allows to update global load balancer configuration. It accepts four fields (Enabled, AccelerationEnabled, Logging.Enable, Logging.LogLevel) and uses them to construct types.LbGeneralParamsWithXml without altering other options to prevent config corruption. They are represented in load balancer global configuration tab in the UI.

func (*EdgeGateway) UpdateLbAppProfile

func (egw *EdgeGateway) UpdateLbAppProfile(lbAppProfileConfig *types.LbAppProfile) (*types.LbAppProfile, error)

UpdateLbAppProfile updates types.LbAppProfile with all fields. At least name or ID must be specified. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match.

func (*EdgeGateway) UpdateLbAppRule

func (egw *EdgeGateway) UpdateLbAppRule(lbAppRuleConfig *types.LbAppRule) (*types.LbAppRule, error)

UpdateLbAppRule updates types.LbAppRule with all fields. At least name or ID must be specified. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match.

func (*EdgeGateway) UpdateLbServerPool

func (egw *EdgeGateway) UpdateLbServerPool(lbPoolConfig *types.LbPool) (*types.LbPool, error)

UpdateLbServerPool updates types.LbPool with all fields. At least name or ID must be specified. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match. Name and Algorithm fields must be populated.

func (*EdgeGateway) UpdateLbServiceMonitor

func (egw *EdgeGateway) UpdateLbServiceMonitor(lbMonitorConfig *types.LbMonitor) (*types.LbMonitor, error)

UpdateLbServiceMonitor updates types.LbMonitor with all fields. At least name or ID must be specified. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match.

func (*EdgeGateway) UpdateLbVirtualServer

func (egw *EdgeGateway) UpdateLbVirtualServer(lbVirtualServerConfig *types.LbVirtualServer) (*types.LbVirtualServer, error)

UpdateLbVirtualServer updates types.LbVirtualServer with all fields. At least name or ID must be specified. If both - Name and ID are specified it performs a lookup by ID and returns an error if the specified name and found name do not match. Name, Protocol, Port and IpAddress fields must be populated

func (*EdgeGateway) UpdateNatRule

func (egw *EdgeGateway) UpdateNatRule(natRule *types.NatRule) (*types.NatRule, error)

UpdateNatRule updates NAT rule and handles task. Returns updated NAT rule or error.

func (*EdgeGateway) UpdateNatRuleAsync

func (egw *EdgeGateway) UpdateNatRuleAsync(natRule *types.NatRule) (Task, error)

UpdateNatRuleAsync updates NAT rule and returns task or error.

func (*EdgeGateway) UpdateNsxvFirewallRule

func (egw *EdgeGateway) UpdateNsxvFirewallRule(firewallRuleConfig *types.EdgeFirewallRule) (*types.EdgeFirewallRule, error)

UpdateNsxvFirewallRule updates types.EdgeFirewallRule with all fields using proxied NSX-V API. Real firewall rule ID (not the number shown in UI) is mandatory to perform the update.

func (*EdgeGateway) UpdateNsxvNatRule

func (egw *EdgeGateway) UpdateNsxvNatRule(natRuleConfig *types.EdgeNatRule) (*types.EdgeNatRule, error)

UpdateNsxvNatRule updates types.EdgeNatRule with all fields using proxied NSX-V API. ID is mandatory to perform the update.

type EdgeGatewayCreation

type EdgeGatewayCreation struct {
	ExternalNetworks           []string // List of external networks to be linked to this gateway
	DefaultGateway             string   // Which network should be used as default gateway (empty name = no default gateway)
	OrgName                    string   // parent Org
	VdcName                    string   // parent VDC
	Name                       string   // edge gateway name
	Description                string   // Optional description
	BackingConfiguration       string   // Type of backing configuration (compact, full)
	AdvancedNetworkingEnabled  bool     // enable advanced gateway
	HAEnabled                  bool     // enable HA
	UseDefaultRouteForDNSRelay bool     // True if the default gateway should be used as the DNS relay
	DistributedRoutingEnabled  bool     // If advanced networking enabled, also enable distributed routing
}

Simple structure to pass Edge Gateway creation parameters.

type EjectTask

type EjectTask struct {
	*Task
	// contains filtered or unexported fields
}

func NewEjectTask

func NewEjectTask(task *Task, vm *VM) *EjectTask

Creates wrapped Task which is dedicated for eject media functionality and provides additional functionality to answer VM questions

func (*EjectTask) WaitInspectTaskCompletion

func (ejectTask *EjectTask) WaitInspectTaskCompletion(isAnswerYes bool, delay time.Duration) error

function which handles answers for ejecting

func (*EjectTask) WaitTaskCompletion

func (ejectTask *EjectTask) WaitTaskCompletion(isAnswerYes bool) error

Checks the status of the task every 3 seconds and returns when the eject task is either completed or failed

type Envelope

type Envelope struct {
	File []struct {
		HREF      string `xml:"href,attr"`
		ID        string `xml:"id,attr"`
		Size      int    `xml:"size,attr"`
		ChunkSize int    `xml:"chunkSize,attr"`
	} `xml:"References>File"`
}

Envelope is a ovf description root element. File contains information for vmdk files. Namespace: http://schemas.dmtf.org/ovf/envelope/1 Description: Envelope is a ovf description root element. File contains information for vmdk files..

type ExternalNetwork

type ExternalNetwork struct {
	ExternalNetwork *types.ExternalNetwork
	// contains filtered or unexported fields
}

func GetExternalNetwork

func GetExternalNetwork(vcdClient *VCDClient, networkName string) (*ExternalNetwork, error)

GetExternalNetwork returns an ExternalNetwork reference if user the network name matches an existing one. If no valid external network is found, it returns an empty ExternalNetwork reference and an error Deprecated: use vcdClient.GetExternalNetworkByName instead

func NewExternalNetwork

func NewExternalNetwork(cli *Client) *ExternalNetwork

func (*ExternalNetwork) Delete

func (externalNetwork *ExternalNetwork) Delete() (Task, error)

func (*ExternalNetwork) DeleteWait

func (externalNetwork *ExternalNetwork) DeleteWait() error

func (ExternalNetwork) Refresh

func (externalNetwork ExternalNetwork) Refresh() error

type InspectionFunc

type InspectionFunc func(task *types.Task, howManyTimes int, elapsed time.Duration, first, last bool)

This callback function can be passed to task.WaitInspectTaskCompletion to perform user defined operations * task is the task object being processed * howManyTimes is the number of times the task has been refreshed * elapsed is how much time since the task was initially processed * first is true if this is the first refresh of the task * last is true if the function is being called for the last time.

type Media

type Media struct {
	Media *types.Media
	// contains filtered or unexported fields
}

func NewMedia

func NewMedia(cli *Client) *Media

func (*Media) AddMetadata

func (media *Media) AddMetadata(key string, value string) (*Media, error)

AddMetadata adds metadata key/value pair provided as input.

func (*Media) AddMetadataAsync

func (media *Media) AddMetadataAsync(key string, value string) (Task, error)

AddMetadataAsync calls private function addMetadata() with Media.client and Media.Media.HREF which adds metadata key/value pair provided as input.

func (*Media) Delete

func (media *Media) Delete() (Task, error)

Deletes the Media Item, returning an error if the vCD call fails. Link to API call: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/DELETE-Media.html

func (*Media) DeleteMetadata

func (media *Media) DeleteMetadata(key string) error

DeleteMetadata deletes metadata depending on key provided as input from media item.

func (*Media) DeleteMetadataAsync

func (media *Media) DeleteMetadataAsync(key string) (Task, error)

DeleteMetadataAsync calls private function deleteMetadata() with Media.client and Media.Media.HREF which deletes metadata depending on key provided as input from media item.

func (*Media) GetMetadata

func (media *Media) GetMetadata() (*types.Metadata, error)

GetMetadata calls private function getMetadata() with Media.client and Media.Media.HREF which returns a *types.Metadata struct for provided media item input.

func (*Media) Refresh

func (media *Media) Refresh() error

Refresh refreshes the media information by href

type MediaItem deprecated

type MediaItem struct {
	MediaItem *types.MediaRecordType
	// contains filtered or unexported fields
}

Deprecated: use MediaRecord

func NewMediaItem deprecated

func NewMediaItem(vdc *Vdc) *MediaItem

Deprecated: use NewMediaRecord

func (*MediaItem) AddMetadata

func (mediaItem *MediaItem) AddMetadata(key string, value string) (*MediaItem, error)

AddMetadata adds metadata key/value pair provided as input. Deprecated: Use MediaRecord.AddMetadata

func (*MediaItem) AddMetadataAsync

func (mediaItem *MediaItem) AddMetadataAsync(key string, value string) (Task, error)

AddMetadataAsync calls private function addMetadata() with mediaItem.client and mediaItem.MediaItem.HREF which adds metadata key/value pair provided as input. Deprecated: Use MediaRecord.AddMetadataAsync

func (*MediaItem) Delete

func (mediaItem *MediaItem) Delete() (Task, error)

Deletes the Media Item, returning an error if the vCD call fails. Link to API call: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/DELETE-Media.html Deprecated: Use MediaRecord.Delete

func (*MediaItem) DeleteMetadata

func (mediaItem *MediaItem) DeleteMetadata(key string) error

DeleteMetadata deletes metadata depending on key provided as input from media item. Deprecated: Use MediaRecord.DeleteMetadata

func (*MediaItem) DeleteMetadataAsync

func (mediaItem *MediaItem) DeleteMetadataAsync(key string) (Task, error)

DeleteMetadataAsync calls private function deleteMetadata() with mediaItem.client and mediaItem.MediaItem.HREF which deletes metadata depending on key provided as input from media item. Deprecated: Use MediaRecord.DeleteMetadataAsync

func (*MediaItem) GetMetadata

func (mediaItem *MediaItem) GetMetadata() (*types.Metadata, error)

GetMetadata calls private function getMetadata() with mediaItem.client and mediaItem.MediaItem.HREF which returns a *types.Metadata struct for provided media item input. Deprecated: Use MediaRecord.GetMetadata

func (*MediaItem) Refresh

func (mediaItem *MediaItem) Refresh() error

Refresh refreshes the media item information by href Deprecated: Use MediaRecord.Refresh

type MediaRecord

type MediaRecord struct {
	MediaRecord *types.MediaRecordType
	// contains filtered or unexported fields
}

func NewMediaRecord

func NewMediaRecord(cli *Client) *MediaRecord

func (*MediaRecord) AddMetadata

func (mediaRecord *MediaRecord) AddMetadata(key string, value string) (*MediaRecord, error)

AddMetadata adds metadata key/value pair provided as input.

func (*MediaRecord) AddMetadataAsync

func (mediaRecord *MediaRecord) AddMetadataAsync(key string, value string) (Task, error)

AddMetadataAsync calls private function addMetadata() with MediaRecord.client and MediaRecord.MediaRecord.HREF which adds metadata key/value pair provided as input.

func (*MediaRecord) Delete

func (mediaRecord *MediaRecord) Delete() (Task, error)

Deletes the Media Item, returning an error if the vCD call fails. Link to API call: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/DELETE-Media.html

func (*MediaRecord) DeleteMetadata

func (mediaRecord *MediaRecord) DeleteMetadata(key string) error

DeleteMetadata deletes metadata depending on key provided as input from media item.

func (*MediaRecord) DeleteMetadataAsync

func (mediaRecord *MediaRecord) DeleteMetadataAsync(key string) (Task, error)

DeleteMetadataAsync calls private function deleteMetadata() with MediaRecord.client and MediaRecord.MediaRecord.HREF which deletes metadata depending on key provided as input from media item.

func (*MediaRecord) GetMetadata

func (mediaRecord *MediaRecord) GetMetadata() (*types.Metadata, error)

GetMetadata calls private function getMetadata() with MediaRecord.client and MediaRecord.MediaRecord.HREF which returns a *types.Metadata struct for provided media item input.

func (*MediaRecord) Refresh

func (mediaRecord *MediaRecord) Refresh() error

Refresh refreshes the media information by href

type NatRule

type NatRule struct {
	NatType      string
	NetworkHref  string
	ExternalIP   string
	ExternalPort string
	InternalIP   string
	InternalPort string
	Protocol     string
	IcmpSubType  string
	Description  string
}

Struct which covers NAT rule fields

type Org

type Org struct {
	Org *types.Org
	// contains filtered or unexported fields
}

func GetOrgByName

func GetOrgByName(vcdClient *VCDClient, orgName string) (Org, error)

If user specifies a valid organization name, then this returns a organization object. If no valid org is found, it returns an empty org and no error. Otherwise it returns an error and an empty Org object Deprecated: Use vcdClient.GetOrgByName instead

func NewOrg

func NewOrg(client *Client) *Org

func (*Org) CreateCatalog

func (org *Org) CreateCatalog(name, description string) (Catalog, error)

CreateCatalog creates a catalog with given name and description under the given organization. Returns an Catalog that contains a creation task. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/POST-CreateCatalog.html

func (*Org) FindCatalog

func (org *Org) FindCatalog(catalogName string) (Catalog, error)

Given a valid catalog name, FindCatalog returns a Catalog object. If no catalog is found, then returns an empty catalog and no error. Otherwise it returns an error. Deprecated: use org.GetCatalogByName instead

func (*Org) GetCatalogByHref

func (org *Org) GetCatalogByHref(catalogHref string) (*Catalog, error)

GetCatalogByHref finds a Catalog by HREF On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*Org) GetCatalogById

func (org *Org) GetCatalogById(catalogId string, refresh bool) (*Catalog, error)

GetCatalogById finds a Catalog by ID On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*Org) GetCatalogByName

func (org *Org) GetCatalogByName(catalogName string, refresh bool) (*Catalog, error)

GetCatalogByName finds a Catalog by Name On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*Org) GetCatalogByNameOrId

func (org *Org) GetCatalogByNameOrId(identifier string, refresh bool) (*Catalog, error)

GetCatalogByNameOrId finds a Catalog by name or ID On success, returns a pointer to the Catalog structure and a nil error On failure, returns a nil pointer and an error

func (*Org) GetVDCByHref

func (org *Org) GetVDCByHref(vdcHref string) (*Vdc, error)

GetVDCByHref finds a VDC by HREF On success, returns a pointer to the VDC structure and a nil error On failure, returns a nil pointer and an error

func (*Org) GetVDCById

func (org *Org) GetVDCById(vdcId string, refresh bool) (*Vdc, error)

GetVDCById finds a VDC by ID On success, returns a pointer to the VDC structure and a nil error On failure, returns a nil pointer and an error

func (*Org) GetVDCByName

func (org *Org) GetVDCByName(vdcName string, refresh bool) (*Vdc, error)

GetVDCByName finds a VDC by Name On success, returns a pointer to the VDC structure and a nil error On failure, returns a nil pointer and an error

func (*Org) GetVDCByNameOrId

func (org *Org) GetVDCByNameOrId(identifier string, refresh bool) (*Vdc, error)

GetVDCByNameOrId finds a VDC by name or ID On success, returns a pointer to the VDC structure and a nil error On failure, returns a nil pointer and an error

func (*Org) GetVdcByName

func (org *Org) GetVdcByName(vdcname string) (Vdc, error)

If user specifies valid vdc name then this returns a vdc object. If no vdc is found, then it returns an empty vdc and no error. Otherwise it returns an empty vdc and an error. Deprecated: use org.GetVDCByName instead

func (*Org) Refresh

func (org *Org) Refresh() error

Given an org with a valid HREF, the function refetches the org and updates the user's org data. Otherwise if the function fails, it returns an error. Users should use refresh whenever they have a stale org due to the creation/update/deletion of a resource within the org or the org itself.

type OrgUser

type OrgUser struct {
	User *types.User

	AdminOrg *AdminOrg // needed to be able to update, as the list of roles is found in the Org
	// contains filtered or unexported fields
}

Definition of an OrgUser

func NewUser

func NewUser(cli *Client, org *AdminOrg) *OrgUser

NewUser creates an empty user

func (*OrgUser) ChangePassword

func (user *OrgUser) ChangePassword(newPass string) error

ChangePassword changes user's password Constraints: the password must be non-empty, with a minimum of 6 characters

func (*OrgUser) ChangeRole

func (user *OrgUser) ChangeRole(roleName string) error

ChangeRole changes a user's role Fails is we try to set the same role as the current one. Also fails if the provided role name is not found.

func (*OrgUser) Delete

func (user *OrgUser) Delete(takeOwnership bool) error

Delete removes the user, returning an error if the call fails. if requested, it will attempt to take ownership before the removal. API Documentation: https://code.vmware.com/apis/442/vcloud-director#/doc/doc/operations/DELETE-User.html Note: in the GUI we need to disable the user before deleting. There is no such constraint with the API.

Expected behaviour: with takeOwnership = true, all entities owned by the user being deleted will be transferred to the caller. with takeOwnership = false, if the user own catalogs, networks, or running VMs/vApps, the call will fail.

If the user owns only powered-off VMs/vApps, the call will succeeds and the
VMs/vApps will be removed.

func (*OrgUser) Disable

func (user *OrgUser) Disable() error

Disable disables a user, if it is enabled. Fails otherwise.

func (*OrgUser) Enable

func (user *OrgUser) Enable() error

Enable enables a user if it was disabled. Fails otherwise.

func (*OrgUser) GetRoleName

func (user *OrgUser) GetRoleName() string

GetRoleName retrieves the name of the role currently assigned to the user

func (*OrgUser) TakeOwnership

func (user *OrgUser) TakeOwnership() error

TakeOwnership takes ownership of the user's objects. Ownership is transferred to the caller. This is a call to make before deleting. Calling user.DeleteTakeOwnership() will run TakeOwnership before the actual user removal. API Documentation: https://code.vmware.com/apis/442/vcloud-director#/doc/doc/operations/POST-TakeOwnership.html

func (*OrgUser) Unlock

func (user *OrgUser) Unlock() error

Unlock unlocks a user that was locked out by the system. Note that there is no procedure to LOCK a user: it is locked by the system when it exceeds the number of unauthorized access attempts

func (*OrgUser) Update

func (user *OrgUser) Update() error

Update updates the user, using its own configuration data returning an error if the call fails. API Documentation: https://code.vmware.com/apis/442/vcloud-director#/doc/doc/operations/PUT-User.html

func (*OrgUser) UpdateSimple

func (user *OrgUser) UpdateSimple(userData OrgUserConfiguration) error

UpdateSimple updates the user, using ALL the fields in userData structure returning an error if the call fails. Careful: DeployedVmQuota and StoredVmQuota use a `0` value to mean "unlimited"

type OrgUserConfiguration

type OrgUserConfiguration struct {
	Name            string // Mandatory
	Password        string // Mandatory
	RoleName        string // Mandatory
	ProviderType    string // Optional: defaults to "INTEGRATED"
	IsEnabled       bool   // Optional: defaults to false
	IsLocked        bool   // Only used for updates
	DeployedVmQuota int    // Optional: 0 means "unlimited"
	StoredVmQuota   int    // Optional: 0 means "unlimited"
	FullName        string // Optional
	Description     string // Optional
	EmailAddress    string // Optional
	Telephone       string // Optional
	IM              string // Optional
}

Simplified structure to insert or modify an organization user

type OrgVDCNetwork

type OrgVDCNetwork struct {
	OrgVDCNetwork *types.OrgVDCNetwork
	// contains filtered or unexported fields
}

OrgVDCNetwork an org vdc network client

func NewOrgVDCNetwork

func NewOrgVDCNetwork(cli *Client) *OrgVDCNetwork

NewOrgVDCNetwork creates an org vdc network client

func (*OrgVDCNetwork) Delete

func (orgVdcNet *OrgVDCNetwork) Delete() (Task, error)

Delete a network. Fails if the network is busy. Returns a task to monitor the deletion.

func (*OrgVDCNetwork) Refresh

func (orgVdcNet *OrgVDCNetwork) Refresh() error

type OrgVdcRecord

type OrgVdcRecord struct {
	OrgVdc *types.QueryResultOrgVdcRecordType
	// contains filtered or unexported fields
}

func NewOrgVdcRecord

func NewOrgVdcRecord(cli *Client) *OrgVdcRecord

create instance with reference to types.OrgVdcRecord

type Results

type Results struct {
	Results *types.QueryResultRecordsType
	// contains filtered or unexported fields
}

func NewResults

func NewResults(cli *Client) *Results

type SimpleNetworkIdentifier

type SimpleNetworkIdentifier struct {
	Name          string
	InterfaceType string
}

Simplified structure used to list networks connected to an edge gateway

type SupportedVersions

type SupportedVersions struct {
	VersionInfos `xml:"VersionInfo"`
}

type Task

type Task struct {
	Task *types.Task
	// contains filtered or unexported fields
}

func CreateAndConfigureEdgeGatewayAsync

func CreateAndConfigureEdgeGatewayAsync(vcdClient *VCDClient, orgName, vdcName, egwName string, egwConfiguration *types.EdgeGateway) (Task, error)

CreateAndConfigureEdgeGatewayAsync creates an edge gateway using a full configuration structure

func CreateEdgeGatewayAsync

func CreateEdgeGatewayAsync(vcdClient *VCDClient, egwc EdgeGatewayCreation) (Task, error)

CreateEdgeGatewayAsync creates an edge gateway using a simplified configuration structure https://code.vmware.com/apis/442/vcloud-director/doc/doc/operations/POST-CreateEdgeGateway.html

func CreateExternalNetwork

func CreateExternalNetwork(vcdClient *VCDClient, externalNetworkData *types.ExternalNetwork) (Task, error)

CreateExternalNetwork allows create external network and returns Task or error. types.ExternalNetwork struct is general and used for various types of networks. But for external network fence mode is always isolated, isInherited is false, parentNetwork is empty.

func CreateOrg

func CreateOrg(vcdClient *VCDClient, name string, fullName string, description string, settings *types.OrgSettings, isEnabled bool) (Task, error)

Creates an Admin Organization based on settings, description, and org name. The Organization created will have these settings specified in the settings parameter. The settings variable is defined in types.go. Method will fail unless user has an admin token. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/POST-CreateOrganization.html Organization creation in vCD has two bugs BZ 2177355, BZ 2228936 (fixes are in 9.1.0.3 and 9.5.0.2) which require organization settings to be provided as workarounds. At least one element among DelayAfterPowerOnSeconds, DeployedVMQuota, StoredVmQuota, UseServerBootSequence, getVdcQuota should be set when providing generalOrgSettings. If either VAppLeaseSettings or VAppTemplateLeaseSettings is provided then all elements need to have values, otherwise don't provide them at all. Overall elements must be in the correct order.

func NewTask

func NewTask(cli *Client) *Task

func (*Task) CancelTask

func (task *Task) CancelTask() error

func (*Task) GetTaskProgress

func (task *Task) GetTaskProgress() (string, error)

func (*Task) Refresh

func (task *Task) Refresh() error

func (*Task) WaitInspectTaskCompletion

func (task *Task) WaitInspectTaskCompletion(inspectionFunc InspectionFunc, delay time.Duration) error

Customizable version of WaitTaskCompletion. Users can define the sleeping duration and an optional callback function for extra monitoring.

func (*Task) WaitTaskCompletion

func (task *Task) WaitTaskCompletion() error

Checks the status of the task every 3 seconds and returns when the task is either completed or failed

type UploadTask

type UploadTask struct {
	*Task
	// contains filtered or unexported fields
}

func NewUploadTask

func NewUploadTask(task *Task, uploadProgress *float64, uploadError *error) *UploadTask

Creates wrapped Task which is dedicated for upload functionality and provides additional functionality to monitor upload progress.

func (*UploadTask) GetUploadError

func (uploadTask *UploadTask) GetUploadError() error

func (*UploadTask) GetUploadProgress

func (uploadTask *UploadTask) GetUploadProgress() string

func (*UploadTask) ShowUploadProgress

func (uploadTask *UploadTask) ShowUploadProgress() error

type VApp

type VApp struct {
	VApp *types.VApp
	// contains filtered or unexported fields
}

func NewVApp

func NewVApp(cli *Client) *VApp

func (*VApp) AddIsolatedNetwork

func (vapp *VApp) AddIsolatedNetwork(newIsolatedNetworkSettings *VappNetworkSettings) (Task, error)

Function allows to create isolated network for vApp. This is equivalent to vCD UI function - vApp network creation.

func (*VApp) AddMetadata

func (vapp *VApp) AddMetadata(key string, value string) (Task, error)

AddMetadata calls private function addMetadata() with vapp.client and vapp.VApp.HREF which adds metadata key/value pair provided as input

func (*VApp) AddNewVM

func (vapp *VApp) AddNewVM(name string, vappTemplate VAppTemplate, network *types.NetworkConnectionSection, acceptAllEulas bool) (Task, error)

AddNewVM adds VM from vApp template with custom NetworkConnectionSection

func (*VApp) AddRAWNetworkConfig

func (vapp *VApp) AddRAWNetworkConfig(orgvdcnetworks []*types.OrgVDCNetwork) (Task, error)

AddRAWNetworkConfig adds existing VDC network to vApp

func (*VApp) AddVM deprecated

func (vapp *VApp) AddVM(orgVdcNetworks []*types.OrgVDCNetwork, vappNetworkName string, vappTemplate VAppTemplate, name string, acceptAllEulas bool) (Task, error)

AddVM create vm in vApp using vApp template orgVdcNetworks - adds org VDC networks to be available for vApp. Can be empty. vappNetworkName - adds vApp network to be available for vApp. Can be empty. vappTemplate - vApp Template which will be used for VM creation. name - name for VM. acceptAllEulas - setting allows to automatically accept or not Eulas.

Deprecated: Use vapp.AddNewVM instead for more sophisticated network handling

func (*VApp) BlockWhileStatus

func (vapp *VApp) BlockWhileStatus(unwantedStatus string, timeOutAfterSeconds int) error

BlockWhileStatus blocks until the status of vApp exits unwantedStatus. It sleeps 200 milliseconds between iterations and times out after timeOutAfterSeconds of seconds.

func (*VApp) ChangeCPUCount

func (vapp *VApp) ChangeCPUCount(virtualCpuCount int) (Task, error)

Sets number of available virtual logical processors (i.e. CPUs x cores per socket) https://communities.vmware.com/thread/576209 Deprecated: Use vm.ChangeCPUcount()

func (*VApp) ChangeCPUCountWithCore

func (vapp *VApp) ChangeCPUCountWithCore(virtualCpuCount int, coresPerSocket *int) (Task, error)

Sets number of available virtual logical processors (i.e. CPUs x cores per socket) and cores per socket. Socket count is a result of: virtual logical processors/cores per socket https://communities.vmware.com/thread/576209 Deprecated: Use vm.ChangeCPUCountWithCore()

func (*VApp) ChangeMemorySize

func (vapp *VApp) ChangeMemorySize(size int) (Task, error)

Deprecated as it changes only first VM's memory

func (*VApp) ChangeNetworkConfig

func (vapp *VApp) ChangeNetworkConfig(networks []map[string]interface{}, ip string) (Task, error)

func (*VApp) ChangeStorageProfile

func (vapp *VApp) ChangeStorageProfile(name string) (Task, error)

func (*VApp) ChangeVMName

func (vapp *VApp) ChangeVMName(name string) (Task, error)

Deprecated as it changes only first VM's name

func (*VApp) Customize

func (vapp *VApp) Customize(computername, script string, changeSid bool) (Task, error)

func (*VApp) Delete

func (vapp *VApp) Delete() (Task, error)

func (*VApp) DeleteMetadata

func (vapp *VApp) DeleteMetadata(key string) (Task, error)

DeleteMetadata() function calls private function deleteMetadata() with vapp.client and vapp.VApp.HREF which deletes metadata depending on key provided as input from vApp.

func (*VApp) Deploy

func (vapp *VApp) Deploy() (Task, error)

func (*VApp) GetMetadata

func (vapp *VApp) GetMetadata() (*types.Metadata, error)

GetMetadata calls private function getMetadata() with vapp.client and vapp.VApp.HREF which returns a *types.Metadata struct for provided vapp input.

func (*VApp) GetNetworkConfig

func (vapp *VApp) GetNetworkConfig() (*types.NetworkConfigSection, error)

func (*VApp) GetNetworkConnectionSection

func (vapp *VApp) GetNetworkConnectionSection() (*types.NetworkConnectionSection, error)

func (*VApp) GetProductSectionList

func (vapp *VApp) GetProductSectionList() (*types.ProductSectionList, error)

GetProductSectionList retrieves product section for a vApp. It allows to read vApp guest properties.

The slice of properties "ProductSectionList.ProductSection.Property" is not necessarily ordered or returned as set before

func (*VApp) GetStatus

func (vapp *VApp) GetStatus() (string, error)

func (*VApp) GetVMById

func (vapp *VApp) GetVMById(id string, refresh bool) (*VM, error)

GetVMById returns a VM reference if the VM ID matches an existing one. If no valid VM is found, it returns a nil VM reference and an error

func (*VApp) GetVMByName

func (vapp *VApp) GetVMByName(vmName string, refresh bool) (*VM, error)

GetVMByName returns a VM reference if the VM name matches an existing one. If no valid VM is found, it returns a nil VM reference and an error

func (*VApp) GetVMByNameOrId

func (vapp *VApp) GetVMByNameOrId(identifier string, refresh bool) (*VM, error)

GetVMByNameOrId returns a VM reference if either the VM name or ID matches an existing one. If no valid VM is found, it returns a nil VM reference and an error

func (*VApp) PowerOff

func (vapp *VApp) PowerOff() (Task, error)

func (*VApp) PowerOn

func (vapp *VApp) PowerOn() (Task, error)

func (*VApp) Reboot

func (vapp *VApp) Reboot() (Task, error)

func (*VApp) Refresh

func (vapp *VApp) Refresh() error

func (*VApp) RemoveAllNetworks

func (vapp *VApp) RemoveAllNetworks() (Task, error)

RemoveAllNetworks detaches all networks from vApp

func (*VApp) RemoveIsolatedNetwork

func (vapp *VApp) RemoveIsolatedNetwork(networkName string) (Task, error)

Removes vApp isolated network

func (*VApp) RemoveVM

func (vapp *VApp) RemoveVM(vm VM) error

func (*VApp) Reset

func (vapp *VApp) Reset() (Task, error)

func (*VApp) RunCustomizationScript

func (vapp *VApp) RunCustomizationScript(computername, script string) (Task, error)

func (*VApp) SetOvf deprecated

func (vapp *VApp) SetOvf(parameters map[string]string) (Task, error)

SetOvf sets guest properties for the first child VM in vApp

Deprecated: Use vm.SetProductSectionList()

func (*VApp) SetProductSectionList

func (vapp *VApp) SetProductSectionList(productSection *types.ProductSectionList) (*types.ProductSectionList, error)

SetProductSectionList sets product section for a vApp. It allows to change vApp guest properties.

The slice of properties "ProductSectionList.ProductSection.Property" is not necessarily ordered or returned as set before

func (*VApp) Shutdown

func (vapp *VApp) Shutdown() (Task, error)

func (*VApp) Suspend

func (vapp *VApp) Suspend() (Task, error)

func (*VApp) Undeploy

func (vapp *VApp) Undeploy() (Task, error)

type VAppTemplate

type VAppTemplate struct {
	VAppTemplate *types.VAppTemplate
	// contains filtered or unexported fields
}

func NewVAppTemplate

func NewVAppTemplate(cli *Client) *VAppTemplate

func (*VAppTemplate) AddMetadata

func (vAppTemplate *VAppTemplate) AddMetadata(key string, value string) (*VAppTemplate, error)

AddMetadata adds metadata key/value pair provided as input and returned update VAppTemplate

func (*VAppTemplate) AddMetadataAsync

func (vAppTemplate *VAppTemplate) AddMetadataAsync(key string, value string) (Task, error)

AddMetadataAsync calls private function addMetadata() with vAppTemplate.client and vAppTemplate.VAppTemplate.HREF which adds metadata key/value pair provided as input.

func (*VAppTemplate) DeleteMetadata

func (vAppTemplate *VAppTemplate) DeleteMetadata(key string) error

DeleteMetadata deletes metadata depending on key provided as input from media item.

func (*VAppTemplate) DeleteMetadataAsync

func (vAppTemplate *VAppTemplate) DeleteMetadataAsync(key string) (Task, error)

DeleteMetadataAsync calls private function deleteMetadata() with vAppTemplate.client and vAppTemplate.VAppTemplate.HREF which deletes metadata depending on key provided as input from catalog item.

func (*VAppTemplate) GetMetadata

func (vAppTemplate *VAppTemplate) GetMetadata() (*types.Metadata, error)

GetMetadata calls private function getMetadata() with catalogItem.client and catalogItem.CatalogItem.HREF which returns a *types.Metadata struct for provided catalog item input.

func (*VAppTemplate) Refresh

func (vAppTemplate *VAppTemplate) Refresh() error

Refresh refreshes the vApp template item information by href

type VCDClient

type VCDClient struct {
	Client Client // Client for the underlying VCD instance

	QueryHREF url.URL // HREF for the query API
	Mutex     sync.Mutex
	// contains filtered or unexported fields
}

func NewVCDClient

func NewVCDClient(vcdEndpoint url.URL, insecure bool, options ...VCDClientOption) *VCDClient

NewVCDClient initializes VMware vCloud Director client with reasonable defaults. It accepts functions of type VCDClientOption for adjusting defaults.

func (*VCDClient) APIClientVersionIs

func (vcdCli *VCDClient) APIClientVersionIs(versionConstraint string) bool

APIClientVersionIs allows to compare against currently used API version VCDClient.Client.APIVersion. Can be useful to validate if a certain feature can be used or not. It does not require for the client to be authenticated.

Format: ">= 27.0, < 32.0", ">= 30.0", "= 27.0"

vCD version mapping to API version support https://code.vmware.com/doc/preview?id=8072

func (*VCDClient) APIVCDMaxVersionIs

func (vcdCli *VCDClient) APIVCDMaxVersionIs(versionConstraint string) bool

APIVCDMaxVersionIs compares against maximum vCD supported API version from /api/versions (not necessarily the currently used one). This allows to check what is the maximum API version that vCD instance supports and can be used to guess vCD product version. API 31.0 support was first introduced in vCD 9.5 (as per https://code.vmware.com/doc/preview?id=8072). Therefore APIMaxVerIs(">= 31.0") implies that you have vCD 9.5 or newer running inside. It does not require for the client to be authenticated.

Format: ">= 27.0, < 32.0", ">= 30.0", "= 27.0"

vCD version mapping to API version support https://code.vmware.com/doc/preview?id=8072

func (*VCDClient) Authenticate

func (vcdCli *VCDClient) Authenticate(username, password, org string) error

Authenticate is an helper function that performs a login in vCloud Director.

func (*VCDClient) Disconnect

func (vcdCli *VCDClient) Disconnect() error

Disconnect performs a disconnection from the vCloud Director API endpoint.

func (*VCDClient) GetAdminOrgById

func (vcdClient *VCDClient) GetAdminOrgById(orgId string) (*AdminOrg, error)

GetAdminOrgById finds an Admin Organization by ID On success, returns a pointer to the Admin Org structure and a nil error On failure, returns a nil pointer and an error

func (*VCDClient) GetAdminOrgByName

func (vcdClient *VCDClient) GetAdminOrgByName(orgName string) (*AdminOrg, error)

GetAdminOrgByName finds an Admin Organization by name On success, returns a pointer to the Admin Org structure and a nil error On failure, returns a nil pointer and an error

func (*VCDClient) GetAdminOrgByNameOrId

func (vcdClient *VCDClient) GetAdminOrgByNameOrId(identifier string) (*AdminOrg, error)

GetAdminOrgByNameOrId finds an Admin Organization by name or ID On success, returns a pointer to the Admin Org structure and a nil error On failure, returns a nil pointer and an error

func (*VCDClient) GetExternalNetworkById

func (vcdClient *VCDClient) GetExternalNetworkById(id string) (*ExternalNetwork, error)

GetExternalNetworkById returns an ExternalNetwork reference if the network ID matches an existing one. If no valid external network is found, it returns a nil ExternalNetwork reference and an error

func (*VCDClient) GetExternalNetworkByName

func (vcdClient *VCDClient) GetExternalNetworkByName(networkName string) (*ExternalNetwork, error)

GetExternalNetworkByName returns an ExternalNetwork reference if the network name matches an existing one. If no valid external network is found, it returns a nil ExternalNetwork reference and an error

func (*VCDClient) GetExternalNetworkByNameOrId

func (vcdClient *VCDClient) GetExternalNetworkByNameOrId(identifier string) (*ExternalNetwork, error)

GetExternalNetworkByNameOrId returns an ExternalNetwork reference if either the network name or ID matches an existing one. If no valid external network is found, it returns a nil ExternalNetwork reference and an error

func (*VCDClient) GetExternalNetworks

func (vcdClient *VCDClient) GetExternalNetworks() (*types.ExternalNetworkReferences, error)

GetExternalNetworks returns a list of available external networks

func (*VCDClient) GetOrgById

func (vcdClient *VCDClient) GetOrgById(orgId string) (*Org, error)

GetOrgById finds an Organization by ID On success, returns a pointer to the Org structure and a nil error On failure, returns a nil pointer and an error

func (*VCDClient) GetOrgByName

func (vcdClient *VCDClient) GetOrgByName(orgName string) (*Org, error)

GetOrgByName finds an Organization by name On success, returns a pointer to the Org structure and a nil error On failure, returns a nil pointer and an error

func (*VCDClient) GetOrgByNameOrId

func (vcdClient *VCDClient) GetOrgByNameOrId(identifier string) (*Org, error)

GetOrgByNameOrId finds an Organization by name or ID On success, returns a pointer to the Org structure and a nil error On failure, returns a nil pointer and an error

func (*VCDClient) NewVApp

func (vcdCli *VCDClient) NewVApp(client *Client) VApp

func (*VCDClient) Query

func (vcdCli *VCDClient) Query(params map[string]string) (Results, error)

func (*VCDClient) QueryNetworkPools

func (vcdClient *VCDClient) QueryNetworkPools() ([]*types.QueryResultNetworkPoolRecordType, error)

QueryNetworkPools gets the list of network pools

func (*VCDClient) QueryProviderVdcStorageProfiles

func (vcdClient *VCDClient) QueryProviderVdcStorageProfiles() ([]*types.QueryResultProviderVdcStorageProfileRecordType, error)

QueryProviderVdcStorageProfiles gets the list of provider VDC storage profiles

func (*VCDClient) QueryProviderVdcs

func (vcdClient *VCDClient) QueryProviderVdcs() ([]*types.QueryResultVMWProviderVdcRecordType, error)

QueryProviderVdcs gets the list of available provider VDCs

func (*VCDClient) QueryWithNotEncodedParams

func (vcdCli *VCDClient) QueryWithNotEncodedParams(params map[string]string, notEncodedParams map[string]string) (Results, error)

type VCDClientOption

type VCDClientOption func(*VCDClient) error

VCDClientOption defines signature for customizing VCDClient using functional options pattern.

func WithAPIVersion

func WithAPIVersion(version string) VCDClientOption

WithAPIVersion allows to override default API version. Please be cautious about changing the version as the default specified is the most tested.

func WithHttpTimeout

func WithHttpTimeout(timeout int64) VCDClientOption

WithHttpTimeout allows to override default http timeout

func WithMaxRetryTimeout

func WithMaxRetryTimeout(timeoutSeconds int) VCDClientOption

WithMaxRetryTimeout allows default vCDClient MaxRetryTimeout value override

type VM

type VM struct {
	VM *types.VM
	// contains filtered or unexported fields
}

func NewVM

func NewVM(cli *Client) *VM

func (*VM) AddMetadata

func (vm *VM) AddMetadata(key string, value string) (Task, error)

AddMetadata calls private function addMetadata() with vm.client and vm.VM.HREF which adds metadata key/value pair provided as input to VM.

func (*VM) AnswerQuestion

func (vm *VM) AnswerQuestion(questionId string, choiceId int) error

Use the provide answer to existing VM question for operation which need additional response Reference: https://code.vmware.com/apis/287/vcloud#/doc/doc/operations/POST-AnswerVmPendingQuestion.html

func (*VM) AttachDisk

func (vm *VM) AttachDisk(diskParams *types.DiskAttachOrDetachParams) (Task, error)

Attach an independent disk Call attachOrDetachDisk with disk and types.RelDiskAttach to attach an independent disk. Please verify the independent disk is not connected to any VM before calling this function. If the independent disk is connected to a VM, the task will be failed. Reference: vCloud API Programming Guide for Service Providers vCloud API 30.0 PDF Page 164 - 165, https://vdc-download.vmware.com/vmwb-repository/dcr-public/1b6cf07d-adb3-4dba-8c47-9c1c92b04857/ 241956dd-e128-4fcc-8131-bf66e1edd895/vcloud_sp_api_guide_30_0.pdf

func (*VM) BlockWhileGuestCustomizationStatus

func (vm *VM) BlockWhileGuestCustomizationStatus(unwantedStatus string, timeOutAfterSeconds int) error

BlockWhileGuestCustomizationStatus blocks until the customization status of VM exits unwantedStatus. It sleeps 3 seconds between iterations and times out after timeOutAfterSeconds of seconds.

timeOutAfterSeconds must be more than 4 and less than 2 hours (60s*120)

func (*VM) ChangeCPUCount

func (vm *VM) ChangeCPUCount(virtualCpuCount int) (Task, error)

Sets number of available virtual logical processors (i.e. CPUs x cores per socket) Cpu cores count is inherited from template. https://communities.vmware.com/thread/576209

func (*VM) ChangeCPUCountWithCore

func (vm *VM) ChangeCPUCountWithCore(virtualCpuCount int, coresPerSocket *int) (Task, error)

Sets number of available virtual logical processors (i.e. CPUs x cores per socket) and cores per socket. Socket count is a result of: virtual logical processors/cores per socket https://communities.vmware.com/thread/576209

func (*VM) ChangeMemorySize

func (vm *VM) ChangeMemorySize(size int) (Task, error)

func (*VM) ChangeNetworkConfig

func (vm *VM) ChangeNetworkConfig(networks []map[string]interface{}) (Task, error)

ChangeNetworkConfig allows to update existing VM NIC configuration.f

func (*VM) Customize

func (vm *VM) Customize(computername, script string, changeSid bool) (Task, error)

func (*VM) DeleteMetadata

func (vm *VM) DeleteMetadata(key string) (Task, error)

DeleteMetadata() function calls private function deleteMetadata() with vm.client and vm.VM.HREF which deletes metadata depending on key provided as input from VM.

func (*VM) DetachDisk

func (vm *VM) DetachDisk(diskParams *types.DiskAttachOrDetachParams) (Task, error)

Detach an independent disk Call attachOrDetachDisk with disk and types.RelDiskDetach to detach an independent disk. Please verify the independent disk is connected the VM before calling this function. If the independent disk is not connected to the VM, the task will be failed. Reference: vCloud API Programming Guide for Service Providers vCloud API 30.0 PDF Page 164 - 165, https://vdc-download.vmware.com/vmwb-repository/dcr-public/1b6cf07d-adb3-4dba-8c47-9c1c92b04857/ 241956dd-e128-4fcc-8131-bf66e1edd895/vcloud_sp_api_guide_30_0.pdf

func (*VM) EjectMedia

func (vm *VM) EjectMedia(mediaParams *types.MediaInsertOrEjectParams) (EjectTask, error)

Eject media from VM Call insertOrEjectMedia with media and types.RelMediaEjectMedia to eject media from VM. If media isn't inserted then task still will be successful.

func (*VM) GetGuestCustomizationSection

func (vm *VM) GetGuestCustomizationSection() (*types.GuestCustomizationSection, error)

GetGuestCustomizationSection retrieves guest customization section for a VM. It allows to read VM guest customization properties.

func (*VM) GetGuestCustomizationStatus

func (vm *VM) GetGuestCustomizationStatus() (string, error)

GetGuestCustomizationStatus retrieves guest customization status. It can be one of "GC_PENDING", "REBOOT_PENDING", "GC_FAILED", "POST_GC_PENDING", "GC_COMPLETE"

func (*VM) GetMetadata

func (vm *VM) GetMetadata() (*types.Metadata, error)

GetMetadata calls private function getMetadata() with vm.client and vm.VM.HREF which returns a *types.Metadata struct for provided VM input.

func (*VM) GetNetworkConnectionSection

func (vm *VM) GetNetworkConnectionSection() (*types.NetworkConnectionSection, error)

GetNetworkConnectionSection returns current networks attached to VM

The slice of NICs is not necessarily ordered by NIC index

func (*VM) GetProductSectionList

func (vm *VM) GetProductSectionList() (*types.ProductSectionList, error)

GetProductSectionList retrieves product section for a VM. It allows to read VM guest properties.

The slice of properties "ProductSectionList.ProductSection.Property" is not necessarily ordered or returned as set before

func (*VM) GetQuestion

func (vm *VM) GetQuestion() (types.VmPendingQuestion, error)

Use the get existing VM question for operation which need additional response Reference: https://code.vmware.com/apis/287/vcloud#/doc/doc/operations/GET-VmPendingQuestion.html

func (*VM) GetStatus

func (vm *VM) GetStatus() (string, error)

func (*VM) GetVirtualHardwareSection

func (vm *VM) GetVirtualHardwareSection() (*types.VirtualHardwareSection, error)

GetVirtualHardwareSection returns the virtual hardware items attached to a VM

func (*VM) HandleEjectMedia

func (vm *VM) HandleEjectMedia(org *Org, catalogName, mediaName string) (EjectTask, error)

Helper function which finds media and calls EjectMedia

func (*VM) HandleEjectMediaAndAnswer

func (vm *VM) HandleEjectMediaAndAnswer(org *Org, catalogName, mediaName string, answerYes bool) (*VM, error)

HandleEjectMediaAndAnswer helper function which finds media, calls EjectMedia, waits for task to complete and answer question. Also waits until VM status refreshes - this added as 9.7-10.0 vCD versions has lag in status update. answerYes - handles question risen when VM is running. True value enforces ejection.

func (*VM) HandleInsertMedia

func (vm *VM) HandleInsertMedia(org *Org, catalogName, mediaName string) (Task, error)

Helper function which finds media and calls InsertMedia

func (*VM) InsertMedia

func (vm *VM) InsertMedia(mediaParams *types.MediaInsertOrEjectParams) (Task, error)

Insert media for VM Call insertOrEjectMedia with media and types.RelMediaInsertMedia to insert media from VM.

func (*VM) IsDeployed

func (vm *VM) IsDeployed() (bool, error)

IsDeployed checks if the VM is deployed or not

func (*VM) PowerOff

func (vm *VM) PowerOff() (Task, error)

func (*VM) PowerOn

func (vm *VM) PowerOn() (Task, error)

func (*VM) PowerOnAndForceCustomization

func (vm *VM) PowerOnAndForceCustomization() error

PowerOnAndForceCustomization is a synchronous function which is equivalent to the functionality one has in UI. It triggers customization which may be useful in some cases (like altering NICs)

The VM _must_ be un-deployed for this action to actually work.

func (*VM) Refresh

func (vm *VM) Refresh() error

func (*VM) RunCustomizationScript

func (vm *VM) RunCustomizationScript(computername, script string) (Task, error)

func (*VM) SetGuestCustomizationSection

func (vm *VM) SetGuestCustomizationSection(guestCustomizationSection *types.GuestCustomizationSection) (*types.GuestCustomizationSection, error)

SetGuestCustomizationSection sets guest customization section for a VM. It allows to change VM guest customization properties.

func (*VM) SetProductSectionList

func (vm *VM) SetProductSectionList(productSection *types.ProductSectionList) (*types.ProductSectionList, error)

SetProductSectionList sets product section for a VM. It allows to change VM guest properties.

The slice of properties "ProductSectionList.ProductSection.Property" is not necessarily ordered or returned as set before

func (*VM) ToggleHardwareVirtualization

func (vm *VM) ToggleHardwareVirtualization(isEnabled bool) (Task, error)

ToggleHardwareVirtualization allows to either enable or disable hardware assisted CPU virtualization for the VM. It can only be performed on a powered off VM and will return an error otherwise. This is mainly useful for hypervisor nesting.

func (*VM) Undeploy

func (vm *VM) Undeploy() (Task, error)

Undeploy triggers a VM undeploy and power off action. "Power off" action in UI behaves this way.

func (*VM) UpdateNetworkConnectionSection

func (vm *VM) UpdateNetworkConnectionSection(networks *types.NetworkConnectionSection) error

UpdateNetworkConnectionSection applies network configuration of types.NetworkConnectionSection for the VM Runs synchronously, VM is ready for another operation after this function returns.

type VMRecord

type VMRecord struct {
	VM *types.QueryResultVMRecordType
	// contains filtered or unexported fields
}

func NewVMRecord

func NewVMRecord(cli *Client) *VMRecord

create instance with reference to types.QueryResultVMRecordType

type VappNetworkSettings

type VappNetworkSettings struct {
	Name             string
	Gateway          string
	NetMask          string
	DNS1             string
	DNS2             string
	DNSSuffix        string
	GuestVLANAllowed *bool
	StaticIPRanges   []*types.IPRange
	DhcpSettings     *DhcpSettings
}

struct type used to pass information for vApp network creation

type Vdc

type Vdc struct {
	Vdc *types.Vdc

	VApp *types.VApp
	// contains filtered or unexported fields
}

func NewVdc

func NewVdc(cli *Client) *Vdc

func (*Vdc) AddMetadata

func (vdc *Vdc) AddMetadata(key string, value string) (Vdc, error)

AddMetadata adds metadata key/value pair provided as input to VDC.

func (*Vdc) AddMetadataAsync

func (vdc *Vdc) AddMetadataAsync(key string, value string) (Task, error)

AddMetadata adds metadata key/value pair provided as input to VDC. and returns task

func (*Vdc) ComposeRawVApp

func (vdc *Vdc) ComposeRawVApp(name string) error

func (*Vdc) ComposeVApp

func (vdc *Vdc) ComposeVApp(orgvdcnetworks []*types.OrgVDCNetwork, vapptemplate VAppTemplate, storageprofileref types.Reference, name string, description string, acceptalleulas bool) (Task, error)

ComposeVApp creates a vapp with the given template, name, and description that uses the storageprofile and networks given. If you want all eulas to be accepted set acceptalleulas to true. Returns a successful task if completed successfully, otherwise returns an error and an empty task.

func (*Vdc) CreateDisk

func (vdc *Vdc) CreateDisk(diskCreateParams *types.DiskCreateParams) (Task, error)

Create an independent disk in VDC Reference: vCloud API Programming Guide for Service Providers vCloud API 30.0 PDF Page 102 - 103, https://vdc-download.vmware.com/vmwb-repository/dcr-public/1b6cf07d-adb3-4dba-8c47-9c1c92b04857/ 241956dd-e128-4fcc-8131-bf66e1edd895/vcloud_sp_api_guide_30_0.pdf

func (*Vdc) CreateOrgVDCNetwork

func (vdc *Vdc) CreateOrgVDCNetwork(networkConfig *types.OrgVDCNetwork) (Task, error)

Fine tuning network creation function. Return an error (the result of the network creation) and a task (used to monitor the network configuration) This function can create any type of Org Vdc network. The exact type is determined by the combination of properties given with the network configuration structure.

func (*Vdc) CreateOrgVDCNetworkWait

func (vdc *Vdc) CreateOrgVDCNetworkWait(networkConfig *types.OrgVDCNetwork) error

A wrapper call around CreateOrgVDCNetwork. Creates a network and then uses the associated task to monitor its configuration

func (*Vdc) Delete

func (vdc *Vdc) Delete(force bool, recursive bool) (Task, error)

Deletes the vdc, returning an error of the vCD call fails. API Documentation: https://code.vmware.com/apis/220/vcloud#/doc/doc/operations/DELETE-Vdc.html

func (*Vdc) DeleteMetadata

func (vdc *Vdc) DeleteMetadata(key string) (Vdc, error)

DeleteMetadata() function deletes metadata by key provided as input

func (*Vdc) DeleteMetadataAsync

func (vdc *Vdc) DeleteMetadataAsync(key string) (Task, error)

DeleteMetadata() function deletes metadata by key provided as input and returns task

func (*Vdc) DeleteWait

func (vdc *Vdc) DeleteWait(force bool, recursive bool) error

Deletes the vdc and waits for the asynchronous task to complete.

func (*Vdc) FindDiskByHREF

func (vdc *Vdc) FindDiskByHREF(href string) (*Disk, error)

Find an independent disk by disk href in VDC Deprecated: Use VDC.GetDiskByHref()

func (*Vdc) FindEdgeGateway deprecated

func (vdc *Vdc) FindEdgeGateway(edgegateway string) (EdgeGateway, error)

Deprecated: use GetEdgeGatewayByName

func (*Vdc) FindMediaImage

func (vdc *Vdc) FindMediaImage(mediaName string) (MediaItem, error)

FindMediaImage returns media image found in system using `name` as query. Can find a few of them if media with same name exist in different catalogs. Deprecated: Use catalog.GetMediaByName()

func (*Vdc) FindStorageProfileReference

func (vdc *Vdc) FindStorageProfileReference(name string) (types.Reference, error)

func (*Vdc) FindVAppByID deprecated

func (vdc *Vdc) FindVAppByID(vappid string) (VApp, error)

Deprecated: use vdc.GetVAppById instead

func (*Vdc) FindVAppByName deprecated

func (vdc *Vdc) FindVAppByName(vapp string) (VApp, error)

Deprecated: use vdc.GetVAppByName instead

func (*Vdc) FindVDCNetwork deprecated

func (vdc *Vdc) FindVDCNetwork(network string) (OrgVDCNetwork, error)

Deprecated: use GetOrgVdcNetworkByName

func (*Vdc) FindVMByName deprecated

func (vdc *Vdc) FindVMByName(vapp VApp, vm string) (VM, error)

Deprecated: use vapp.GetVMByName instead

func (*Vdc) GetDefaultStorageProfileReference

func (vdc *Vdc) GetDefaultStorageProfileReference(storageprofiles *types.QueryResultRecordsType) (types.Reference, error)

func (*Vdc) GetDiskByHref

func (vdc *Vdc) GetDiskByHref(diskHref string) (*Disk, error)

GetDiskByHref finds a Disk by HREF On success, returns a pointer to the Disk structure and a nil error On failure, returns a nil pointer and an error

func (*Vdc) GetDiskById

func (vdc *Vdc) GetDiskById(diskId string, refresh bool) (*Disk, error)

GetDiskById finds a Disk by ID On success, returns a pointer to the Disk structure and a nil error On failure, returns a nil pointer and an error

func (*Vdc) GetDisksByName

func (vdc *Vdc) GetDisksByName(diskName string, refresh bool) (*[]Disk, error)

GetDisksByName finds one or more Disks by Name On success, returns a pointer to the Disk list and a nil error On failure, returns a nil pointer and an error

func (*Vdc) GetEdgeGatewayById

func (vdc *Vdc) GetEdgeGatewayById(id string, refresh bool) (*EdgeGateway, error)

GetEdgeGatewayById search VDC list of edge gateways for a given ID. If the id matches, it returns a pointer to an edge gateway object. On failure, it returns a nil object and an error

func (*Vdc) GetEdgeGatewayByName

func (vdc *Vdc) GetEdgeGatewayByName(name string, refresh bool) (*EdgeGateway, error)

GetEdgeGatewayByName search the VDC list of edge gateways for a given name. If the name matches, it returns a pointer to an edge gateway object. On failure, it returns a nil object and an error

func (*Vdc) GetEdgeGatewayByNameOrId

func (vdc *Vdc) GetEdgeGatewayByNameOrId(identifier string, refresh bool) (*EdgeGateway, error)

GetEdgeGatewayByNameOrId search the VDC list of edge gateways for a given name or ID. If the name or the ID match, it returns a pointer to an edge gateway object. On failure, it returns a nil object and an error

func (*Vdc) GetMetadata

func (vdc *Vdc) GetMetadata() (*types.Metadata, error)

GetMetadata returns meta data for VDC.

func (*Vdc) GetOrgVdcNetworkByHref

func (vdc *Vdc) GetOrgVdcNetworkByHref(href string) (*OrgVDCNetwork, error)

GetOrgVdcNetworkByHref returns an Org VDC Network reference if the network HREF matches an existing one. If no valid external network is found, it returns a nil Network reference and an error

func (*Vdc) GetOrgVdcNetworkById

func (vdc *Vdc) GetOrgVdcNetworkById(id string, refresh bool) (*OrgVDCNetwork, error)

GetOrgVdcNetworkById returns an Org VDC Network reference if the network ID matches an existing one. If no valid external network is found, it returns a nil Network reference and an error

func (*Vdc) GetOrgVdcNetworkByName

func (vdc *Vdc) GetOrgVdcNetworkByName(name string, refresh bool) (*OrgVDCNetwork, error)

GetOrgVdcNetworkByName returns an Org VDC Network reference if the network name matches an existing one. If no valid external network is found, it returns a nil Network reference and an error

func (*Vdc) GetOrgVdcNetworkByNameOrId

func (vdc *Vdc) GetOrgVdcNetworkByNameOrId(identifier string, refresh bool) (*OrgVDCNetwork, error)

GetOrgVdcNetworkByNameOrId returns a VDC Network reference if either the network name or ID matches an existing one. If no valid external network is found, it returns a nil ExternalNetwork reference and an error

func (*Vdc) GetVAppByHref

func (vdc *Vdc) GetVAppByHref(vappHref string) (*VApp, error)

GetVappByHref returns a vApp reference by running a vCD API call If no valid vApp is found, it returns a nil VApp reference and an error

func (*Vdc) GetVAppById

func (vdc *Vdc) GetVAppById(id string, refresh bool) (*VApp, error)

GetVappById returns a vApp reference if the vApp ID matches an existing one. If no valid vApp is found, it returns a nil VApp reference and an error

func (*Vdc) GetVAppByName

func (vdc *Vdc) GetVAppByName(vappName string, refresh bool) (*VApp, error)

GetVappByName returns a vApp reference if the vApp Name matches an existing one. If no valid vApp is found, it returns a nil VApp reference and an error

func (*Vdc) GetVAppByNameOrId

func (vdc *Vdc) GetVAppByNameOrId(identifier string, refresh bool) (*VApp, error)

GetVappByNameOrId returns a vApp reference if either the vApp name or ID matches an existing one. If no valid vApp is found, it returns a nil VApp reference and an error

func (*Vdc) InstantiateVAppTemplate

func (vdc *Vdc) InstantiateVAppTemplate(template *types.InstantiateVAppTemplateParams) error

func (*Vdc) Query

func (vdc *Vdc) Query(params map[string]string) (Results, error)

func (*Vdc) QueryDisk

func (vdc *Vdc) QueryDisk(diskName string) (DiskRecord, error)

QueryDisk find independent disk using disk name. Returns DiskRecord type

func (*Vdc) QueryDisks

func (vdc *Vdc) QueryDisks(diskName string) (*[]*types.DiskRecordType, error)

QueryDisks find independent disks using disk name. Returns list of DiskRecordType

func (*Vdc) QueryVM

func (vdc *Vdc) QueryVM(vappName, vmName string) (VMRecord, error)

Find vm using vApp name and VM name. Returns VMRecord query return type

func (*Vdc) QueryWithNotEncodedParams

func (vdc *Vdc) QueryWithNotEncodedParams(params map[string]string, notEncodedParams map[string]string) (Results, error)

func (*Vdc) Refresh

func (vdc *Vdc) Refresh() error

func (*Vdc) UploadMediaImage

func (vdc *Vdc) UploadMediaImage(mediaName, mediaDescription, filePath string, uploadPieceSize int64) (UploadTask, error)

Uploads an ISO file as media. This method only uploads bits to vCD spool area. Returns errors if any occur during upload from vCD or upload process. On upload fail client may need to remove vCD catalog item which waits for files to be uploaded. Recommend to use catalog.UploadMediaImage which let's expect in which catalog file will be placed

type VersionInfo

type VersionInfo struct {
	Version    string `xml:"Version"`
	LoginUrl   string `xml:"LoginUrl"`
	Deprecated bool   `xml:"deprecated,attr,omitempty"`
}

type VersionInfos

type VersionInfos []VersionInfo

Jump to

Keyboard shortcuts

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