fog 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +1 -1
- data/.irbrc +5 -10
- data/{README.rdoc → README.md} +66 -61
- data/Rakefile +4 -6
- data/changelog.txt +491 -0
- data/docs/about/users.markdown +1 -0
- data/fog.gemspec +4 -4
- data/lib/fog.rb +1 -1
- data/lib/fog/aws.rb +4 -0
- data/lib/fog/aws/auto_scaling.rb +3 -0
- data/lib/fog/aws/cloud_watch.rb +28 -0
- data/lib/fog/aws/compute.rb +7 -1
- data/lib/fog/aws/elasticache.rb +64 -6
- data/lib/fog/aws/models/auto_scaling/configuration.rb +3 -1
- data/lib/fog/aws/models/auto_scaling/group.rb +10 -9
- data/lib/fog/aws/models/auto_scaling/policies.rb +33 -0
- data/lib/fog/aws/models/auto_scaling/policy.rb +46 -0
- data/lib/fog/aws/models/cloud_watch/alarm.rb +50 -2
- data/lib/fog/aws/models/cloud_watch/alarms.rb +18 -1
- data/lib/fog/aws/models/compute/address.rb +2 -2
- data/lib/fog/aws/models/dns/records.rb +5 -0
- data/lib/fog/aws/models/elasticache/cluster.rb +1 -1
- data/lib/fog/aws/models/iam/users.rb +26 -4
- data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +7 -5
- data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +1 -1
- data/lib/fog/aws/rds.rb +1 -1
- data/lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb +8 -0
- data/lib/fog/aws/requests/auto_scaling/create_launch_configuration.rb +1 -2
- data/lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb +10 -2
- data/lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb +1 -1
- data/lib/fog/aws/requests/auto_scaling/delete_policy.rb +10 -1
- data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_instances.rb +0 -1
- data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +13 -1
- data/lib/fog/aws/requests/auto_scaling/put_scaling_policy.rb +20 -1
- data/lib/fog/aws/requests/auto_scaling/update_auto_scaling_group.rb +1 -1
- data/lib/fog/aws/requests/cloud_watch/delete_alarms.rb +19 -1
- data/lib/fog/aws/requests/cloud_watch/describe_alarms.rb +20 -2
- data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +9 -0
- data/lib/fog/aws/requests/compute/allocate_address.rb +4 -5
- data/lib/fog/aws/requests/compute/create_dhcp_options.rb +6 -5
- data/lib/fog/aws/requests/compute/create_internet_gateway.rb +7 -6
- data/lib/fog/aws/requests/compute/create_subnet.rb +11 -10
- data/lib/fog/aws/requests/compute/create_vpc.rb +8 -7
- data/lib/fog/aws/requests/compute/delete_dhcp_options.rb +1 -0
- data/lib/fog/aws/requests/compute/delete_internet_gateway.rb +1 -0
- data/lib/fog/aws/requests/compute/delete_subnet.rb +1 -0
- data/lib/fog/aws/requests/compute/delete_vpc.rb +2 -1
- data/lib/fog/aws/requests/compute/describe_availability_zones.rb +1 -0
- data/lib/fog/aws/requests/compute/describe_dhcp_options.rb +1 -8
- data/lib/fog/aws/requests/compute/describe_instances.rb +3 -1
- data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +1 -8
- data/lib/fog/aws/requests/compute/describe_subnets.rb +1 -9
- data/lib/fog/aws/requests/compute/describe_vpcs.rb +1 -8
- data/lib/fog/aws/requests/compute/release_address.rb +12 -4
- data/lib/fog/aws/requests/compute/start_instances.rb +1 -0
- data/lib/fog/aws/requests/compute/stop_instances.rb +1 -0
- data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +26 -2
- data/lib/fog/aws/requests/elasticache/delete_cache_cluster.rb +10 -1
- data/lib/fog/aws/requests/elasticache/describe_cache_clusters.rb +16 -1
- data/lib/fog/aws/requests/elasticache/modify_cache_cluster.rb +35 -3
- data/lib/fog/aws/requests/elasticache/reboot_cache_cluster.rb +10 -2
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +3 -3
- data/lib/fog/aws/sqs.rb +1 -1
- data/lib/fog/aws/storage.rb +1 -1
- data/lib/fog/bin/rackspace.rb +4 -0
- data/lib/fog/cloudstack/compute.rb +25 -18
- data/lib/fog/cloudstack/models/compute/image.rb +34 -34
- data/lib/fog/cloudstack/models/compute/job.rb +14 -1
- data/lib/fog/cloudstack/models/compute/jobs.rb +1 -1
- data/lib/fog/cloudstack/models/compute/security_group.rb +50 -0
- data/lib/fog/cloudstack/models/compute/security_group_rule.rb +62 -0
- data/lib/fog/cloudstack/models/compute/security_group_rules.rb +37 -0
- data/lib/fog/cloudstack/models/compute/security_groups.rb +27 -0
- data/lib/fog/cloudstack/models/compute/server.rb +63 -39
- data/lib/fog/cloudstack/models/compute/volume.rb +3 -7
- data/lib/fog/cloudstack/models/compute/zone.rb +1 -2
- data/lib/fog/cloudstack/requests/compute/assign_virtual_machine.rb +18 -0
- data/lib/fog/cloudstack/requests/compute/authorize_security_group_egress.rb +68 -0
- data/lib/fog/cloudstack/requests/compute/authorize_security_group_ingress.rb +55 -4
- data/lib/fog/cloudstack/requests/compute/create_security_group.rb +12 -4
- data/lib/fog/cloudstack/requests/compute/create_zone.rb +20 -0
- data/lib/fog/cloudstack/requests/compute/delete_security_group.rb +17 -0
- data/lib/fog/cloudstack/requests/compute/destroy_virtual_machine.rb +23 -1
- data/lib/fog/cloudstack/requests/compute/list_firewall_rules.rb +15 -0
- data/lib/fog/cloudstack/requests/compute/list_security_groups.rb +22 -4
- data/lib/fog/cloudstack/requests/compute/query_async_job_result.rb +15 -3
- data/lib/fog/cloudstack/requests/compute/revoke_security_group_egress.rb +42 -0
- data/lib/fog/cloudstack/requests/compute/revoke_security_group_ingress.rb +29 -3
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/attributes.rb +1 -1
- data/lib/fog/core/current_machine.rb +2 -2
- data/lib/fog/core/scp.rb +8 -0
- data/lib/fog/core/ssh.rb +8 -0
- data/lib/fog/dynect/dns.rb +14 -5
- data/lib/fog/ibm/requests/compute/create_instance.rb +1 -1
- data/lib/fog/libvirt/requests/compute/create_volume.rb +1 -1
- data/lib/fog/libvirt/requests/compute/list_volumes.rb +1 -1
- data/lib/fog/local/models/storage/file.rb +12 -1
- data/lib/fog/local/storage.rb +25 -1
- data/lib/fog/ninefold/compute.rb +1 -0
- data/lib/fog/openstack.rb +3 -1
- data/lib/fog/openstack/compute.rb +13 -2
- data/lib/fog/openstack/models/compute/servers.rb +10 -2
- data/lib/fog/openstack/requests/compute/create_flavor.rb +2 -2
- data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_server.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_volume.rb +1 -1
- data/lib/fog/openstack/requests/compute/get_flavor_details.rb +7 -7
- data/lib/fog/openstack/requests/compute/get_quota.rb +1 -12
- data/lib/fog/openstack/requests/compute/get_quota_defaults.rb +1 -12
- data/lib/fog/openstack/requests/compute/get_volume_details.rb +1 -1
- data/lib/fog/openstack/requests/compute/list_flavors.rb +7 -7
- data/lib/fog/openstack/requests/compute/list_flavors_detail.rb +7 -7
- data/lib/fog/openstack/requests/compute/list_security_groups.rb +7 -7
- data/lib/fog/openstack/requests/compute/list_servers_detail.rb +4 -3
- data/lib/fog/openstack/requests/compute/list_volumes.rb +6 -8
- data/lib/fog/openstack/requests/compute/update_quota.rb +2 -15
- data/lib/fog/openstack/requests/identity/delete_role.rb +1 -1
- data/lib/fog/openstack/requests/identity/list_roles.rb +1 -1
- data/lib/fog/openstack/requests/image/create_image.rb +3 -1
- data/lib/fog/openstack/requests/image/list_public_images.rb +19 -1
- data/lib/fog/openstack/requests/image/list_public_images_detailed.rb +20 -2
- data/lib/fog/openstack/requests/image/update_image.rb +1 -1
- data/lib/fog/rackspace.rb +2 -0
- data/lib/fog/rackspace/databases.rb +121 -0
- data/lib/fog/rackspace/identity.rb +83 -0
- data/lib/fog/rackspace/load_balancers.rb +3 -0
- data/lib/fog/rackspace/models/databases/database.rb +32 -0
- data/lib/fog/rackspace/models/databases/databases.rb +31 -0
- data/lib/fog/rackspace/models/databases/flavor.rb +15 -0
- data/lib/fog/rackspace/models/databases/flavors.rb +25 -0
- data/lib/fog/rackspace/models/databases/instance.rb +104 -0
- data/lib/fog/rackspace/models/databases/instances.rb +25 -0
- data/lib/fog/rackspace/models/databases/user.rb +32 -0
- data/lib/fog/rackspace/models/databases/users.rb +31 -0
- data/lib/fog/rackspace/models/identity/credential.rb +13 -0
- data/lib/fog/rackspace/models/identity/credentials.rb +32 -0
- data/lib/fog/rackspace/models/identity/role.rb +14 -0
- data/lib/fog/rackspace/models/identity/roles.rb +32 -0
- data/lib/fog/rackspace/models/identity/tenant.rb +15 -0
- data/lib/fog/rackspace/models/identity/tenants.rb +28 -0
- data/lib/fog/rackspace/models/identity/user.rb +53 -0
- data/lib/fog/rackspace/models/identity/users.rb +36 -0
- data/lib/fog/rackspace/models/load_balancers/load_balancer.rb +17 -0
- data/lib/fog/rackspace/requests/databases/check_root_user.rb +15 -0
- data/lib/fog/rackspace/requests/databases/create_database.rb +24 -0
- data/lib/fog/rackspace/requests/databases/create_instance.rb +26 -0
- data/lib/fog/rackspace/requests/databases/create_user.rb +24 -0
- data/lib/fog/rackspace/requests/databases/delete_database.rb +15 -0
- data/lib/fog/rackspace/requests/databases/delete_instance.rb +15 -0
- data/lib/fog/rackspace/requests/databases/delete_user.rb +15 -0
- data/lib/fog/rackspace/requests/databases/enable_root_user.rb +15 -0
- data/lib/fog/rackspace/requests/databases/get_flavor.rb +15 -0
- data/lib/fog/rackspace/requests/databases/get_instance.rb +15 -0
- data/lib/fog/rackspace/requests/databases/list_databases.rb +15 -0
- data/lib/fog/rackspace/requests/databases/list_flavors.rb +15 -0
- data/lib/fog/rackspace/requests/databases/list_instances.rb +15 -0
- data/lib/fog/rackspace/requests/databases/list_users.rb +15 -0
- data/lib/fog/rackspace/requests/databases/resize_instance.rb +22 -0
- data/lib/fog/rackspace/requests/databases/resize_instance_volume.rb +24 -0
- data/lib/fog/rackspace/requests/databases/restart_instance.rb +20 -0
- data/lib/fog/rackspace/requests/identity/create_token.rb +25 -0
- data/lib/fog/rackspace/requests/identity/create_user.rb +25 -0
- data/lib/fog/rackspace/requests/identity/delete_user.rb +15 -0
- data/lib/fog/rackspace/requests/identity/get_credentials.rb +15 -0
- data/lib/fog/rackspace/requests/identity/get_user_by_id.rb +15 -0
- data/lib/fog/rackspace/requests/identity/get_user_by_name.rb +15 -0
- data/lib/fog/rackspace/requests/identity/list_credentials.rb +22 -0
- data/lib/fog/rackspace/requests/identity/list_tenants.rb +22 -0
- data/lib/fog/rackspace/requests/identity/list_user_roles.rb +22 -0
- data/lib/fog/rackspace/requests/identity/list_users.rb +22 -0
- data/lib/fog/rackspace/requests/identity/update_user.rb +24 -0
- data/lib/fog/rackspace/requests/load_balancers/get_ssl_termination.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/remove_ssl_termination.rb +15 -0
- data/lib/fog/rackspace/requests/load_balancers/set_ssl_termination.rb +31 -0
- data/lib/fog/rackspace/storage.rb +1 -1
- data/lib/fog/vsphere/models/compute/server.rb +1 -0
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +2 -2
- data/tests/aws/models/compute/address_tests.rb +2 -1
- data/tests/aws/models/compute/volume_tests.rb +1 -1
- data/tests/aws/models/dns/records_tests.rb +19 -1
- data/tests/aws/models/storage/directory_tests.rb +1 -1
- data/tests/aws/models/storage/url_tests.rb +7 -1
- data/tests/aws/requests/auto_scaling/auto_scaling_tests.rb +4 -2
- data/tests/aws/requests/compute/address_tests.rb +19 -1
- data/tests/aws/requests/elasticache/cache_cluster_tests.rb +4 -4
- data/tests/aws/requests/elb/helper.rb +13 -2
- data/tests/aws/requests/iam/access_key_tests.rb +1 -3
- data/tests/cloudstack/compute/models/security_group_rule_tests.rb +29 -0
- data/tests/cloudstack/compute/models/security_group_tests.rb +16 -0
- data/tests/cloudstack/compute/models/security_groups_tests.rb +19 -0
- data/tests/cloudstack/compute/models/server_tests.rb +18 -0
- data/tests/cloudstack/compute/models/volume_tests.rb +34 -0
- data/tests/cloudstack/compute/models/volumes_tests.rb +17 -0
- data/tests/compute/helper.rb +10 -3
- data/tests/core/current_machine_tests.rb +32 -0
- data/tests/helper.rb +1 -1
- data/tests/helpers/mock_helper.rb +3 -0
- data/tests/hp/requests/compute/address_tests.rb +2 -1
- data/tests/joyent/requests/compute/datasets_tests.rb +12 -3
- data/tests/local/models/file_tests.rb +43 -0
- data/tests/local/storage_tests.rb +40 -0
- data/tests/openstack/requests/compute/flavor_tests.rb +1 -1
- data/tests/openstack/requests/compute/server_tests.rb +3 -3
- data/tests/openstack/requests/compute/volume_tests.rb +1 -1
- data/tests/openstack/requests/identity/role_tests.rb +1 -1
- data/tests/rackspace/databases_tests.rb +26 -0
- data/tests/rackspace/models/databases/database_tests.rb +17 -0
- data/tests/rackspace/models/databases/databases_tests.rb +17 -0
- data/tests/rackspace/models/databases/flavors_tests.rb +20 -0
- data/tests/rackspace/models/databases/instance_tests.rb +43 -0
- data/tests/rackspace/models/databases/instances_tests.rb +14 -0
- data/tests/rackspace/models/databases/user_tests.rb +21 -0
- data/tests/rackspace/models/databases/users_tests.rb +21 -0
- data/tests/rackspace/models/identity/credentials_tests.rb +16 -0
- data/tests/rackspace/models/identity/roles_tests.rb +16 -0
- data/tests/rackspace/models/identity/tenants_tests.rb +21 -0
- data/tests/rackspace/models/identity/user_tests.rb +17 -0
- data/tests/rackspace/models/identity/users_tests.rb +17 -0
- data/tests/rackspace/models/load_balancers/load_balancer_tests.rb +20 -0
- data/tests/rackspace/requests/databases/database_tests.rb +36 -0
- data/tests/rackspace/requests/databases/flavor_tests.rb +16 -0
- data/tests/rackspace/requests/databases/helper.rb +84 -0
- data/tests/rackspace/requests/databases/instance_tests.rb +77 -0
- data/tests/rackspace/requests/databases/user_tests.rb +37 -0
- data/tests/rackspace/requests/identity/tenants_tests.rb +21 -0
- data/tests/rackspace/requests/identity/token_tests.rb +63 -0
- data/tests/rackspace/requests/identity/user_tests.rb +107 -0
- data/tests/rackspace/requests/load_balancers/helper.rb +70 -1
- data/tests/rackspace/requests/load_balancers/ssl_termination_tests.rb +38 -0
- data/tests/storage/models/file_tests.rb +1 -1
- metadata +129 -13
- data/spec/core/current_machine_spec.rb +0 -32
- data/spec/lib/fog/aws/parsers/sqs/receive_message_spec.rb +0 -58
- data/spec/spec_helper.rb +0 -8
@@ -0,0 +1,77 @@
|
|
1
|
+
Shindo.tests('Fog::Rackspace::Database | instance_tests', ['rackspace']) do
|
2
|
+
|
3
|
+
pending if Fog.mocking?
|
4
|
+
|
5
|
+
service = Fog::Rackspace::Databases.new
|
6
|
+
|
7
|
+
tests('success') do
|
8
|
+
|
9
|
+
instance_id = nil
|
10
|
+
instance_name = 'fog' + Time.now.to_i.to_s
|
11
|
+
|
12
|
+
tests("#list_instances").formats(LIST_INSTANCES_FORMAT) do
|
13
|
+
service.list_instances.body
|
14
|
+
end
|
15
|
+
|
16
|
+
tests("#create_instance(#{instance_name}, 1, 1)").formats(CREATE_INSTANCE_FORMAT) do
|
17
|
+
data = service.create_instance(instance_name, 1, 1).body
|
18
|
+
instance_id = data['instance']['id']
|
19
|
+
data
|
20
|
+
end
|
21
|
+
|
22
|
+
until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
|
23
|
+
sleep 10
|
24
|
+
end
|
25
|
+
|
26
|
+
tests("#get_instance(#{instance_id})").formats(GET_INSTANCE_FORMAT) do
|
27
|
+
service.get_instance(instance_id).body
|
28
|
+
end
|
29
|
+
|
30
|
+
tests("#check_root_user(#{instance_id})").formats(CHECK_ROOT_USER_FORMAT) do
|
31
|
+
service.check_root_user(instance_id).body
|
32
|
+
end
|
33
|
+
|
34
|
+
tests("#enable_root_user(#{instance_id})").formats(ENABLE_ROOT_USER_FORMAT) do
|
35
|
+
service.enable_root_user(instance_id).body
|
36
|
+
end
|
37
|
+
|
38
|
+
tests("#restart_instance(#{instance_id})").succeeds do
|
39
|
+
service.restart_instance(instance_id)
|
40
|
+
end
|
41
|
+
|
42
|
+
until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
|
43
|
+
sleep 10
|
44
|
+
end
|
45
|
+
|
46
|
+
tests("#resize_instance(#{instance_id}, 2)").succeeds do
|
47
|
+
service.resize_instance(instance_id, 2)
|
48
|
+
end
|
49
|
+
|
50
|
+
until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
|
51
|
+
sleep 10
|
52
|
+
end
|
53
|
+
|
54
|
+
tests("#resize_instance_volume(#{instance_id}, 2)").succeeds do
|
55
|
+
service.resize_instance_volume(instance_id, 2)
|
56
|
+
end
|
57
|
+
|
58
|
+
until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
|
59
|
+
sleep 10
|
60
|
+
end
|
61
|
+
|
62
|
+
tests("#delete_instance(#{instance_id})").succeeds do
|
63
|
+
service.delete_instance(instance_id)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
tests('failure') do
|
68
|
+
tests("#create_instance('', 0, 0) => Invalid Create Critera").raises(Fog::Rackspace::Databases::BadRequest) do
|
69
|
+
service.create_instance('', 0, 0)
|
70
|
+
end
|
71
|
+
|
72
|
+
tests("#get_instance('') => Does not exist").raises(Fog::Rackspace::Databases::NotFound) do
|
73
|
+
service.get_instance('')
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
Shindo.tests('Fog::Rackspace::Database | user_tests', ['rackspace']) do
|
2
|
+
|
3
|
+
pending if Fog.mocking?
|
4
|
+
|
5
|
+
service = Fog::Rackspace::Databases.new
|
6
|
+
instance_name = 'fog' + Time.now.to_i.to_s
|
7
|
+
instance_id = service.create_instance(instance_name, 1, 1).body['instance']['id']
|
8
|
+
|
9
|
+
until service.get_instance(instance_id).body["instance"]["status"] == 'ACTIVE'
|
10
|
+
sleep 10
|
11
|
+
end
|
12
|
+
|
13
|
+
tests('success') do
|
14
|
+
user_name = 'fog' + Time.now.to_i.to_s
|
15
|
+
password = 'password1'
|
16
|
+
|
17
|
+
tests("#create_user(#{instance_id}, #{user_name}, #{password})").succeeds do
|
18
|
+
service.create_user(instance_id, user_name, password).body
|
19
|
+
end
|
20
|
+
|
21
|
+
tests("#list_users{#{instance_id})").formats(LIST_USERS_FORMAT) do
|
22
|
+
service.list_users(instance_id).body
|
23
|
+
end
|
24
|
+
|
25
|
+
tests("#delete_user(#{instance_id}, #{user_name})").succeeds do
|
26
|
+
service.delete_user(instance_id, user_name)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
tests('failure') do
|
31
|
+
tests("#create_user(#{instance_id}, '', '') => Invalid Create Critera").raises(Fog::Rackspace::Databases::BadRequest) do
|
32
|
+
service.create_user(instance_id, '', '')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
service.delete_instance(instance_id)
|
37
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Shindo.tests('Fog::Rackspace::Identity | tenants', ['rackspace']) do
|
2
|
+
|
3
|
+
pending if Fog.mock?
|
4
|
+
|
5
|
+
TENANTS_FORMATS = {
|
6
|
+
'tenants' => [{
|
7
|
+
'id' => String,
|
8
|
+
'name' => String,
|
9
|
+
'description' => Fog::Nullable::String,
|
10
|
+
'enabled' => Fog::Nullable::Boolean
|
11
|
+
}]
|
12
|
+
}
|
13
|
+
|
14
|
+
service = Fog::Rackspace::Identity.new
|
15
|
+
|
16
|
+
tests('success') do
|
17
|
+
tests('#list_tenants').formats(TENANTS_FORMATS) do
|
18
|
+
service.list_tenants().body
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
Shindo.tests('Fog::Rackspace::Identity | tokens', ['rackspace']) do
|
2
|
+
|
3
|
+
pending if Fog.mock?
|
4
|
+
|
5
|
+
ROLE_FORMAT = {
|
6
|
+
'id' => String,
|
7
|
+
'name' => String,
|
8
|
+
'description' => String
|
9
|
+
}
|
10
|
+
|
11
|
+
ENDPOINT_FORMAT = {
|
12
|
+
'tenantId' => String,
|
13
|
+
'publicURL' => Fog::Nullable::String,
|
14
|
+
'internalURL' => Fog::Nullable::String,
|
15
|
+
'region' => Fog::Nullable::String,
|
16
|
+
'versionId' => Fog::Nullable::String,
|
17
|
+
'versionInfo' => Fog::Nullable::String,
|
18
|
+
'versionList' => Fog::Nullable::String
|
19
|
+
}
|
20
|
+
|
21
|
+
SERVICE_FORMAT = {
|
22
|
+
'name' => String,
|
23
|
+
'type' => String,
|
24
|
+
'endpoints' => [ENDPOINT_FORMAT]
|
25
|
+
}
|
26
|
+
|
27
|
+
ACCESS_FORMAT = {
|
28
|
+
'access' => {
|
29
|
+
'token' => {
|
30
|
+
'id' => String,
|
31
|
+
'expires' => String,
|
32
|
+
'tenant' => {
|
33
|
+
'id' => String,
|
34
|
+
'name' => String
|
35
|
+
}
|
36
|
+
},
|
37
|
+
'user' => {
|
38
|
+
'id' => String,
|
39
|
+
'name' => String,
|
40
|
+
'roles' => [ROLE_FORMAT]
|
41
|
+
},
|
42
|
+
'serviceCatalog' => [SERVICE_FORMAT]
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
service = Fog::Rackspace::Identity.new
|
47
|
+
|
48
|
+
tests('success') do
|
49
|
+
credentials = Fog.credentials
|
50
|
+
username = credentials[:rackspace_username]
|
51
|
+
api_key = credentials[:rackspace_api_key]
|
52
|
+
|
53
|
+
tests('#create_token').formats(ACCESS_FORMAT) do
|
54
|
+
service.create_token(username, api_key).body
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
tests('failure') do
|
59
|
+
tests('#create_token(invalidname, invalidkey').raises(Excon::Errors::HTTPStatusError) do
|
60
|
+
service.create_token('baduser', 'badkey')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
Shindo.tests('Fog::Rackspace::Identity | users', ['rackspace']) do
|
2
|
+
|
3
|
+
pending if Fog.mock?
|
4
|
+
|
5
|
+
USER_INFO = {
|
6
|
+
'id' => String,
|
7
|
+
'username' => String,
|
8
|
+
'email' => Fog::Nullable::String,
|
9
|
+
'enabled' => Fog::Boolean,
|
10
|
+
'OS-KSADM:password' => Fog::Nullable::String,
|
11
|
+
'created' => Fog::Nullable::String,
|
12
|
+
'updated' => Fog::Nullable::String
|
13
|
+
}
|
14
|
+
|
15
|
+
USER_FORMAT = {
|
16
|
+
'user' => USER_INFO
|
17
|
+
}
|
18
|
+
|
19
|
+
USERS_FORMAT = {
|
20
|
+
'users' => [USER_INFO]
|
21
|
+
}
|
22
|
+
|
23
|
+
CREDENTIAL_FORMAT = {
|
24
|
+
'RAX-KSKEY:apiKeyCredentials' => {
|
25
|
+
'username' => String,
|
26
|
+
'apiKey' => String
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
CREDENTIALS_FORMAT = {
|
31
|
+
'credentials' => [CREDENTIAL_FORMAT]
|
32
|
+
}
|
33
|
+
|
34
|
+
ROLES_FORMAT = {
|
35
|
+
'roles' => [{
|
36
|
+
'id' => String,
|
37
|
+
'name' => String,
|
38
|
+
'description' => String
|
39
|
+
}]
|
40
|
+
}
|
41
|
+
|
42
|
+
service = Fog::Rackspace::Identity.new
|
43
|
+
id = nil
|
44
|
+
username = 'foguser'
|
45
|
+
email = 'fog_user@example.com'
|
46
|
+
enabled = true
|
47
|
+
password = 'Fog_password1'
|
48
|
+
|
49
|
+
tests('success') do
|
50
|
+
tests('#create_user').formats(USER_FORMAT) do
|
51
|
+
data = service.create_user(username, email, enabled).body
|
52
|
+
id = data['user']['id']
|
53
|
+
data
|
54
|
+
end
|
55
|
+
|
56
|
+
tests('#delete_user').succeeds do
|
57
|
+
service.delete_user(id)
|
58
|
+
end
|
59
|
+
|
60
|
+
tests('#create_user with password').succeeds do
|
61
|
+
data = service.create_user(username, email, enabled, :password => password ).body
|
62
|
+
id = data['user']['id']
|
63
|
+
data
|
64
|
+
end
|
65
|
+
|
66
|
+
tests('#get_user_by_name').formats(USER_FORMAT) do
|
67
|
+
data = service.get_user_by_name(username).body
|
68
|
+
id = data['user']['id']
|
69
|
+
data
|
70
|
+
end
|
71
|
+
|
72
|
+
tests('#get_user_by_id').formats(USER_FORMAT) do
|
73
|
+
service.get_user_by_id(id).body
|
74
|
+
end
|
75
|
+
|
76
|
+
tests('#list_users').formats(USERS_FORMAT) do
|
77
|
+
service.list_users().body
|
78
|
+
end
|
79
|
+
|
80
|
+
tests('#update_user').formats(USER_FORMAT) do
|
81
|
+
service.update_user(id, username, 'updated_user@example.com', enabled).body
|
82
|
+
end
|
83
|
+
|
84
|
+
tests('#update_user with password').succeeds do
|
85
|
+
service.update_user(id, username, email, enabled, :password => password).body
|
86
|
+
end
|
87
|
+
|
88
|
+
tests('#list_user_roles').formats(ROLES_FORMAT) do
|
89
|
+
service.list_user_roles(id).body
|
90
|
+
end
|
91
|
+
|
92
|
+
service.delete_user(id)
|
93
|
+
|
94
|
+
# Users are only authorized to request their own credentials,
|
95
|
+
# so perform credential tests with the ID of the user running tests.
|
96
|
+
credential_username = Fog.credentials[:rackspace_username]
|
97
|
+
credential_id = service.get_user_by_name(credential_username).body['user']['id']
|
98
|
+
|
99
|
+
tests('#list_credentials').formats(CREDENTIALS_FORMAT) do
|
100
|
+
service.list_credentials(credential_id).body
|
101
|
+
end
|
102
|
+
|
103
|
+
tests('#get_credentials').formats(CREDENTIAL_FORMAT) do
|
104
|
+
service.get_credentials(credential_id).body
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
SINGLE_NODE_FORMAT = {'address' => String, 'id' => Integer, 'status' => String, 'weight' => Fog::Nullable::Integer, 'port' => Integer, 'condition' => String, 'type' => String}
|
2
|
-
NODE_FORMAT = {'node' => SINGLE_NODE_FORMAT}
|
2
|
+
NODE_FORMAT = {'node' => SINGLE_NODE_FORMAT.merge({ 'metadata' => []})}
|
3
3
|
NODES_FORMAT = {'nodes' => [SINGLE_NODE_FORMAT]}
|
4
4
|
VIRTUAL_IP_FORMAT = {'type' => String, 'id' => Integer, 'type' => String, 'ipVersion' => String, 'address' => String}
|
5
5
|
VIRTUAL_IPS_FORMAT = { 'virtualIps' => [VIRTUAL_IP_FORMAT] }
|
@@ -32,6 +32,17 @@ LOAD_BALANCER_USAGE_FORMAT = {
|
|
32
32
|
]
|
33
33
|
}
|
34
34
|
|
35
|
+
SSL_TERMINATION_FORMAT = {
|
36
|
+
'sslTermination' => {
|
37
|
+
'certificate' => String,
|
38
|
+
'privatekey' => String,
|
39
|
+
'enabled' => Fog::Boolean,
|
40
|
+
'securePort' => Integer,
|
41
|
+
'secureTrafficOnly' => Fog::Boolean,
|
42
|
+
'intermediateCertificate' => Fog::Nullable::String
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
35
46
|
USAGE_FORMAT = {
|
36
47
|
'accountId' => Integer,
|
37
48
|
'loadBalancerUsages' => [
|
@@ -137,6 +148,7 @@ LOAD_BALANCER_FORMAT = {
|
|
137
148
|
'nodes' => [SINGLE_NODE_FORMAT],
|
138
149
|
'created' => { 'time' => String },
|
139
150
|
'updated' => { 'time' => String },
|
151
|
+
'contentCaching' => { 'enabled' => Fog::Boolean }
|
140
152
|
}.merge(CONNECTION_LOGGING_FORMAT)
|
141
153
|
}
|
142
154
|
|
@@ -145,3 +157,60 @@ ERROR_PAGE_FORMAT = {
|
|
145
157
|
'content' => String
|
146
158
|
}
|
147
159
|
}
|
160
|
+
|
161
|
+
PRIVATE_KEY = '-----BEGIN RSA PRIVATE KEY-----
|
162
|
+
MIIEpAIBAAKCAQEAqSXePu8qLmniU7jNxoWq3SLkR8txMsl1gFYftpq7NIFaGfzV
|
163
|
+
f4ZswYdEYDVWWRepQjS0TvsB0d5+usEUy/pcdZAlQLnn+540iLkvxKPVMzojUbG6
|
164
|
+
yOAmjC/xAZuExJHtfCrRHUQ4WQCwqyqANfP81y1inAb0zJGbtWUreV+nv8Ue77qX
|
165
|
+
77fOuqI6zOHinGZU7l25XGLcVUphgt8UtHZBzz2ahoftZ97DhUyQiSJQCaHXJd3Q
|
166
|
+
eIHAq9qc7hu+usiYZWz34A0lw/gAl+RYcdvVc8kIwWxpiSieqqBPOwNzN5B0+9uu
|
167
|
+
5sDzMGMFnnSWcNKIPumX0rke3xFUl3UD6GJwvwIDAQABAoIBABQ7alT+yH3avm6j
|
168
|
+
OUHYtTJUPRf1VqnrfPmH061E3sWN/1gCbQse6h1P77bOSnDHqsA3i6Wy0mnnAiOW
|
169
|
+
esVXQf3x6vLOCdiH+OKtu+/6ZMMG3jikWKI0ZYf5KAu4LW5RwiVK/c5RXagPtBIV
|
170
|
+
OFa7w299h0EAeAGMHSLaYhPXhDokyJa6yDkAQL3n+9L3V8kNWeCELfrqXnXF4X0K
|
171
|
+
CJp622tS/fW6kzppJyLJ4GPkK9HNMpu02/n2Z7swWypfF+7set+9/aNTooDYWzCu
|
172
|
+
dbnRgqEIG1IP8+t6HG6x9VujJVJLIW/WLITnQ/WTRXOQHBGhazgmwe1GPdxsQgXu
|
173
|
+
/wIcsIkCgYEA8Si0q+QhmJyoAm8vTHjo6+DD06YYTvSODLJOpOqr1ncGGDJ/evBw
|
174
|
+
x+9QsK3veXMbAK5G7Xss32IuXbBfjqQ89+/q/YT4BnS3T0OQa2WlR8tURNphCDr5
|
175
|
+
B3yD212kJTTehC+p7BI9zhnWXD9kImh4vm4XcOsC9iqOSCZkGfvRPRsCgYEAs46t
|
176
|
+
Y85v2Pk235r1BPbgKwqYR+jElH4VWKu+EguUeQ4BlS47KktlLhvHtwrTv/UZ+lPx
|
177
|
+
8gSJTgyy7iEmzcGwPf1/MI5xg+DPgGhbr2G8EvrThmdHy+rPF2YSp1iBmJ4xq/1r
|
178
|
+
6XYKvf6ST3iujxTPU5xPEDUSLsH2ejJD/ddqSS0CgYEAkIdxyDa//8ObWWIjObSY
|
179
|
+
+4zIMBcyKFeernNKeMH/3FeW+neBOT/Sh7CgblK/28ylWUIZVghlOzePTC0BB+7c
|
180
|
+
b0eFUQ0YzF204rc+XW8coCt2xJEQaCtXxinUqGq1jmriFNyv/MBt9BA+DSkcrRZp
|
181
|
+
js9SEyV1r+yPOyRvB7eIjhMCgYEAkd5yG+fkU1c6bfNb4/mPaUgFKD4AHUZEnzF+
|
182
|
+
ivhfWOy4+nGBXT285/VnjNs95O8AeK3jmyJ2TTLh1bSW6obUX7flsRO3QlTLHd0p
|
183
|
+
xtPWT3D3kHOtDwslzDN/KfYr6klxvvB0z0e3OFxsjiVTYiecuqb8UAVdTSED1Ier
|
184
|
+
Vre+v80CgYB86OqcAlR3diNaIwHgwK5kP2NAH1DaSwZXoobYpdkjsUQfJN5jwJbD
|
185
|
+
4/6HVydoc5xe0z8B+O1VUzC+QA0gdXgHbmLZBIUeQU8sE4hGELoe/eWULXGwI91M
|
186
|
+
FyEWg03jZj8FkFh2954zwU6BOcbeL+9GrTdTPu1vuHoTitmNEye4iw==
|
187
|
+
-----END RSA PRIVATE KEY-----'
|
188
|
+
|
189
|
+
CERTIFICATE = '-----BEGIN CERTIFICATE-----
|
190
|
+
MIIEWjCCA0KgAwIBAgIGATTTGu/tMA0GCSqGSIb3DQEBBQUAMHkxCzAJBgNVBAYT
|
191
|
+
AlVTMQ4wDAYDVQQIEwVUZXhhczEOMAwGA1UEBxMFVGV4YXMxGjAYBgNVBAoTEVJh
|
192
|
+
Y2tTcGFjZSBIb3N0aW5nMRQwEgYDVQQLEwtSYWNrRXhwIENBNTEYMBYGA1UEAxMP
|
193
|
+
Y2E1LnJhY2tleHAub3JnMB4XDTEyMDExMjE4MDgwNVoXDTM5MDUzMDE4MDgwNVow
|
194
|
+
gZcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVUZXhhczEUMBIGA1UEBxMLU2FuIEFu
|
195
|
+
dG9uaW8xEDAOBgNVBAoTB1JhY2tFeHAxEDAOBgNVBAsTB1JhY2tEZXYxPjA8BgNV
|
196
|
+
BAMMNW15c2l0ZS5jb20vZW1haWxBZGRyZXNzPXBoaWxsaXAudG9vaGlsbEByYWNr
|
197
|
+
c3BhY2UuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqSXePu8q
|
198
|
+
LmniU7jNxoWq3SLkR8txMsl1gFYftpq7NIFaGfzVf4ZswYdEYDVWWRepQjS0TvsB
|
199
|
+
0d5+usEUy/pcdZAlQLnn+540iLkvxKPVMzojUbG6yOAmjC/xAZuExJHtfCrRHUQ4
|
200
|
+
WQCwqyqANfP81y1inAb0zJGbtWUreV+nv8Ue77qX77fOuqI6zOHinGZU7l25XGLc
|
201
|
+
VUphgt8UtHZBzz2ahoftZ97DhUyQiSJQCaHXJd3QeIHAq9qc7hu+usiYZWz34A0l
|
202
|
+
w/gAl+RYcdvVc8kIwWxpiSieqqBPOwNzN5B0+9uu5sDzMGMFnnSWcNKIPumX0rke
|
203
|
+
3xFUl3UD6GJwvwIDAQABo4HIMIHFMIGjBgNVHSMEgZswgZiAFIkXQizRaftxVDaL
|
204
|
+
P/Fb/F2ht017oX2kezB5MQswCQYDVQQGEwJVUzEOMAwGA1UECBMFVGV4YXMxDjAM
|
205
|
+
BgNVBAcTBVRleGFzMRowGAYDVQQKExFSYWNrU3BhY2UgSG9zdGluZzEUMBIGA1UE
|
206
|
+
CxMLUmFja0V4cCBDQTQxGDAWBgNVBAMTD2NhNC5yYWNrZXhwLm9yZ4IBAjAdBgNV
|
207
|
+
HQ4EFgQUQUXHjce1JhjJDA4nhYcbebMrIGYwDQYJKoZIhvcNAQEFBQADggEBACLe
|
208
|
+
vxcDSx91uQoc1uancb+vfkaNpvfAxOkUtrdRSHGXxvUkf/EJpIyG/M0jt5CLmEpE
|
209
|
+
UedeCFlRN+Qnsqt589ZemWWJwth/Jbu0wQodfSo1cP0J2GFZDyTd5cWgm0IxD8A/
|
210
|
+
ZRGzNnTx3xskv6/lOh7so9ULppEbOsZTNqQ4ahbxbiaR2iDTQGF3XKSHha8O93RB
|
211
|
+
YlnFahKZ2j0CpYvg0lJjfN0Lvj7Sm6GBA74n2OrGuB14H27wklD+PtIEFniyxKbq
|
212
|
+
5TDO0l4yDgkR7PsckmZqK22GP9c3fQkmXodtpV1wRjcSAxxVWYm+S24XvMFERs3j
|
213
|
+
yXEf+VJ0H+voAvxgbAk=
|
214
|
+
-----END CERTIFICATE-----'
|
215
|
+
|
216
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
Shindo.tests('Fog::Rackspace::LoadBalancers | ssl_termination', ['rackspace']) do
|
2
|
+
|
3
|
+
pending if Fog.mocking?
|
4
|
+
|
5
|
+
given_a_load_balancer_service do
|
6
|
+
given_a_load_balancer do
|
7
|
+
tests('success') do
|
8
|
+
|
9
|
+
@lb.wait_for { ready? }
|
10
|
+
tests("#set_ssl_termination(#{@lb.id}, 443, PRIVATE_KEY, CERTIFICATE)").succeeds do
|
11
|
+
@service.set_ssl_termination(@lb.id, 443, PRIVATE_KEY, CERTIFICATE)
|
12
|
+
end
|
13
|
+
|
14
|
+
@lb.wait_for { ready? }
|
15
|
+
tests("#get_ssl_termination(#{@lb.id})").formats(SSL_TERMINATION_FORMAT) do
|
16
|
+
@service.get_ssl_termination(@lb.id).body
|
17
|
+
end
|
18
|
+
|
19
|
+
@lb.wait_for { ready? }
|
20
|
+
tests("#remove_ssl_termination(#{@lb.id})").succeeds do
|
21
|
+
@service.remove_ssl_termination(@lb.id).body
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
tests('failure') do
|
27
|
+
@lb.wait_for { ready? }
|
28
|
+
tests("#get_ssl_termination(#{@lb.id})").raises(Fog::Rackspace::LoadBalancers::NotFound) do
|
29
|
+
@service.get_ssl_termination(@lb.id).body
|
30
|
+
end
|
31
|
+
|
32
|
+
tests("#set_ssl_termination(#{@lb.id}, 443, '', CERTIFICATE)").raises(Fog::Rackspace::LoadBalancers::BadRequest) do
|
33
|
+
@service.set_ssl_termination(@lb.id, 443, '', CERTIFICATE)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -21,7 +21,7 @@ for provider, config in storage_providers
|
|
21
21
|
responds_to(:public_url)
|
22
22
|
|
23
23
|
tests("#public=(true)").succeeds do
|
24
|
-
pending if Fog.mocking? && !config[:mocked]
|
24
|
+
pending if Fog.mocking? && !config[:mocked] || !Fog::Storage[provider].respond_to?(:public=)
|
25
25
|
@instance.public=(true)
|
26
26
|
end
|
27
27
|
|