go-vcloud-director

module
v2.0.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2019 License: Apache-2.0

README

go-vcloud-director Build Status Coverage Status GoDoc Chat

This repo contains the go-vcloud-director package which implements an SDK for vCloud Director. The project serves the needs of Golang developers who need to integrate with vCloud Director. It is also the basis of the vCD Terraform Provider.

Contributions

Contributions to go-vcloud-director are gladly welcome and range from participating in community discussions to submitting pull requests. Please see the contributing guide for details on joining the community.

Install and Build

Create a standard Golang development tree with bin, pkg, and src directories. Set GOPATH to the root directory. Then:

go get github.com/vmware/go-vcloud-director
cd $GOPATH/src/github.com/vmware/go-vcloud-director/govcd
go build

This command only builds a library. There is no executable.

Example

To show the SDK in action run the example shown below.

mkdir $GOPATH/src/example
cd $GOPATH/src/example
vi example.go    <-- Copy contents into file and fix config information.
go build
./example

Here's the code:

package main

import (
        "fmt"
        "net/url"
        "os"

        "github.com/vmware/go-vcloud-director/govcd"
)

type Config struct {
        User     string
        Password string
        Org      string
        Href     string
        VDC      string
        Insecure bool
}

func (c *Config) Client() (*govcd.VCDClient, error) {
        u, err := url.ParseRequestURI(c.Href)
        if err != nil {
                return nil, fmt.Errorf("Unable to pass url: %s", err)
        }

        vcdclient := govcd.NewVCDClient(*u, c.Insecure)
        err = vcdclient.Authenticate(c.User, c.Password, c.Org)
        if err != nil {
                return nil, fmt.Errorf("Unable to authenticate: %s", err)
        }
        return vcdclient, nil
}

func main() {
  config := Config{
                User:     "myuser",
                Password: "password",
                Org:      "MyOrg",
                Href:     "https://vcd-host/api",
                VDC:      "My-VDC",
        }

  client, err := config.Client() // We now have a client
  if err != nil {
      fmt.Println(err)
      os.Exit(1)
  }
  org := govcd.GetOrgByName(vcdclient, config.Org)
  vdc := vcdclient.Org.GetVdcByName(config.Vdc)
  fmt.Printf("Org URL: %s\n", org.Org.HREF)
}

Directories

Path Synopsis
Package govcd provides a simple binding for vCloud Director REST APIs.
Package govcd provides a simple binding for vCloud Director REST APIs.
types
v56
Package util provides ancillary functionality to go-vcloud-director library logging.go regulates logging for the whole library.
Package util provides ancillary functionality to go-vcloud-director library logging.go regulates logging for the whole library.

Jump to

Keyboard shortcuts

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