fog 1.34.0 → 1.35.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +10 -24
- data/CHANGELOG.md +84 -0
- data/CONTRIBUTING.md +1 -1
- data/README.md +4 -20
- data/fog.gemspec +7 -5
- data/lib/fog.rb +1 -0
- data/lib/fog/bin.rb +1 -0
- data/lib/fog/digitalocean/compute_v2.rb +108 -0
- data/lib/fog/digitalocean/models/compute_v2/flavor.rb +17 -0
- data/lib/fog/digitalocean/models/compute_v2/flavors.rb +21 -0
- data/lib/fog/digitalocean/models/compute_v2/image.rb +25 -0
- data/lib/fog/digitalocean/models/compute_v2/images.rb +36 -0
- data/lib/fog/digitalocean/models/compute_v2/region.rb +13 -0
- data/lib/fog/digitalocean/models/compute_v2/regions.rb +21 -0
- data/lib/fog/digitalocean/models/compute_v2/server.rb +166 -0
- data/lib/fog/digitalocean/models/compute_v2/servers.rb +39 -0
- data/lib/fog/digitalocean/models/compute_v2/ssh_key.rb +30 -0
- data/lib/fog/digitalocean/models/compute_v2/ssh_keys.rb +35 -0
- data/lib/fog/digitalocean/requests/compute_v2/change_kernel.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/convert_to_snapshot.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/create_server.rb +93 -0
- data/lib/fog/digitalocean/requests/compute_v2/create_ssh_key.rb +47 -0
- data/lib/fog/digitalocean/requests/compute_v2/delete_server.rb +28 -0
- data/lib/fog/digitalocean/requests/compute_v2/delete_ssh_key.rb +28 -0
- data/lib/fog/digitalocean/requests/compute_v2/disable_backups.rb +45 -0
- data/lib/fog/digitalocean/requests/compute_v2/enable_ipv6.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/enable_private_networking.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/get_droplet_action.rb +36 -0
- data/lib/fog/digitalocean/requests/compute_v2/get_image_details.rb +43 -0
- data/lib/fog/digitalocean/requests/compute_v2/get_server_details.rb +84 -0
- data/lib/fog/digitalocean/requests/compute_v2/get_ssh_key.rb +34 -0
- data/lib/fog/digitalocean/requests/compute_v2/list_droplet_actions.rb +38 -0
- data/lib/fog/digitalocean/requests/compute_v2/list_flavors.rb +131 -0
- data/lib/fog/digitalocean/requests/compute_v2/list_images.rb +50 -0
- data/lib/fog/digitalocean/requests/compute_v2/list_regions.rb +94 -0
- data/lib/fog/digitalocean/requests/compute_v2/list_servers.rb +28 -0
- data/lib/fog/digitalocean/requests/compute_v2/list_ssh_keys.rb +26 -0
- data/lib/fog/digitalocean/requests/compute_v2/password_reset.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/power_cycle.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/power_off.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/power_on.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/reboot_server.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/rebuild.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/rename.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/resize.rb +48 -0
- data/lib/fog/digitalocean/requests/compute_v2/restore.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/shutdown.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/snapshot.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/transfer_image.rb +44 -0
- data/lib/fog/digitalocean/requests/compute_v2/update_ssh_key.rb +46 -0
- data/lib/fog/digitalocean/requests/compute_v2/upgrade.rb +44 -0
- data/lib/fog/digitalocean/service.rb +51 -0
- data/lib/fog/linode/models/compute/kernels.rb +1 -1
- data/lib/fog/opennebula/models/compute/flavor.rb +13 -13
- data/lib/fog/opennebula/requests/compute/template_pool.rb +14 -11
- data/lib/fog/openstack.rb +2 -0
- data/lib/fog/openstack/core.rb +30 -3
- data/lib/fog/openstack/identity.rb +8 -7
- data/lib/fog/openstack/identity_v3.rb +1 -0
- data/lib/fog/openstack/image.rb +35 -130
- data/lib/fog/openstack/image_v1.rb +142 -0
- data/lib/fog/openstack/image_v2.rb +137 -0
- data/lib/fog/openstack/models/image_v1/image.rb +78 -0
- data/lib/fog/openstack/models/image_v1/images.rb +70 -0
- data/lib/fog/openstack/models/image_v2/image.rb +149 -0
- data/lib/fog/openstack/models/image_v2/images.rb +67 -0
- data/lib/fog/openstack/models/orchestration/stack.rb +5 -0
- data/lib/fog/openstack/models/volume/volume_type.rb +25 -0
- data/lib/fog/openstack/orchestration.rb +1 -0
- data/lib/fog/openstack/requests/compute/server_actions.rb +14 -3
- data/lib/fog/openstack/requests/{image → image_v1}/add_member_to_image.rb +2 -0
- data/lib/fog/openstack/requests/image_v1/create_image.rb +78 -0
- data/lib/fog/openstack/requests/image_v1/delete_image.rb +25 -0
- data/lib/fog/openstack/requests/image_v1/get_image.rb +47 -0
- data/lib/fog/openstack/requests/image_v1/get_image_by_id.rb +34 -0
- data/lib/fog/openstack/requests/image_v1/get_image_members.rb +31 -0
- data/lib/fog/openstack/requests/image_v1/get_shared_images.rb +31 -0
- data/lib/fog/openstack/requests/image_v1/list_public_images.rb +35 -0
- data/lib/fog/openstack/requests/image_v1/list_public_images_detailed.rb +37 -0
- data/lib/fog/openstack/requests/image_v1/remove_member_from_image.rb +25 -0
- data/lib/fog/openstack/requests/image_v1/set_tenant.rb +21 -0
- data/lib/fog/openstack/requests/image_v1/update_image.rb +66 -0
- data/lib/fog/openstack/requests/image_v1/update_image_members.rb +39 -0
- data/lib/fog/openstack/requests/image_v2/add_member_to_image.rb +26 -0
- data/lib/fog/openstack/requests/image_v2/add_tag_to_image.rb +25 -0
- data/lib/fog/openstack/requests/image_v2/create_image.rb +54 -0
- data/lib/fog/openstack/requests/image_v2/deactivate_image.rb +25 -0
- data/lib/fog/openstack/requests/image_v2/delete_image.rb +25 -0
- data/lib/fog/openstack/requests/image_v2/download_image.rb +29 -0
- data/lib/fog/openstack/requests/image_v2/get_image.rb +47 -0
- data/lib/fog/openstack/requests/image_v2/get_image_by_id.rb +34 -0
- data/lib/fog/openstack/requests/image_v2/get_image_members.rb +31 -0
- data/lib/fog/openstack/requests/image_v2/get_member_details.rb +33 -0
- data/lib/fog/openstack/requests/image_v2/get_shared_images.rb +31 -0
- data/lib/fog/openstack/requests/image_v2/list_images.rb +35 -0
- data/lib/fog/openstack/requests/image_v2/reactivate_image.rb +25 -0
- data/lib/fog/openstack/requests/image_v2/remove_member_from_image.rb +25 -0
- data/lib/fog/openstack/requests/image_v2/remove_tag_from_image.rb +25 -0
- data/lib/fog/openstack/requests/image_v2/set_tenant.rb +21 -0
- data/lib/fog/openstack/requests/image_v2/update_image.rb +49 -0
- data/lib/fog/openstack/requests/image_v2/update_image_member.rb +34 -0
- data/lib/fog/openstack/requests/image_v2/upload_image.rb +30 -0
- data/lib/fog/openstack/requests/orchestration/patch_stack.rb +37 -0
- data/lib/fog/openstack/requests/volume/create_volume_type.rb +41 -0
- data/lib/fog/openstack/requests/{image/delete_image.rb → volume/delete_volume_type.rb} +6 -6
- data/lib/fog/openstack/requests/volume/get_quota_usage.rb +44 -0
- data/lib/fog/openstack/requests/volume/get_volume_type_details.rb +1 -1
- data/lib/fog/openstack/requests/volume/update_volume_type.rb +41 -0
- data/lib/fog/openstack/volume.rb +5 -0
- data/lib/fog/rackspace/models/compute_v2/server.rb +11 -1
- data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -2
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +7 -2
- data/lib/fog/vcloud_director/requests/compute/get_execute_query.rb +13 -10
- data/lib/fog/version.rb +1 -1
- data/lib/fog/vsphere/models/compute/server.rb +1 -1
- data/lib/tasks/changelog_task.rb +1 -0
- data/spec/fog/openstack/identity_v3/authv3_a.yml +45 -52
- data/spec/fog/openstack/identity_v3/authv3_b.yml +45 -52
- data/spec/fog/openstack/identity_v3/authv3_c.yml +95 -101
- data/spec/fog/openstack/identity_v3/authv3_project.yml +68 -75
- data/spec/fog/openstack/identity_v3/authv3_token.yml +212 -174
- data/spec/fog/openstack/identity_v3/authv3_unscoped.yml +278 -266
- data/spec/fog/openstack/identity_v3/authv3_unscoped_reauth.yml +190 -202
- data/spec/fog/openstack/identity_v3/common_setup.yml +67 -445
- data/spec/fog/openstack/identity_v3/idv3_credential.yml +56 -26
- data/spec/fog/openstack/identity_v3/idv3_credential_crud.yml +292 -152
- data/spec/fog/openstack/identity_v3/idv3_domain.yml +99 -49
- data/spec/fog/openstack/identity_v3/idv3_domain_crud.yml +239 -119
- data/spec/fog/openstack/identity_v3/idv3_domain_group_roles_mutation.yml +414 -205
- data/spec/fog/openstack/identity_v3/idv3_domain_roles_mutation.yml +259 -136
- data/spec/fog/openstack/identity_v3/idv3_endpoint.yml +474 -472
- data/spec/fog/openstack/identity_v3/idv3_endpoints_crud.yml +679 -626
- data/spec/fog/openstack/identity_v3/idv3_group_crud_mutation.yml +536 -269
- data/spec/fog/openstack/identity_v3/idv3_policy.yml +76 -36
- data/spec/fog/openstack/identity_v3/idv3_policy_crud.yml +197 -97
- data/spec/fog/openstack/identity_v3/idv3_project.yml +135 -85
- data/spec/fog/openstack/identity_v3/idv3_project_crud.yml +237 -127
- data/spec/fog/openstack/identity_v3/idv3_project_group_user_roles_mutation.yml +625 -295
- data/spec/fog/openstack/identity_v3/idv3_project_hier_crud_list.yml +716 -355
- data/spec/fog/openstack/identity_v3/idv3_role.yml +134 -88
- data/spec/fog/openstack/identity_v3/idv3_role_crud.yml +312 -118
- data/spec/fog/openstack/identity_v3/idv3_service.yml +179 -133
- data/spec/fog/openstack/identity_v3/idv3_services_crud.yml +306 -212
- data/spec/fog/openstack/identity_v3/idv3_token.yml +213 -177
- data/spec/fog/openstack/identity_v3/idv3_user_crud.yml +345 -188
- data/spec/fog/openstack/identity_v3/idv3_users.yml +182 -116
- data/spec/fog/openstack/identity_v3_spec.rb +103 -85
- data/spec/fog/openstack/{identity_v3/idv3_other_region.yml → image_v1/common_setup.yml} +50 -93
- data/spec/fog/openstack/image_v1/list_images.yml +54 -0
- data/spec/fog/openstack/image_v1_spec.rb +24 -0
- data/spec/fog/openstack/image_v2/common_setup.yml +144 -0
- data/spec/fog/openstack/image_v2/image_schema.json +190 -0
- data/spec/fog/openstack/image_v2/image_v2_activation.yml +3988 -0
- data/spec/fog/openstack/image_v2/image_v2_create_id.yml +291 -0
- data/spec/fog/openstack/image_v2/image_v2_crud.yml +437 -0
- data/spec/fog/openstack/image_v2/image_v2_member_crudl.yml +451 -0
- data/spec/fog/openstack/image_v2/image_v2_tags.yml +532 -0
- data/spec/fog/openstack/image_v2/image_v2_upload_download.yml +3966 -0
- data/spec/fog/openstack/image_v2/minimal.ova +0 -0
- data/spec/fog/openstack/image_v2_spec.rb +285 -0
- data/spec/fog/openstack/image_v2_upload_spec.rb +74 -0
- data/spec/fog/openstack/shared_context.rb +14 -10
- data/tests/compute/helper.rb +0 -3
- data/tests/digitalocean/requests/compute_v2/list_flavors_tests.rb +25 -0
- data/tests/digitalocean/requests/compute_v2/list_images_tests.rb +25 -0
- data/tests/digitalocean/requests/compute_v2/list_regions_tests.rb +21 -0
- data/tests/digitalocean/requests/compute_v2/server_tests.rb +77 -0
- data/tests/helpers/mock_helper.rb +1 -0
- data/tests/opennebula/models/compute/flavor_tests.rb +1 -1
- data/tests/openstack/requests/orchestration/stack_tests.rb +5 -1
- data/tests/openstack/requests/volume/volume_type_tests.rb +32 -0
- data/tests/rackspace/models/compute_v2/server_tests.rb +7 -7
- metadata +160 -236
- data/gemfiles/Gemfile-ruby-1.8.7 +0 -17
- data/lib/fog/bin/xenserver.rb +0 -29
- data/lib/fog/openstack/models/image/image.rb +0 -76
- data/lib/fog/openstack/models/image/images.rb +0 -67
- data/lib/fog/openstack/requests/image/create_image.rb +0 -76
- data/lib/fog/openstack/requests/image/get_image.rb +0 -45
- data/lib/fog/openstack/requests/image/get_image_by_id.rb +0 -32
- data/lib/fog/openstack/requests/image/get_image_members.rb +0 -29
- data/lib/fog/openstack/requests/image/get_shared_images.rb +0 -29
- data/lib/fog/openstack/requests/image/list_public_images.rb +0 -33
- data/lib/fog/openstack/requests/image/list_public_images_detailed.rb +0 -35
- data/lib/fog/openstack/requests/image/remove_member_from_image.rb +0 -23
- data/lib/fog/openstack/requests/image/set_tenant.rb +0 -19
- data/lib/fog/openstack/requests/image/update_image.rb +0 -64
- data/lib/fog/openstack/requests/image/update_image_members.rb +0 -37
- data/lib/fog/xenserver.rb +0 -1
- data/lib/fog/xenserver/CHANGELOG.md +0 -77
- data/lib/fog/xenserver/compute.rb +0 -186
- data/lib/fog/xenserver/core.rb +0 -94
- data/lib/fog/xenserver/examples/README.md +0 -11
- data/lib/fog/xenserver/examples/chage_default_storage_repository.md +0 -99
- data/lib/fog/xenserver/examples/creating_servers.md +0 -168
- data/lib/fog/xenserver/examples/getting_started.md +0 -163
- data/lib/fog/xenserver/examples/networks-and-vlans.rb +0 -44
- data/lib/fog/xenserver/examples/storage_repositories.md +0 -94
- data/lib/fog/xenserver/models/compute/blob.rb +0 -22
- data/lib/fog/xenserver/models/compute/blobs.rb +0 -25
- data/lib/fog/xenserver/models/compute/bond.rb +0 -23
- data/lib/fog/xenserver/models/compute/bonds.rb +0 -25
- data/lib/fog/xenserver/models/compute/console.rb +0 -29
- data/lib/fog/xenserver/models/compute/consoles.rb +0 -25
- data/lib/fog/xenserver/models/compute/crash_dump.rb +0 -19
- data/lib/fog/xenserver/models/compute/crash_dumps.rb +0 -25
- data/lib/fog/xenserver/models/compute/dr_task.rb +0 -17
- data/lib/fog/xenserver/models/compute/dr_tasks.rb +0 -25
- data/lib/fog/xenserver/models/compute/gpu_group.rb +0 -22
- data/lib/fog/xenserver/models/compute/gpu_groups.rb +0 -25
- data/lib/fog/xenserver/models/compute/guest_metrics.rb +0 -26
- data/lib/fog/xenserver/models/compute/host.rb +0 -156
- data/lib/fog/xenserver/models/compute/host_cpu.rb +0 -34
- data/lib/fog/xenserver/models/compute/host_crash_dump.rb +0 -20
- data/lib/fog/xenserver/models/compute/host_crash_dumps.rb +0 -25
- data/lib/fog/xenserver/models/compute/host_metrics.rb +0 -26
- data/lib/fog/xenserver/models/compute/host_patch.rb +0 -25
- data/lib/fog/xenserver/models/compute/host_patchs.rb +0 -25
- data/lib/fog/xenserver/models/compute/hosts.rb +0 -25
- data/lib/fog/xenserver/models/compute/network.rb +0 -93
- data/lib/fog/xenserver/models/compute/networks.rb +0 -29
- data/lib/fog/xenserver/models/compute/pbd.rb +0 -37
- data/lib/fog/xenserver/models/compute/pbds.rb +0 -29
- data/lib/fog/xenserver/models/compute/pci.rb +0 -22
- data/lib/fog/xenserver/models/compute/pcis.rb +0 -25
- data/lib/fog/xenserver/models/compute/pgpu.rb +0 -20
- data/lib/fog/xenserver/models/compute/pgpus.rb +0 -25
- data/lib/fog/xenserver/models/compute/pif.rb +0 -54
- data/lib/fog/xenserver/models/compute/pif_metrics.rb +0 -28
- data/lib/fog/xenserver/models/compute/pifs.rb +0 -29
- data/lib/fog/xenserver/models/compute/pifs_metrics.rb +0 -25
- data/lib/fog/xenserver/models/compute/pool.rb +0 -75
- data/lib/fog/xenserver/models/compute/pool_patch.rb +0 -24
- data/lib/fog/xenserver/models/compute/pool_patchs.rb +0 -25
- data/lib/fog/xenserver/models/compute/pools.rb +0 -29
- data/lib/fog/xenserver/models/compute/role.rb +0 -19
- data/lib/fog/xenserver/models/compute/roles.rb +0 -25
- data/lib/fog/xenserver/models/compute/server.rb +0 -251
- data/lib/fog/xenserver/models/compute/server_appliance.rb +0 -21
- data/lib/fog/xenserver/models/compute/server_appliances.rb +0 -25
- data/lib/fog/xenserver/models/compute/servers.rb +0 -64
- data/lib/fog/xenserver/models/compute/storage_manager.rb +0 -28
- data/lib/fog/xenserver/models/compute/storage_managers.rb +0 -25
- data/lib/fog/xenserver/models/compute/storage_repositories.rb +0 -27
- data/lib/fog/xenserver/models/compute/storage_repository.rb +0 -90
- data/lib/fog/xenserver/models/compute/tunnel.rb +0 -20
- data/lib/fog/xenserver/models/compute/tunnels.rb +0 -25
- data/lib/fog/xenserver/models/compute/vbd.rb +0 -88
- data/lib/fog/xenserver/models/compute/vbd_metrics.rb +0 -25
- data/lib/fog/xenserver/models/compute/vbds.rb +0 -29
- data/lib/fog/xenserver/models/compute/vdi.rb +0 -102
- data/lib/fog/xenserver/models/compute/vdis.rb +0 -25
- data/lib/fog/xenserver/models/compute/vif.rb +0 -56
- data/lib/fog/xenserver/models/compute/vifs.rb +0 -25
- data/lib/fog/xenserver/models/compute/vlan.rb +0 -78
- data/lib/fog/xenserver/models/compute/vlans.rb +0 -35
- data/lib/fog/xenserver/models/compute/vmpp.rb +0 -35
- data/lib/fog/xenserver/models/compute/vmpps.rb +0 -25
- data/lib/fog/xenserver/models/compute/vtpm.rb +0 -18
- data/lib/fog/xenserver/models/compute/vtpms.rb +0 -25
- data/lib/fog/xenserver/parser.rb +0 -34
- data/lib/fog/xenserver/parsers/get_hosts.rb +0 -16
- data/lib/fog/xenserver/parsers/get_networks.rb +0 -16
- data/lib/fog/xenserver/parsers/get_pools.rb +0 -16
- data/lib/fog/xenserver/parsers/get_records.rb +0 -16
- data/lib/fog/xenserver/parsers/get_storage_repositories.rb +0 -16
- data/lib/fog/xenserver/parsers/get_vbds.rb +0 -16
- data/lib/fog/xenserver/parsers/get_vifs.rb +0 -16
- data/lib/fog/xenserver/parsers/get_vms.rb +0 -16
- data/lib/fog/xenserver/requests/compute/clone_server.rb +0 -30
- data/lib/fog/xenserver/requests/compute/create_network.rb +0 -46
- data/lib/fog/xenserver/requests/compute/create_server.rb +0 -144
- data/lib/fog/xenserver/requests/compute/create_sr.rb +0 -88
- data/lib/fog/xenserver/requests/compute/create_vbd.rb +0 -43
- data/lib/fog/xenserver/requests/compute/create_vdi.rb +0 -57
- data/lib/fog/xenserver/requests/compute/create_vif.rb +0 -62
- data/lib/fog/xenserver/requests/compute/create_vlan.rb +0 -43
- data/lib/fog/xenserver/requests/compute/destroy_network.rb +0 -31
- data/lib/fog/xenserver/requests/compute/destroy_record.rb +0 -11
- data/lib/fog/xenserver/requests/compute/destroy_server.rb +0 -20
- data/lib/fog/xenserver/requests/compute/destroy_sr.rb +0 -28
- data/lib/fog/xenserver/requests/compute/destroy_vdi.rb +0 -20
- data/lib/fog/xenserver/requests/compute/destroy_vif.rb +0 -20
- data/lib/fog/xenserver/requests/compute/destroy_vlan.rb +0 -30
- data/lib/fog/xenserver/requests/compute/disable_host.rb +0 -23
- data/lib/fog/xenserver/requests/compute/eject_vbd.rb +0 -17
- data/lib/fog/xenserver/requests/compute/enable_host.rb +0 -22
- data/lib/fog/xenserver/requests/compute/get_record.rb +0 -31
- data/lib/fog/xenserver/requests/compute/get_records.rb +0 -24
- data/lib/fog/xenserver/requests/compute/insert_vbd.rb +0 -17
- data/lib/fog/xenserver/requests/compute/provision_server.rb +0 -17
- data/lib/fog/xenserver/requests/compute/reboot_host.rb +0 -17
- data/lib/fog/xenserver/requests/compute/reboot_server.rb +0 -17
- data/lib/fog/xenserver/requests/compute/scan_sr.rb +0 -17
- data/lib/fog/xenserver/requests/compute/set_affinity.rb +0 -19
- data/lib/fog/xenserver/requests/compute/set_attribute.rb +0 -19
- data/lib/fog/xenserver/requests/compute/shutdown_host.rb +0 -17
- data/lib/fog/xenserver/requests/compute/shutdown_server.rb +0 -17
- data/lib/fog/xenserver/requests/compute/snapshot_revert.rb +0 -24
- data/lib/fog/xenserver/requests/compute/snapshot_server.rb +0 -17
- data/lib/fog/xenserver/requests/compute/start_server.rb +0 -17
- data/lib/fog/xenserver/requests/compute/start_vm.rb +0 -19
- data/lib/fog/xenserver/requests/compute/unplug_pbd.rb +0 -20
- data/lib/fog/xenserver/requests/compute/unplug_vbd.rb +0 -25
- data/lib/fog/xenserver/utilities.rb +0 -8
- data/tests/xenserver/README +0 -21
- data/tests/xenserver/compute_tests.rb +0 -51
- data/tests/xenserver/helper.rb +0 -36
- data/tests/xenserver/models/compute/console_test.rb +0 -35
- data/tests/xenserver/models/compute/consoles_test.rb +0 -19
- data/tests/xenserver/models/compute/host_cpu_tests.rb +0 -58
- data/tests/xenserver/models/compute/host_metrics_tests.rb +0 -48
- data/tests/xenserver/models/compute/host_tests.rb +0 -98
- data/tests/xenserver/models/compute/hosts_tests.rb +0 -22
- data/tests/xenserver/models/compute/network_tests.rb +0 -79
- data/tests/xenserver/models/compute/networks_tests.rb +0 -22
- data/tests/xenserver/models/compute/pbd_tests.rb +0 -76
- data/tests/xenserver/models/compute/pbds_tests.rb +0 -22
- data/tests/xenserver/models/compute/pif_tests.rb +0 -58
- data/tests/xenserver/models/compute/pifs_tests.rb +0 -22
- data/tests/xenserver/models/compute/pool_tests.rb +0 -56
- data/tests/xenserver/models/compute/pools_tests.rb +0 -30
- data/tests/xenserver/models/compute/server_tests.rb +0 -184
- data/tests/xenserver/models/compute/servers_tests.rb +0 -89
- data/tests/xenserver/models/compute/storage_repositories_tests.rb +0 -30
- data/tests/xenserver/models/compute/storage_repository_tests.rb +0 -114
- data/tests/xenserver/models/compute/vbd_tests.rb +0 -115
- data/tests/xenserver/models/compute/vbds_tests.rb +0 -22
- data/tests/xenserver/models/compute/vif_tests.rb +0 -53
- data/tests/xenserver/models/compute/vifs_tests.rb +0 -22
- data/tests/xenserver/models/compute/vlan_tests.rb +0 -76
- data/tests/xenserver/models/compute/vlans_tests.rb +0 -36
- data/tests/xenserver/requests/compute/clone_server_tests.rb +0 -32
- data/tests/xenserver/requests/compute/create_network_tests.rb +0 -20
- data/tests/xenserver/requests/compute/create_server_tests.rb +0 -129
- data/tests/xenserver/requests/compute/create_sr_tests.rb +0 -54
- data/tests/xenserver/requests/compute/create_vdi_tests.rb +0 -80
- data/tests/xenserver/requests/compute/create_vif_tests.rb +0 -88
- data/tests/xenserver/requests/compute/create_vlan_tests.rb +0 -36
- data/tests/xenserver/requests/compute/destroy_network_tests.rb +0 -13
- data/tests/xenserver/requests/compute/destroy_sr_tests.rb +0 -46
- data/tests/xenserver/requests/compute/destroy_vdi_tests.rb +0 -25
- data/tests/xenserver/requests/compute/destroy_vlan_tests.rb +0 -36
- data/tests/xenserver/requests/compute/disable_host_tests.rb +0 -16
- data/tests/xenserver/requests/compute/enable_host_tests.rb +0 -16
- data/tests/xenserver/requests/compute/get_record_tests.rb +0 -15
- data/tests/xenserver/requests/compute/set_attribute_tests.rb +0 -66
- data/tests/xenserver/requests/compute/unplug_pbd_tests.rb +0 -48
- data/tests/xenserver/xenserver_tests.rb +0 -33
@@ -0,0 +1,44 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class DigitalOceanV2
|
4
|
+
class Real
|
5
|
+
def upgrade(id)
|
6
|
+
body = { :type => "upgrade" }
|
7
|
+
|
8
|
+
encoded_body = Fog::JSON.encode(body)
|
9
|
+
|
10
|
+
request(
|
11
|
+
:expects => [201],
|
12
|
+
:headers => {
|
13
|
+
'Content-Type' => "application/json; charset=UTF-8",
|
14
|
+
},
|
15
|
+
:method => 'POST',
|
16
|
+
:path => "v2/droplets/#{id}/actions",
|
17
|
+
:body => encoded_body,
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Mock
|
23
|
+
def upgrade(id)
|
24
|
+
response = Excon::Response.new
|
25
|
+
response.status = 201
|
26
|
+
response.body = {
|
27
|
+
'action' => {
|
28
|
+
'id' => Fog::Mock.random_numbers(1).to_i,
|
29
|
+
'status' => "in-progress",
|
30
|
+
'type' => "upgrade",
|
31
|
+
'started_at' => "2014-11-14T16:31:00Z",
|
32
|
+
'completed_at' => null,
|
33
|
+
'resource_id' => id,
|
34
|
+
'resource_type' => "droplet",
|
35
|
+
'region' => "nyc3",
|
36
|
+
'region_slug' => "nyc3"
|
37
|
+
}
|
38
|
+
}
|
39
|
+
response
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Fog
|
2
|
+
module DigitalOcean
|
3
|
+
class Service
|
4
|
+
|
5
|
+
def request(params, parse_json = true)
|
6
|
+
first_attempt = true
|
7
|
+
begin
|
8
|
+
response = @connection.request(request_params(params))
|
9
|
+
rescue Excon::Errors::Unauthorized => error
|
10
|
+
raise error unless first_attempt
|
11
|
+
first_attempt = false
|
12
|
+
authenticate
|
13
|
+
retry
|
14
|
+
end
|
15
|
+
|
16
|
+
process_response(response) if parse_json
|
17
|
+
response
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def process_response(response)
|
23
|
+
if response &&
|
24
|
+
response.body &&
|
25
|
+
response.body.is_a?(String) &&
|
26
|
+
!response.body.strip.empty?
|
27
|
+
begin
|
28
|
+
response.body = Fog::JSON.decode(response.body)
|
29
|
+
rescue Fog::JSON::DecodeError => e
|
30
|
+
Fog::Logger.warning("Error Parsing response json - #{e}")
|
31
|
+
response.body = {}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def headers(options={})
|
37
|
+
{'Content-Type' => 'application/json',
|
38
|
+
'Accept' => 'application/json',
|
39
|
+
}.merge(options[:headers] || {})
|
40
|
+
end
|
41
|
+
|
42
|
+
def request_params(params)
|
43
|
+
params.merge({
|
44
|
+
:headers => headers(params),
|
45
|
+
:path => "#{params[:path]}"
|
46
|
+
})
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -48,24 +48,24 @@ module Fog
|
|
48
48
|
return "CPU=#{vcpu.to_f/10}\n" unless cpu
|
49
49
|
return "CPU=#{vcpu}\n" if cpu.to_i > vcpu.to_i
|
50
50
|
"CPU=#{cpu}\n"
|
51
|
-
end
|
51
|
+
end
|
52
52
|
|
53
53
|
def get_vcpu
|
54
54
|
self.vcpu = 1 unless vcpu
|
55
55
|
"VCPU=#{vcpu}\n"
|
56
|
-
end
|
56
|
+
end
|
57
57
|
|
58
58
|
def get_memory
|
59
59
|
self.memory = 128 unless memory
|
60
60
|
"MEMORY=#{memory}\n"
|
61
|
-
end
|
61
|
+
end
|
62
62
|
|
63
63
|
def get_raw
|
64
64
|
return "" unless raw
|
65
65
|
ret = "RAW=#{raw}\n"
|
66
66
|
ret.gsub!(/\{/, '[')
|
67
67
|
ret.gsub!(/\}/, ']')
|
68
|
-
ret.gsub!(
|
68
|
+
ret.gsub!(/=>/,'=')
|
69
69
|
ret
|
70
70
|
end
|
71
71
|
|
@@ -82,7 +82,7 @@ module Fog
|
|
82
82
|
ret.gsub!(/\{/, '[')
|
83
83
|
ret.gsub!(/\}/, ']')
|
84
84
|
ret.gsub!(/>/,'')
|
85
|
-
ret
|
85
|
+
ret
|
86
86
|
end
|
87
87
|
|
88
88
|
def get_os
|
@@ -91,16 +91,16 @@ module Fog
|
|
91
91
|
ret.gsub!(/\{/, '[')
|
92
92
|
ret.gsub!(/\}/, ']')
|
93
93
|
ret.gsub!(/>/,'')
|
94
|
-
ret
|
94
|
+
ret
|
95
95
|
end
|
96
96
|
|
97
97
|
def get_graphics
|
98
|
-
return "" unless graphics
|
98
|
+
return "" unless graphics
|
99
99
|
ret = "GRAPHICS=#{graphics}\n"
|
100
100
|
ret.gsub!(/\{/, '[')
|
101
101
|
ret.gsub!(/\}/, ']')
|
102
102
|
ret.gsub!(/>/,'')
|
103
|
-
ret
|
103
|
+
ret
|
104
104
|
end
|
105
105
|
|
106
106
|
def get_nic
|
@@ -115,26 +115,26 @@ module Fog
|
|
115
115
|
#ret.gsub!(/\{/, '[')
|
116
116
|
#ret.gsub!(/\}/, ']')
|
117
117
|
#ret.gsub!(/>/,'')
|
118
|
-
ret
|
118
|
+
ret
|
119
119
|
end
|
120
120
|
|
121
121
|
def get_sched_ds_requirements
|
122
|
-
return "" unless sched_ds_requirements
|
122
|
+
return "" unless sched_ds_requirements
|
123
123
|
%Q|SCHED_DS_REQUIREMENTS="#{sched_ds_requirements.gsub(/"/){ %q(\") }}"\n|
|
124
124
|
end
|
125
125
|
|
126
126
|
def get_sched_ds_rank
|
127
|
-
return "" unless sched_ds_rank
|
127
|
+
return "" unless sched_ds_rank
|
128
128
|
%Q|SCHED_DS_RANK="#{sched_ds_rank.gsub(/"/){ %q(\") }}"\n|
|
129
129
|
end
|
130
130
|
|
131
131
|
def get_sched_requirements
|
132
|
-
return "" unless sched_requirements
|
132
|
+
return "" unless sched_requirements
|
133
133
|
%Q|SCHED_REQUIREMENTS="#{sched_requirements.gsub(/"/){ %q(\") }}"\n|
|
134
134
|
end
|
135
135
|
|
136
136
|
def get_sched_rank
|
137
|
-
return "" unless sched_rank
|
137
|
+
return "" unless sched_rank
|
138
138
|
%Q|SCHED_RANK="#{sched_rank.gsub(/"/){ %q(\") }}"\n|
|
139
139
|
end
|
140
140
|
|
@@ -21,6 +21,9 @@
|
|
21
21
|
# OS=[
|
22
22
|
# ARCH="x86_64",
|
23
23
|
# BOOT="network,hd" ]
|
24
|
+
# RAW=[
|
25
|
+
# DATA="<cpu match='exact'><model fallback='allow'>core2duo</model></cpu>",
|
26
|
+
# TYPE="kvm" ]
|
24
27
|
|
25
28
|
|
26
29
|
module Fog
|
@@ -37,7 +40,7 @@ module Fog
|
|
37
40
|
templates.info!(-2, filter[:id], filter[:id])
|
38
41
|
end # if filter[:id].nil?
|
39
42
|
|
40
|
-
templates = templates.map do |t|
|
43
|
+
templates = templates.map do |t|
|
41
44
|
# filtering by name
|
42
45
|
# done here, because OpenNebula:TemplatePool does not support something like .delete_if
|
43
46
|
if filter[:name] && filter[:name].is_a?(String) && !filter[:name].empty?
|
@@ -51,8 +54,8 @@ module Fog
|
|
51
54
|
end
|
52
55
|
|
53
56
|
h = Hash[
|
54
|
-
:id => t.to_hash["VMTEMPLATE"]["ID"],
|
55
|
-
:name => t.to_hash["VMTEMPLATE"]["NAME"],
|
57
|
+
:id => t.to_hash["VMTEMPLATE"]["ID"],
|
58
|
+
:name => t.to_hash["VMTEMPLATE"]["NAME"],
|
56
59
|
:content => t.template_str,
|
57
60
|
:USER_VARIABLES => "" # Default if not set in template
|
58
61
|
]
|
@@ -67,7 +70,7 @@ module Fog
|
|
67
70
|
vnet = networks.get(n["NETWORK_ID"].to_s)
|
68
71
|
elsif n["NETWORK"]
|
69
72
|
vnet = networks.get_by_name(n["NETWORK"].to_s)
|
70
|
-
else
|
73
|
+
else
|
71
74
|
next
|
72
75
|
end
|
73
76
|
h["NIC"] << interfaces.new({ :vnet => vnet, :model => n["MODEL"] || "virtio" })
|
@@ -87,15 +90,15 @@ module Fog
|
|
87
90
|
else
|
88
91
|
# should i break?
|
89
92
|
end
|
90
|
-
|
93
|
+
|
91
94
|
# every key should be lowercase
|
92
95
|
ret_hash = {}
|
93
|
-
h.each_pair do |k,v|
|
94
|
-
ret_hash.merge!({k.downcase => v})
|
96
|
+
h.each_pair do |k,v|
|
97
|
+
ret_hash.merge!({k.downcase => v})
|
95
98
|
end
|
96
99
|
ret_hash
|
97
100
|
end
|
98
|
-
|
101
|
+
|
99
102
|
templates.delete nil
|
100
103
|
raise Fog::Compute::OpenNebula::NotFound, "Flavor/Template not found" if templates.empty?
|
101
104
|
templates
|
@@ -107,7 +110,7 @@ module Fog
|
|
107
110
|
nic1 = Mock_nic.new
|
108
111
|
nic1.vnet = networks.first
|
109
112
|
|
110
|
-
[
|
113
|
+
[
|
111
114
|
{
|
112
115
|
:content => %Q{
|
113
116
|
NAME = mock-vm
|
@@ -131,14 +134,14 @@ module Fog
|
|
131
134
|
'ARCH' => 'x86_64'
|
132
135
|
},
|
133
136
|
:graphics => {},
|
134
|
-
:raw =>
|
137
|
+
:raw => %|["DATA"=>"<cpu match='exact'><model fallback='allow'>core2duo</model></cpu>", "TYPE"=>"kvm"]|,
|
135
138
|
:context => {},
|
136
139
|
:user_variables => {}
|
137
140
|
}
|
138
141
|
]
|
139
142
|
end
|
140
143
|
|
141
|
-
class Mock_nic
|
144
|
+
class Mock_nic
|
142
145
|
attr_accessor :vnet
|
143
146
|
|
144
147
|
def id
|
data/lib/fog/openstack.rb
CHANGED
@@ -2,6 +2,8 @@ require 'fog/openstack/compute'
|
|
2
2
|
require 'fog/openstack/identity_v2'
|
3
3
|
require 'fog/openstack/identity_v3'
|
4
4
|
require 'fog/openstack/image'
|
5
|
+
require 'fog/openstack/image_v1'
|
6
|
+
require 'fog/openstack/image_v2'
|
5
7
|
require 'fog/openstack/metering'
|
6
8
|
require 'fog/openstack/network'
|
7
9
|
require 'fog/openstack/orchestration'
|
data/lib/fog/openstack/core.rb
CHANGED
@@ -297,7 +297,7 @@ module Fog
|
|
297
297
|
|
298
298
|
token, body = retrieve_tokens_v3 options, connection_options
|
299
299
|
|
300
|
-
service = get_service_v3(body, service_type, service_name, openstack_region)
|
300
|
+
service = get_service_v3(body, service_type, service_name, openstack_region, options)
|
301
301
|
|
302
302
|
options[:unscoped_token] = token
|
303
303
|
|
@@ -359,7 +359,7 @@ module Fog
|
|
359
359
|
raise Fog::Errors::NotFound.new("Multiple regions available choose one of these '#{regions.join(',')}'")
|
360
360
|
end
|
361
361
|
|
362
|
-
identity_service = get_service_v3(body, identity_service_type, nil, nil, :
|
362
|
+
identity_service = get_service_v3(body, identity_service_type, nil, nil, :openstack_endpoint_path_matches => /\/v3/) if identity_service_type
|
363
363
|
|
364
364
|
management_url = service['endpoints'].find { |e| e['interface']==endpoint_type }['url']
|
365
365
|
identity_url = identity_service['endpoints'].find { |e| e['interface']=='public' }['url'] if identity_service
|
@@ -532,7 +532,7 @@ module Fog
|
|
532
532
|
|
533
533
|
# Filter the found services by region (if specified) and whether the endpoint path matches the given regex (e.g. /\/v3/)
|
534
534
|
services.find do |s|
|
535
|
-
s['endpoints'].any? { |ep| endpoint_region?(ep, region) && endpoint_path_match?(ep, options[:
|
535
|
+
s['endpoints'].any? { |ep| endpoint_region?(ep, region) && endpoint_path_match?(ep, options[:openstack_endpoint_path_matches])}
|
536
536
|
end if services
|
537
537
|
|
538
538
|
end
|
@@ -572,6 +572,33 @@ module Fog
|
|
572
572
|
version
|
573
573
|
end
|
574
574
|
|
575
|
+
def self.get_supported_version_path(supported_versions, uri, auth_token, connection_options = {})
|
576
|
+
connection = Fog::Core::Connection.new("#{uri.scheme}://#{uri.host}:#{uri.port}", false, connection_options)
|
577
|
+
response = connection.request({
|
578
|
+
:expects => [200, 204, 300],
|
579
|
+
:headers => {'Content-Type' => 'application/json',
|
580
|
+
'Accept' => 'application/json',
|
581
|
+
'X-Auth-Token' => auth_token},
|
582
|
+
:method => 'GET'
|
583
|
+
})
|
584
|
+
|
585
|
+
body = Fog::JSON.decode(response.body)
|
586
|
+
path = nil
|
587
|
+
unless body['versions'].empty?
|
588
|
+
supported_version = body['versions'].find do |x|
|
589
|
+
x["id"].match(supported_versions) &&
|
590
|
+
(x["status"] == "CURRENT" || x["status"] == "SUPPORTED")
|
591
|
+
end
|
592
|
+
path = URI.parse(supported_version['links'].first['href']).path if supported_version
|
593
|
+
end
|
594
|
+
if path.nil?
|
595
|
+
raise Fog::OpenStack::Errors::ServiceUnavailable.new(
|
596
|
+
"OpenStack service only supports API versions #{supported_versions.inspect}")
|
597
|
+
end
|
598
|
+
|
599
|
+
path.chomp '/'
|
600
|
+
end
|
601
|
+
|
575
602
|
# CGI.escape, but without special treatment on spaces
|
576
603
|
def self.escape(str, extra_exclude_chars = '')
|
577
604
|
str.gsub(/([^a-zA-Z0-9_.-#{extra_exclude_chars}]+)/) do
|
@@ -7,20 +7,21 @@ module Fog
|
|
7
7
|
# Fog::Identity::OpenStack.new() will return a Fog::Identity::OpenStack::V2 or a Fog::Identity::OpenStack::V3,
|
8
8
|
# depending on whether the auth URL is for an OpenStack Identity V2 or V3 API endpoint
|
9
9
|
def self.new(args = {})
|
10
|
+
@openstack_auth_uri = URI.parse(args[:openstack_auth_url]) if args[:openstack_auth_url]
|
10
11
|
if self.inspect == 'Fog::Identity::OpenStack'
|
11
|
-
|
12
|
-
@openstack_auth_uri = URI.parse(args[:openstack_auth_url])
|
13
|
-
if @openstack_auth_uri.path =~ /\/v3/
|
14
|
-
service = Fog::Identity::OpenStack::V3.new(args)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
service ||= Fog::Identity::OpenStack::V2.new(args)
|
12
|
+
service = (is_v3? args) ? Fog::Identity::OpenStack::V3.new(args) : Fog::Identity::OpenStack::V2.new(args)
|
18
13
|
else
|
19
14
|
service = Fog::Service.new(args)
|
20
15
|
end
|
21
16
|
service
|
22
17
|
end
|
23
18
|
|
19
|
+
private
|
20
|
+
|
21
|
+
def self.is_v3?(args)
|
22
|
+
@openstack_auth_uri && @openstack_auth_uri.path =~ /\/v3/
|
23
|
+
end
|
24
|
+
|
24
25
|
module Common
|
25
26
|
attr_reader :unscoped_token
|
26
27
|
|
@@ -160,6 +160,7 @@ module Fog
|
|
160
160
|
|
161
161
|
@openstack_endpoint_type = options[:openstack_endpoint_type] || 'adminURL'
|
162
162
|
|
163
|
+
@openstack_endpoint_path_matches = options[:openstack_endpoint_path_matches] ||= /\/v3/
|
163
164
|
authenticate
|
164
165
|
|
165
166
|
@persistent = options[:persistent] || false
|
data/lib/fog/openstack/image.rb
CHANGED
@@ -3,154 +3,59 @@ require 'fog/openstack/core'
|
|
3
3
|
module Fog
|
4
4
|
module Image
|
5
5
|
class OpenStack < Fog::Service
|
6
|
-
SUPPORTED_VERSIONS = /v1(\.(0|1))*/
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
model_path 'fog/openstack/models/image'
|
20
|
-
|
21
|
-
model :image
|
22
|
-
collection :images
|
23
|
-
|
24
|
-
request_path 'fog/openstack/requests/image'
|
25
|
-
|
26
|
-
request :list_public_images
|
27
|
-
request :list_public_images_detailed
|
28
|
-
request :get_image
|
29
|
-
request :create_image
|
30
|
-
request :update_image
|
31
|
-
request :get_image_members
|
32
|
-
request :update_image_members
|
33
|
-
request :get_shared_images
|
34
|
-
request :add_member_to_image
|
35
|
-
request :remove_member_from_image
|
36
|
-
request :delete_image
|
37
|
-
request :get_image_by_id
|
38
|
-
request :set_tenant
|
39
|
-
|
40
|
-
class Mock
|
41
|
-
def self.data
|
42
|
-
@data ||= Hash.new do |hash, key|
|
43
|
-
hash[key] = {
|
44
|
-
:images => {}
|
45
|
-
}
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.reset
|
50
|
-
@data = nil
|
51
|
-
end
|
52
|
-
|
53
|
-
def initialize(options={})
|
54
|
-
@openstack_username = options[:openstack_username]
|
55
|
-
@openstack_tenant = options[:openstack_tenant]
|
56
|
-
@openstack_auth_uri = URI.parse(options[:openstack_auth_url])
|
57
|
-
|
58
|
-
@auth_token = Fog::Mock.random_base64(64)
|
59
|
-
@auth_token_expiration = (Time.now.utc + 86400).iso8601
|
60
|
-
|
61
|
-
management_url = URI.parse(options[:openstack_auth_url])
|
62
|
-
management_url.port = 9292
|
63
|
-
management_url.path = '/v1'
|
64
|
-
@openstack_management_url = management_url.to_s
|
65
|
-
|
66
|
-
@data ||= { :users => {} }
|
67
|
-
unless @data[:users].find {|u| u['name'] == options[:openstack_username]}
|
68
|
-
id = Fog::Mock.random_numbers(6).to_s
|
69
|
-
@data[:users][id] = {
|
70
|
-
'id' => id,
|
71
|
-
'name' => options[:openstack_username],
|
72
|
-
'email' => "#{options[:openstack_username]}@mock.com",
|
73
|
-
'tenantId' => Fog::Mock.random_numbers(6).to_s,
|
74
|
-
'enabled' => true
|
75
|
-
}
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def data
|
80
|
-
self.class.data[@openstack_username]
|
81
|
-
end
|
82
|
-
|
83
|
-
def reset_data
|
84
|
-
self.class.data.delete(@openstack_username)
|
85
|
-
end
|
86
|
-
|
87
|
-
def credentials
|
88
|
-
{ :provider => 'openstack',
|
89
|
-
:openstack_auth_url => @openstack_auth_uri.to_s,
|
90
|
-
:openstack_auth_token => @auth_token,
|
91
|
-
:openstack_region => @openstack_region,
|
92
|
-
:openstack_management_url => @openstack_management_url }
|
93
|
-
end
|
7
|
+
# Fog::Image::OpenStack.new() will return a Fog::Image::OpenStack::V2 or a Fog::Image::OpenStack::V3,
|
8
|
+
# choosing the latest available
|
9
|
+
def self.new(args = {})
|
10
|
+
@openstack_auth_uri = URI.parse(args[:openstack_auth_url]) if args[:openstack_auth_url]
|
11
|
+
if self.inspect == 'Fog::Image::OpenStack'
|
12
|
+
service = Fog::Image::OpenStack::V2.new(args) unless args.empty?
|
13
|
+
service ||= Fog::Image::OpenStack::V1.new(args)
|
14
|
+
else
|
15
|
+
service = Fog::Service.new(args)
|
16
|
+
end
|
17
|
+
service
|
94
18
|
end
|
95
19
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
def initialize(options={})
|
100
|
-
initialize_identity options
|
101
|
-
|
102
|
-
@openstack_service_type = options[:openstack_service_type] || ['image']
|
103
|
-
@openstack_service_name = options[:openstack_service_name]
|
104
|
-
@openstack_endpoint_type = options[:openstack_endpoint_type] || 'adminURL'
|
105
|
-
|
106
|
-
@connection_options = options[:connection_options] || {}
|
107
|
-
|
108
|
-
authenticate
|
109
|
-
|
110
|
-
unless @path.match(SUPPORTED_VERSIONS)
|
111
|
-
@path = "/" + Fog::OpenStack.get_supported_version(SUPPORTED_VERSIONS,
|
112
|
-
@openstack_management_uri,
|
113
|
-
@auth_token,
|
114
|
-
@connection_options)
|
115
|
-
end
|
20
|
+
module Common
|
21
|
+
attr_reader :unscoped_token
|
116
22
|
|
117
|
-
|
118
|
-
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
119
|
-
end
|
23
|
+
include Fog::OpenStack::Core
|
120
24
|
|
121
25
|
def request(params)
|
26
|
+
retried = false
|
122
27
|
begin
|
123
|
-
|
124
|
-
:headers => {
|
28
|
+
std_headers = {
|
125
29
|
'Content-Type' => 'application/json',
|
30
|
+
'Accept' => 'application/json',
|
126
31
|
'X-Auth-Token' => @auth_token
|
127
|
-
|
128
|
-
|
32
|
+
}
|
33
|
+
param_headers = params.fetch(:headers,{})
|
34
|
+
|
35
|
+
response = @connection.request(params.merge({
|
36
|
+
:headers => std_headers.merge(param_headers),
|
37
|
+
:path => "#{@path}/#{params[:path]}"
|
129
38
|
}))
|
130
39
|
rescue Excon::Errors::Unauthorized => error
|
131
|
-
if
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
end
|
40
|
+
raise if retried
|
41
|
+
retried = true
|
42
|
+
|
43
|
+
@openstack_must_reauthenticate = true
|
44
|
+
authenticate
|
45
|
+
retry
|
138
46
|
rescue Excon::Errors::HTTPStatusError => error
|
139
47
|
raise case error
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
48
|
+
when Excon::Errors::NotFound
|
49
|
+
Fog::Image::OpenStack::NotFound.slurp(error)
|
50
|
+
else
|
51
|
+
error
|
52
|
+
end
|
145
53
|
end
|
146
54
|
unless response.body.empty?
|
147
|
-
response.body = Fog::JSON.decode(response.body)
|
55
|
+
response.body = Fog::JSON.decode(response.body) unless params[:raw_body]
|
148
56
|
end
|
149
57
|
response
|
150
58
|
end
|
151
|
-
|
152
|
-
private
|
153
|
-
|
154
59
|
end
|
155
60
|
end
|
156
61
|
end
|