VCloud Core

VCloud Core is a gem that supports automatated provisioning of VMWare vCloud Director. It uses Fog under the hood. Primarily developed to support VCloud Walker and VCloud Tools.

VCloud Core includes VCloud Query and a command-line wrapper for VCloud Query.

Installation

Add this line to your application's Gemfile:

gem 'vcloud-core'

And then execute:

$ bundle

Or install it yourself as:

$ gem install vcloud-core

Usage

TODO

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

VCloud Query

Get results from the vCloud Query API

VCloud Query is a light wrapper around the vCloud Query API.

Any, or all, records of a particular 'type' can be returned. These types map to entities in the vCloud system itself, eg: 'vm', 'vApp', 'orgVdc', 'edgeGateway'.

Filters can be applied, using a simple query syntax. See below for basic usage and examples.

Run with no arguments, it outputs a list of potential entity types to query, along with the potential record types to display (default 'records')

Usage:

vcloud-query [options] [queriable type]

where [queriable type] maps to a vcloud entity type, eg: vApp, vm, orgVdc

Examples:

NB: examples assume FOG_CREDENTIAL has been set accordingly.

# Get a list of vApps, in YAML
vcloud-query -o yaml vApp

# Get general usage info
vcloud-query --help

# Get a list of all queriable types (left column)
vcloud-query

# Get all VMs with VMware Tools less than 9282, that are not a vApp Template:
vcloud-query --filter 'vmToolsVersion=lt=9282;isVAppTemplate==false' vm

Supports:

  • Returning a list of queriable types (eg vm, vApp, edgeGateway) from the API
  • Displaying all vCloud entities of a given type
  • Filtering the results of the query based on common parameters such as:
    • entity name
    • metadata values
    • key entity parameters
  • Limiting the output to certain fields (eg: name, vmToolsVersion)
  • Returning results in TSV, CSV, and YAML

Query Syntax:

Summary of filter query syntax:

attribute==value                      # == to check equality
attribute!=value                      # != to check inequality
attribute=lt=value                    # =lt= less than (=le= for <=)
attribute=gt=value                    # =gt= greater than (=ge= for >=)
attribute==value;attribute2==value2   # ; == AND
attribute==value,attribute2==value2   # , == OR

Parentheses can be used to group sub-queries.

Do not use spaces in the query

Entity metadata queries have their own subsyntax incorporating the value types:

metadata:key1==STRING:value1
metadata:key1=le=NUMBER:15
metadata:key1=gt=DATETIME:2012-06-18T12:00:00-05:00

See http://pubs.vmware.com/vcd-51/topic/com.vmware.vcloud.api.doc_51/GUID-4FD71B6D-6797-4B8E-B9F0-618F4ACBEFAC.html for details.