fog 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/Gemfile.lock +3 -3
- data/bin/fog +0 -5
- data/changelog.txt +88 -0
- data/fog.gemspec +3 -3
- data/lib/fog.rb +1 -2
- data/lib/fog/aws/elb.rb +2 -0
- data/lib/fog/aws/iam.rb +7 -0
- data/lib/fog/aws/parsers/iam/get_group.rb +55 -0
- data/lib/fog/aws/parsers/iam/get_user_policy.rb +27 -0
- data/lib/fog/aws/parsers/iam/update_group.rb +26 -0
- data/lib/fog/aws/parsers/iam/update_user.rb +27 -0
- data/lib/fog/aws/requests/iam/create_access_key.rb +1 -1
- data/lib/fog/aws/requests/iam/get_group.rb +44 -0
- data/lib/fog/aws/requests/iam/get_user_policy.rb +36 -0
- data/lib/fog/aws/requests/iam/update_group.rb +39 -0
- data/lib/fog/aws/requests/iam/update_signing_certificate.rb +32 -0
- data/lib/fog/aws/requests/iam/update_user.rb +39 -0
- data/lib/fog/aws/ses.rb +2 -0
- data/lib/fog/aws/simpledb.rb +2 -0
- data/lib/fog/bin.rb +3 -8
- data/lib/fog/bin/aws.rb +2 -14
- data/lib/fog/bin/bluebox.rb +6 -8
- data/lib/fog/bin/dnsimple.rb +30 -0
- data/lib/fog/bin/ecloud.rb +30 -0
- data/lib/fog/bin/go_grid.rb +1 -7
- data/lib/fog/bin/linode.rb +0 -6
- data/lib/fog/bin/local.rb +1 -7
- data/lib/fog/bin/new_servers.rb +1 -7
- data/lib/fog/bin/rackspace.rb +2 -14
- data/lib/fog/bin/slicehost.rb +2 -8
- data/lib/fog/bin/terremark.rb +0 -5
- data/lib/fog/bin/voxel.rb +30 -0
- data/lib/fog/cdn/aws.rb +2 -0
- data/lib/fog/compute.rb +6 -3
- data/lib/fog/compute/aws.rb +4 -18
- data/lib/fog/compute/ecloud.rb +1306 -0
- data/lib/fog/compute/models/aws/key_pair.rb +0 -2
- data/lib/fog/compute/models/aws/security_group.rb +4 -4
- data/lib/fog/compute/models/aws/server.rb +13 -3
- data/lib/fog/compute/models/aws/snapshot.rb +0 -2
- data/lib/fog/compute/models/aws/volume.rb +0 -2
- data/lib/fog/compute/models/bluebox/server.rb +23 -11
- data/lib/fog/compute/models/brightbox/server.rb +8 -0
- data/lib/fog/compute/models/ecloud/backup_internet_service.rb +56 -0
- data/lib/fog/compute/models/ecloud/backup_internet_services.rb +33 -0
- data/lib/fog/compute/models/ecloud/catalog.rb +28 -0
- data/lib/fog/compute/models/ecloud/catalog_item.rb +29 -0
- data/lib/fog/compute/models/ecloud/firewall_acl.rb +24 -0
- data/lib/fog/compute/models/ecloud/firewall_acls.rb +31 -0
- data/lib/fog/compute/models/ecloud/internet_service.rb +117 -0
- data/lib/fog/compute/models/ecloud/internet_services.rb +33 -0
- data/lib/fog/compute/models/ecloud/ip.rb +49 -0
- data/lib/fog/compute/models/ecloud/ips.rb +32 -0
- data/lib/fog/compute/models/ecloud/network.rb +72 -0
- data/lib/fog/compute/models/ecloud/networks.rb +33 -0
- data/lib/fog/compute/models/ecloud/node.rb +43 -0
- data/lib/fog/compute/models/ecloud/nodes.rb +31 -0
- data/lib/fog/compute/models/ecloud/public_ip.rb +22 -0
- data/lib/fog/compute/models/ecloud/public_ips.rb +36 -0
- data/lib/fog/compute/models/ecloud/server.rb +209 -0
- data/lib/fog/compute/models/ecloud/servers.rb +55 -0
- data/lib/fog/compute/models/ecloud/task.rb +21 -0
- data/lib/fog/compute/models/ecloud/tasks.rb +31 -0
- data/lib/fog/compute/models/ecloud/vdc.rb +81 -0
- data/lib/fog/compute/models/ecloud/vdcs.rb +40 -0
- data/lib/fog/compute/models/go_grid/server.rb +15 -1
- data/lib/fog/compute/models/rackspace/server.rb +16 -0
- data/lib/fog/compute/models/slicehost/server.rb +16 -0
- data/lib/fog/compute/models/voxel/image.rb +12 -0
- data/lib/fog/compute/models/voxel/images.rb +30 -0
- data/lib/fog/compute/models/voxel/server.rb +77 -0
- data/lib/fog/compute/models/voxel/servers.rb +31 -0
- data/lib/fog/compute/new_servers.rb +2 -2
- data/lib/fog/compute/parsers/voxel/basic.rb +31 -0
- data/lib/fog/compute/parsers/voxel/devices_list.rb +111 -0
- data/lib/fog/compute/parsers/voxel/images_list.rb +59 -0
- data/lib/fog/compute/parsers/voxel/voxcloud_create.rb +40 -0
- data/lib/fog/compute/parsers/voxel/voxcloud_delete.rb +31 -0
- data/lib/fog/compute/parsers/voxel/voxcloud_status.rb +42 -0
- data/lib/fog/compute/rackspace.rb +0 -16
- data/lib/fog/compute/requests/aws/associate_address.rb +2 -0
- data/lib/fog/compute/requests/aws/authorize_security_group_ingress.rb +28 -8
- data/lib/fog/compute/requests/aws/create_security_group.rb +2 -0
- data/lib/fog/compute/requests/aws/create_tags.rb +2 -0
- data/lib/fog/compute/requests/aws/delete_key_pair.rb +2 -0
- data/lib/fog/compute/requests/aws/delete_security_group.rb +2 -0
- data/lib/fog/compute/requests/aws/delete_snapshot.rb +2 -0
- data/lib/fog/compute/requests/aws/delete_tags.rb +2 -0
- data/lib/fog/compute/requests/aws/delete_volume.rb +2 -0
- data/lib/fog/compute/requests/aws/disassociate_address.rb +2 -0
- data/lib/fog/compute/requests/aws/modify_image_attributes.rb +2 -0
- data/lib/fog/compute/requests/aws/modify_snapshot_attribute.rb +2 -0
- data/lib/fog/compute/requests/aws/reboot_instances.rb +2 -0
- data/lib/fog/compute/requests/aws/release_address.rb +2 -0
- data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +2 -0
- data/lib/fog/compute/requests/ecloud/add_backup_internet_service.rb +109 -0
- data/lib/fog/compute/requests/ecloud/add_internet_service.rb +149 -0
- data/lib/fog/compute/requests/ecloud/add_node.rb +62 -0
- data/lib/fog/compute/requests/ecloud/clone_vapp.rb +40 -0
- data/lib/fog/compute/requests/ecloud/configure_internet_service.rb +112 -0
- data/lib/fog/compute/requests/ecloud/configure_network.rb +44 -0
- data/lib/fog/compute/requests/ecloud/configure_network_ip.rb +66 -0
- data/lib/fog/compute/requests/ecloud/configure_node.rb +56 -0
- data/lib/fog/compute/requests/ecloud/configure_vapp.rb +144 -0
- data/lib/fog/compute/requests/ecloud/delete_internet_service.rb +22 -0
- data/lib/fog/compute/requests/ecloud/delete_node.rb +22 -0
- data/lib/fog/compute/requests/ecloud/delete_vapp.rb +29 -0
- data/lib/fog/compute/requests/ecloud/get_catalog.rb +44 -0
- data/lib/fog/compute/requests/ecloud/get_catalog_item.rb +47 -0
- data/lib/fog/compute/requests/ecloud/get_customization_options.rb +22 -0
- data/lib/fog/compute/requests/ecloud/get_firewall_acl.rb +11 -0
- data/lib/fog/compute/requests/ecloud/get_firewall_acls.rb +11 -0
- data/lib/fog/compute/requests/ecloud/get_internet_services.rb +82 -0
- data/lib/fog/compute/requests/ecloud/get_network.rb +44 -0
- data/lib/fog/compute/requests/ecloud/get_network_extensions.rb +33 -0
- data/lib/fog/compute/requests/ecloud/get_network_ip.rb +43 -0
- data/lib/fog/compute/requests/ecloud/get_network_ips.rb +35 -0
- data/lib/fog/compute/requests/ecloud/get_node.rb +40 -0
- data/lib/fog/compute/requests/ecloud/get_nodes.rb +41 -0
- data/lib/fog/compute/requests/ecloud/get_organization.rb +49 -0
- data/lib/fog/compute/requests/ecloud/get_public_ip.rb +34 -0
- data/lib/fog/compute/requests/ecloud/get_public_ips.rb +38 -0
- data/lib/fog/compute/requests/ecloud/get_task.rb +11 -0
- data/lib/fog/compute/requests/ecloud/get_task_list.rb +11 -0
- data/lib/fog/compute/requests/ecloud/get_vapp.rb +99 -0
- data/lib/fog/compute/requests/ecloud/get_vapp_template.rb +11 -0
- data/lib/fog/compute/requests/ecloud/get_vdc.rb +84 -0
- data/lib/fog/compute/requests/ecloud/get_versions.rb +37 -0
- data/lib/fog/compute/requests/ecloud/instantiate_vapp_template.rb +142 -0
- data/lib/fog/compute/requests/ecloud/login.rb +48 -0
- data/lib/fog/compute/requests/ecloud/power_off.rb +23 -0
- data/lib/fog/compute/requests/ecloud/power_on.rb +23 -0
- data/lib/fog/compute/requests/ecloud/power_reset.rb +11 -0
- data/lib/fog/compute/requests/ecloud/power_shutdown.rb +11 -0
- data/lib/fog/compute/requests/voxel/devices_list.rb +24 -0
- data/lib/fog/compute/requests/voxel/devices_power.rb +22 -0
- data/lib/fog/compute/requests/voxel/images_list.rb +31 -0
- data/lib/fog/compute/requests/voxel/voxcloud_create.rb +22 -0
- data/lib/fog/compute/requests/voxel/voxcloud_delete.rb +20 -0
- data/lib/fog/compute/requests/voxel/voxcloud_status.rb +29 -0
- data/lib/fog/compute/slicehost.rb +2 -0
- data/lib/fog/compute/voxel.rb +112 -0
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/credentials.rb +6 -2
- data/lib/fog/core/parser.rb +2 -0
- data/lib/fog/core/scp.rb +67 -0
- data/lib/fog/dns.rb +6 -0
- data/lib/fog/dns/aws.rb +2 -0
- data/lib/fog/dns/bluebox.rb +110 -0
- data/lib/fog/dns/dnsimple.rb +95 -0
- data/lib/fog/dns/models/bluebox/record.rb +52 -0
- data/lib/fog/dns/models/bluebox/records.rb +36 -0
- data/lib/fog/dns/models/bluebox/zone.rb +63 -0
- data/lib/fog/dns/models/bluebox/zones.rb +28 -0
- data/lib/fog/dns/models/dnsimple/record.rb +54 -0
- data/lib/fog/dns/models/dnsimple/records.rb +38 -0
- data/lib/fog/dns/models/dnsimple/zone.rb +50 -0
- data/lib/fog/dns/models/dnsimple/zones.rb +28 -0
- data/lib/fog/dns/parsers/bluebox/create_record.rb +26 -0
- data/lib/fog/dns/parsers/bluebox/create_zone.rb +26 -0
- data/lib/fog/dns/parsers/bluebox/get_record.rb +21 -0
- data/lib/fog/dns/parsers/bluebox/get_records.rb +27 -0
- data/lib/fog/{compute/parsers/terremark_ecloud/get_ip_address.rb → dns/parsers/bluebox/get_zone.rb} +6 -6
- data/lib/fog/dns/parsers/bluebox/get_zones.rb +30 -0
- data/lib/fog/dns/requests/bluebox/create_record.rb +48 -0
- data/lib/fog/dns/requests/bluebox/create_zone.rb +52 -0
- data/lib/fog/dns/requests/bluebox/delete_record.rb +31 -0
- data/lib/fog/dns/requests/bluebox/delete_zone.rb +31 -0
- data/lib/fog/dns/requests/bluebox/get_record.rb +40 -0
- data/lib/fog/dns/requests/bluebox/get_records.rb +41 -0
- data/lib/fog/dns/requests/bluebox/get_zone.rb +44 -0
- data/lib/fog/dns/requests/bluebox/get_zones.rb +43 -0
- data/lib/fog/dns/requests/bluebox/update_record.rb +34 -0
- data/lib/fog/dns/requests/bluebox/update_zone.rb +30 -0
- data/lib/fog/dns/requests/dnsimple/create_domain.rb +27 -0
- data/lib/fog/dns/requests/dnsimple/create_record.rb +48 -0
- data/lib/fog/dns/requests/dnsimple/delete_domain.rb +26 -0
- data/lib/fog/dns/requests/dnsimple/delete_record.rb +21 -0
- data/lib/fog/dns/requests/dnsimple/get_domain.rb +37 -0
- data/lib/fog/dns/requests/dnsimple/list_domains.rb +35 -0
- data/lib/fog/dns/requests/dnsimple/list_records.rb +32 -0
- data/lib/fog/dns/requests/dnsimple/update_record.rb +42 -0
- data/lib/fog/dns/slicehost.rb +2 -0
- data/lib/fog/dns/zerigo.rb +2 -0
- data/lib/fog/providers.rb +3 -1
- data/lib/fog/providers/aws.rb +0 -4
- data/lib/fog/providers/bluebox.rb +1 -8
- data/lib/fog/providers/dnsimple.rb +11 -0
- data/lib/fog/providers/ecloud.rb +11 -0
- data/lib/fog/providers/go_grid.rb +0 -8
- data/lib/fog/providers/google.rb +0 -3
- data/lib/fog/providers/linode.rb +0 -8
- data/lib/fog/providers/local.rb +0 -8
- data/lib/fog/providers/new_servers.rb +0 -11
- data/lib/fog/providers/rackspace.rb +0 -2
- data/lib/fog/providers/slicehost.rb +0 -11
- data/lib/fog/providers/voxel.rb +16 -0
- data/lib/fog/providers/zerigo.rb +0 -3
- data/lib/fog/storage/aws.rb +7 -19
- data/lib/fog/storage/google.rb +2 -2
- data/lib/fog/storage/models/aws/directory.rb +0 -3
- data/lib/fog/storage/models/aws/file.rb +0 -3
- data/lib/fog/storage/models/google/directory.rb +0 -3
- data/lib/fog/storage/models/google/file.rb +0 -3
- data/lib/fog/storage/models/local/directory.rb +0 -3
- data/lib/fog/storage/models/local/file.rb +29 -1
- data/lib/fog/storage/models/local/files.rb +8 -5
- data/lib/fog/storage/models/rackspace/directory.rb +1 -3
- data/lib/fog/storage/parsers/aws/get_bucket_website.rb +26 -0
- data/lib/fog/storage/rackspace.rb +0 -16
- data/lib/fog/storage/requests/aws/delete_bucket_website.rb +32 -0
- data/lib/fog/storage/requests/aws/get_bucket_website.rb +42 -0
- data/lib/fog/storage/requests/aws/put_bucket_website.rb +49 -0
- data/lib/fog/terremark.rb +0 -5
- data/spec/ecloud/bin_spec.rb +22 -0
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/backup_internet_service_spec.rb +5 -5
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/backup_internet_services_spec.rb +4 -4
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/internet_service_spec.rb +5 -5
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/internet_services_spec.rb +4 -4
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/ip_spec.rb +5 -5
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/ips_spec.rb +4 -4
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/network_spec.rb +5 -5
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/networks_spec.rb +4 -4
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/node_spec.rb +5 -5
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/nodes_spec.rb +4 -4
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/public_ip_spec.rb +5 -5
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/public_ips_spec.rb +4 -4
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/server_spec.rb +4 -4
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/vdc_spec.rb +5 -5
- data/spec/{vcloud/terremark/ecloud → ecloud}/models/vdcs_spec.rb +4 -4
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/add_backup_internet_service_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/add_internet_service_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/add_node_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/configure_internet_service_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/configure_network_ip_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/configure_node_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/configure_vapp_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/delete_internet_service_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/delete_node_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/delete_vapp_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_catalog_item_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_catalog_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_customization_options_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_internet_services_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_network_ip_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_network_ips_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_network_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_node_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_nodes_spec.rb +2 -2
- data/spec/{vcloud → ecloud}/requests/get_organization_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_public_ip_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_public_ips_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_vapp_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/get_vdc_spec.rb +2 -2
- data/spec/ecloud/requests/get_versions_spec.rb +57 -0
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/instantiate_vapp_template_spec.rb +3 -3
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/login_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/power_off_spec.rb +2 -2
- data/spec/{vcloud/terremark/ecloud → ecloud}/requests/power_on_spec.rb +2 -2
- data/spec/{vcloud → ecloud}/spec_helper.rb +14 -29
- data/spec/{vcloud → ecloud}/vcloud_spec.rb +4 -4
- data/spec/spec_helper.rb +0 -1
- data/tests/compute/helper.rb +12 -1
- data/tests/compute/models/flavors_tests.rb +2 -0
- data/tests/compute/models/server_tests.rb +28 -1
- data/tests/compute/requests/voxel/image_tests.rb +46 -0
- data/tests/compute/requests/voxel/server_tests.rb +123 -0
- data/tests/dns/helper.rb +10 -1
- data/tests/dns/models/record_tests.rb +0 -1
- data/tests/dns/requests/bluebox/dns_tests.rb +271 -0
- data/tests/dns/requests/dnsimple/dns_tests.rb +130 -0
- data/tests/helper.rb +1 -1
- data/tests/helpers/mock_helper.rb +2 -0
- data/tests/storage/models/directory_test.rb +2 -1
- metadata +244 -224
- data/lib/fog/bin/terremark_ecloud.rb +0 -28
- data/lib/fog/bin/vcloud.rb +0 -59
- data/lib/fog/compute/parsers/terremark_ecloud/get_catalog.rb +0 -36
- data/lib/fog/compute/parsers/terremark_ecloud/get_catalog_item.rb +0 -43
- data/lib/fog/compute/parsers/terremark_ecloud/get_ip_addresses.rb +0 -27
- data/lib/fog/compute/parsers/terremark_ecloud/get_network.rb +0 -59
- data/lib/fog/compute/parsers/terremark_ecloud/get_organization.rb +0 -35
- data/lib/fog/compute/parsers/terremark_ecloud/get_task.rb +0 -42
- data/lib/fog/compute/parsers/terremark_ecloud/get_task_list.rb +0 -51
- data/lib/fog/compute/parsers/terremark_ecloud/get_vdc.rb +0 -110
- data/lib/fog/compute/parsers/terremark_ecloud/get_versions.rb +0 -28
- data/lib/fog/compute/parsers/terremark_ecloud/login.rb +0 -27
- data/lib/fog/compute/requests/terremark_ecloud/get_catalog.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_catalog_item.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_ip_address.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_ip_addresses.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_network.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_organization.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_task.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_task_list.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_vdc.rb +0 -19
- data/lib/fog/compute/requests/terremark_ecloud/get_versions.rb +0 -26
- data/lib/fog/compute/requests/terremark_ecloud/login.rb +0 -29
- data/lib/fog/compute/terremark_ecloud.rb +0 -93
- data/lib/fog/providers/terremark_ecloud.rb +0 -17
- data/lib/fog/terremark/ecloud.rb +0 -73
- data/lib/fog/vcloud.rb +0 -337
- data/lib/fog/vcloud/collection.rb +0 -30
- data/lib/fog/vcloud/generators.rb +0 -33
- data/lib/fog/vcloud/mock_data_classes.rb +0 -767
- data/lib/fog/vcloud/model.rb +0 -22
- data/lib/fog/vcloud/models/vdc.rb +0 -26
- data/lib/fog/vcloud/models/vdcs.rb +0 -35
- data/lib/fog/vcloud/requests/get_network.rb +0 -47
- data/lib/fog/vcloud/requests/get_organization.rb +0 -47
- data/lib/fog/vcloud/requests/get_vdc.rb +0 -82
- data/lib/fog/vcloud/requests/get_versions.rb +0 -34
- data/lib/fog/vcloud/requests/login.rb +0 -46
- data/lib/fog/vcloud/terremark/ecloud.rb +0 -187
- data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_service.rb +0 -60
- data/lib/fog/vcloud/terremark/ecloud/models/backup_internet_services.rb +0 -36
- data/lib/fog/vcloud/terremark/ecloud/models/catalog.rb +0 -31
- data/lib/fog/vcloud/terremark/ecloud/models/catalog_item.rb +0 -31
- data/lib/fog/vcloud/terremark/ecloud/models/firewall_acl.rb +0 -28
- data/lib/fog/vcloud/terremark/ecloud/models/firewall_acls.rb +0 -34
- data/lib/fog/vcloud/terremark/ecloud/models/internet_service.rb +0 -121
- data/lib/fog/vcloud/terremark/ecloud/models/internet_services.rb +0 -36
- data/lib/fog/vcloud/terremark/ecloud/models/ip.rb +0 -51
- data/lib/fog/vcloud/terremark/ecloud/models/ips.rb +0 -35
- data/lib/fog/vcloud/terremark/ecloud/models/network.rb +0 -77
- data/lib/fog/vcloud/terremark/ecloud/models/networks.rb +0 -36
- data/lib/fog/vcloud/terremark/ecloud/models/node.rb +0 -47
- data/lib/fog/vcloud/terremark/ecloud/models/nodes.rb +0 -33
- data/lib/fog/vcloud/terremark/ecloud/models/public_ip.rb +0 -25
- data/lib/fog/vcloud/terremark/ecloud/models/public_ips.rb +0 -39
- data/lib/fog/vcloud/terremark/ecloud/models/server.rb +0 -211
- data/lib/fog/vcloud/terremark/ecloud/models/servers.rb +0 -57
- data/lib/fog/vcloud/terremark/ecloud/models/task.rb +0 -23
- data/lib/fog/vcloud/terremark/ecloud/models/tasks.rb +0 -33
- data/lib/fog/vcloud/terremark/ecloud/models/vdc.rb +0 -83
- data/lib/fog/vcloud/terremark/ecloud/models/vdcs.rb +0 -42
- data/lib/fog/vcloud/terremark/ecloud/requests/add_backup_internet_service.rb +0 -111
- data/lib/fog/vcloud/terremark/ecloud/requests/add_internet_service.rb +0 -152
- data/lib/fog/vcloud/terremark/ecloud/requests/add_node.rb +0 -64
- data/lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb +0 -42
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_internet_service.rb +0 -115
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_network.rb +0 -46
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_network_ip.rb +0 -68
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_node.rb +0 -58
- data/lib/fog/vcloud/terremark/ecloud/requests/configure_vapp.rb +0 -147
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_internet_service.rb +0 -25
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_node.rb +0 -24
- data/lib/fog/vcloud/terremark/ecloud/requests/delete_vapp.rb +0 -32
- data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog.rb +0 -46
- data/lib/fog/vcloud/terremark/ecloud/requests/get_catalog_item.rb +0 -49
- data/lib/fog/vcloud/terremark/ecloud/requests/get_customization_options.rb +0 -24
- data/lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acl.rb +0 -13
- data/lib/fog/vcloud/terremark/ecloud/requests/get_firewall_acls.rb +0 -13
- data/lib/fog/vcloud/terremark/ecloud/requests/get_internet_services.rb +0 -84
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network.rb +0 -47
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_extensions.rb +0 -35
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ip.rb +0 -45
- data/lib/fog/vcloud/terremark/ecloud/requests/get_network_ips.rb +0 -37
- data/lib/fog/vcloud/terremark/ecloud/requests/get_node.rb +0 -42
- data/lib/fog/vcloud/terremark/ecloud/requests/get_nodes.rb +0 -43
- data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ip.rb +0 -36
- data/lib/fog/vcloud/terremark/ecloud/requests/get_public_ips.rb +0 -41
- data/lib/fog/vcloud/terremark/ecloud/requests/get_task.rb +0 -13
- data/lib/fog/vcloud/terremark/ecloud/requests/get_task_list.rb +0 -14
- data/lib/fog/vcloud/terremark/ecloud/requests/get_vapp.rb +0 -101
- data/lib/fog/vcloud/terremark/ecloud/requests/get_vapp_template.rb +0 -13
- data/lib/fog/vcloud/terremark/ecloud/requests/get_vdc.rb +0 -87
- data/lib/fog/vcloud/terremark/ecloud/requests/instantiate_vapp_template.rb +0 -144
- data/lib/fog/vcloud/terremark/ecloud/requests/power_off.rb +0 -25
- data/lib/fog/vcloud/terremark/ecloud/requests/power_on.rb +0 -25
- data/lib/fog/vcloud/terremark/ecloud/requests/power_reset.rb +0 -13
- data/lib/fog/vcloud/terremark/ecloud/requests/power_shutdown.rb +0 -13
- data/lib/fog/vcloud/terremark/vcloud.rb +0 -39
- data/lib/fog/vcloud/terremark/vcloud/requests/get_vdc.rb +0 -57
- data/spec/vcloud/bin_spec.rb +0 -28
- data/spec/vcloud/models/vdc_spec.rb +0 -51
- data/spec/vcloud/models/vdcs_spec.rb +0 -1
- data/spec/vcloud/requests/get_network_spec.rb +0 -44
- data/spec/vcloud/requests/get_vdc_spec.rb +0 -62
- data/spec/vcloud/requests/get_versions_spec.rb +0 -54
- data/spec/vcloud/requests/login_spec.rb +0 -24
- data/tests/compute/requests/terremark_ecloud/catalog_tests.rb +0 -47
- data/tests/compute/requests/terremark_ecloud/helper.rb +0 -45
- data/tests/compute/requests/terremark_ecloud/network_tests.rb +0 -30
- data/tests/compute/requests/terremark_ecloud/organization_tests.rb +0 -28
- data/tests/compute/requests/terremark_ecloud/task_tests.rb +0 -39
- data/tests/compute/requests/terremark_ecloud/vdc_tests.rb +0 -60
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Ecloud
|
|
3
|
+
class Compute
|
|
4
|
+
module Shared
|
|
5
|
+
private
|
|
6
|
+
|
|
7
|
+
def validate_instantiate_vapp_template_options(catalog_item_uri, options)
|
|
8
|
+
valid_opts = [:name, :vdc_uri, :network_uri, :cpus, :memory, :row, :group]
|
|
9
|
+
unless valid_opts.all? { |opt| options.keys.include?(opt) }
|
|
10
|
+
raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Figure out the template_uri
|
|
14
|
+
catalog_item = get_catalog_item( catalog_item_uri ).body
|
|
15
|
+
catalog_item[:Entity] = [ catalog_item[:Entity] ] if catalog_item[:Entity].is_a?(Hash)
|
|
16
|
+
catalog_item[:Link] = [ catalog_item[:Link] ] if catalog_item[:Link].is_a?(Hash)
|
|
17
|
+
|
|
18
|
+
options[:template_uri] = begin
|
|
19
|
+
catalog_item[:Entity].detect { |entity| entity[:type] == "application/vnd.vmware.vcloud.vAppTemplate+xml" }[:href]
|
|
20
|
+
rescue
|
|
21
|
+
raise RuntimeError.new("Unable to locate template uri for #{catalog_item_uri}")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
customization_options = begin
|
|
25
|
+
customization_href = catalog_item[:Link].detect { |link| link[:type] == "application/vnd.tmrk.ecloud.catalogItemCustomizationParameters+xml" }[:href]
|
|
26
|
+
get_customization_options( customization_href ).body
|
|
27
|
+
rescue
|
|
28
|
+
raise RuntimeError.new("Unable to get customization options for #{catalog_item_uri}")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Check to see if we can set the password
|
|
32
|
+
if options[:password] and customization_options[:CustomizePassword] == "false"
|
|
33
|
+
raise ArgumentError.new("This catalog item (#{catalog_item_uri}) does not allow setting a password.")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# According to the docs if CustomizePassword is "true" then we NEED to set a password
|
|
37
|
+
if customization_options[:CustomizePassword] == "true" and ( options[:password].nil? or options[:password].empty? )
|
|
38
|
+
raise ArgumentError.new("This catalog item (#{catalog_item_uri}) requires a :password to instantiate.")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def generate_instantiate_vapp_template_request(options)
|
|
43
|
+
xml = Builder::XmlMarkup.new
|
|
44
|
+
xml.InstantiateVAppTemplateParams(xmlns.merge!(:name => options[:name], :"xml:lang" => "en")) {
|
|
45
|
+
xml.VAppTemplate(:href => options[:template_uri])
|
|
46
|
+
xml.InstantiationParams {
|
|
47
|
+
xml.ProductSection( :"xmlns:q1" => "http://www.vmware.com/vcloud/v0.8", :"xmlns:ovf" => "http://schemas.dmtf.org/ovf/envelope/1") {
|
|
48
|
+
if options[:password]
|
|
49
|
+
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "password", :"ovf:value" => options[:password] )
|
|
50
|
+
end
|
|
51
|
+
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "row", :"ovf:value" => options[:row] )
|
|
52
|
+
xml.Property( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1", :"ovf:key" => "group", :"ovf:value" => options[:group] )
|
|
53
|
+
}
|
|
54
|
+
xml.VirtualHardwareSection( :"xmlns:q1" => "http://www.vmware.com/vcloud/v0.8" ) {
|
|
55
|
+
# # of CPUS
|
|
56
|
+
xml.Item( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1" ) {
|
|
57
|
+
xml.InstanceID(1, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
|
58
|
+
xml.ResourceType(3, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
|
59
|
+
xml.VirtualQuantity(options[:cpus], :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
|
60
|
+
}
|
|
61
|
+
# Memory
|
|
62
|
+
xml.Item( :xmlns => "http://schemas.dmtf.org/ovf/envelope/1" ) {
|
|
63
|
+
xml.InstanceID(2, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
|
64
|
+
xml.ResourceType(4, :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
|
65
|
+
xml.VirtualQuantity(options[:memory], :xmlns => "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData")
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
xml.NetworkConfigSection {
|
|
69
|
+
xml.NetworkConfig {
|
|
70
|
+
xml.NetworkAssociation( :href => options[:network_uri] )
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
class Real
|
|
79
|
+
include Shared
|
|
80
|
+
|
|
81
|
+
def instantiate_vapp_template(catalog_item_uri, options = {})
|
|
82
|
+
validate_instantiate_vapp_template_options(catalog_item_uri, options)
|
|
83
|
+
|
|
84
|
+
request(
|
|
85
|
+
:body => generate_instantiate_vapp_template_request(options),
|
|
86
|
+
:expects => 200,
|
|
87
|
+
:headers => {'Content-Type' => 'application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml'},
|
|
88
|
+
:method => 'POST',
|
|
89
|
+
:uri => options[:vdc_uri] + '/action/instantiatevAppTemplate',
|
|
90
|
+
:parse => true
|
|
91
|
+
)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
class Mock
|
|
96
|
+
include Shared
|
|
97
|
+
|
|
98
|
+
#
|
|
99
|
+
# Based on
|
|
100
|
+
# http://support.theenterprisecloud.com/kb/default.asp?id=554&Lang=1&SID=
|
|
101
|
+
#
|
|
102
|
+
|
|
103
|
+
def instantiate_vapp_template(catalog_item_uri, options = {})
|
|
104
|
+
validate_instantiate_vapp_template_options(catalog_item_uri, options)
|
|
105
|
+
catalog_item = mock_data.catalog_item_from_href(catalog_item_uri)
|
|
106
|
+
|
|
107
|
+
xml = nil
|
|
108
|
+
if vdc = mock_data.vdc_from_href(options[:vdc_uri])
|
|
109
|
+
if network = mock_data.network_from_href(options[:network_uri])
|
|
110
|
+
new_vm = MockVirtualMachine.new({ :name => options[:name], :ip => network.random_ip, :cpus => options[:cpus], :memory => options[:memory] }, vdc)
|
|
111
|
+
new_vm.disks.push(*catalog_item.disks.dup)
|
|
112
|
+
vdc.virtual_machines << new_vm
|
|
113
|
+
|
|
114
|
+
xml = generate_instantiate_vapp_template_response(new_vm)
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
if xml
|
|
119
|
+
mock_it 200, xml, {'Content-Type' => 'application/xml'}
|
|
120
|
+
else
|
|
121
|
+
mock_error 200, "401 Unauthorized"
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
private
|
|
126
|
+
|
|
127
|
+
def generate_instantiate_vapp_template_response(vapp)
|
|
128
|
+
builder = Builder::XmlMarkup.new
|
|
129
|
+
builder.VApp(xmlns.merge(
|
|
130
|
+
:href => vapp.href,
|
|
131
|
+
:type => "application/vnd.vmware.vcloud.vApp+xml",
|
|
132
|
+
:name => vapp.name,
|
|
133
|
+
:status => 0,
|
|
134
|
+
:size => 4
|
|
135
|
+
)) {
|
|
136
|
+
builder.Link(:rel => "up", :href => vapp._parent.href, :type => "application/vnd.vmware.vcloud.vdc+xml")
|
|
137
|
+
}
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Ecloud
|
|
3
|
+
class Compute
|
|
4
|
+
|
|
5
|
+
class Real
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def login
|
|
9
|
+
unauthenticated_request({
|
|
10
|
+
:expects => 200,
|
|
11
|
+
:headers => {
|
|
12
|
+
'Authorization' => authorization_header
|
|
13
|
+
},
|
|
14
|
+
:method => 'POST',
|
|
15
|
+
:parse => true,
|
|
16
|
+
:uri => login_uri
|
|
17
|
+
})
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class Mock
|
|
23
|
+
|
|
24
|
+
def login
|
|
25
|
+
#
|
|
26
|
+
# Based off of:
|
|
27
|
+
# http://support.theenterprisecloud.com/kb/default.asp?id=536&Lang=1&SID=
|
|
28
|
+
# https://community.vcloudexpress.terremark.com/en-us/product_docs/w/wiki/01-get-login-token.aspx
|
|
29
|
+
# vCloud API Guide v0.9 - Page 17
|
|
30
|
+
#
|
|
31
|
+
xml = Builder::XmlMarkup.new
|
|
32
|
+
|
|
33
|
+
mock_it 200,
|
|
34
|
+
xml.OrgList(xmlns) {
|
|
35
|
+
mock_data.organizations.each do |organization|
|
|
36
|
+
xml.Org( :type => "application/vnd.vmware.vcloud.org+xml", :href => organization.href, :name => organization.name )
|
|
37
|
+
end
|
|
38
|
+
},
|
|
39
|
+
{ 'Set-Cookie' => 'vcloud-token=fc020a05-21d7-4f33-9b2a-25d8cd05a44e; path=/',
|
|
40
|
+
'Content-Type' => 'application/vnd.vmware.vcloud.orgslist+xml' }
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Ecloud
|
|
3
|
+
class Compute
|
|
4
|
+
|
|
5
|
+
class Real
|
|
6
|
+
basic_request :power_off, 202, 'POST'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class Mock
|
|
10
|
+
def power_off(vapp_uri)
|
|
11
|
+
if vapp = mock_data.virtual_machine_from_href(vapp_uri)
|
|
12
|
+
vapp.power_off!
|
|
13
|
+
|
|
14
|
+
builder = Builder::XmlMarkup.new
|
|
15
|
+
mock_it 200, builder.Task(xmlns)
|
|
16
|
+
else
|
|
17
|
+
mock_error 200, "401 Unauthorized"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Ecloud
|
|
3
|
+
class Compute
|
|
4
|
+
|
|
5
|
+
class Real
|
|
6
|
+
basic_request :power_on, 202, 'POST'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class Mock
|
|
10
|
+
def power_on(vapp_uri)
|
|
11
|
+
if vapp = mock_data.virtual_machine_from_href(vapp_uri)
|
|
12
|
+
vapp.power_on!
|
|
13
|
+
|
|
14
|
+
builder = Builder::XmlMarkup.new
|
|
15
|
+
mock_it 200, builder.Task(xmlns)
|
|
16
|
+
else
|
|
17
|
+
mock_error 200, "401 Unauthorized"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Voxel
|
|
3
|
+
class Compute
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/compute/parsers/voxel/devices_list'
|
|
7
|
+
|
|
8
|
+
def devices_list(device_id = nil)
|
|
9
|
+
options = {
|
|
10
|
+
:parser => Fog::Parsers::Voxel::Compute::DevicesList.new,
|
|
11
|
+
:verbosity => 'normal'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
unless device_id.nil?
|
|
15
|
+
options[:device_id] = device_id
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
request("voxel.devices.list", options)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Voxel
|
|
3
|
+
class Compute
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/compute/parsers/voxel/basic'
|
|
7
|
+
|
|
8
|
+
def devices_power(device_id, power_action)
|
|
9
|
+
options = {
|
|
10
|
+
:device_id => device_id,
|
|
11
|
+
:parser => Fog::Parsers::Voxel::Compute::Basic.new,
|
|
12
|
+
:power_action => power_action,
|
|
13
|
+
:verbosity => 'normal'
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
request("voxel.devices.power", options)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Voxel
|
|
3
|
+
class Compute
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/compute/parsers/voxel/images_list'
|
|
7
|
+
|
|
8
|
+
def images_list(image_id = nil)
|
|
9
|
+
options = {
|
|
10
|
+
:parser => Fog::Parsers::Voxel::Compute::ImagesList.new,
|
|
11
|
+
:verbosity => 'compact'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
unless image_id.nil?
|
|
15
|
+
options[:verbosity] = 'extended'
|
|
16
|
+
options[:image_id] = image_id
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
data = request("voxel.images.list", options).body
|
|
20
|
+
|
|
21
|
+
if data['stat'] == "ok"
|
|
22
|
+
data['images']
|
|
23
|
+
else
|
|
24
|
+
raise Fog::Voxel::Compute::NotFound
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Voxel
|
|
3
|
+
class Compute
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/compute/parsers/voxel/voxcloud_create'
|
|
7
|
+
|
|
8
|
+
def voxcloud_create(options)
|
|
9
|
+
options[:parser] = Fog::Parsers::Voxel::Compute::VoxcloudCreate.new
|
|
10
|
+
|
|
11
|
+
if options.has_key?(:password)
|
|
12
|
+
options[:admin_password] = options[:password]
|
|
13
|
+
options.delete(:password)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
request("voxel.voxcloud.create", options)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Voxel
|
|
3
|
+
class Compute
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/compute/parsers/voxel/voxcloud_delete'
|
|
7
|
+
|
|
8
|
+
def voxcloud_delete(device_id)
|
|
9
|
+
options = {
|
|
10
|
+
:device_id => device_id,
|
|
11
|
+
:parser => Fog::Parsers::Voxel::Compute::VoxcloudDelete.new
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
request("voxel.voxcloud.delete", options)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Voxel
|
|
3
|
+
class Compute
|
|
4
|
+
|
|
5
|
+
require 'fog/compute/parsers/voxel/voxcloud_status'
|
|
6
|
+
|
|
7
|
+
class Real
|
|
8
|
+
def voxcloud_status(device_id = nil)
|
|
9
|
+
options = {
|
|
10
|
+
:parser => Fog::Parsers::Voxel::Compute::VoxcloudStatus.new,
|
|
11
|
+
:verbosity => 'compact'
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
unless device_id.nil?
|
|
15
|
+
options[:device_id] = device_id
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
request("voxel.voxcloud.status", options)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class Mock
|
|
23
|
+
def voxcloud_status(device_id = nil)
|
|
24
|
+
Fog::Mock.not_implemented
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Voxel
|
|
3
|
+
class Compute < Fog::Service
|
|
4
|
+
|
|
5
|
+
requires :voxel_api_key, :voxel_api_secret
|
|
6
|
+
recognizes :provider, :host, :port, :scheme, :persistent
|
|
7
|
+
|
|
8
|
+
model_path 'fog/compute/models/voxel'
|
|
9
|
+
model :image
|
|
10
|
+
collection :images
|
|
11
|
+
model :server
|
|
12
|
+
collection :servers
|
|
13
|
+
|
|
14
|
+
request_path 'fog/compute/requests/voxel'
|
|
15
|
+
request :images_list
|
|
16
|
+
request :devices_list
|
|
17
|
+
request :devices_power
|
|
18
|
+
request :voxcloud_create
|
|
19
|
+
request :voxcloud_status
|
|
20
|
+
request :voxcloud_delete
|
|
21
|
+
|
|
22
|
+
class Mock
|
|
23
|
+
include Collections
|
|
24
|
+
|
|
25
|
+
def self.data
|
|
26
|
+
@data ||= {
|
|
27
|
+
:last_modified => { :servers => {}, :statuses => {}, :images => {} },
|
|
28
|
+
:servers => [],
|
|
29
|
+
:statuses => {},
|
|
30
|
+
:images => [
|
|
31
|
+
{'id' => 1, 'name' => "CentOS 4, 32-bit, base install"},
|
|
32
|
+
{'id' => 2, 'name' => "CentOS 4, 64-bit, base install"},
|
|
33
|
+
{'id' => 3, 'name' => "CentOS 5, 32-bit, base install"},
|
|
34
|
+
{'id' => 4, 'name' => "CentOS 5, 64-bit, base install"},
|
|
35
|
+
{'id' => 7, 'name' => "Fedora 10, 32-bit, base install"},
|
|
36
|
+
{'id' => 8, 'name' => "Fedora 10, 64-bit, base install"},
|
|
37
|
+
{'id' => 10, 'name' => "OpenSUSE 11, 64-bit, base install"},
|
|
38
|
+
{'id' => 11, 'name' => "Debian 5.0 \"lenny\", 32-bit, base install"},
|
|
39
|
+
{'id' => 12, 'name' => "Debian 5.0 \"lenny\", 64-bit, base install"},
|
|
40
|
+
{'id' => 13, 'name' => "Ubuntu 8.04 \"Hardy\", 32-bit, base install"},
|
|
41
|
+
{'id' => 14, 'name' => "Ubuntu 8.04 \"Hardy\", 64-bit, base install"},
|
|
42
|
+
{'id' => 15, 'name' => "Voxel Server Environment (VSE), 32-bit, base install"},
|
|
43
|
+
{'id' => 16, 'name' => "Voxel Server Environment (VSE), 64-bit, base install"},
|
|
44
|
+
{'id' => 32, 'name' => "Pantheon Official Mercury Stack for Drupal (based on VSE/64)"},
|
|
45
|
+
{'id' => 55, 'name' => "Ubuntu 10.04 \"Lucid\", 64-bit, base install"} ]
|
|
46
|
+
}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def self.reset_data(keys=data.keys)
|
|
50
|
+
for key in [*keys]
|
|
51
|
+
data.delete(key)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def initialize(options={})
|
|
56
|
+
@data = self.class.data
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
class Real
|
|
61
|
+
include Collections
|
|
62
|
+
|
|
63
|
+
def initialize(options = {})
|
|
64
|
+
require 'time'
|
|
65
|
+
require 'digest/md5'
|
|
66
|
+
|
|
67
|
+
@voxel_api_key = options[:voxel_api_key]
|
|
68
|
+
@voxel_api_secret = options[:voxel_api_secret]
|
|
69
|
+
|
|
70
|
+
@host = options[:host] || "api.voxel.net"
|
|
71
|
+
@port = options[:port] || 443
|
|
72
|
+
@scheme = options[:scheme] || 'https'
|
|
73
|
+
@persistent = options[:persistent] || false
|
|
74
|
+
|
|
75
|
+
Excon.ssl_verify_peer = false
|
|
76
|
+
|
|
77
|
+
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def request(method_name, options = {})
|
|
81
|
+
begin
|
|
82
|
+
parser = options.delete(:parser)
|
|
83
|
+
options.merge!({ :method => method_name, :timestamp => Time.now.xmlschema, :key => @voxel_api_key })
|
|
84
|
+
options[:api_sig] = create_signature(@voxel_api_secret, options)
|
|
85
|
+
data = @connection.request(
|
|
86
|
+
:method => "POST",
|
|
87
|
+
:query => options,
|
|
88
|
+
:parser => parser,
|
|
89
|
+
:path => "/version/1.0/"
|
|
90
|
+
)
|
|
91
|
+
unless data.body['stat'] == 'ok'
|
|
92
|
+
raise Fog::Voxel::Compute::Error, "#{data.body['err']['msg']}"
|
|
93
|
+
end
|
|
94
|
+
data
|
|
95
|
+
rescue Excon::Errors::HTTPStatusError => error
|
|
96
|
+
raise case error
|
|
97
|
+
when Excon::Errors::NotFound
|
|
98
|
+
Fog::Voxel::Compute::NotFound.slurp(error)
|
|
99
|
+
else
|
|
100
|
+
error
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def create_signature(secret, options)
|
|
106
|
+
to_sign = options.keys.map { |k| k.to_s }.sort.map { |k| "#{k}#{options[k.to_sym]}" }.join("")
|
|
107
|
+
Digest::MD5.hexdigest( secret + to_sign )
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|