Part of libcloud.compute.base View Source View In Hierarchy
Known subclasses: libcloud.compute.drivers.bluebox.BlueboxNodeDriver, libcloud.compute.drivers.brightbox.BrightboxNodeDriver, libcloud.compute.drivers.cloudsigma.CloudSigmaBaseNodeDriver, libcloud.compute.drivers.dreamhost.DreamhostNodeDriver, libcloud.compute.drivers.ec2.EC2NodeDriver, libcloud.compute.drivers.ecp.ECPNodeDriver, libcloud.compute.drivers.elastichosts.ElasticHostsBaseNodeDriver, libcloud.compute.drivers.gandi.GandiNodeDriver, libcloud.compute.drivers.gogrid.GoGridNodeDriver, libcloud.compute.drivers.ibm_sbc.IBMNodeDriver, libcloud.compute.drivers.linode.LinodeNodeDriver, libcloud.compute.drivers.opennebula.OpenNebulaNodeDriver, libcloud.compute.drivers.opsource.OpsourceNodeDriver, libcloud.compute.drivers.rackspace.RackspaceNodeDriver, libcloud.compute.drivers.rimuhosting.RimuHostingNodeDriver, libcloud.compute.drivers.slicehost.SlicehostNodeDriver, libcloud.compute.drivers.softlayer.SoftLayerNodeDriver, libcloud.compute.drivers.vcloud.VCloudNodeDriver, libcloud.compute.drivers.voxel.VoxelNodeDriver, libcloud.compute.drivers.vpsnet.VPSNetNodeDriver
A base NodeDriver class to derive from This class is always subclassed by a specific driver. For examples of base behavior of most functions (except deploy node) see the dummy driver.
Method | __init__ | @keyword key: API key or username to used @type key: str |
Method | create_node | Create a new node instance. |
Method | destroy_node | Destroy a node. |
Method | reboot_node | Reboot a node. @return: C{bool} True if the reboot was successful, otherwise False |
Method | list_nodes | List all nodes @return: C{list} of L{Node} objects |
Method | list_images | List images on a provider @return: C{list} of L{NodeImage} objects |
Method | list_sizes | List sizes on a provider @return: C{list} of L{NodeSize} objects |
Method | list_locations | List data centers for a provider @return: C{list} of L{NodeLocation} objects |
Method | deploy_node | Create a new node, and start deployment. |
Method | _get_size_price | Undocumented |
@keyword key: API key or username to used @type key: str @keyword secret: Secret password to be used @type secret: str @keyword secure: Weither to use HTTPS or HTTP. Note: Some providers only support HTTPS, and it is on by default. @type secure: bool @keyword host: Override hostname used for connections. @type host: str @keyword port: Override port used for connections. @type port: int
Create a new node instance. @keyword name: String with a name for this new node (required) @type name: str @keyword size: The size of resources allocated to this node. (required) @type size: L{NodeSize} @keyword image: OS Image to boot on node. (required) @type image: L{NodeImage} @keyword location: Which data center to create a node in. If empty, undefined behavoir will be selected. (optional) @type location: L{NodeLocation} @keyword auth: Initial authentication information for the node (optional) @type auth: L{NodeAuthSSHKey} or L{NodeAuthPassword} @return: The newly created L{Node}.
Destroy a node. Depending upon the provider, this may destroy all data associated with the node, including backups. @return: C{bool} True if the destroy was successful, otherwise False
Reboot a node. @return: C{bool} True if the reboot was successful, otherwise False
List all nodes @return: C{list} of L{Node} objects
List images on a provider @return: C{list} of L{NodeImage} objects
List sizes on a provider @return: C{list} of L{NodeSize} objects
List data centers for a provider @return: C{list} of L{NodeLocation} objects
Create a new node, and start deployment. Depends on a Provider Driver supporting either using a specific password or returning a generated password. This function may raise a L{DeploymentException}, if a create_node call was successful, but there is a later error (like SSH failing or timing out). This exception includes a Node object which you may want to destroy if incomplete deployments are not desirable. @keyword deploy: Deployment to run once machine is online and availble to SSH. @type deploy: L{Deployment} @keyword ssh_username: Optional name of the account which is used when connecting to SSH server (default is root) @type ssh_username: C{str} @keyword ssh_port: Optional SSH server port (default is 22) @type ssh_port: C{int} @keyword ssh_timeout: Optional SSH connection timeout in seconds (default is None) @type ssh_timeout: C{float} See L{NodeDriver.create_node} for more keyword args. >>> from libcloud.compute.drivers.dummy import DummyNodeDriver >>> from libcloud.deployment import ScriptDeployment, MultiStepDeployment >>> from libcloud.compute.base import NodeAuthSSHKey >>> driver = DummyNodeDriver(0) >>> key = NodeAuthSSHKey('...') # read from file >>> script = ScriptDeployment("yum -y install emacs strace tcpdump") >>> msd = MultiStepDeployment([key, script]) >>> def d(): ... try: ... node = driver.deploy_node(deploy=msd) ... except NotImplementedError: ... print "not implemented for dummy driver" >>> d() not implemented for dummy driver Deploy node is typically not overridden in subclasses. The existing implementation should be able to handle most such.