hpcloud 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +127 -0
- data/LICENSE +1 -0
- data/README.rdoc +59 -0
- data/bin/hpcloud +11 -0
- data/completion/hpcloud +372 -0
- data/lib/hpcloud/accounts.rb +288 -0
- data/lib/hpcloud/acl.rb +112 -0
- data/lib/hpcloud/acl_cmd.rb +81 -0
- data/lib/hpcloud/address_helper.rb +63 -0
- data/lib/hpcloud/addresses.rb +42 -0
- data/lib/hpcloud/auth_cache.rb +128 -0
- data/lib/hpcloud/base_helper.rb +56 -0
- data/lib/hpcloud/checker.rb +104 -0
- data/lib/hpcloud/cli.rb +170 -0
- data/lib/hpcloud/cli_status.rb +80 -0
- data/lib/hpcloud/columns.rb +46 -0
- data/lib/hpcloud/commands/account/catalog.rb +57 -0
- data/lib/hpcloud/commands/account/copy.rb +44 -0
- data/lib/hpcloud/commands/account/edit.rb +204 -0
- data/lib/hpcloud/commands/account/remove.rb +53 -0
- data/lib/hpcloud/commands/account/setup.rb +40 -0
- data/lib/hpcloud/commands/account/tenants.rb +43 -0
- data/lib/hpcloud/commands/account/use.rb +46 -0
- data/lib/hpcloud/commands/account/verify.rb +55 -0
- data/lib/hpcloud/commands/account.rb +67 -0
- data/lib/hpcloud/commands/acl/grant.rb +59 -0
- data/lib/hpcloud/commands/acl/revoke.rb +52 -0
- data/lib/hpcloud/commands/acl.rb +63 -0
- data/lib/hpcloud/commands/addresses/add.rb +67 -0
- data/lib/hpcloud/commands/addresses/associate.rb +63 -0
- data/lib/hpcloud/commands/addresses/disassociate.rb +58 -0
- data/lib/hpcloud/commands/addresses/remove.rb +57 -0
- data/lib/hpcloud/commands/addresses.rb +63 -0
- data/lib/hpcloud/commands/cdn_containers/add.rb +56 -0
- data/lib/hpcloud/commands/cdn_containers/get.rb +70 -0
- data/lib/hpcloud/commands/cdn_containers/location.rb +61 -0
- data/lib/hpcloud/commands/cdn_containers/remove.rb +55 -0
- data/lib/hpcloud/commands/cdn_containers/set.rb +63 -0
- data/lib/hpcloud/commands/cdn_containers.rb +72 -0
- data/lib/hpcloud/commands/complete.rb +60 -0
- data/lib/hpcloud/commands/config/set.rb +63 -0
- data/lib/hpcloud/commands/config.rb +46 -0
- data/lib/hpcloud/commands/containers/add.rb +67 -0
- data/lib/hpcloud/commands/containers/remove.rb +63 -0
- data/lib/hpcloud/commands/containers/sync.rb +59 -0
- data/lib/hpcloud/commands/containers.rb +24 -0
- data/lib/hpcloud/commands/copy.rb +78 -0
- data/lib/hpcloud/commands/dns/add.rb +56 -0
- data/lib/hpcloud/commands/dns/records/add.rb +50 -0
- data/lib/hpcloud/commands/dns/records/remove.rb +53 -0
- data/lib/hpcloud/commands/dns/records/update.rb +50 -0
- data/lib/hpcloud/commands/dns/records.rb +57 -0
- data/lib/hpcloud/commands/dns/remove.rb +57 -0
- data/lib/hpcloud/commands/dns/servers.rb +57 -0
- data/lib/hpcloud/commands/dns/update.rb +58 -0
- data/lib/hpcloud/commands/dns.rb +65 -0
- data/lib/hpcloud/commands/flavors.rb +59 -0
- data/lib/hpcloud/commands/get.rb +58 -0
- data/lib/hpcloud/commands/images/add.rb +54 -0
- data/lib/hpcloud/commands/images/metadata/add.rb +54 -0
- data/lib/hpcloud/commands/images/metadata/remove.rb +56 -0
- data/lib/hpcloud/commands/images/metadata.rb +54 -0
- data/lib/hpcloud/commands/images/remove.rb +58 -0
- data/lib/hpcloud/commands/images.rb +67 -0
- data/lib/hpcloud/commands/info.rb +41 -0
- data/lib/hpcloud/commands/keypairs/add.rb +73 -0
- data/lib/hpcloud/commands/keypairs/import.rb +62 -0
- data/lib/hpcloud/commands/keypairs/private/add.rb +44 -0
- data/lib/hpcloud/commands/keypairs/private/location.rb +50 -0
- data/lib/hpcloud/commands/keypairs/private/remove.rb +52 -0
- data/lib/hpcloud/commands/keypairs/private.rb +47 -0
- data/lib/hpcloud/commands/keypairs/public_key.rb +51 -0
- data/lib/hpcloud/commands/keypairs/remove.rb +58 -0
- data/lib/hpcloud/commands/keypairs.rb +64 -0
- data/lib/hpcloud/commands/lb/add.rb +92 -0
- data/lib/hpcloud/commands/lb/algorithms.rb +55 -0
- data/lib/hpcloud/commands/lb/limits.rb +55 -0
- data/lib/hpcloud/commands/lb/nodes/add.rb +47 -0
- data/lib/hpcloud/commands/lb/nodes/remove.rb +54 -0
- data/lib/hpcloud/commands/lb/nodes/update.rb +47 -0
- data/lib/hpcloud/commands/lb/nodes.rb +55 -0
- data/lib/hpcloud/commands/lb/protocols.rb +55 -0
- data/lib/hpcloud/commands/lb/remove.rb +54 -0
- data/lib/hpcloud/commands/lb/update.rb +46 -0
- data/lib/hpcloud/commands/lb/versions.rb +55 -0
- data/lib/hpcloud/commands/lb/virtualips.rb +51 -0
- data/lib/hpcloud/commands/lb.rb +73 -0
- data/lib/hpcloud/commands/list.rb +114 -0
- data/lib/hpcloud/commands/location.rb +56 -0
- data/lib/hpcloud/commands/metadata/set.rb +61 -0
- data/lib/hpcloud/commands/metadata.rb +60 -0
- data/lib/hpcloud/commands/migrate.rb +61 -0
- data/lib/hpcloud/commands/move.rb +73 -0
- data/lib/hpcloud/commands/networks/add.rb +55 -0
- data/lib/hpcloud/commands/networks/remove.rb +57 -0
- data/lib/hpcloud/commands/networks/update.rb +54 -0
- data/lib/hpcloud/commands/networks.rb +63 -0
- data/lib/hpcloud/commands/ports/add.rb +81 -0
- data/lib/hpcloud/commands/ports/remove.rb +57 -0
- data/lib/hpcloud/commands/ports/update.rb +67 -0
- data/lib/hpcloud/commands/ports.rb +63 -0
- data/lib/hpcloud/commands/remove.rb +75 -0
- data/lib/hpcloud/commands/routers/add.rb +67 -0
- data/lib/hpcloud/commands/routers/interface/add.rb +59 -0
- data/lib/hpcloud/commands/routers/interface/remove.rb +66 -0
- data/lib/hpcloud/commands/routers/remove.rb +54 -0
- data/lib/hpcloud/commands/routers/update.rb +66 -0
- data/lib/hpcloud/commands/routers.rb +66 -0
- data/lib/hpcloud/commands/securitygroups/add.rb +52 -0
- data/lib/hpcloud/commands/securitygroups/remove.rb +57 -0
- data/lib/hpcloud/commands/securitygroups/rules/add.rb +126 -0
- data/lib/hpcloud/commands/securitygroups/rules/remove.rb +51 -0
- data/lib/hpcloud/commands/securitygroups/rules.rb +56 -0
- data/lib/hpcloud/commands/securitygroups.rb +62 -0
- data/lib/hpcloud/commands/servers/add.rb +100 -0
- data/lib/hpcloud/commands/servers/console.rb +81 -0
- data/lib/hpcloud/commands/servers/limits.rb +46 -0
- data/lib/hpcloud/commands/servers/metadata/add.rb +56 -0
- data/lib/hpcloud/commands/servers/metadata/remove.rb +57 -0
- data/lib/hpcloud/commands/servers/metadata.rb +56 -0
- data/lib/hpcloud/commands/servers/password.rb +47 -0
- data/lib/hpcloud/commands/servers/ratelimits.rb +46 -0
- data/lib/hpcloud/commands/servers/reboot.rb +61 -0
- data/lib/hpcloud/commands/servers/rebuild.rb +59 -0
- data/lib/hpcloud/commands/servers/remove.rb +58 -0
- data/lib/hpcloud/commands/servers/securitygroups/add.rb +47 -0
- data/lib/hpcloud/commands/servers/securitygroups/remove.rb +47 -0
- data/lib/hpcloud/commands/servers/ssh.rb +92 -0
- data/lib/hpcloud/commands/servers.rb +92 -0
- data/lib/hpcloud/commands/snapshots/add.rb +62 -0
- data/lib/hpcloud/commands/snapshots/remove.rb +58 -0
- data/lib/hpcloud/commands/snapshots.rb +62 -0
- data/lib/hpcloud/commands/subnets/add.rb +78 -0
- data/lib/hpcloud/commands/subnets/remove.rb +57 -0
- data/lib/hpcloud/commands/subnets/update.rb +70 -0
- data/lib/hpcloud/commands/subnets.rb +63 -0
- data/lib/hpcloud/commands/tempurl.rb +62 -0
- data/lib/hpcloud/commands/volumes/add.rb +88 -0
- data/lib/hpcloud/commands/volumes/attach.rb +59 -0
- data/lib/hpcloud/commands/volumes/detach.rb +57 -0
- data/lib/hpcloud/commands/volumes/metadata/add.rb +54 -0
- data/lib/hpcloud/commands/volumes/metadata.rb +55 -0
- data/lib/hpcloud/commands/volumes/remove.rb +57 -0
- data/lib/hpcloud/commands/volumes/server.rb +64 -0
- data/lib/hpcloud/commands/volumes.rb +65 -0
- data/lib/hpcloud/config.rb +205 -0
- data/lib/hpcloud/connection.rb +290 -0
- data/lib/hpcloud/container_resource.rb +175 -0
- data/lib/hpcloud/database_helper.rb +70 -0
- data/lib/hpcloud/databases.rb +38 -0
- data/lib/hpcloud/dns_helper.rb +125 -0
- data/lib/hpcloud/dnss.rb +38 -0
- data/lib/hpcloud/error_response.rb +89 -0
- data/lib/hpcloud/exceptions/base.rb +35 -0
- data/lib/hpcloud/exceptions/general.rb +34 -0
- data/lib/hpcloud/exceptions/not_found.rb +34 -0
- data/lib/hpcloud/flavors.rb +40 -0
- data/lib/hpcloud/floating_ip_helper.rb +114 -0
- data/lib/hpcloud/floating_ips.rb +42 -0
- data/lib/hpcloud/fog_collection.rb +124 -0
- data/lib/hpcloud/image_helper.rb +111 -0
- data/lib/hpcloud/images.rb +43 -0
- data/lib/hpcloud/keypair_helper.rb +109 -0
- data/lib/hpcloud/keypairs.rb +41 -0
- data/lib/hpcloud/lb_algorithms.rb +37 -0
- data/lib/hpcloud/lb_limits.rb +37 -0
- data/lib/hpcloud/lb_nodes.rb +42 -0
- data/lib/hpcloud/lb_protocols.rb +37 -0
- data/lib/hpcloud/lb_versions.rb +37 -0
- data/lib/hpcloud/lb_virtualips.rb +42 -0
- data/lib/hpcloud/lbs.rb +38 -0
- data/lib/hpcloud/local_resource.rb +183 -0
- data/lib/hpcloud/log.rb +55 -0
- data/lib/hpcloud/metadata.rb +118 -0
- data/lib/hpcloud/monkey.rb +22 -0
- data/lib/hpcloud/network_helper.rb +88 -0
- data/lib/hpcloud/networks.rb +47 -0
- data/lib/hpcloud/object_store.rb +66 -0
- data/lib/hpcloud/port_helper.rb +150 -0
- data/lib/hpcloud/ports.rb +38 -0
- data/lib/hpcloud/progress.rb +53 -0
- data/lib/hpcloud/remote_resource.rb +512 -0
- data/lib/hpcloud/resource.rb +264 -0
- data/lib/hpcloud/resource_factory.rb +110 -0
- data/lib/hpcloud/routers.rb +56 -0
- data/lib/hpcloud/rule_helper.rb +70 -0
- data/lib/hpcloud/rules.rb +41 -0
- data/lib/hpcloud/security_group_helper.rb +59 -0
- data/lib/hpcloud/security_groups.rb +37 -0
- data/lib/hpcloud/server_helper.rb +318 -0
- data/lib/hpcloud/servers.rb +47 -0
- data/lib/hpcloud/shared_resource.rb +172 -0
- data/lib/hpcloud/snapshot_helper.rb +78 -0
- data/lib/hpcloud/snapshots.rb +38 -0
- data/lib/hpcloud/subnet_helper.rb +170 -0
- data/lib/hpcloud/subnets.rb +38 -0
- data/lib/hpcloud/tableizer.rb +77 -0
- data/lib/hpcloud/thor_ext/thor.rb +54 -0
- data/lib/hpcloud/time_parser.rb +47 -0
- data/lib/hpcloud/version.rb +27 -0
- data/lib/hpcloud/volume_attachment.rb +58 -0
- data/lib/hpcloud/volume_attachments.rb +58 -0
- data/lib/hpcloud/volume_helper.rb +119 -0
- data/lib/hpcloud/volumes.rb +38 -0
- data/lib/hpcloud.rb +112 -0
- data/lib/monkey/hp/lb.rb +188 -0
- data/lib/monkey/hp/models/lb/algorithm.rb +32 -0
- data/lib/monkey/hp/models/lb/algorithms.rb +46 -0
- data/lib/monkey/hp/models/lb/limit.rb +38 -0
- data/lib/monkey/hp/models/lb/limits.rb +50 -0
- data/lib/monkey/hp/models/lb/load_balancer.rb +70 -0
- data/lib/monkey/hp/models/lb/load_balancers.rb +46 -0
- data/lib/monkey/hp/models/lb/node.rb +69 -0
- data/lib/monkey/hp/models/lb/nodes.rb +47 -0
- data/lib/monkey/hp/models/lb/protocol.rb +33 -0
- data/lib/monkey/hp/models/lb/protocols.rb +46 -0
- data/lib/monkey/hp/models/lb/version.rb +34 -0
- data/lib/monkey/hp/models/lb/versions.rb +47 -0
- data/lib/monkey/hp/models/lb/virtual_ip.rb +37 -0
- data/lib/monkey/hp/models/lb/virtual_ips.rb +47 -0
- data/lib/monkey/hp/requests/lb/create_load_balancer.rb +64 -0
- data/lib/monkey/hp/requests/lb/create_load_balancer_node.rb +58 -0
- data/lib/monkey/hp/requests/lb/delete_load_balancer.rb +54 -0
- data/lib/monkey/hp/requests/lb/delete_load_balancer_node.rb +60 -0
- data/lib/monkey/hp/requests/lb/get_load_balancer.rb +88 -0
- data/lib/monkey/hp/requests/lb/get_load_balancer_node.rb +60 -0
- data/lib/monkey/hp/requests/lb/get_version.rb +68 -0
- data/lib/monkey/hp/requests/lb/get_virtual_ips.rb +48 -0
- data/lib/monkey/hp/requests/lb/list_algorithms.rb +51 -0
- data/lib/monkey/hp/requests/lb/list_limits.rb +60 -0
- data/lib/monkey/hp/requests/lb/list_load_balancer_nodes.rb +79 -0
- data/lib/monkey/hp/requests/lb/list_load_balancer_virtual_ips.rb +76 -0
- data/lib/monkey/hp/requests/lb/list_load_balancers.rb +69 -0
- data/lib/monkey/hp/requests/lb/list_protocols.rb +51 -0
- data/lib/monkey/hp/requests/lb/list_versions.rb +51 -0
- data/lib/monkey/hp/requests/lb/update_load_balancer.rb +46 -0
- data/lib/monkey/hp/requests/lb/update_load_balancer_node.rb +50 -0
- metadata +368 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
module HP
|
23
|
+
module Cloud
|
24
|
+
class CLI < Thor
|
25
|
+
|
26
|
+
map %w(lb:rm lb:delete lb:del) => 'lb:remove'
|
27
|
+
|
28
|
+
desc "lb:remove name_or_id [name_or_id ...]", "Remove load balancer (specified by name or ID)."
|
29
|
+
long_desc <<-DESC
|
30
|
+
Remove load balancers by specifying their names or ID. You may specify more than one load balacner name or ID on a command line.
|
31
|
+
|
32
|
+
Examples:
|
33
|
+
hpcloud lb:remove thing1 thing2 # Delete the load balancers `thing1` and `thing2`
|
34
|
+
hpcloud lb:remove 998 # Delete the load balancer with ID 998
|
35
|
+
|
36
|
+
Aliases: lb:rm, lb:delete, lb:del
|
37
|
+
DESC
|
38
|
+
CLI.add_common_options
|
39
|
+
define_method "lb:remove" do |name_or_id, *name_or_ids|
|
40
|
+
cli_command(options) {
|
41
|
+
name_or_ids = [name_or_id] + name_or_ids
|
42
|
+
lbs = Lbs.new
|
43
|
+
name_or_ids.each{ |name|
|
44
|
+
sub_command("removing load balancer") {
|
45
|
+
lb = lbs.get(name, false)
|
46
|
+
lb.destroy
|
47
|
+
@log.display "Removed load balancer '#{lb.name}'."
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
|
23
|
+
module HP
|
24
|
+
module Cloud
|
25
|
+
class CLI < Thor
|
26
|
+
|
27
|
+
desc "lb:update <lb_name_or_id> <name_or_id> <algorithm>", "Update a node in a load balancer."
|
28
|
+
long_desc <<-DESC
|
29
|
+
Update a load balancer with the specified algorithm. The name or id of the load balancer may be used to identify it.
|
30
|
+
|
31
|
+
Examples:
|
32
|
+
hpcloud lb:update loady ROUND_ROBIN # Update node 'loady' to 'ROUND_ROBIN'
|
33
|
+
hpcloud lb:update 220303 LEAST_CONNECTIONS # Update node '220303' to 'LEAST_CONNECTIONS'
|
34
|
+
DESC
|
35
|
+
CLI.add_common_options
|
36
|
+
define_method "lb:update" do |name_or_id, algorithm|
|
37
|
+
cli_command(options) {
|
38
|
+
lb = Lbs.new.get(name_or_id)
|
39
|
+
lb.algorithm = algorithm
|
40
|
+
lb.save
|
41
|
+
@log.display "Updated load balancer '#{name_or_id}' to '#{algorithm}'."
|
42
|
+
}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
require 'hpcloud/lb_versions'
|
23
|
+
|
24
|
+
module HP
|
25
|
+
module Cloud
|
26
|
+
class CLI < Thor
|
27
|
+
desc 'lb:versions', "List the available load balancer versions."
|
28
|
+
long_desc <<-DESC
|
29
|
+
Lists all the available load balancers versions.
|
30
|
+
|
31
|
+
Examples:
|
32
|
+
hpcloud lb:versions # List all versions
|
33
|
+
DESC
|
34
|
+
CLI.add_report_options
|
35
|
+
CLI.add_common_options
|
36
|
+
define_method "lb:versions" do
|
37
|
+
columns = [ "id", "status", "updated" ]
|
38
|
+
|
39
|
+
cli_command(options) {
|
40
|
+
filter = LbVersions.new
|
41
|
+
if filter.empty?
|
42
|
+
@log.display "There don't seem to be any supported versions at the moment"
|
43
|
+
else
|
44
|
+
ray = filter.get_array
|
45
|
+
if ray.empty?
|
46
|
+
@log.display "No versions were found"
|
47
|
+
else
|
48
|
+
Tableizer.new(options, columns, ray).print
|
49
|
+
end
|
50
|
+
end
|
51
|
+
}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
require 'hpcloud/lb_virtualips'
|
23
|
+
|
24
|
+
module HP
|
25
|
+
module Cloud
|
26
|
+
class CLI < Thor
|
27
|
+
desc 'lb:virtualips name_or_id', "List the virtual IPs for the specified load balancer."
|
28
|
+
long_desc <<-DESC
|
29
|
+
Lists the virtual IPs for the specified load balancer.
|
30
|
+
|
31
|
+
Examples:
|
32
|
+
hpcloud lb:virtualips loader # List the virtual IPs for 'loader'
|
33
|
+
DESC
|
34
|
+
CLI.add_report_options
|
35
|
+
CLI.add_common_options
|
36
|
+
define_method "lb:virtualips" do |name_or_id|
|
37
|
+
columns = [ "id", "address", "ipVersion", "type" ]
|
38
|
+
|
39
|
+
cli_command(options) {
|
40
|
+
lb = Lbs.new.get(name_or_id)
|
41
|
+
ray = LbVirtualIps.new(lb.id).get_array
|
42
|
+
if ray.empty?
|
43
|
+
@log.display "There are no virtual IPs for the given load balancer."
|
44
|
+
else
|
45
|
+
Tableizer.new(options, columns, ray).print
|
46
|
+
end
|
47
|
+
}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
require 'hpcloud/commands/lb/add.rb'
|
23
|
+
require 'hpcloud/commands/lb/algorithms.rb'
|
24
|
+
require 'hpcloud/commands/lb/limits.rb'
|
25
|
+
require 'hpcloud/commands/lb/nodes.rb'
|
26
|
+
require 'hpcloud/commands/lb/nodes/add.rb'
|
27
|
+
require 'hpcloud/commands/lb/nodes/remove.rb'
|
28
|
+
require 'hpcloud/commands/lb/nodes/update.rb'
|
29
|
+
require 'hpcloud/commands/lb/protocols.rb'
|
30
|
+
require 'hpcloud/commands/lb/remove.rb'
|
31
|
+
require 'hpcloud/commands/lb/update.rb'
|
32
|
+
require 'hpcloud/commands/lb/versions.rb'
|
33
|
+
require 'hpcloud/commands/lb/virtualips.rb'
|
34
|
+
require 'hpcloud/lbs'
|
35
|
+
|
36
|
+
module HP
|
37
|
+
module Cloud
|
38
|
+
class CLI < Thor
|
39
|
+
|
40
|
+
map 'lb:list' => 'lb'
|
41
|
+
|
42
|
+
desc 'lb [name_or_id ...]', "List the available load balancers."
|
43
|
+
long_desc <<-DESC
|
44
|
+
Lists all the load balancers that are associated with the account. The list begins with identifier and contains name, algorithm, protocol, port and status. Optionally, you can filter the list by specifying names or IDs.
|
45
|
+
|
46
|
+
Examples:
|
47
|
+
hpcloud lb # List all load balancers
|
48
|
+
hpcloud lb 1 # List the details for load balancers `1`
|
49
|
+
hpcloud lb testvol # List the details for load balancers `testvol`
|
50
|
+
|
51
|
+
Aliases: lb:list
|
52
|
+
DESC
|
53
|
+
CLI.add_report_options
|
54
|
+
CLI.add_common_options
|
55
|
+
def lb(*arguments)
|
56
|
+
columns = [ "id", "name", "algorithm", "protocol", "port", "status" ]
|
57
|
+
cli_command(options) {
|
58
|
+
lb = Lbs.new
|
59
|
+
if lb.empty?
|
60
|
+
@log.display "You currently have no load balancers, use `#{selfname} lb:add <name>` to create one."
|
61
|
+
else
|
62
|
+
ray = lb.get_array(arguments)
|
63
|
+
if ray.empty?
|
64
|
+
@log.display "There are no load balancers that match the provided arguments"
|
65
|
+
else
|
66
|
+
Tableizer.new(options, columns, ray).print
|
67
|
+
end
|
68
|
+
end
|
69
|
+
}
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
module HP
|
23
|
+
module Cloud
|
24
|
+
class CLI < Thor
|
25
|
+
|
26
|
+
map %w(ls containers containers:list) => 'list'
|
27
|
+
map 'ls' => 'list'
|
28
|
+
|
29
|
+
desc 'list [container ...]', "List containers or container contents."
|
30
|
+
long_desc <<-DESC
|
31
|
+
List containers or the contents of the specified containers. Optionally, an availability zone can be passed.
|
32
|
+
|
33
|
+
Examples:
|
34
|
+
hpcloud list :tain1/sub/ :tain2/sub/ # List the contents of the subdirectory `/sub/` in `tain1` and `tain2`
|
35
|
+
hpcloud list :tain1/.*png # List the PNG files in `tain1`
|
36
|
+
hpcloud list :tainer # List all the objects in container `tainer`
|
37
|
+
hpcloud list # List all containers
|
38
|
+
hpcloud list :my_container -z region-a.geo-1 # List all the objects in container `my_container` for availability zone `region-a.geo-1`
|
39
|
+
|
40
|
+
Aliases: ls
|
41
|
+
DESC
|
42
|
+
method_option :long,
|
43
|
+
:type => :boolean, :aliases => '-l',
|
44
|
+
:desc => 'Long listing.'
|
45
|
+
method_option :sync,
|
46
|
+
:type => :boolean,
|
47
|
+
:desc => 'List synchronizations.'
|
48
|
+
CLI.add_report_options
|
49
|
+
CLI.add_common_options
|
50
|
+
def list(*sources)
|
51
|
+
cli_command(options) {
|
52
|
+
sources = [""] if sources.empty?
|
53
|
+
multi = sources.length > 1
|
54
|
+
opt = {}
|
55
|
+
opt[Columns.option_name] = options[Columns.option_name]
|
56
|
+
opt[Tableizer.option_name] = options[Tableizer.option_name]
|
57
|
+
if options[:long]
|
58
|
+
longlist = true
|
59
|
+
else
|
60
|
+
if options[:sync]
|
61
|
+
longlist = true
|
62
|
+
else
|
63
|
+
longlist = false
|
64
|
+
opt[Tableizer.option_name] = ' ' if opt[Tableizer.option_name].nil?
|
65
|
+
end
|
66
|
+
end
|
67
|
+
sources.each { |name|
|
68
|
+
sub_command {
|
69
|
+
from = ResourceFactory.create(Connection.instance.storage, name)
|
70
|
+
if from.valid_source()
|
71
|
+
multi = true unless from.is_container?
|
72
|
+
if multi
|
73
|
+
keys = [ "lname" ]
|
74
|
+
else
|
75
|
+
keys = [ "sname" ]
|
76
|
+
end
|
77
|
+
if longlist == true
|
78
|
+
if from.is_object_store?
|
79
|
+
if options[:sync]
|
80
|
+
keys += [ "count", "size", "synckey", "syncto" ]
|
81
|
+
else
|
82
|
+
keys += [ "count", "size" ]
|
83
|
+
end
|
84
|
+
else
|
85
|
+
keys += [ "size", "type", "etag", "modified" ]
|
86
|
+
end
|
87
|
+
end
|
88
|
+
tableizer = Tableizer.new(opt, keys)
|
89
|
+
from.foreach { |file|
|
90
|
+
if options[:sync]
|
91
|
+
file.container_head(true)
|
92
|
+
end
|
93
|
+
tableizer.add(file.to_hash)
|
94
|
+
}
|
95
|
+
tableizer.print
|
96
|
+
|
97
|
+
|
98
|
+
if tableizer.found == false
|
99
|
+
if from.is_object_store?
|
100
|
+
@log.error "Cannot find any containers, use `#{selfname} containers:add <name>` to create one.", :not_found
|
101
|
+
elsif from.isDirectory() == false
|
102
|
+
@log.error "Cannot find resource named '#{name}'.", :not_found
|
103
|
+
end
|
104
|
+
end
|
105
|
+
else
|
106
|
+
@log.error from.cstatus
|
107
|
+
end
|
108
|
+
}
|
109
|
+
}
|
110
|
+
}
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
module HP
|
23
|
+
module Cloud
|
24
|
+
class CLI < Thor
|
25
|
+
|
26
|
+
map 'loc' => 'location'
|
27
|
+
|
28
|
+
desc 'location <object/container> ...', 'Display the URIs for the specified resources.'
|
29
|
+
long_desc <<-DESC
|
30
|
+
Display the URI of the specified object or container. Optionally, you can specify an availability zone.
|
31
|
+
|
32
|
+
Examples:
|
33
|
+
hpcloud location :my_container/file.txt # Display the URI for the file `file.txt` that resides in container `my_container`
|
34
|
+
hpcloud location :my_container # Display the URI for all objects in container `my_container`
|
35
|
+
hpcloud location :my_container/file.txt :my_container/other.txt # Display the URIs for the objects `file.txt` and `other.txt` that reside in container `my_container`
|
36
|
+
hpcloud location :my_container/file.txt -z region-a.geo-1 # Display the URI for the file `file.txt` that resides in container `my_container` in availability zone `region-a.geo-1`
|
37
|
+
|
38
|
+
Aliases: loc
|
39
|
+
DESC
|
40
|
+
CLI.add_common_options
|
41
|
+
def location(name, *names)
|
42
|
+
cli_command(options) {
|
43
|
+
names = [name] + names
|
44
|
+
names.each { |name|
|
45
|
+
resource = ResourceFactory.create(Connection.instance.storage, name)
|
46
|
+
if resource.head
|
47
|
+
@log.display resource.public_url
|
48
|
+
else
|
49
|
+
@log.error resource.cstatus
|
50
|
+
end
|
51
|
+
}
|
52
|
+
}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
module HP
|
23
|
+
module Cloud
|
24
|
+
class CLI < Thor
|
25
|
+
|
26
|
+
map 'containers:set' => 'metadata:set'
|
27
|
+
|
28
|
+
desc "metadata:set <name> <attribute> <value>", "Set attributes on a object."
|
29
|
+
long_desc <<-DESC
|
30
|
+
Set metadata values for containers and objects. Container metadata keys generally begin with 'X-Container-Meta-' and some other special metadata values you can set for containers include:
|
31
|
+
|
32
|
+
#{RemoteResource.VALID_CONTAINER_META}
|
33
|
+
|
34
|
+
Object metadata keys generally begin with 'X-Object-Meta-' and some other special metadata values you can set for objects include:
|
35
|
+
|
36
|
+
#{RemoteResource.VALID_OBJECT_META}
|
37
|
+
|
38
|
+
Check http://docs.hpcloud.com/api/object-storage/ for up to date changes on the valid keys and values. Unfortunately, the server may positively acknowledge the setting of invalid keys. It may be best to query for the value after setting it to verify the set worked.
|
39
|
+
|
40
|
+
Examples:
|
41
|
+
hpcloud metadata :my_container "X-Container-Meta-Web-Index" index.htm # Set the attribute 'X-Container-Meta-Web-Index' to index.htm
|
42
|
+
hpcloud metadata:set :my_container/objay.txt X-Object-Meta-Key metavalue # Set the attribute 'X-Object-Meta-Key' to metavalue
|
43
|
+
hpcloud metadata:set :my_container/objay.txt Content-Type text/plain # Set the attribute 'Content-Type' to text/plain
|
44
|
+
DESC
|
45
|
+
CLI.add_common_options
|
46
|
+
define_method "metadata:set" do |name, attribute, value|
|
47
|
+
cli_command(options) {
|
48
|
+
resource = ResourceFactory.create(Connection.instance.storage, name)
|
49
|
+
unless resource.head
|
50
|
+
@log.fatal resource.cstatus
|
51
|
+
end
|
52
|
+
unless resource.valid_metadata_key?(attribute)
|
53
|
+
@log.warn "Metadata key appears to be invalid and your request may be ignored"
|
54
|
+
end
|
55
|
+
resource.set_metadata(attribute, value)
|
56
|
+
@log.display "The attribute '#{attribute}' with value '#{value}' was set on object '#{name}'."
|
57
|
+
}
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
module HP
|
23
|
+
module Cloud
|
24
|
+
class CLI < Thor
|
25
|
+
|
26
|
+
map 'containers:get' => 'metadata'
|
27
|
+
|
28
|
+
desc "metadata <name> [attribute...]", "Get the metadata value of a container or object."
|
29
|
+
long_desc <<-DESC
|
30
|
+
Get the various metadata values for an object or container.
|
31
|
+
|
32
|
+
Examples:
|
33
|
+
hpcloud metadata :my_container # List all the attributes
|
34
|
+
hpcloud metadata :my_container X-Cdn-Uri # Get the value of the attribute 'X-Cdn-Uri'
|
35
|
+
hpcloud metadata :my_container/dir/file.txt # List all the attributes for the object
|
36
|
+
DESC
|
37
|
+
CLI.add_common_options
|
38
|
+
define_method "metadata" do |name, *attributes|
|
39
|
+
cli_command(options) {
|
40
|
+
resource = ResourceFactory.create(Connection.instance.storage, name)
|
41
|
+
unless resource.head
|
42
|
+
@log.fatal resource.cstatus
|
43
|
+
end
|
44
|
+
if attributes.empty?
|
45
|
+
hsh = resource.printable_headers
|
46
|
+
keyo = hsh.keys.sort
|
47
|
+
else
|
48
|
+
hsh = resource.headers
|
49
|
+
keyo = attributes
|
50
|
+
end
|
51
|
+
keyo.each{ |k|
|
52
|
+
v = hsh[k]
|
53
|
+
v = "\n" if v.nil?
|
54
|
+
@log.display "#{k} #{v}"
|
55
|
+
}
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# © Copyright 2013 Hewlett-Packard Development Company, L.P.
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
|
+
# of this software and associated documentation files (the "Software"), to deal
|
6
|
+
# in the Software without restriction, including without limitation the rights
|
7
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
# copies of the Software, and to permit persons to whom the Software is
|
9
|
+
# furnished to do so, subject to the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be included in all
|
12
|
+
# copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
17
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
18
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
20
|
+
# SOFTWARE.
|
21
|
+
|
22
|
+
module HP
|
23
|
+
module Cloud
|
24
|
+
class CLI < Thor
|
25
|
+
|
26
|
+
desc 'migrate <source_account> <source> [source ...] <destination>', "Migrate files from a provider described by the source account."
|
27
|
+
long_desc <<-DESC
|
28
|
+
Migrates files from the designated provider to the HP Cloud destination. This command works similarly to `copy` except the first argument is the source account (for example, `AWS`). The source objects may be containers, objects, or regular expressions.
|
29
|
+
|
30
|
+
Examples:
|
31
|
+
hpcloud migrate aws :aws_tainer :hp_tainer # Migrate objects from the AWS `:aws_tainer` container to the `:hp_tainer` container
|
32
|
+
hpcloud migrate rackspace :rackspace1 :rackspace2 :hp_tainer # Migrate objects from the two containers in the Rackspace account to the `:hp_tainer` container
|
33
|
+
|
34
|
+
DESC
|
35
|
+
method_option :mime,
|
36
|
+
:type => :string, :aliases => '-m',
|
37
|
+
:desc => 'Set the MIME type of the remote object.'
|
38
|
+
CLI.add_common_options
|
39
|
+
def migrate(source_account, source, *destination)
|
40
|
+
cli_command(options) {
|
41
|
+
last = destination.pop
|
42
|
+
source = [source] + destination
|
43
|
+
destination = last
|
44
|
+
to = ResourceFactory.create_any(Connection.instance.storage, destination)
|
45
|
+
if source.length > 1 && to.isDirectory() == false
|
46
|
+
@log.fatal("The destination '#{destination}' for multiple files, must be a directory or container")
|
47
|
+
end
|
48
|
+
source.each { |name|
|
49
|
+
from = ResourceFactory.create_any(Connection.instance.storage(source_account), name)
|
50
|
+
from.set_mime_type(options[:mime])
|
51
|
+
if to.copy(from)
|
52
|
+
@log.display "Migrated #{from.fname} => #{to.fname}"
|
53
|
+
else
|
54
|
+
@log.fatal to.cstatus
|
55
|
+
end
|
56
|
+
}
|
57
|
+
}
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|