# Feature Matrix

A number of features are available in most cloud hosts, but not all are available everywhere. This may be because the feature isn't supported by the cloud host 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 hosts, as far as Salt Cloud is concerned. This is not a comprehensive list of all features available in all cloud hosts, and should not be used to make business decisions concerning choosing a cloud host. 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 preferred method for working with those hosts.

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 host, 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 cloud host.

| AWS (Legacy) | CloudStack | Digital Ocean | EC2 | GoGrid | JoyEnt | Linode | OpenStack | Parallels | Rackspace (Legacy) | Saltify | Vagrant | Softlayer | Softlayer Hardware | Aliyun | Tencent Cloud
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Query | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | [1] | [1] | Yes | Yes | Yes | Yes
Full Query | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | [1] | [1] | Yes | Yes | Yes | Yes
Selective Query | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | [1] | [1] | Yes | Yes | Yes | Yes
List Sizes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | [2] | [2] | Yes | Yes | Yes | Yes
List Images | Yes | Yes | Yes | 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 | [2] | [2] | Yes | Yes | Yes | Yes
create | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | [1] | Yes | Yes | Yes | Yes
destroy | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | [1] | [1] | Yes | Yes | Yes | Yes

[1] Yes, if salt-api is enabled.

[2] Always returns {}.

## Actions

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

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

Actions | AWS (Legacy) | CloudStack | Digital Ocean | EC2 | GoGrid | JoyEnt | Linode | OpenStack | Parallels | Rackspace (Legacy) | Saltify& Vagrant | Softlayer | Softlayer Hardware | Aliyun | Tencent Cloud
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
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 | Yes | Yes | Yes
show_term_protect |  |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
start | Yes |  |  | Yes |  | Yes | Yes |  | Yes |  |  |  |  | Yes | Yes
stop | Yes |  |  | Yes |  | Yes | 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:

    # salt-cloud -f list_images my_digitalocean

Functions | AWS (Legacy) | CloudStack | Digital Ocean | EC2 | GoGrid | JoyEnt | Linode | OpenStack | Parallels | Rackspace (Legacy) | Saltify& Vagrant | Softlayer | Softlayer Hardware | Aliyun | Tencent Cloud
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
block_device_mappings | Yes |  |  |  |  |  |  |  |  |  |  |  |  |  |
create_keypair |  |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
create_volume |  |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
delete_key |  |  |  |  |  | Yes |  |  |  |  |  |  |  |  |
delete_keypair |  |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
delete_volume |  |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
get_image |  |  | Yes |  |  | 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 |  |  |  |  |  |  |  | Yes |
get_spot_config |  |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
get_subnetid |  |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
iam_profile | Yes |  |  | Yes |  |  |  |  |  |  |  |  |  | Yes |
import_key |  |  |  |  |  | Yes |  |  |  |  |  |  |  |  |
key_list |  |  |  |  |  | Yes |  |  |  |  |  |  |  |  |
keyname | Yes |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
list_availability_zones |  |  |  | Yes |  |  |  |  |  |  |  |  |  | Yes | Yes
list_custom_images |  |  |  |  |  |  |  |  |  |  |  | Yes |  |  | Yes
list_keys |  |  |  |  |  | Yes |  |  |  |  |  |  |  |  |
list_nodes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes
list_nodes_full | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes
list_nodes_select | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes
list_vlans |  |  |  |  |  |  |  |  |  |  |  | Yes | Yes |  |
rackconnect |  |  |  |  |  |  |  | Yes |  |  |  |  |  |  |
reboot |  |  |  | Yes |  | Yes |  |  |  |  | [1] |  |  | Yes | Yes
reformat_node |  |  |  |  |  | Yes |  |  |  |  |  |  |  |  |
securitygroup | Yes |  |  | Yes |  |  |  |  |  |  |  |  |  |  |
securitygroupid |  |  |  | Yes |  |  |  |  |  |  |  |  |  | Yes |
show_image |  |  |  | Yes |  |  |  |  | Yes |  |  |  |  | Yes | Yes
show_key |  |  |  |  |  | Yes |  |  |  |  |  |  |  |  |
show_keypair |  |  | Yes | Yes |  |  |  |  |  |  |  |  |  |  |
show_volume |  |  |  | Yes |  |  |  |  |  |  |  |  |  |  |

[1] Yes, if salt-api is enabled.