Merge pull request #3 from SecurityCompass/LIBCLOUD-556_azure_compute_driver_rebased
Support for Virtual Machine Images and handling of Temp Redirects Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/33e0090a Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/33e0090a Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/33e0090a Branch: refs/heads/trunk Commit: 33e0090a7ac4ba857a7933934993fce5f77efdec Parents: b331418 65f4a7a Author: Matt Baldwin <[email protected]> Authored: Fri Feb 27 09:26:12 2015 -0800 Committer: Matt Baldwin <[email protected]> Committed: Fri Feb 27 09:26:12 2015 -0800 ---------------------------------------------------------------------- .gitignore | 4 + .pylintrc | 35 + .travis.yml | 5 + CHANGES.rst | 514 +++- README.rst | 15 +- contrib/generate_contributor_list.py | 4 +- .../generate_provider_feature_matrix_table.py | 16 +- contrib/scrape-ec2-prices.py | 186 ++ demos/gce_demo.py | 6 +- demos/gce_lb_demo.py | 2 +- demos/secrets.py-dist | 2 +- doap_libcloud.rdf | 49 + .../images/misc/hp_cloud_console_projects.jpg | Bin 0 -> 70787 bytes docs/_static/images/provider_logos/hpcloud.png | Bin 0 -> 13309 bytes docs/_static/images/provider_logos/outscale.png | Bin 0 -> 8437 bytes .../images/provider_logos/vmware_vsphere.png | Bin 0 -> 71341 bytes docs/_static/images/provider_logos/vultr.png | Bin 0 -> 19142 bytes docs/api_docs.rst | 7 + docs/committer_guide.rst | 92 +- .../_supported_methods_block_storage.rst | 24 +- .../_supported_methods_image_management.rst | 133 + .../_supported_methods_key_pair_management.rst | 16 +- docs/compute/_supported_methods_main.rst | 14 + docs/compute/_supported_providers.rst | 136 +- docs/compute/drivers/cloudsigma.rst | 2 +- docs/compute/drivers/cloudstack.rst | 2 +- docs/compute/drivers/ec2.rst | 12 + docs/compute/drivers/gce.rst | 42 +- docs/compute/drivers/hpcloud.rst | 44 + docs/compute/drivers/kili.rst | 35 + docs/compute/drivers/openstack.rst | 55 +- docs/compute/drivers/outscale_inc.rst | 31 + docs/compute/drivers/outscale_sas.rst | 31 + docs/compute/drivers/vsphere.rst | 86 + docs/compute/drivers/vultr.rst | 36 + docs/conf.py | 9 +- docs/development.rst | 6 +- docs/dns/_supported_methods.rst | 2 + docs/dns/_supported_providers.rst | 2 + docs/dns/drivers/hostvirtual.rst | 2 +- .../cloudstack/security_groups_management.py | 10 +- .../ec2/create_general_purpose_ssd_volume.py | 8 + .../ec2/create_provisioned_iops_volume.py | 8 + docs/examples/compute/gce/gce_internal_auth.py | 9 + .../compute/gce/gce_service_account_scopes.py | 31 + docs/examples/compute/openstack/cloud_init.py | 28 + docs/examples/compute/openstack/hpcloud.py | 4 +- .../compute/openstack/hpcloud_native.py | 13 + .../compute/openstack/kilicloud_native.py | 10 + docs/examples/compute/openstack/tenant_name.py | 9 + docs/examples/compute/vsphere/connect_host.py | 8 + docs/examples/compute/vsphere/connect_url.py | 8 + .../compute/vsphere/connect_url_custom_port.py | 8 + .../compute/vultr/vultr_compute_simple.py | 5 + .../examples/http_proxy/constructor_argument.py | 7 + .../http_proxy/set_http_proxy_method.py | 19 + docs/index.rst | 2 + docs/loadbalancer/drivers/elb.rst | 4 +- docs/other/using-http-proxy.rst | 80 + docs/storage/drivers/google_storage.rst | 17 +- docs/testing.rst | 2 +- docs/third_party_drivers.rst | 43 + docs/troubleshooting.rst | 177 +- docs/upgrade_notes.rst | 40 + example_compute.py | 6 +- example_loadbalancer.py | 7 +- example_storage.py | 4 +- libcloud/__init__.py | 4 +- libcloud/common/abiquo.py | 5 +- libcloud/common/azure.py | 96 +- libcloud/common/base.py | 91 +- libcloud/common/cloudstack.py | 21 +- libcloud/common/google.py | 219 +- libcloud/common/linode.py | 43 +- libcloud/common/openstack.py | 542 ++-- libcloud/common/openstack_identity.py | 1388 ++++++++++ libcloud/common/types.py | 7 +- libcloud/compute/base.py | 149 +- libcloud/compute/deployment.py | 4 +- libcloud/compute/drivers/abiquo.py | 16 +- libcloud/compute/drivers/azure.py | 2389 +++++++++++------- libcloud/compute/drivers/brightbox.py | 17 +- libcloud/compute/drivers/cloudframes.py | 2 +- libcloud/compute/drivers/cloudsigma.py | 32 +- libcloud/compute/drivers/cloudstack.py | 1463 ++++++++++- libcloud/compute/drivers/digitalocean.py | 2 +- libcloud/compute/drivers/dreamhost.py | 2 +- libcloud/compute/drivers/dummy.py | 9 + libcloud/compute/drivers/ec2.py | 2183 ++++++++++++++-- libcloud/compute/drivers/ecp.py | 68 +- libcloud/compute/drivers/elasticstack.py | 23 +- libcloud/compute/drivers/gce.py | 471 +++- libcloud/compute/drivers/gogrid.py | 4 +- libcloud/compute/drivers/hostvirtual.py | 2 +- libcloud/compute/drivers/hpcloud.py | 99 + libcloud/compute/drivers/ibm_sce.py | 2 +- libcloud/compute/drivers/joyent.py | 7 +- libcloud/compute/drivers/kili.py | 87 + libcloud/compute/drivers/libvirt_driver.py | 1 + libcloud/compute/drivers/linode.py | 28 +- libcloud/compute/drivers/nephoscale.py | 16 +- libcloud/compute/drivers/opennebula.py | 2 +- libcloud/compute/drivers/openstack.py | 405 +-- libcloud/compute/drivers/opsource.py | 11 +- libcloud/compute/drivers/profitbricks.py | 1485 +++++++++++ libcloud/compute/drivers/rackspace.py | 6 +- libcloud/compute/drivers/rimuhosting.py | 36 +- libcloud/compute/drivers/softlayer.py | 102 +- libcloud/compute/drivers/vsphere.py | 552 ++++ libcloud/compute/drivers/vultr.py | 184 ++ libcloud/compute/providers.py | 16 +- libcloud/compute/ssh.py | 134 +- libcloud/compute/types.py | 39 +- libcloud/data/pricing.json | 892 ++++--- libcloud/dns/base.py | 3 + libcloud/dns/drivers/gandi.py | 12 +- libcloud/dns/drivers/google.py | 345 +++ libcloud/dns/drivers/hostvirtual.py | 2 +- libcloud/dns/drivers/rackspace.py | 19 +- libcloud/dns/drivers/route53.py | 194 +- libcloud/dns/drivers/zerigo.py | 8 +- libcloud/dns/providers.py | 2 +- libcloud/dns/types.py | 1 + libcloud/httplib_ssl.py | 176 +- libcloud/loadbalancer/base.py | 10 +- libcloud/loadbalancer/drivers/gce.py | 15 +- libcloud/loadbalancer/drivers/rackspace.py | 4 +- libcloud/pricing.py | 12 +- libcloud/security.py | 5 +- libcloud/storage/base.py | 10 +- libcloud/storage/drivers/atmos.py | 2 +- libcloud/storage/drivers/cloudfiles.py | 163 +- libcloud/storage/drivers/google_storage.py | 5 +- libcloud/storage/drivers/ktucloud.py | 10 +- libcloud/storage/drivers/local.py | 10 +- libcloud/storage/drivers/nimbus.py | 6 +- libcloud/storage/drivers/s3.py | 23 +- libcloud/test/common/test_cloudstack.py | 2 +- libcloud/test/common/test_google.py | 25 +- libcloud/test/common/test_openstack.py | 1 - libcloud/test/common/test_openstack_identity.py | 651 +++++ ...526c_8d55_fee918758e6e_services_vmimages.xml | 23 + .../addNicToVirtualMachine_default.json | 1 + .../createEgressFirewallRule_default.json | 1 + .../cloudstack/createFirewallRule_default.json | 1 + .../createFirewallRule_firewallicmp.json | 1 + .../createNetworkACLList_default.json | 1 + .../cloudstack/createNetworkACL_default.json | 1 + .../cloudstack/createNetwork_default.json | 1 + .../cloudstack/createSSHKeyPair_default.json | 2 +- .../cloudstack/createSnapshot_default.json | 1 + .../cloudstack/createTemplate_default.json | 1 + .../fixtures/cloudstack/createVPC_default.json | 1 + .../deleteEgressFirewallRule_default.json | 1 + .../cloudstack/deleteFirewallRule_default.json | 1 + .../cloudstack/deleteNetwork_default.json | 1 + .../cloudstack/deleteSnapshot_default.json | 1 + .../fixtures/cloudstack/deleteVPC_default.json | 1 + .../deployVirtualMachine_deployip.json | 1 + .../deployVirtualMachine_deploynetworks.json | 1 + .../deployVirtualMachine_stoppedvm.json | 1 + .../listEgressFirewallRules_default.json | 1 + .../cloudstack/listFirewallRules_default.json | 1 + .../listFirewallRules_firewallicmp.json | 1 + .../cloudstack/listNetworkACLLists_default.json | 1 + .../cloudstack/listNetworkACLs_default.json | 1 + .../listNetworkOfferings_default.json | 1 + .../cloudstack/listNetworks_deployip.json | 1 + .../cloudstack/listNetworks_deploynetworks.json | 1 + .../cloudstack/listNetworks_stoppedvm.json | 1 + .../fixtures/cloudstack/listNics_default.json | 1 + .../cloudstack/listOsTypes_default.json | 1 + .../listPublicIpAddresses_firewallicmp.json | 1 + .../cloudstack/listRouters_default.json | 1 + .../listServiceOfferings_deployip.json | 1 + .../listServiceOfferings_deploynetworks.json | 1 + .../listServiceOfferings_stoppedvm.json | 1 + .../cloudstack/listSnapshots_default.json | 1 + .../cloudstack/listTemplates_deployip.json | 1 + .../listTemplates_deploynetworks.json | 1 + .../cloudstack/listTemplates_stoppedvm.json | 1 + .../cloudstack/listVPCOfferings_default.json | 1 + .../fixtures/cloudstack/listVPCs_default.json | 1 + .../fixtures/cloudstack/listZones_deployip.json | 1 + .../cloudstack/listZones_deploynetworks.json | 1 + .../cloudstack/listZones_stoppedvm.json | 1 + .../cloudstack/queryAsyncJobResult_111112.json | 1 + .../cloudstack/queryAsyncJobResult_1149341.json | 1 + .../cloudstack/queryAsyncJobResult_1149342.json | 1 + .../cloudstack/queryAsyncJobResult_1149343.json | 1 + .../cloudstack/queryAsyncJobResult_1149366.json | 1 + .../cloudstack/queryAsyncJobResult_1300001.json | 1 + .../cloudstack/queryAsyncJobResult_1300002.json | 1 + .../cloudstack/queryAsyncJobResult_1300003.json | 1 + .../queryAsyncJobResult_addnictovm.json | 37 + .../queryAsyncJobResult_deleteNetwork.json | 1 + .../queryAsyncJobResult_deleteVPC.json | 1 + .../queryAsyncJobResult_deployvmstopped.json | 1 + .../queryAsyncJobResult_deployvmwithid.json | 1 + .../queryAsyncJobResult_removenic.json | 37 + .../removeNicFromVirtualMachine_default.json | 1 + .../elastichosts/offline_servers_info.json | 16 + .../fixtures/elastichosts/servers_info.json | 47 +- .../gce/aggregated_forwardingRules.json | 1 + .../fixtures/gce/global_httpHealthChecks.json | 1 + .../global_httpHealthChecks_lchealthcheck.json | 1 + .../gce/global_snapshots_lcsnapshot.json | 4 +- ...ntral1_forwardingRules_lcforwardingrule.json | 1 + ...entral1_targetPools_lctargetpool_sticky.json | 9 + .../fixtures/gce/zones_us-central1-a_disks.json | 8 +- .../gce/zones_us-central1-a_disks_lcdisk.json | 6 +- ...a_instances_node_name_setDiskAutoDelete.json | 16 + ...operations_operation_volume_auto_delete.json | 16 + .../fixtures/linode/_avail_linodeplans.json | 290 ++- .../compute/fixtures/linode/_linode_list.json | 6 +- .../compute/fixtures/openstack/_v3__auth.json | 182 ++ .../openstack_identity/v2/v2_0_tenants.json | 17 + .../openstack_identity/v3/v3_create_user.json | 12 + .../openstack_identity/v3/v3_domains.json | 18 + .../v3/v3_domains_default.json | 11 + .../v3/v3_domains_default_users_a_roles.json | 16 + .../openstack_identity/v3/v3_projects.json | 49 + .../openstack_identity/v3/v3_roles.json | 25 + .../openstack_identity/v3/v3_users.json | 131 + .../openstack_identity/v3/v3_users_a.json | 18 + .../v3/v3_users_a_projects.json | 8 + .../openstack_identity/v3/v3_versions.json | 58 + ...rs_26f7fbee_8ce1_4c28_887a_bfe8e4bb10fe.json | 5 +- .../openstack_v1.1/_servers_detail.json | 163 +- .../fixtures/profitbricks/attach_volume.xml | 12 + .../fixtures/profitbricks/create_node.xml | 13 + .../fixtures/profitbricks/create_volume.xml | 13 + .../fixtures/profitbricks/destroy_node.xml | 12 + .../fixtures/profitbricks/destroy_volume.xml | 12 + .../fixtures/profitbricks/detach_volume.xml | 12 + .../profitbricks/ex_clear_datacenter.xml | 12 + .../profitbricks/ex_create_datacenter.xml | 13 + .../ex_create_network_interface.xml | 13 + .../profitbricks/ex_describe_datacenter.xml | 15 + .../ex_describe_network_interface.xml | 26 + .../fixtures/profitbricks/ex_describe_node.xml | 77 + .../profitbricks/ex_describe_volume.xml | 22 + .../profitbricks/ex_destroy_datacenter.xml | 10 + .../ex_destroy_network_interface.xml | 12 + .../profitbricks/ex_list_datacenters.xml | 19 + .../profitbricks/ex_list_network_interfaces.xml | 75 + .../fixtures/profitbricks/ex_start_node.xml | 10 + .../fixtures/profitbricks/ex_stop_node.xml | 10 + .../profitbricks/ex_update_datacenter.xml | 12 + .../ex_update_network_interface.xml | 12 + .../fixtures/profitbricks/ex_update_node.xml | 12 + .../fixtures/profitbricks/ex_update_volume.xml | 12 + .../fixtures/profitbricks/list_images.xml | 43 + .../fixtures/profitbricks/list_nodes.xml | 172 ++ .../fixtures/profitbricks/list_volumes.xml | 66 + .../fixtures/profitbricks/reboot_node.xml | 10 + .../v3__SoftLayer_Account_getSshKeys.xml | 63 + ..._SoftLayer_Security_Ssh_Key_createObject.xml | 39 + ..._SoftLayer_Security_Ssh_Key_deleteObject.xml | 15 + ...v3__SoftLayer_Security_Ssh_Key_getObject.xml | 33 + .../compute/fixtures/vultr/list_images.json | 1 + .../compute/fixtures/vultr/list_locations.json | 1 + .../test/compute/fixtures/vultr/list_nodes.json | 1 + .../test/compute/fixtures/vultr/list_sizes.json | 1 + libcloud/test/compute/test_azure.py | 459 +++- libcloud/test/compute/test_cloudsigma_v2_0.py | 4 +- libcloud/test/compute/test_cloudstack.py | 426 ++++ libcloud/test/compute/test_digitalocean.py | 2 + libcloud/test/compute/test_ec2.py | 230 +- libcloud/test/compute/test_elasticstack.py | 18 + libcloud/test/compute/test_gce.py | 153 +- libcloud/test/compute/test_gridspot.py | 2 +- libcloud/test/compute/test_ibm_sce.py | 4 +- libcloud/test/compute/test_linode.py | 4 +- libcloud/test/compute/test_nephoscale.py | 2 +- libcloud/test/compute/test_openstack.py | 330 +-- libcloud/test/compute/test_profitbricks.py | 509 ++++ libcloud/test/compute/test_softlayer.py | 68 +- libcloud/test/compute/test_ssh_client.py | 79 +- libcloud/test/compute/test_vcloud.py | 7 +- libcloud/test/compute/test_vultr.py | 114 + .../google/get_zone_does_not_exists.json | 13 + .../dns/fixtures/google/managed_zones_1.json | 1 + .../test/dns/fixtures/google/no_record.json | 5 + libcloud/test/dns/fixtures/google/record.json | 17 + .../test/dns/fixtures/google/records_list.json | 1 + libcloud/test/dns/fixtures/google/zone.json | 1 + .../test/dns/fixtures/google/zone_create.json | 1 + .../test/dns/fixtures/google/zone_list.json | 1 + libcloud/test/dns/test_google.py | 182 ++ libcloud/test/dns/test_rackspace.py | 2 +- libcloud/test/dns/test_route53.py | 2 +- libcloud/test/loadbalancer/test_gogrid.py | 2 +- libcloud/test/loadbalancer/test_rackspace.py | 2 +- libcloud/test/secrets.py-dist | 8 +- libcloud/test/storage/test_azure_blobs.py | 6 +- libcloud/test/storage/test_cloudfiles.py | 24 +- libcloud/test/storage/test_google_storage.py | 18 + libcloud/test/test_connection.py | 102 +- libcloud/test/test_utils.py | 41 + libcloud/utils/connection.py | 15 +- libcloud/utils/decorators.py | 57 + libcloud/utils/dist.py | 2 +- libcloud/utils/misc.py | 2 +- libcloud/utils/networking.py | 49 +- libcloud/utils/publickey.py | 7 +- libcloud/utils/py3.py | 39 +- setup.py | 1 + tox.ini | 27 +- 309 files changed, 19108 insertions(+), 3398 deletions(-) ----------------------------------------------------------------------
