Package: smartdc
Connect withJoyent’s SmartDataCenterCloudAPIvia Python, using securehttp-signaturesigned requests. It enables you to programmatically provision
and otherwise control machines withinJoyent’s public cloud.This is a third-party effort.This module currently supports:Secure connections (viahttp_signatureand optionally, ssh-agent)Key managementBrowsing and access of datacenters, datasets (OS distributions/VM bundles),
and packages (machine sizes and resources)Machine listing, search, creation, management
(start/stop/reboot/resize/delete), snapshotting, metadata, and tagsInstalling boot scripts on machinesIt attempts to provide Pythonic objects (for Data Centers, Machines and
Snapshots) and convenience methods only when appropriate, and otherwise deals
with string identifiers or dicts as lightweight objects.Requirementsrequestshttp_signaturePyCrypto(required by http_signature)Optional:sshorparamiko(post-1.8.0)
(used by http_signature for itsssh-agentintegration)We assume thatjsonis present because requests now requires py2.6 and
up.Python SmartDataCenter LinksPython SmartDataCenter Tutorialsmartdc in PyPIhttp_signature in PyPIpy-smartdc at GitHubpy-http-signature at GitHubpy-smartdc Documentation& API referenceJoyent CloudAPI DocumentationInstallationpip install smartdcQuickstartThis requires a Joyent Public Cloud account with valid payment information and
at least one SSH key uploaded. The example as presented should cost a maximum
of 0.01USD:from smartdc import DataCenter

sdc = DataCenter(location='us-sw-1', key_id='/accountname/keys/keyname')

sdc.datasets()

sm = sdc.create_machine(name='test', dataset='sdc:sdc:standard:1.0.7',
      package='g3-standard-0.25-smartos')

sm.poll_until('running')

import urllib2

urllib2.urlopen('http://' + sm.public_ips[0]).headers.dict

sm.stop()

sm.poll_until('stopped')

sm.delete()Connecting withTelefónica’s InstantServers:from smartdc import DataCenter, TELEFONICA_LOCATIONS

mad = DataCenter(location='eu-mad-1',
              known_locations=TELEFONICA_LOCATIONS,
              key_id='/accountname/keys/keyname')

mad.default_package()Why?A colleague and I wanted something Pythonic to fit into our preferred
toolchain, and the easiest approach was to build it myself. Requests made some
aspects stupidly easy, which is why I created the dependency for the first
version. The colleague wanted integration withssh-agent, and usingsshwas the easiest path to that.AuthorsAdam T. LindsayLicenseMITChanges0.2.0 (2013-06-17)This is an initial release to accommodate demand for basic SDC API v7.0 features. Further work is to come, so the API and features are to be considered unstable and in flux.Support SmartDC API Version 7.0 by defaultAdd legacy mode for places where version 6.5 calls are necessary – calling a v7.0 machine in v6.5 mode will lead to unexpected results.Added list/get networks, list/get images methodsSupport new REST API-level filtering for listing packages and imagescreate_machine()now accepts a network parameterEliminated the previously-deprecatedDataCenter(config=)parameter0.1.13 (2013-06-13)Changes to allow for connections to vmwebadm hubsBe resilient to IP addresses not being present immediately on creationAdapt documentation to allow for late v6.5 API deployment changes0.1.12 (2013-01-08)Telefónica has updated the endpoints for its known locations. These locations are capable of SSL-verifiable connections.Move print statements in library to print functions (still pending issue with versioneer)Requests 1.0 release removedconfigfrom request’s keyword arguments, so created a workaround that works in old and new versionsverbose(bool) is now the preferred keyword argument in DataCenter initialization since we no longer piggy-back on requests config.configissues a warning.0.1.11 (2012-12-07)Minor update to the README quickstartMachines are hashable based on their UUIDsPre-programmed Telefónica locations are based on FQDNsKNOWN ISSUE: DataCenter equality not guaranteed with Telefónica servers (due to how they are identified by Telefónica)0.1.10 (2012-11-07)This version accommodates communication with Telefónica’s InstantServers serviceChange documentation to account for underlying shift in py-http-signature accommodating both (new) paramiko and sshAdd “verify” option to DataCenter to allow for opt-out of SSL Certificate verification (necessitated by Telefónica’s initial release of InstantServers)Save more state from current DataCenter when transferring to another oneBe a little more resourceful in resolving a DataCenter.datacenter() argument by name0.1.9 (2012-10-02)Bug fix: POSTs including data would get mangled while looking for a correct ssh-agent key (thanks, @thekad)Bug fix: ssh-agent would throw wrong error if it failed to find any keysSetallow-agentto False by default, thanks in part to this less-explored code path0.1.8 (2012-05-02)Bug fix: double-json encoding on add_key got in way of proper uploadIntroduce python-versioneer to hopefully make version management more palatable0.1.7 (2012-05-01)Renamed metadata_dict and tag_dict parameters to metadata and tagsPOST data as JSON, rather than encoded in URLAdded boot_script option on machine creationProcess and expose credentialsSlight tutorial and other documentation cleanupLocal filtering on datasets and packages0.1.6 (2012-04-30)Fixed release issues (README)Moved long tutorial out of the READMEIntegrated withssh-agentchanges inhttp_signature