fog-maestrodev 1.19.0.20140212012611 → 1.20.0.20140305101305
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +2 -0
- data/.travis.yml +10 -0
- data/CONTRIBUTORS.md +694 -0
- data/Gemfile.1.8.7 +1 -1
- data/LICENSE.md +17 -17
- data/Rakefile +1 -1
- data/benchs/each_provider.sh +6 -0
- data/benchs/each_service.sh +6 -0
- data/benchs/load_times.rb +6 -0
- data/changelog.txt +312 -0
- data/fog.gemspec +3 -5
- data/lib/fog.rb +1 -0
- data/lib/fog/atmos.rb +1 -11
- data/lib/fog/atmos/core.rb +11 -0
- data/lib/fog/atmos/requests/storage/get_namespace.rb +1 -1
- data/lib/fog/atmos/requests/storage/head_namespace.rb +1 -1
- data/lib/fog/atmos/storage.rb +1 -1
- data/lib/fog/aws.rb +22 -323
- data/lib/fog/aws/auto_scaling.rb +1 -1
- data/lib/fog/aws/beanstalk.rb +1 -1
- data/lib/fog/aws/cdn.rb +1 -1
- data/lib/fog/aws/cloud_formation.rb +1 -1
- data/lib/fog/aws/cloud_watch.rb +1 -1
- data/lib/fog/aws/compute.rb +12 -1
- data/lib/fog/aws/core.rb +329 -0
- data/lib/fog/aws/data_pipeline.rb +1 -1
- data/lib/fog/aws/dns.rb +1 -1
- data/lib/fog/aws/dynamodb.rb +1 -1
- data/lib/fog/aws/elasticache.rb +10 -3
- data/lib/fog/aws/elb.rb +1 -1
- data/lib/fog/aws/emr.rb +1 -2
- data/lib/fog/aws/glacier.rb +1 -1
- data/lib/fog/aws/iam.rb +1 -1
- data/lib/fog/aws/models/compute/dhcp_option.rb +2 -2
- data/lib/fog/aws/models/compute/flavor.rb +2 -0
- data/lib/fog/aws/models/compute/flavors.rb +363 -49
- data/lib/fog/aws/models/compute/network_acl.rb +170 -0
- data/lib/fog/aws/models/compute/network_acls.rb +138 -0
- data/lib/fog/aws/models/compute/server.rb +2 -2
- data/lib/fog/aws/models/compute/servers.rb +7 -2
- data/lib/fog/aws/models/compute/subnet.rb +2 -2
- data/lib/fog/aws/models/elasticache/cluster.rb +6 -0
- data/lib/fog/aws/models/elasticache/subnet_group.rb +35 -0
- data/lib/fog/aws/models/elasticache/subnet_groups.rb +27 -0
- data/lib/fog/aws/models/rds/snapshot.rb +1 -0
- data/lib/fog/aws/models/storage/file.rb +1 -1
- data/lib/fog/aws/parsers/compute/create_network_acl.rb +28 -0
- data/lib/fog/aws/parsers/compute/create_subnet.rb +2 -3
- data/lib/fog/aws/parsers/compute/describe_network_acls.rb +42 -0
- data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +29 -3
- data/lib/fog/aws/parsers/compute/network_acl_parser.rb +105 -0
- data/lib/fog/aws/parsers/compute/network_interface_parser.rb +16 -0
- data/lib/fog/aws/parsers/compute/replace_network_acl_association.rb +20 -0
- data/lib/fog/aws/parsers/compute/run_instances.rb +1 -1
- data/lib/fog/aws/parsers/elasticache/cache_cluster_parser.rb +2 -2
- data/lib/fog/aws/parsers/elasticache/create_cache_subnet_group.rb +38 -0
- data/lib/fog/aws/parsers/elasticache/describe_cache_subnet_groups.rb +38 -0
- data/lib/fog/aws/parsers/elasticache/subnet_group_parser.rb +38 -0
- data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +1 -1
- data/lib/fog/aws/parsers/rds/db_parser.rb +6 -0
- data/lib/fog/aws/parsers/rds/snapshot_parser.rb +1 -0
- data/lib/fog/aws/rds.rb +1 -1
- data/lib/fog/aws/redshift.rb +1 -1
- data/lib/fog/aws/requests/compute/create_network_acl.rb +105 -0
- data/lib/fog/aws/requests/compute/create_network_acl_entry.rb +80 -0
- data/lib/fog/aws/requests/compute/create_subnet.rb +14 -4
- data/lib/fog/aws/requests/compute/create_vpc.rb +7 -1
- data/lib/fog/aws/requests/compute/delete_network_acl.rb +52 -0
- data/lib/fog/aws/requests/compute/delete_network_acl_entry.rb +55 -0
- data/lib/fog/aws/requests/compute/delete_vpc.rb +4 -0
- data/lib/fog/aws/requests/compute/describe_network_acls.rb +104 -0
- data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +4 -0
- data/lib/fog/aws/requests/compute/disassociate_address.rb +4 -3
- data/lib/fog/aws/requests/compute/replace_network_acl_association.rb +66 -0
- data/lib/fog/aws/requests/compute/replace_network_acl_entry.rb +81 -0
- data/lib/fog/aws/requests/compute/replace_route.rb +84 -0
- data/lib/fog/aws/requests/compute/request_spot_instances.rb +8 -0
- data/lib/fog/aws/requests/compute/run_instances.rb +23 -3
- data/lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb +29 -21
- data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +18 -11
- data/lib/fog/aws/requests/elasticache/create_cache_subnet_group.rb +66 -0
- data/lib/fog/aws/requests/elasticache/delete_cache_subnet_group.rb +40 -0
- data/lib/fog/aws/requests/elasticache/describe_cache_subnet_groups.rb +63 -0
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +3 -2
- data/lib/fog/aws/requests/iam/delete_server_certificate.rb +3 -1
- data/lib/fog/aws/requests/rds/create_db_instance.rb +2 -0
- data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +1 -0
- data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
- data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +2 -0
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -0
- data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +18 -0
- data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +23 -0
- data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +24 -0
- data/lib/fog/aws/requests/storage/put_object.rb +18 -54
- data/lib/fog/aws/requests/storage/shared_mock_methods.rb +87 -0
- data/lib/fog/aws/requests/storage/upload_part.rb +18 -0
- data/lib/fog/aws/ses.rb +1 -1
- data/lib/fog/aws/simpledb.rb +1 -1
- data/lib/fog/aws/sns.rb +1 -2
- data/lib/fog/aws/sqs.rb +5 -4
- data/lib/fog/aws/storage.rb +15 -5
- data/lib/fog/aws/sts.rb +1 -1
- data/lib/fog/bare_metal_cloud.rb +1 -11
- data/lib/fog/bare_metal_cloud/compute.rb +1 -1
- data/lib/fog/bare_metal_cloud/core.rb +11 -0
- data/lib/fog/bin.rb +1 -0
- data/lib/fog/bin/rage4.rb +31 -0
- data/lib/fog/bluebox.rb +3 -13
- data/lib/fog/bluebox/blb.rb +2 -2
- data/lib/fog/bluebox/compute.rb +1 -1
- data/lib/fog/bluebox/core.rb +13 -0
- data/lib/fog/bluebox/dns.rb +2 -2
- data/lib/fog/bluebox/models/compute/server.rb +1 -1
- data/lib/fog/brightbox.rb +1 -10
- data/lib/fog/brightbox/compute.rb +20 -1
- data/lib/fog/brightbox/core.rb +10 -0
- data/lib/fog/brightbox/models/compute/cloud_ip.rb +5 -0
- data/lib/fog/brightbox/models/compute/database_server.rb +91 -0
- data/lib/fog/brightbox/models/compute/database_servers.rb +28 -0
- data/lib/fog/brightbox/models/compute/database_snapshot.rb +52 -0
- data/lib/fog/brightbox/models/compute/database_snapshots.rb +24 -0
- data/lib/fog/brightbox/models/compute/database_type.rb +19 -0
- data/lib/fog/brightbox/models/compute/database_types.rb +26 -0
- data/lib/fog/brightbox/requests/compute/create_database_server.rb +25 -0
- data/lib/fog/brightbox/requests/compute/delete_database_server.rb +26 -0
- data/lib/fog/brightbox/requests/compute/delete_database_snapshot.rb +26 -0
- data/lib/fog/brightbox/requests/compute/get_database_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/get_database_snapshot.rb +19 -0
- data/lib/fog/brightbox/requests/compute/get_database_type.rb +21 -0
- data/lib/fog/brightbox/requests/compute/list_database_servers.rb +17 -0
- data/lib/fog/brightbox/requests/compute/list_database_snapshots.rb +17 -0
- data/lib/fog/brightbox/requests/compute/list_database_types.rb +19 -0
- data/lib/fog/brightbox/requests/compute/reset_password_database_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/snapshot_database_server.rb +19 -0
- data/lib/fog/brightbox/requests/compute/update_database_server.rb +25 -0
- data/lib/fog/brightbox/requests/compute/update_database_snapshot.rb +26 -0
- data/lib/fog/clodo.rb +1 -34
- data/lib/fog/clodo/compute.rb +2 -0
- data/lib/fog/clodo/core.rb +34 -0
- data/lib/fog/clodo/models/compute/server.rb +2 -2
- data/lib/fog/cloudsigma.rb +1 -9
- data/lib/fog/cloudsigma/compute.rb +2 -2
- data/lib/fog/cloudsigma/core.rb +9 -0
- data/lib/fog/cloudstack.rb +1 -40
- data/lib/fog/cloudstack/compute.rb +1 -1
- data/lib/fog/cloudstack/core.rb +40 -0
- data/lib/fog/cloudstack/models/compute/server.rb +3 -0
- data/lib/fog/compute/models/server.rb +33 -7
- data/lib/fog/core/collection.rb +1 -3
- data/lib/fog/core/errors.rb +2 -0
- data/lib/fog/core/hmac.rb +3 -16
- data/lib/fog/core/logger.rb +3 -3
- data/lib/fog/core/provider.rb +1 -2
- data/lib/fog/digitalocean.rb +1 -9
- data/lib/fog/digitalocean/compute.rb +1 -1
- data/lib/fog/digitalocean/core.rb +9 -0
- data/lib/fog/digitalocean/models/compute/server.rb +3 -2
- data/lib/fog/digitalocean/models/compute/servers.rb +23 -4
- data/lib/fog/digitalocean/requests/compute/create_server.rb +2 -1
- data/lib/fog/digitalocean/requests/compute/destroy_server.rb +3 -1
- data/lib/fog/dnsimple.rb +1 -11
- data/lib/fog/dnsimple/core.rb +11 -0
- data/lib/fog/dnsimple/dns.rb +5 -2
- data/lib/fog/dnsimple/models/dns/record.rb +3 -3
- data/lib/fog/dnsimple/requests/dns/create_domain.rb +26 -22
- data/lib/fog/dnsimple/requests/dns/create_record.rb +21 -24
- data/lib/fog/dnsimple/requests/dns/delete_domain.rb +7 -6
- data/lib/fog/dnsimple/requests/dns/delete_record.rb +7 -5
- data/lib/fog/dnsimple/requests/dns/get_domain.rb +12 -18
- data/lib/fog/dnsimple/requests/dns/get_record.rb +11 -17
- data/lib/fog/dnsimple/requests/dns/list_domains.rb +7 -15
- data/lib/fog/dnsimple/requests/dns/list_records.rb +10 -15
- data/lib/fog/dnsimple/requests/dns/update_record.rb +14 -19
- data/lib/fog/dnsmadeeasy.rb +1 -11
- data/lib/fog/dnsmadeeasy/core.rb +11 -0
- data/lib/fog/dnsmadeeasy/dns.rb +1 -1
- data/lib/fog/dreamhost.rb +1 -11
- data/lib/fog/dreamhost/core.rb +11 -0
- data/lib/fog/dreamhost/dns.rb +1 -1
- data/lib/fog/dynect.rb +1 -26
- data/lib/fog/dynect/core.rb +26 -0
- data/lib/fog/dynect/dns.rb +1 -1
- data/lib/fog/dynect/requests/dns/put_record.rb +5 -4
- data/lib/fog/dynect/requests/dns/put_zone.rb +5 -4
- data/lib/fog/ecloud.rb +1 -31
- data/lib/fog/ecloud/compute.rb +1 -0
- data/lib/fog/ecloud/core.rb +31 -0
- data/lib/fog/glesys.rb +1 -11
- data/lib/fog/glesys/compute.rb +6 -4
- data/lib/fog/glesys/core.rb +11 -0
- data/lib/fog/glesys/models/compute/server.rb +2 -2
- data/lib/fog/go_grid.rb +1 -11
- data/lib/fog/go_grid/compute.rb +1 -1
- data/lib/fog/go_grid/core.rb +11 -0
- data/lib/fog/go_grid/models/compute/server.rb +2 -2
- data/lib/fog/google.rb +2 -24
- data/lib/fog/google/README.md +8 -5
- data/lib/fog/google/compute.rb +10 -3
- data/lib/fog/google/core.rb +24 -0
- data/lib/fog/google/models/compute/flavors.rb +1 -1
- data/lib/fog/google/models/compute/images.rb +2 -0
- data/lib/fog/google/models/compute/servers.rb +1 -1
- data/lib/fog/google/models/compute/zones.rb +1 -1
- data/lib/fog/google/requests/compute/attach_disk.rb +29 -0
- data/lib/fog/google/requests/compute/delete_address.rb +31 -0
- data/lib/fog/google/requests/compute/delete_snapshot.rb +35 -0
- data/lib/fog/google/requests/compute/detach_disk.rb +29 -0
- data/lib/fog/google/requests/compute/get_address.rb +31 -0
- data/lib/fog/google/requests/compute/insert_address.rb +30 -0
- data/lib/fog/google/requests/compute/insert_firewall.rb +6 -9
- data/lib/fog/google/requests/compute/list_addresses.rb +28 -0
- data/lib/fog/google/requests/compute/set_metadata.rb +4 -5
- data/lib/fog/google/requests/compute/set_tags.rb +33 -0
- data/lib/fog/google/requests/storage/get_bucket_acl.rb +2 -2
- data/lib/fog/google/requests/storage/put_bucket_acl.rb +39 -48
- data/lib/fog/google/requests/storage/put_object_acl.rb +55 -0
- data/lib/fog/google/storage.rb +2 -1
- data/lib/fog/hp.rb +9 -352
- data/lib/fog/hp/block_storage.rb +1 -1
- data/lib/fog/hp/block_storage_v2.rb +1 -1
- data/lib/fog/hp/cdn.rb +1 -1
- data/lib/fog/hp/compute.rb +1 -1
- data/lib/fog/hp/compute_v2.rb +1 -1
- data/lib/fog/hp/core.rb +352 -0
- data/lib/fog/hp/dns.rb +1 -1
- data/lib/fog/hp/lb.rb +1 -1
- data/lib/fog/hp/models/compute/server.rb +2 -2
- data/lib/fog/hp/models/compute_v2/server.rb +2 -2
- data/lib/fog/hp/models/storage/directory.rb +12 -6
- data/lib/fog/hp/network.rb +1 -1
- data/lib/fog/hp/storage.rb +1 -1
- data/lib/fog/ibm.rb +2 -176
- data/lib/fog/ibm/compute.rb +1 -1
- data/lib/fog/ibm/core.rb +176 -0
- data/lib/fog/ibm/storage.rb +1 -1
- data/lib/fog/internet_archive.rb +1 -292
- data/lib/fog/internet_archive/core.rb +292 -0
- data/lib/fog/internet_archive/models/storage/file.rb +1 -1
- data/lib/fog/internet_archive/storage.rb +1 -1
- data/lib/fog/joyent.rb +2 -10
- data/lib/fog/joyent/compute.rb +1 -1
- data/lib/fog/joyent/core.rb +10 -0
- data/lib/fog/joyent/errors.rb +1 -0
- data/lib/fog/libvirt.rb +1 -11
- data/lib/fog/libvirt/compute.rb +1 -1
- data/lib/fog/libvirt/core.rb +11 -0
- data/lib/fog/libvirt/models/compute/README.md +1 -1
- data/lib/fog/libvirt/models/compute/server.rb +6 -6
- data/lib/fog/libvirt/models/compute/templates/volume.xml.erb +12 -0
- data/lib/fog/libvirt/models/compute/volume.rb +1 -0
- data/lib/fog/linode.rb +2 -10
- data/lib/fog/linode/compute.rb +1 -1
- data/lib/fog/linode/core.rb +10 -0
- data/lib/fog/linode/dns.rb +1 -1
- data/lib/fog/local.rb +1 -11
- data/lib/fog/local/core.rb +11 -0
- data/lib/fog/local/storage.rb +1 -1
- data/lib/fog/ninefold.rb +1 -12
- data/lib/fog/ninefold/compute.rb +1 -1
- data/lib/fog/ninefold/core.rb +12 -0
- data/lib/fog/openstack.rb +8 -249
- data/lib/fog/openstack/compute.rb +3 -1
- data/lib/fog/openstack/core.rb +249 -0
- data/lib/fog/openstack/docs/compute.md +681 -0
- data/lib/fog/openstack/docs/getting_started.md +81 -0
- data/lib/fog/openstack/docs/storage.md +441 -0
- data/lib/fog/openstack/identity.rb +1 -1
- data/lib/fog/openstack/image.rb +1 -1
- data/lib/fog/openstack/metering.rb +1 -1
- data/lib/fog/openstack/models/compute/server.rb +13 -5
- data/lib/fog/openstack/models/compute/servers.rb +13 -0
- data/lib/fog/openstack/models/network/network.rb +9 -11
- data/lib/fog/openstack/models/network/security_group.rb +32 -0
- data/lib/fog/openstack/models/network/security_group_rule.rb +33 -0
- data/lib/fog/openstack/models/network/security_group_rules.rb +33 -0
- data/lib/fog/openstack/models/network/security_groups.rb +34 -0
- data/lib/fog/openstack/models/storage/directories.rb +1 -0
- data/lib/fog/openstack/network.rb +19 -1
- data/lib/fog/openstack/orchestration.rb +1 -1
- data/lib/fog/openstack/requests/compute/add_security_group.rb +24 -0
- data/lib/fog/openstack/requests/compute/create_flavor.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_server.rb +3 -3
- data/lib/fog/openstack/requests/compute/remove_security_group.rb +24 -0
- data/lib/fog/openstack/requests/image/update_image_members.rb +2 -2
- data/lib/fog/openstack/requests/network/create_security_group.rb +94 -0
- data/lib/fog/openstack/requests/network/create_security_group_rule.rb +79 -0
- data/lib/fog/openstack/requests/network/delete_security_group.rb +32 -0
- data/lib/fog/openstack/requests/network/delete_security_group_rule.rb +36 -0
- data/lib/fog/openstack/requests/network/get_security_group.rb +52 -0
- data/lib/fog/openstack/requests/network/get_security_group_rule.rb +47 -0
- data/lib/fog/openstack/requests/network/list_networks.rb +0 -1
- data/lib/fog/openstack/requests/network/list_security_group_rules.rb +52 -0
- data/lib/fog/openstack/requests/network/list_security_groups.rb +57 -0
- data/lib/fog/openstack/storage.rb +2 -2
- data/lib/fog/openstack/volume.rb +1 -1
- data/lib/fog/openvz.rb +1 -9
- data/lib/fog/openvz/compute.rb +1 -1
- data/lib/fog/openvz/core.rb +9 -0
- data/lib/fog/ovirt.rb +1 -17
- data/lib/fog/ovirt/compute.rb +2 -0
- data/lib/fog/ovirt/core.rb +17 -0
- data/lib/fog/rackspace.rb +12 -145
- data/lib/fog/rackspace/auto_scale.rb +1 -1
- data/lib/fog/rackspace/block_storage.rb +5 -1
- data/lib/fog/rackspace/cdn.rb +22 -16
- data/lib/fog/rackspace/compute.rb +1 -1
- data/lib/fog/rackspace/compute_v2.rb +6 -2
- data/lib/fog/rackspace/core.rb +145 -0
- data/lib/fog/rackspace/databases.rb +5 -1
- data/lib/fog/rackspace/dns.rb +1 -1
- data/lib/fog/rackspace/docs/compute_v2.md +2 -10
- data/lib/fog/rackspace/errors.rb +1 -1
- data/lib/fog/rackspace/examples/storage/upload_file.rb +1 -1
- data/lib/fog/rackspace/identity.rb +26 -16
- data/lib/fog/rackspace/load_balancers.rb +7 -1
- data/lib/fog/rackspace/mock_data.rb +17 -0
- data/lib/fog/rackspace/models/compute/server.rb +2 -2
- data/lib/fog/rackspace/models/compute_v2/key_pair.rb +1 -1
- data/lib/fog/rackspace/models/compute_v2/server.rb +42 -5
- data/lib/fog/rackspace/models/monitoring/entities.rb +1 -1
- data/lib/fog/rackspace/models/queues/claim.rb +9 -1
- data/lib/fog/rackspace/models/storage/directory.rb +5 -2
- data/lib/fog/rackspace/models/storage/file.rb +14 -0
- data/lib/fog/rackspace/monitoring.rb +11 -2
- data/lib/fog/rackspace/queues.rb +318 -34
- data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +16 -5
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +7 -1
- data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +1 -1
- data/lib/fog/rackspace/requests/identity/create_token.rb +192 -0
- data/lib/fog/rackspace/requests/identity/list_tenants.rb +23 -0
- data/lib/fog/rackspace/requests/monitoring/get_agent.rb +45 -0
- data/lib/fog/rackspace/requests/monitoring/get_cpus_info.rb +63 -0
- data/lib/fog/rackspace/requests/monitoring/get_disks_info.rb +56 -0
- data/lib/fog/rackspace/requests/monitoring/get_filesystems_info.rb +64 -0
- data/lib/fog/rackspace/requests/monitoring/get_logged_in_user_info.rb +58 -0
- data/lib/fog/rackspace/requests/monitoring/get_memory_info.rb +59 -0
- data/lib/fog/rackspace/requests/monitoring/get_network_interfaces_info.rb +91 -0
- data/lib/fog/rackspace/requests/monitoring/get_processes_info.rb +72 -0
- data/lib/fog/rackspace/requests/monitoring/get_system_info.rb +53 -0
- data/lib/fog/rackspace/requests/monitoring/list_agents.rb +62 -0
- data/lib/fog/rackspace/requests/queues/create_claim.rb +37 -0
- data/lib/fog/rackspace/requests/queues/create_message.rb +23 -0
- data/lib/fog/rackspace/requests/queues/create_queue.rb +15 -1
- data/lib/fog/rackspace/requests/queues/delete_claim.rb +18 -0
- data/lib/fog/rackspace/requests/queues/delete_message.rb +34 -0
- data/lib/fog/rackspace/requests/queues/delete_queue.rb +12 -0
- data/lib/fog/rackspace/requests/queues/get_claim.rb +15 -0
- data/lib/fog/rackspace/requests/queues/get_message.rb +17 -0
- data/lib/fog/rackspace/requests/queues/get_queue.rb +14 -1
- data/lib/fog/rackspace/requests/queues/get_queue_stats.rb +36 -0
- data/lib/fog/rackspace/requests/queues/list_messages.rb +33 -0
- data/lib/fog/rackspace/requests/queues/list_queues.rb +35 -1
- data/lib/fog/rackspace/requests/queues/update_claim.rb +17 -0
- data/lib/fog/rackspace/requests/storage/delete_container.rb +15 -0
- data/lib/fog/rackspace/requests/storage/delete_multiple_objects.rb +57 -0
- data/lib/fog/rackspace/requests/storage/delete_object.rb +14 -0
- data/lib/fog/rackspace/requests/storage/delete_static_large_object.rb +33 -0
- data/lib/fog/rackspace/requests/storage/extract_archive.rb +39 -0
- data/lib/fog/rackspace/requests/storage/get_container.rb +25 -0
- data/lib/fog/rackspace/requests/storage/get_containers.rb +17 -0
- data/lib/fog/rackspace/requests/storage/get_object.rb +26 -0
- data/lib/fog/rackspace/requests/storage/get_object_http_url.rb +9 -2
- data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +8 -1
- data/lib/fog/rackspace/requests/storage/head_container.rb +12 -0
- data/lib/fog/rackspace/requests/storage/head_containers.rb +19 -0
- data/lib/fog/rackspace/requests/storage/head_object.rb +26 -0
- data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +10 -0
- data/lib/fog/rackspace/requests/storage/put_container.rb +16 -0
- data/lib/fog/rackspace/requests/storage/put_dynamic_obj_manifest.rb +23 -0
- data/lib/fog/rackspace/requests/storage/put_object.rb +39 -0
- data/lib/fog/rackspace/requests/storage/put_object_manifest.rb +9 -1
- data/lib/fog/rackspace/requests/storage/put_static_obj_manifest.rb +48 -0
- data/lib/fog/rackspace/storage.rb +320 -67
- data/lib/fog/rage4.rb +2 -0
- data/lib/fog/rage4/core.rb +11 -0
- data/lib/fog/rage4/dns.rb +74 -0
- data/lib/fog/rage4/models/dns/record.rb +77 -0
- data/lib/fog/rage4/models/dns/records.rb +42 -0
- data/lib/fog/rage4/models/dns/zone.rb +46 -0
- data/lib/fog/rage4/models/dns/zones.rb +34 -0
- data/lib/fog/rage4/requests/dns/create_domain.rb +33 -0
- data/lib/fog/rage4/requests/dns/create_domain_vanity.rb +34 -0
- data/lib/fog/rage4/requests/dns/create_record.rb +65 -0
- data/lib/fog/rage4/requests/dns/create_reverse_domain_4.rb +32 -0
- data/lib/fog/rage4/requests/dns/delete_domain.rb +28 -0
- data/lib/fog/rage4/requests/dns/delete_record.rb +28 -0
- data/lib/fog/rage4/requests/dns/get_domain.rb +30 -0
- data/lib/fog/rage4/requests/dns/get_domain_by_name.rb +30 -0
- data/lib/fog/rage4/requests/dns/list_domains.rb +41 -0
- data/lib/fog/rage4/requests/dns/list_geo_regions.rb +27 -0
- data/lib/fog/rage4/requests/dns/list_record_types.rb +26 -0
- data/lib/fog/rage4/requests/dns/list_records.rb +31 -0
- data/lib/fog/rage4/requests/dns/set_record_failover.rb +29 -0
- data/lib/fog/rage4/requests/dns/show_current_usage.rb +25 -0
- data/lib/fog/rage4/requests/dns/show_global_usage.rb +25 -0
- data/lib/fog/rage4/requests/dns/update_domain.rb +43 -0
- data/lib/fog/rage4/requests/dns/update_record.rb +64 -0
- data/lib/fog/riakcs.rb +2 -122
- data/lib/fog/riakcs/core.rb +122 -0
- data/lib/fog/riakcs/provisioning.rb +1 -1
- data/lib/fog/riakcs/usage.rb +1 -1
- data/lib/fog/serverlove.rb +1 -10
- data/lib/fog/serverlove/compute.rb +2 -0
- data/lib/fog/serverlove/core.rb +10 -0
- data/lib/fog/storm_on_demand.rb +9 -20
- data/lib/fog/storm_on_demand/account.rb +1 -1
- data/lib/fog/storm_on_demand/billing.rb +1 -1
- data/lib/fog/storm_on_demand/compute.rb +1 -1
- data/lib/fog/storm_on_demand/core.rb +20 -0
- data/lib/fog/storm_on_demand/dns.rb +1 -1
- data/lib/fog/storm_on_demand/monitoring.rb +1 -1
- data/lib/fog/storm_on_demand/network.rb +1 -1
- data/lib/fog/storm_on_demand/shared.rb +0 -1
- data/lib/fog/storm_on_demand/storage.rb +1 -1
- data/lib/fog/storm_on_demand/support.rb +1 -1
- data/lib/fog/storm_on_demand/vpn.rb +1 -1
- data/lib/fog/vcloud.rb +1 -11
- data/lib/fog/vcloud/compute.rb +1 -1
- data/lib/fog/vcloud/core.rb +11 -0
- data/lib/fog/vcloud_director.rb +1 -67
- data/lib/fog/vcloud_director/compute.rb +1 -1
- data/lib/fog/vcloud_director/core.rb +67 -0
- data/lib/fog/vcloud_director/generators/compute/edge_gateway_service_configuration.rb +1 -1
- data/lib/fog/version.rb +1 -1
- data/lib/fog/vmfusion.rb +1 -11
- data/lib/fog/vmfusion/compute.rb +1 -1
- data/lib/fog/vmfusion/core.rb +11 -0
- data/lib/fog/vmfusion/models/compute/server.rb +5 -5
- data/lib/fog/voxel.rb +1 -16
- data/lib/fog/voxel/compute.rb +1 -1
- data/lib/fog/voxel/core.rb +16 -0
- data/lib/fog/vsphere.rb +1 -17
- data/lib/fog/vsphere/compute.rb +1 -0
- data/lib/fog/vsphere/core.rb +17 -0
- data/lib/fog/xenserver.rb +1 -83
- data/lib/fog/xenserver/compute.rb +1 -1
- data/lib/fog/xenserver/core.rb +83 -0
- data/lib/fog/xenserver/models/compute/storage_manager.rb +1 -1
- data/lib/fog/zerigo.rb +1 -11
- data/lib/fog/zerigo/core.rb +11 -0
- data/lib/fog/zerigo/dns.rb +1 -1
- data/lib/tasks/changelog_task.rb +2 -0
- data/tests/aws/models/compute/network_acl_tests.rb +109 -0
- data/tests/aws/models/compute/network_acls_tests.rb +7 -0
- data/tests/aws/models/elasticache/subnet_groups_tests.rb +44 -0
- data/tests/aws/requests/compute/network_acl_tests.rb +86 -0
- data/tests/aws/requests/compute/route_tests.rb +64 -3
- data/tests/aws/requests/compute/subnet_tests.rb +18 -11
- data/tests/aws/requests/elasticache/helper.rb +19 -0
- data/tests/aws/requests/elasticache/subnet_group_tests.rb +52 -0
- data/tests/aws/requests/iam/server_certificate_tests.rb +3 -0
- data/tests/aws/requests/rds/subnet_groups_tests.rb +1 -1
- data/tests/aws/requests/storage/multipart_upload_tests.rb +3 -14
- data/tests/brightbox/compute/schema.rb +118 -2
- data/tests/brightbox/helper.rb +1 -0
- data/tests/brightbox/models/compute/cloud_ip_tests.rb +32 -0
- data/tests/brightbox/models/compute/database_server_tests.rb +66 -0
- data/tests/brightbox/models/compute/database_snapshot_tests.rb +26 -0
- data/tests/brightbox/models/compute/database_type_tests.rb +27 -0
- data/tests/brightbox/requests/compute/database_server_tests.rb +54 -0
- data/tests/brightbox/requests/compute/database_snapsnot_tests.rb +47 -0
- data/tests/brightbox/requests/compute/database_type_tests.rb +17 -0
- data/tests/compute/models/server_tests.rb +20 -2
- data/tests/digitalocean/helper.rb +9 -4
- data/tests/digitalocean/models/compute/server_tests.rb +1 -0
- data/tests/digitalocean/models/compute/servers_tests.rb +19 -4
- data/tests/digitalocean/requests/compute/create_server_tests.rb +13 -6
- data/tests/digitalocean/requests/compute/list_servers_tests.rb +2 -1
- data/tests/dns/helper.rb +3 -0
- data/tests/dns/models/record_tests.rb +1 -1
- data/tests/dns/models/records_tests.rb +1 -1
- data/tests/dns/models/zone_tests.rb +1 -1
- data/tests/dns/models/zones_tests.rb +1 -1
- data/tests/helper.rb +7 -1
- data/tests/helpers/compute/server_helper.rb +1 -0
- data/tests/helpers/compute/servers_helper.rb +1 -0
- data/tests/openstack/models/network/security_group_rule_tests.rb +27 -0
- data/tests/openstack/models/network/security_group_rules_tests.rb +25 -0
- data/tests/openstack/models/network/security_group_tests.rb +17 -0
- data/tests/openstack/models/network/security_groups_tests.rb +16 -0
- data/tests/openstack/requests/compute/helper.rb +5 -0
- data/tests/openstack/requests/compute/server_tests.rb +11 -0
- data/tests/openstack/requests/network/security_group_rule_tests.rb +58 -0
- data/tests/openstack/requests/network/security_group_tests.rb +43 -0
- data/tests/rackspace/identity_tests.rb +0 -4
- data/tests/rackspace/models/compute_v2/server_tests.rb +36 -8
- data/tests/rackspace/models/queues/claim_tests.rb +1 -3
- data/tests/rackspace/models/queues/claims_tests.rb +1 -3
- data/tests/rackspace/models/queues/message_tests.rb +1 -3
- data/tests/rackspace/models/queues/messages_tests.rb +1 -3
- data/tests/rackspace/models/queues/queue_tests.rb +1 -3
- data/tests/rackspace/models/queues/queues_tests.rb +1 -3
- data/tests/rackspace/models/storage/account_tests.rb +0 -2
- data/tests/rackspace/models/storage/directories_tests.rb +0 -3
- data/tests/rackspace/models/storage/directory_tests.rb +2 -5
- data/tests/rackspace/models/storage/file_tests.rb +49 -2
- data/tests/rackspace/models/storage/files_tests.rb +1 -4
- data/tests/rackspace/queues_tests.rb +0 -13
- data/tests/rackspace/requests/identity/token_tests.rb +1 -3
- data/tests/rackspace/requests/monitoring/agent_tests.rb +42 -0
- data/tests/rackspace/requests/queues/claim_tests.rb +1 -3
- data/tests/rackspace/requests/queues/messages_tests.rb +0 -6
- data/tests/rackspace/requests/queues/queues_tests.rb +0 -5
- data/tests/rackspace/requests/storage/account_tests.rb +0 -1
- data/tests/rackspace/requests/storage/container_tests.rb +7 -11
- data/tests/rackspace/requests/storage/large_object_tests.rb +33 -43
- data/tests/rackspace/requests/storage/object_tests.rb +2 -27
- data/tests/rackspace/storage_tests.rb +9 -15
- data/tests/rage4/requests/dns/dns_tests.rb +241 -0
- data/tests/vcloud/requests/compute/disk_configure_tests.rb +0 -8
- metadata +190 -33
- data/lib/fog/brightbox/requests/compute/destroy_user_collaboration.rb +0 -21
@@ -0,0 +1,81 @@
|
|
1
|
+
# Getting Started with Fog and OpenStack
|
2
|
+
|
3
|
+
This document explains how to get started using Fog with [OpenStack](http://openstack.org)
|
4
|
+
|
5
|
+
## Requirements
|
6
|
+
|
7
|
+
### Ruby
|
8
|
+
|
9
|
+
Fog officially supports Ruby 2.0.0, 1.9.3, 1.9.2, and 1.8.7 (also known as Matz Ruby Interpreter or MRI). While not officially supported, fog has been known to work with Rubinus and JRuby.
|
10
|
+
|
11
|
+
Ruby 2.0.0 is suggested for new projects. For information on installing Ruby please refer to the [Ruby download page](http://www.ruby-lang.org/en/downloads/).
|
12
|
+
|
13
|
+
### RubyGems
|
14
|
+
|
15
|
+
RubyGems is required to access the Fog gem. For information on installing RubyGems, please refer to [RubyGems download page](http://rubygems.org/pages/download).
|
16
|
+
|
17
|
+
### Bundler (optional)
|
18
|
+
|
19
|
+
Bundler helps manage gem dependencies and is recommended for new projects. For more information about bundler, please refer to the [bundler documentation](http://gembundler.com/).
|
20
|
+
|
21
|
+
## Installation
|
22
|
+
|
23
|
+
To install Fog via RubyGems run the following command:
|
24
|
+
|
25
|
+
$ gem install fog
|
26
|
+
|
27
|
+
To install Fog via Bundler add `gem 'fog'` to your `Gemfile`. This is a sample `Gemfile` to install Fog:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
source 'https://rubygems.org'
|
31
|
+
|
32
|
+
gem 'fog'
|
33
|
+
```
|
34
|
+
|
35
|
+
After creating your `Gemfile` execute the following command to install the libraries:
|
36
|
+
|
37
|
+
bundle install
|
38
|
+
|
39
|
+
## Next Steps
|
40
|
+
|
41
|
+
Now that you have installed Fog and obtained your credentials, you are ready to begin exploring the capabilities of the Rackspace Open Cloud and Fog using `irb`.
|
42
|
+
|
43
|
+
Start by executing the following command:
|
44
|
+
|
45
|
+
irb
|
46
|
+
|
47
|
+
Once `irb` has launched you will need to require the Fog library.
|
48
|
+
|
49
|
+
If using Ruby 1.8.x execute the following command:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
require 'rubygems'
|
53
|
+
require 'fog'
|
54
|
+
```
|
55
|
+
|
56
|
+
If using Ruby 1.9.x execute the following command:
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
require 'fog'
|
60
|
+
```
|
61
|
+
|
62
|
+
You should now be able to execute the following command to see a list of services Fog provides for the Rackspace Open Cloud:
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
Fog::OpenStack.services
|
66
|
+
```
|
67
|
+
|
68
|
+
These services can be explored in further depth in the following documents:
|
69
|
+
|
70
|
+
* [Compute](compute.md)
|
71
|
+
* [Storage (Swift)](storage.md)
|
72
|
+
|
73
|
+
## Additional Resources
|
74
|
+
* [fog.io](http://fog.io)
|
75
|
+
* [Fog rdoc](http://rubydoc.info/gems/fog)
|
76
|
+
* [Fog Github repo](https://github.com/fog/fog)
|
77
|
+
* [Release Notes](https://github.com/fog/fog/blob/master/changelog.txt)
|
78
|
+
|
79
|
+
|
80
|
+
## Support and Feedback
|
81
|
+
Your feedback is appreciated! If you have specific issues with the **fog** SDK, you should file an [issue via Github](https://github.com/fog/fog/issues).
|
@@ -0,0 +1,441 @@
|
|
1
|
+
# Storage
|
2
|
+
|
3
|
+
This document explains how to get started using OpenStack Swift with Fog.
|
4
|
+
|
5
|
+
|
6
|
+
## Starting irb console
|
7
|
+
|
8
|
+
Start by executing the following command:
|
9
|
+
|
10
|
+
irb
|
11
|
+
|
12
|
+
Once `irb` has launched you need to require the Fog library.
|
13
|
+
|
14
|
+
If using Ruby 1.8.x execute:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
require 'rubygems'
|
18
|
+
require 'fog'
|
19
|
+
```
|
20
|
+
|
21
|
+
If using Ruby 1.9.x execute:
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
require 'fog'
|
25
|
+
```
|
26
|
+
|
27
|
+
## Create Service
|
28
|
+
|
29
|
+
Next, create a connection to Swift:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
service = Fog::Storage.new({
|
33
|
+
:provider => 'OpenStack', # OpenStack Fog provider
|
34
|
+
:openstack_username => USERNAME, # Your OpenStack Username
|
35
|
+
:openstack_api_key => PASSWORD, # Your OpenStack Password
|
36
|
+
:openstack_auth_url => 'http://YOUR_OPENSTACK_ENDPOINT:PORT/v2.0/tokens'
|
37
|
+
})
|
38
|
+
```
|
39
|
+
|
40
|
+
Alternative regions are specified using the key `:openstack_region `. A list of regions available for Swift can be found by executing the following:
|
41
|
+
|
42
|
+
### Optional Service Parameters
|
43
|
+
|
44
|
+
The Storage service supports the following additional parameters:
|
45
|
+
|
46
|
+
<table>
|
47
|
+
<tr>
|
48
|
+
<th>Key</th>
|
49
|
+
<th>Description</th>
|
50
|
+
</tr>
|
51
|
+
<tr>
|
52
|
+
<td>:persistent</td>
|
53
|
+
<td>If set to true, the service will use a persistent connection.</td>
|
54
|
+
</tr>
|
55
|
+
<tr>
|
56
|
+
<td>:openstack_service_name</td>
|
57
|
+
<td></td>
|
58
|
+
</tr>
|
59
|
+
<tr>
|
60
|
+
<td>:openstack_service_type</td>
|
61
|
+
<td></td>
|
62
|
+
</tr>
|
63
|
+
<tr>
|
64
|
+
<td>:openstack_tenant</td>
|
65
|
+
<td></td>
|
66
|
+
</tr>
|
67
|
+
<tr>
|
68
|
+
<td>:openstack_region</td>
|
69
|
+
<td></td>
|
70
|
+
</tr>
|
71
|
+
<tr>
|
72
|
+
<td>:openstack_temp_url_key</td>
|
73
|
+
<td></td>
|
74
|
+
</tr>
|
75
|
+
</table>
|
76
|
+
|
77
|
+
|
78
|
+
### Optional Connection Parameters
|
79
|
+
|
80
|
+
Fog supports passing additional connection parameters to its underlying HTTP library (Excon) using the `:connection_options` parameter.
|
81
|
+
|
82
|
+
<table>
|
83
|
+
<tr>
|
84
|
+
<th>Key</th>
|
85
|
+
<th>Description</th>
|
86
|
+
</tr>
|
87
|
+
<tr>
|
88
|
+
<td>:connect_timeout</td>
|
89
|
+
<td>Connection timeout (default: 60 seconds)</td>
|
90
|
+
</tr>
|
91
|
+
<tr>
|
92
|
+
|
93
|
+
</tr>
|
94
|
+
<tr>
|
95
|
+
<td>:write_timeout</td>
|
96
|
+
<td>Write timeout for connection (default: 60 seconds)</td>
|
97
|
+
</tr>
|
98
|
+
<tr>
|
99
|
+
<td>:proxy</td>
|
100
|
+
<td>Proxy for HTTP and HTTPS connections</td>
|
101
|
+
</tr>
|
102
|
+
<tr>
|
103
|
+
<td>:ssl_ca_path</td>
|
104
|
+
<td>Path to SSL certificate authorities</td>
|
105
|
+
</tr>
|
106
|
+
<tr>
|
107
|
+
<td>:ssl_ca_file</td>
|
108
|
+
<td>SSL certificate authority file</td>
|
109
|
+
</tr>
|
110
|
+
<tr>
|
111
|
+
<td>:ssl_verify_peer</td>
|
112
|
+
<td>SSL verify peer (default: true)</td>
|
113
|
+
|
114
|
+
</table>
|
115
|
+
|
116
|
+
|
117
|
+
## Fog Abstractions
|
118
|
+
|
119
|
+
Fog provides both a **model** and **request** abstraction. The request abstraction provides the most efficient interface and the model abstraction wraps the request abstraction to provide a convenient `ActiveModel` like interface.
|
120
|
+
|
121
|
+
### Request Layer
|
122
|
+
|
123
|
+
The Fog::Storage object supports a number of methods that wrap individual HTTP requests to the Swift API.
|
124
|
+
|
125
|
+
To see a list of requests supported by the storage service:
|
126
|
+
|
127
|
+
service.requests
|
128
|
+
|
129
|
+
This returns:
|
130
|
+
|
131
|
+
[:copy_object, :delete_container, :delete_object, :delete_multiple_objects, :delete_static_large_object, :get_container, :get_containers, :get_object, :get_object_http_url, :get_object_https_url, :head_container, :head_containers, :head_object, :put_container, :put_object, :put_object_manifest, :put_dynamic_obj_manifest, :put_static_obj_manifest, :post_set_meta_temp_url_key]
|
132
|
+
|
133
|
+
#### Example Request
|
134
|
+
|
135
|
+
To request a view account details:
|
136
|
+
|
137
|
+
```ruby
|
138
|
+
response = service.head_containers
|
139
|
+
```
|
140
|
+
|
141
|
+
This returns in the following `Excon::Response`:
|
142
|
+
|
143
|
+
```
|
144
|
+
#<Excon::Response:0x10283fc68 @headers={"X-Account-Bytes-Used"=>"2563554", "Date"=>"Thu, 21 Feb 2013 21:57:02 GMT", "X-Account-Meta-Temp-Url-Key"=>"super_secret_key", "X-Timestamp"=>"1354552916.82056", "Content-Length"=>"0", "Content-Type"=>"application/json; charset=utf-8", "X-Trans-Id"=>"txe934924374a744c8a6c40dd8f29ab94a", "Accept-Ranges"=>"bytes", "X-Account-Container-Count"=>"7", "X-Account-Object-Count"=>"5"}, @status=204, @body="">
|
145
|
+
```
|
146
|
+
|
147
|
+
To view the status of the response:
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
response.status
|
151
|
+
```
|
152
|
+
|
153
|
+
**Note**: Fog is aware of the valid HTTP response statuses for each request type. If an unexpected HTTP response status occurs, Fog will raise an exception.
|
154
|
+
|
155
|
+
To view response headers:
|
156
|
+
|
157
|
+
```ruby
|
158
|
+
response.headers
|
159
|
+
```
|
160
|
+
|
161
|
+
This will return:
|
162
|
+
|
163
|
+
```
|
164
|
+
{"X-Account-Bytes-Used"=>"2563554", "Date"=>"Thu, 21 Feb 2013 21:57:02 GMT", "X-Account-Meta-Temp-Url-Key"=>"super_secret_key", "X-Timestamp"=>"1354552916.82056", "Content-Length"=>"0", "Content-Type"=>"application/json; charset=utf-8", "X-Trans-Id"=>"txe934924374a744c8a6c40dd8f29ab94a", "Accept-Ranges"=>"bytes", "X-Account-Container-Count"=>"7", "X-Account-Object-Count"=>"5"}
|
165
|
+
```
|
166
|
+
|
167
|
+
To learn more about `Fog::Storage` request methods refer to [rdoc](http://rubydoc.info/gems/fog/Fog/Storage/OpenStack/Real). To learn more about Excon refer to [Excon GitHub repo](https://github.com/geemus/excon).
|
168
|
+
|
169
|
+
### Model Layer
|
170
|
+
|
171
|
+
Fog models behave in a manner similar to `ActiveModel`. Models will generally respond to `create`, `save`, `destroy`, `reload` and `attributes` methods. Additionally, fog will automatically create attribute accessors.
|
172
|
+
|
173
|
+
Here is a summary of common model methods:
|
174
|
+
|
175
|
+
<table>
|
176
|
+
<tr>
|
177
|
+
<th>Method</th>
|
178
|
+
<th>Description</th>
|
179
|
+
</tr>
|
180
|
+
<tr>
|
181
|
+
<td>create</td>
|
182
|
+
<td>
|
183
|
+
Accepts hash of attributes and creates object.<br>
|
184
|
+
Note: creation is a non-blocking call and you will be required to wait for a valid state before using resulting object.
|
185
|
+
</td>
|
186
|
+
</tr>
|
187
|
+
<tr>
|
188
|
+
<td>save</td>
|
189
|
+
<td>Saves object.<br>
|
190
|
+
Note: not all objects support updating object.</td>
|
191
|
+
</tr>
|
192
|
+
<tr>
|
193
|
+
<td>destroy</td>
|
194
|
+
<td>
|
195
|
+
Destroys object.<br>
|
196
|
+
Note: this is a non-blocking call and object deletion might not be instantaneous.
|
197
|
+
</td>
|
198
|
+
<tr>
|
199
|
+
<td>reload</td>
|
200
|
+
<td>Updates object with latest state from service.</td>
|
201
|
+
<tr>
|
202
|
+
<td>attributes</td>
|
203
|
+
<td>Returns a hash containing the list of model attributes and values.</td>
|
204
|
+
</tr>
|
205
|
+
<td>identity</td>
|
206
|
+
<td>
|
207
|
+
Returns the identity of the object.<br>
|
208
|
+
Note: This might not always be equal to object.id.
|
209
|
+
</td>
|
210
|
+
</tr>
|
211
|
+
</table>
|
212
|
+
|
213
|
+
The remainder of this document details the model abstraction.
|
214
|
+
|
215
|
+
**Note:** Fog sometimes refers to Swift containers as directories.
|
216
|
+
|
217
|
+
## List Directories
|
218
|
+
|
219
|
+
To retrieve a list of directories:
|
220
|
+
|
221
|
+
```ruby
|
222
|
+
service.directories
|
223
|
+
```
|
224
|
+
|
225
|
+
This returns a collection of `Fog::Storage::OpenStack::Directory` models:
|
226
|
+
|
227
|
+
## Get Directory
|
228
|
+
|
229
|
+
To retrieve a specific directory:
|
230
|
+
|
231
|
+
```ruby
|
232
|
+
service.directories.get "blue"
|
233
|
+
```
|
234
|
+
|
235
|
+
This returns a `Fog::Storage::OpenStack::Directory` instance:
|
236
|
+
|
237
|
+
## Create Directory
|
238
|
+
|
239
|
+
To create a directory:
|
240
|
+
|
241
|
+
```ruby
|
242
|
+
service.directories.create :key => 'backups'
|
243
|
+
```
|
244
|
+
|
245
|
+
### Additional Parameters
|
246
|
+
|
247
|
+
The `create` method also supports the following key values:
|
248
|
+
|
249
|
+
<table>
|
250
|
+
<tr>
|
251
|
+
<th>Key</th>
|
252
|
+
<th>Description</th>
|
253
|
+
</tr>
|
254
|
+
<tr>
|
255
|
+
<td>:metadata</td>
|
256
|
+
<td>Hash containing directory metadata.</td>
|
257
|
+
</tr>
|
258
|
+
</table>
|
259
|
+
|
260
|
+
|
261
|
+
## Delete Directory
|
262
|
+
|
263
|
+
To delete a directory:
|
264
|
+
|
265
|
+
```ruby
|
266
|
+
directory.destroy
|
267
|
+
```
|
268
|
+
|
269
|
+
**Note**: Directory must be empty before it can be deleted.
|
270
|
+
|
271
|
+
## List Files
|
272
|
+
|
273
|
+
To list files in a directory:
|
274
|
+
|
275
|
+
```ruby
|
276
|
+
directory.files
|
277
|
+
```
|
278
|
+
|
279
|
+
**Note**: File contents is not downloaded until `body` attribute is called.
|
280
|
+
|
281
|
+
## Upload Files
|
282
|
+
|
283
|
+
To upload a file into a directory:
|
284
|
+
|
285
|
+
```ruby
|
286
|
+
file = directory.files.create :key => 'space.jpg', :body => File.open "space.jpg"
|
287
|
+
```
|
288
|
+
|
289
|
+
**Note**: For files larger than 5 GB please refer to the [Upload Large Files](#upload_large_files) section.
|
290
|
+
|
291
|
+
### Additional Parameters
|
292
|
+
|
293
|
+
The `create` method also supports the following key values:
|
294
|
+
|
295
|
+
<table>
|
296
|
+
<tr>
|
297
|
+
<th>Key</th>
|
298
|
+
<th>Description</th>
|
299
|
+
</tr>
|
300
|
+
<tr>
|
301
|
+
<td>:content_type</td>
|
302
|
+
<td>The content type of the object. Cloud Files will attempt to auto detect this value if omitted.</td>
|
303
|
+
</tr>
|
304
|
+
<tr>
|
305
|
+
<td>:access_control_allow_origin</td>
|
306
|
+
<td>URLs can make Cross Origin Requests. Format is http://www.example.com. Separate URLs with a space. An asterisk (*) allows all. Please refer to <a href="http://docs.rackspace.com/files/api/v1/cf-devguide/content/CORS_Container_Header-d1e1300.html">CORS Container Headers</a> for more information.</td>
|
307
|
+
</tr>
|
308
|
+
<tr>
|
309
|
+
<td>:origin</td>
|
310
|
+
<td>The origin is the URI of the object's host.</td>
|
311
|
+
</tr>
|
312
|
+
<tr>
|
313
|
+
<td>:etag</td>
|
314
|
+
<td>The MD5 checksum of your object's data. If specified, Cloud Files will validate the integrity of the uploaded object.</td>
|
315
|
+
</tr>
|
316
|
+
<tr>
|
317
|
+
<td>:metadata</td>
|
318
|
+
<td>Hash containing file metadata.</td>
|
319
|
+
</tr>
|
320
|
+
</table>
|
321
|
+
|
322
|
+
## Upload Large Files
|
323
|
+
|
324
|
+
Swift requires files larger than 5 GB (the Swift default limit) to be uploaded into segments along with an accompanying manifest file. All of the segments must be uploaded to the same container.
|
325
|
+
|
326
|
+
```ruby
|
327
|
+
SEGMENT_LIMIT = 5368709119.0 # 5GB -1
|
328
|
+
BUFFER_SIZE = 1024 * 1024 # 1MB
|
329
|
+
|
330
|
+
File.open(file_name) do |f|
|
331
|
+
segment = 0
|
332
|
+
until file.eof?
|
333
|
+
segment += 1
|
334
|
+
offset = 0
|
335
|
+
|
336
|
+
# upload segment to cloud files
|
337
|
+
segment_suffix = segment.to_s.rjust(10, '0')
|
338
|
+
service.put_object("my_container", "large_file/#{segment_suffix}", nil) do
|
339
|
+
if offset <= SEGMENT_LIMIT - BUFFER_SIZE
|
340
|
+
buf = file.read(BUFFER_SIZE).to_s
|
341
|
+
offset += buf.size
|
342
|
+
buf
|
343
|
+
else
|
344
|
+
''
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
350
|
+
# write manifest file
|
351
|
+
service.put_object_manifest("my_container", "large_file", 'X-Object-Manifest' => "my_container/large_file/")
|
352
|
+
|
353
|
+
# write manifest file
|
354
|
+
service.put_object_manifest("my_container", "large_file", 'X-Object-Manifest' => "my_container/large_file/")
|
355
|
+
|
356
|
+
# write manifest file
|
357
|
+
service.put_object_manifest("my_container", "large_file", 'X-Object-Manifest' => "my_container/large_file/")
|
358
|
+
```
|
359
|
+
|
360
|
+
Segmented files are downloaded like ordinary files. See [Download Files](#download-files) section for more information.
|
361
|
+
|
362
|
+
## Download Files
|
363
|
+
|
364
|
+
The most efficient way to download files from a private or public directory is as follows:
|
365
|
+
|
366
|
+
```ruby
|
367
|
+
File.open('downloaded-file.jpg', 'w') do | f |
|
368
|
+
directory.files.get("my_big_file.jpg") do | data, remaining, content_length |
|
369
|
+
f.syswrite data
|
370
|
+
end
|
371
|
+
end
|
372
|
+
```
|
373
|
+
|
374
|
+
This will download and save the file in 1 MB chunks. The chunk size can be changed by passing the parameter `:chunk_size` into the `:connection_options` hash in the service constructor.
|
375
|
+
|
376
|
+
**Note**: The `body` attribute of file will be empty if a file has been downloaded using this method.
|
377
|
+
|
378
|
+
If a file object has already been loaded into memory, you can save it as follows:
|
379
|
+
|
380
|
+
```ruby
|
381
|
+
File.open('germany.jpg', 'w') {|f| f.write(file_object.body) }
|
382
|
+
```
|
383
|
+
|
384
|
+
**Note**: This method is more memory intensive as the entire object is loaded into memory before saving the file as in the example above.
|
385
|
+
|
386
|
+
|
387
|
+
## Metadata
|
388
|
+
|
389
|
+
You can access metadata as an attribute on `Fog::Storage::Rackspace::File`.
|
390
|
+
|
391
|
+
```ruby
|
392
|
+
file.metadata[:environment]
|
393
|
+
```
|
394
|
+
|
395
|
+
File metadata is set when the file is saved:
|
396
|
+
|
397
|
+
```ruby
|
398
|
+
file.save
|
399
|
+
```
|
400
|
+
|
401
|
+
Metadata is reloaded when directory or file is reloaded:
|
402
|
+
|
403
|
+
```ruby
|
404
|
+
file.reload
|
405
|
+
```
|
406
|
+
|
407
|
+
## Copy File
|
408
|
+
|
409
|
+
Cloud Files supports copying files. To copy files into a container named "trip" with a name of "europe.jpg" do the following:
|
410
|
+
|
411
|
+
```ruby
|
412
|
+
file.copy("trip", "europe.jpg")
|
413
|
+
```
|
414
|
+
|
415
|
+
To move or rename a file, perform a copy operation and then delete the old file:
|
416
|
+
|
417
|
+
```ruby
|
418
|
+
file.copy("trip", "germany.jpg")
|
419
|
+
file.destroy
|
420
|
+
```
|
421
|
+
|
422
|
+
## Delete File
|
423
|
+
|
424
|
+
To delete a file:
|
425
|
+
|
426
|
+
```ruby
|
427
|
+
file.destroy
|
428
|
+
```
|
429
|
+
|
430
|
+
## Additional Resources
|
431
|
+
|
432
|
+
* [fog.io](http://fog.io/)
|
433
|
+
* [Fog rdoc](http://rubydoc.info/gems/fog/)
|
434
|
+
* [Fog Github repo](https://github.com/fog/fog)
|
435
|
+
* [Fog Github Issues](https://github.com/fog/fog/issues)
|
436
|
+
* [Excon Github repo](https://github.com/geemus/excon)
|
437
|
+
* [Swift API](http://docs.openstack.org/api/openstack-object-storage/1.0/content/index.html)
|
438
|
+
|
439
|
+
## Support and Feedback
|
440
|
+
|
441
|
+
Your feedback is appreciated! If you have specific issues with the **fog** SDK, you should file an [issue via Github](https://github.com/fog/fog/issues).
|