# salt.cloud.clouds.joyent

## Joyent Cloud Module

The Joyent Cloud module is used to interact with the Joyent cloud system.

Set up the cloud configuration at `/etc/salt/cloud.providers` or `/etc/salt/cloud.providers.d/joyent.conf`:

    my-joyent-config:
      driver: joyent
      # The Joyent login user
      user: fred
      # The Joyent user's password
      password: saltybacon
      # The location of the ssh private key that can log into the new VM
      private_key: /root/mykey.pem
      # The name of the private key
      keyname: mykey

When creating your profiles for the joyent cloud, add the location attribute to the profile, this will automatically get picked up when performing tasks associated with that vm. An example profile might look like:

    joyent_512:
      provider: my-joyent-config
      size: g4-highcpu-512M
      image: centos-6
      location: us-east-1

This driver can also be used with the Joyent SmartDataCenter project. More details can be found at:

Using SDC requires that an api_host_suffix is set. The default value for this is .api.joyentcloud.com. All characters, including the leading ., should be included:

    api_host_suffix: .api.myhostname.com

depends:

  PyCrypto

salt.cloud.clouds.joyent.avail_images(call=None)

  Get list of available images

  CLI Example:

      salt-cloud --list-images

  Can use a custom URL for images. Default is:

      image_url: images.joyent.com/images

salt.cloud.clouds.joyent.avail_locations(call=None)

  List all available locations

salt.cloud.clouds.joyent.avail_sizes(call=None)

  get list of available packages

  CLI Example:

      salt-cloud --list-sizes

salt.cloud.clouds.joyent.create(vm_)

  Create a single VM from a data dict

  CLI Example:

      salt-cloud -p profile_name vm_name

salt.cloud.clouds.joyent.create_node(**kwargs)

  convenience function to make the rest api call for node creation.

salt.cloud.clouds.joyent.delete_key(kwargs=None, call=None)

  List the keys available

  CLI Example:

      salt-cloud -f delete_key joyent keyname=mykey

salt.cloud.clouds.joyent.destroy(name, call=None)

  destroy a machine by name

  Parameters:

    - name -- name given to the machine

    - call -- call value in this case is 'action'

  Returns:

    array of booleans , true if successfully stopped and true if successfully removed

  CLI Example:

      salt-cloud -d vm_name

salt.cloud.clouds.joyent.get_configured_provider()

  Return the first configured instance.

salt.cloud.clouds.joyent.get_image(vm_)

  Return the image object to use

salt.cloud.clouds.joyent.get_location(vm_=None)
  Return the joyent data center to use, in this order:

    - CLI parameter

    - VM parameter

    - Cloud profile setting

salt.cloud.clouds.joyent.get_location_path(location='us-east-1', api_host_suffix='.api.joyentcloud.com')

  create url from location variable :param location: joyent data center location :return: url

salt.cloud.clouds.joyent.get_node(name)

  gets the node from the full node list by name :param name: name of the vm :return: node object

salt.cloud.clouds.joyent.get_size(vm_)

  Return the VM's size object

salt.cloud.clouds.joyent.has_method(obj, method_name)

  Find if the provided object has a specific method

salt.cloud.clouds.joyent.import_key(kwargs=None, call=None)

  List the keys available

  CLI Example:

      salt-cloud -f import_key joyent keyname=mykey keyfile=/tmp/mykey.pub

salt.cloud.clouds.joyent.joyent_node_state(id_)

  Convert joyent returned state to state common to other data center return values for consistency

  Parameters:

    id -- joyent state value

  Returns:

    state value

salt.cloud.clouds.joyent.key_list(items=None)

  convert list to dictionary using the key as the identifier :param items: array to iterate over :return: dictionary

salt.cloud.clouds.joyent.list_keys(kwargs=None, call=None)

  List the keys available

salt.cloud.clouds.joyent.list_nodes(full=False, call=None)

  list of nodes, keeping only a brief listing

  CLI Example:

      salt-cloud -Q

salt.cloud.clouds.joyent.list_nodes_full(call=None)

  list of nodes, maintaining all content provided from joyent listings

  CLI Example:

      salt-cloud -F

salt.cloud.clouds.joyent.list_nodes_select(call=None)

  Return a list of the VMs that are on the provider, with select fields

salt.cloud.clouds.joyent.query(action=None, command=None, args=None, method='GET', location=None, data=None)

  Make a web call to Joyent

salt.cloud.clouds.joyent.query_instance(vm_=None, call=None)

  Query an instance upon creation from the Joyent API

salt.cloud.clouds.joyent.reboot(name, call=None)

  reboot a machine by name :param name: name given to the machine :param call: call value in this case is 'action' :return: true if successful

  CLI Example:

      salt-cloud -a reboot vm_name

salt.cloud.clouds.joyent.reformat_node(item=None, full=False)

  Reformat the returned data from joyent, determine public/private IPs and strip out fields if necessary to provide either full or brief content.

  Parameters:

    - item -- node dictionary

    - full -- full or brief output

  Returns:

    dict

salt.cloud.clouds.joyent.show_instance(name, call=None)

  get details about a machine :param name: name given to the machine :param call: call value in this case is 'action' :return: machine information

  CLI Example:

      salt-cloud -a show_instance vm_name

salt.cloud.clouds.joyent.show_key(kwargs=None, call=None)

  List the keys available

salt.cloud.clouds.joyent.ssh_interface(vm_)

  Return the ssh_interface type to connect to. Either 'public_ips' (default) or 'private_ips'.

salt.cloud.clouds.joyent.start(name, call=None)

  start a machine by name :param name: name given to the machine :param call: call value in this case is 'action' :return: true if successful

  CLI Example:

      salt-cloud -a start vm_name

salt.cloud.clouds.joyent.stop(name, call=None)

  stop a machine by name :param name: name given to the machine :param call: call value in this case is 'action' :return: true if successful

  CLI Example:

      salt-cloud -a stop vm_name

salt.cloud.clouds.joyent.take_action(name=None, call=None, command=None, data=None, method='GET', location='us-east-1')

  take action call used by start,stop, reboot :param name: name given to the machine :param call: call value in this case is 'action' :command: api path :data: any data to be passed to the api, must be in json format :method: GET,POST,or DELETE :location: data center to execute the command on :return: true if successful