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.cloudstack.CloudStackNodeDriver, libcloud.compute.drivers.dreamhost.DreamhostNodeDriver, libcloud.compute.drivers.dummy.DummyNodeDriver, libcloud.compute.drivers.ec2.EC2NodeDriver, libcloud.compute.drivers.ecp.ECPNodeDriver, libcloud.compute.drivers.elasticstack.ElasticStackBaseNodeDriver, libcloud.compute.drivers.gandi.GandiNodeDriver, libcloud.compute.drivers.gogrid.GoGridNodeDriver, libcloud.compute.drivers.gridspot.GridspotNodeDriver, libcloud.compute.drivers.ibm_sce.IBMNodeDriver, libcloud.compute.drivers.joyent.JoyentNodeDriver, libcloud.compute.drivers.libvirt_driver.LibvirtNodeDriver, libcloud.compute.drivers.linode.LinodeNodeDriver, libcloud.compute.drivers.opennebula.OpenNebulaNodeDriver, libcloud.compute.drivers.openstack.OpenStackNodeDriver, libcloud.compute.drivers.opsource.OpsourceNodeDriver, libcloud.compute.drivers.rimuhosting.RimuHostingNodeDriver, libcloud.compute.drivers.slicehost.SlicehostNodeDriver, libcloud.compute.drivers.softlayer.SoftLayerNodeDriver, libcloud.compute.drivers.vcl.VCLNodeDriver, 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__ | @requires: key, secret |
Method | create_node | Create a new node instance. |
Method | destroy_node | Destroy a node. |
Method | reboot_node | Reboot a node. |
Method | list_nodes | List all nodes @return: list of node objects @rtype: C{list} of L{Node} |
Method | list_images | List images on a provider |
Method | list_sizes | List sizes on a provider |
Method | list_locations | List data centers for a provider |
Method | deploy_node | Create a new node, and start deployment. |
Method | create_volume | Create a new volume. |
Method | destroy_volume | Destroys a storage volume. |
Method | attach_volume | Attaches volume to node. |
Method | detach_volume | Detaches a volume from a node. |
Method | _wait_until_running | Block until node is fully booted and has an IP address assigned. |
Method | _ssh_client_connect | Try to connect to the remote SSH server. If a connection times out or is refused it is retried up to timeout number of seconds. |
Method | _run_deployment_script | Run the deployment script on the provided node. At this point it is assumed that SSH connection has already been established. |
Method | _get_size_price | Undocumented |
Inherited from BaseDriver:
Method | _ex_connection_class_kwargs | Return extra connection keyword arguments which are passed to the Connection class constructor. |
@requires: key, secret
Create a new node instance. @keyword name: String with a name for this new node (required) @type name: C{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 node. @rtype: L{Node}
Destroy a node. Depending upon the provider, this may destroy all data associated with the node, including backups. @param node: The node to be destroyed @type node: L{Node} @return: True if the destroy was successful, otherwise False @rtype: C{bool}
Reboot a node. @param node: The node to be rebooted @type node: L{Node} @return: True if the reboot was successful, otherwise False @rtype: C{bool}
List all nodes @return: list of node objects @rtype: C{list} of L{Node}
List images on a provider @keyword location: The location at which to list images @type location: L{NodeLocation} @return: list of node image objects @rtype: C{list} of L{NodeImage}
List sizes on a provider @keyword location: The location at which to list sizes @type location: L{NodeLocation} @return: list of node size objects @rtype: C{list} of L{NodeSize}
List data centers for a provider @return: list of node location objects @rtype: C{list} of L{NodeLocation}
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. >>> from libcloud.compute.drivers.dummy import DummyNodeDriver >>> from libcloud.compute.deployment import ScriptDeployment >>> from libcloud.compute.deployment import 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. @inherits: L{NodeDriver.create_node} @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} @keyword auth: Initial authentication information for the node (optional) @type auth: L{NodeAuthSSHKey} or L{NodeAuthPassword} @keyword ssh_key: A path (or paths) to an SSH private key with which to attempt to authenticate. (optional) @type ssh_key: C{str} or C{list} of C{str} @keyword max_tries: How many times to retry if a deployment fails before giving up (default is 3) @type max_tries: C{int} @keyword ssh_interface: The interface to wait for. Default is 'public_ips', other option is 'private_ips'. @type ssh_interface: C{str}
Create a new volume. @param size: Size of volume in gigabytes (required) @type size: C{int} @keyword name: Name of the volume to be created @type name: C{str} @keyword location: Which data center to create a volume in. If empty, undefined behavoir will be selected. (optional) @type location: L{NodeLocation} @keyword snapshot: Name of snapshot from which to create the new volume. (optional) @type snapshot: C{str} @return: The newly created volume. @rtype: L{StorageVolume}
Destroys a storage volume. @param volume: Volume to be destroyed @type volume: L{StorageVolume} @rtype: C{bool}
Attaches volume to node. @param node: Node to attach volume to @type node: L{Node} @param volume: Volume to attach @type volume: L{StorageVolume} @param device: Where the device is exposed, e.g. '/dev/sdb (optional) @type device: C{str} @rtype: C{bool}
Detaches a volume from a node. @param volume: Volume to be detached @type volume: L{StorageVolume} @rtype: C{bool}
Block until node is fully booted and has an IP address assigned. @keyword node: Node instance. @type node: C{Node} @keyword wait_period: How many seconds to between each loop iteration (default is 3) @type wait_period: C{int} @keyword timeout: How many seconds to wait before timing out (default is 600) @type timeout: C{int} @keyword ssh_interface: The interface to wait for. Default is 'public_ips', other option is 'private_ips'. @type ssh_interface: C{str} @keyword force_ipv4: Ignore ipv6 IP addresses (default is True). @type force_ipv4: C{bool} @return: C{(Node, ip_addresses)} tuple of Node instance and list of ip_address on success.
Try to connect to the remote SSH server. If a connection times out or is refused it is retried up to timeout number of seconds. @keyword ssh_client: A configured SSHClient instance @type ssh_client: C{SSHClient} @keyword wait_period: How many seconds to wait between each loop iteration (default is 1.5) @type wait_period: C{int} @keyword timeout: How many seconds to wait before timing out (default is 600) @type timeout: C{int} @return: C{SSHClient} on success
Run the deployment script on the provided node. At this point it is assumed that SSH connection has already been established. @keyword task: Deployment task to run on the node. @type task: C{Deployment} @keyword node: Node to operate one @type node: C{Node} @keyword ssh_client: A configured and connected SSHClient instance @type ssh_client: C{SSHClient} @keyword max_tries: How many times to retry if a deployment fails before giving up (default is 3) @type max_tries: C{int} @return: C{Node} Node instance on success.