==============
Feature Matrix
==============

A number of features are available in most cloud providers, but not all are
available everywhere. This may be because the feature isn't supported by the
cloud provider itself, or it may only be that the feature has not yet been
added to Salt Cloud. In a handful of cases, it is because the feature does not
make sense for a particular cloud provider (Saltify, for instance).

This matrix shows which features are available in which cloud providers, as far
as Salt Cloud is concerned. This is not a comprehensive list of all features
available in all cloud providers, and shoult not be used to make business
decisions concerning choosing a cloud provider. In most cases, adding support
for a feature to Salt Cloud requires only a little effort.

Legacy Drivers
==============
Both AWS and Rackspace are listed as "Legacy". This is because those drivers
have been replaced by other drivers, which are generally the prerferred method
for working with those providers.

The EC2 driver should be used instead of the AWS driver, when possible. The
OpenStack driver should be used instead of the Rackspace driver, unless the user
is dealing with instances in "the old cloud" in Rackspace.

Note for Developers
===================
When adding new features to a particular cloud provider, please make sure to
add the feature to this table. Additionally, if you notice a feature that is not
properly listed here, pull requests to fix them is appreciated.

Standard Features
=================
These are features that are available for almost every provider.

+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|                       |AWS     |CloudStack|Digital|EC2|GoGrid|IBM|JoyEnt|Linode|OpenStack|Parallels|Rackspace|Saltify|Softlayer|Softlayer|
|                       |(Legacy)|          |Ocean  |   |      |SCE|      |      |         |         |(Legacy) |       |         |Hardware |
+=======================+========+==========+=======+===+======+===+======+======+=========+=========+=========+=======+=========+=========+
|Query                  |Yes     |Yes       |Yes    |Yes|Yes   |Yes|Yes   |Yes   |Yes      |Yes      |Yes      |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|Full Query             |Yes     |Yes       |Yes    |Yes|Yes   |Yes|Yes   |Yes   |Yes      |Yes      |Yes      |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|Selective Query        |Yes     |Yes       |Yes    |Yes|Yes   |Yes|Yes   |Yes   |Yes      |Yes      |Yes      |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|List Sizes             |Yes     |Yes       |Yes    |Yes|Yes   |Yes|Yes   |Yes   |Yes      |Yes      |Yes      |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|List Images            |Yes     |Yes       |Yes    |Yes|Yes   |Yes|Yes   |Yes   |Yes      |Yes      |Yes      |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|List Locations         |Yes     |Yes       |Yes    |Yes|Yes   |Yes|Yes   |Yes   |Yes      |Yes      |Yes      |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|create                 |Yes     |Yes       |Yes    |Yes|Yes   |Yes|Yes   |Yes   |Yes      |Yes      |Yes      |Yes    |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|destroy                |Yes     |Yes       |Yes    |Yes|Yes   |Yes|Yes   |Yes   |Yes      |Yes      |Yes      |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+

Actions
=======
These are features that are performed on a specific instance, and require an
instance name to be passed in. For example:

.. code-block:: bash

    # salt-cloud -a attach_volume ami.example.com

+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|Actions                |AWS     |CloudStack|Digital|EC2|GoGrid|IBM|JoyEnt|Linode|OpenStack|Parallels|Rackspace|Saltify|Softlayer|Softlayer|
|                       |(Legacy)|          |Ocean  |   |      |SCE|      |      |         |         |(Legacy) |       |         |Hardware |
+=======================+========+==========+=======+===+======+===+======+======+=========+=========+=========+=======+=========+=========+
|attach_volume          |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|create_attach_volumes  |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|del_tags               |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|delvol_on_destroy      |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|detach_volume          |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|disable_term_protect   |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|enable_term_protect    |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_tags               |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|keepvol_on_destroy     |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|list_keypairs          |        |          |Yes    |   |      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|rename                 |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|set_tags               |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|show_delvol_on_destroy |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|show_instance          |        |          |Yes    |Yes|      |   |      |      |         |Yes      |         |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|show_term_protect      |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|start                  |Yes     |          |       |Yes|      |   |Yes   |      |         |Yes      |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|stop                   |Yes     |          |       |Yes|      |   |Yes   |      |         |Yes      |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|take_action            |        |          |       |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+

Functions
=========
These are features that are performed against a specific cloud provider, and
require the name of the provider to be passed in. For example:

.. code-block:: bash

    # salt-cloud -f list_images my_digitalocean

+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|Functions              |AWS     |CloudStack|Digital|EC2|GoGrid|IBM|JoyEnt|Linode|OpenStack|Parallels|Rackspace|Saltify|Softlayer|Softlayer|
|                       |(Legacy)|          |Ocean  |   |      |SCE|      |      |         |         |(Legacy) |       |         |Hardware |
+=======================+========+==========+=======+===+======+===+======+======+=========+=========+=========+=======+=========+=========+
|block_device_mappings  |Yes     |          |       |   |      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|create_keypair         |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|create_volume          |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|delete_key             |        |          |       |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|delete_keypair         |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|delete_volume          |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_image              |        |          |Yes    |   |      |   |Yes   |      |         |Yes      |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_ip                 |        |Yes       |       |   |      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_key                |        |Yes       |       |   |      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_keyid              |        |          |Yes    |   |      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_keypair            |        |Yes       |       |   |      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_networkid          |        |Yes       |       |   |      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_node               |        |          |       |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_password           |        |Yes       |       |   |      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_size               |        |          |Yes    |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_spot_config        |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|get_subnetid           |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|iam_profile            |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|import_key             |        |          |       |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|key_list               |        |          |       |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|keyname                |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|list_availability_zones|        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|list_custom_images     |        |          |       |   |      |   |      |      |         |         |         |       |Yes      |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|list_keys              |        |          |       |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|list_vlans             |        |          |       |   |      |   |      |      |         |         |         |       |Yes      |Yes      |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|rackconnect            |        |          |       |   |      |   |      |      |Yes      |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|reboot                 |        |          |       |Yes|      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|reformat_node          |        |          |       |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|securitygroup          |Yes     |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|securitygroupid        |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|show_image             |        |          |       |Yes|      |   |      |      |         |Yes      |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|show_key               |        |          |       |   |      |   |Yes   |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|show_keypair           |        |          |Yes    |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+
|show_volume            |        |          |       |Yes|      |   |      |      |         |         |         |       |         |         |
+-----------------------+--------+----------+-------+---+------+---+------+------+---------+---------+---------+-------+---------+---------+

