项目作者: r3labs

项目描述 :
A go sdk for vcloud director
高级语言: Go
项目地址: git://github.com/r3labs/vcloud-go-sdk.git
创建时间: 2017-10-26T11:48:49Z
项目社区:https://github.com/r3labs/vcloud-go-sdk

开源协议:Mozilla Public License 2.0

下载


vcloud-go-sdk

A fully featured go sdk for vcloud director

Quick start

To install:

  1. $ go get github.com/r3labs/vcloud-go-sdk

Basic Usage

Authentication

To create a new client:

  1. import (
  2. "github.com/r3labs/vcloud-go-sdk/models"
  3. "github.com/r3labs/vcloud-go-sdk/config"
  4. "github.com/r3labs/vcloud-go-sdk/client"
  5. )
  6. func main() {
  7. cfg := config.New("https://vcloud/", "27.0").WithCredentials("username", "password")
  8. vcloud := client.New(cfg)
  9. err := vcloud.Authenticate()
  10. }

Organisations

To list all organisations:

  1. orgs, err := vcloud.Orgs.List()

To get an organisation by name:

  1. orgs, err := vcloud.Orgs.List()
  2. if err != nil {
  3. return nil, err
  4. }
  5. orgID := orgs.ByName("my-org")[0].ID()
  6. org, err := vcloud.Orgs.Get(orgID)

vDCs

To list all vdc’s:

  1. orgs, err := vcloud.Orgs.List()
  2. if err != nil {
  3. return nil, err
  4. }
  5. orgID := orgs.ByName("my-org")[0].ID()
  6. org, err := vcloud.Orgs.Get(orgID)
  7. vdcLinks := o.Links.ByType(models.TypesVdc)

To get a vdc by name:

  1. vdcLink := o.Links.ByType(models.TypesVdc).ByName("my-vdc")
  2. vdc, err := vcloud.Vdcs.Get(vdcLink[0].ID())

Instances

To list all instances in a vdc:

  1. ...
  2. vdc, err := vcloud.Vdcs.Get(vdcLink[0].ID())
  3. vapps := vdc.VAppRefs()

To create a new vApp from a vApp template:

  1. ...
  2. vdc, err := vcloud.Vdcs.Get(vdcLink[0].ID())
  3. // retrieve network reference
  4. nwref := vdc.NetworkRefs().Get("my-network")
  5. // retrieve vapp template reference from catalog
  6. catref := org.CatalogRefs().Get("my-vapp-catalog")
  7. catalog, err := vcloud.Catalogs.Get(catref.ID())
  8. templateref := catalog.Items().ByName("my-vapp-template")
  9. template, err := vcloud.Catalogs.GetItem(templateref.GetID())
  10. // create vapp request
  11. params := &models.InstantiateVAppParams{
  12. Name: "my-new-vapp",
  13. Description: "vapp from a template",
  14. AcceptEULAs: true,
  15. Deploy: false,
  16. PowerOn: false,
  17. }
  18. params.SetNetwork(nwref.Name, "bridged", nwref.Href)
  19. params.SetSource("my-vapp-template", template.Entity.Href)
  20. // create vapp and wait for task to complete
  21. vapp, err := vcloud.VApps.Create(vdc.GetID(), params)
  22. for _, task := range vapp.GetTasks() {
  23. err = vcloud.Tasks.Wait(&task)
  24. }

To start/stop a vm:

  1. vm := vapp.Children.Vms[0]
  2. task, err = vcloud.Vms.PowerOff(vm.GetID())
  3. task, err = vcloud.Vms.PowerOn(vm.GetID())
  4. err = vcloud.Tasks.Wait(task)

Networks

To list all vdc networks:

  1. networkRefs := vdc.NetworkRefs()

To get a network by name:

  1. networkRef := vdc.NetworkRefs().Get("my-network")
  2. network, err := vcloud.Networks.Get(networkRef.ID())

Edge Gateways

To list all edge gateways:

  1. gatewayRecords, err := vcloud.Queries.RecordsFilter(models.QueryEdgeGateway, "vdc=="+vdc.Href, "1")

To get a edge gateway by name:

  1. gatewayRecords, err := vcloud.Queries.RecordsFilter(models.QueryEdgeGateway, "vdc=="+vdc.Href, "1")
  2. id := gatewayRecords.EdgeGatewayRecords[0].ID()
  3. gateway, err := vcloud.Gateways.Get(id)

Contributing

Please read through our
contributing guidelines.
Included are directions for opening issues, coding standards, and notes on
development.

Moreover, if your pull request contains patches or features, you must include
relevant unit tests.

Code and documentation copyright since 2017 ernest.io authors.

Code released under
the Mozilla Public License Version 2.0.