hpcloud 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/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,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 "servers:reboot name_or_id [name_or_id ...]", "Reboot a server or servers (specified by server name or ID)."
|
|
27
|
+
long_desc <<-DESC
|
|
28
|
+
Reboot an existing server specified name or ID. Rebooting a server can take some time so it might be necessary to check the status of the server by issuing the command `hpcloud servers`. The default is a soft reboot, but you can specify the `-h` option for a hard reboot. Optionally, you can specify an availability zone.
|
|
29
|
+
|
|
30
|
+
Examples:
|
|
31
|
+
hpcloud servers:reboot Hal9000 # Reboot server 'Hal9000'
|
|
32
|
+
hpcloud servers:reboot 53e78869 c80dfe05 # Reboot the servers with the IDs 53e78869 and c80dfe05
|
|
33
|
+
DESC
|
|
34
|
+
method_option :hard, :default => false,
|
|
35
|
+
:type => :boolean, :aliases => '-h',
|
|
36
|
+
:desc => 'Hard reboot a server.'
|
|
37
|
+
CLI.add_common_options
|
|
38
|
+
define_method "servers:reboot" do |name_or_id, *name_or_ids|
|
|
39
|
+
cli_command(options) {
|
|
40
|
+
name_or_ids = [name_or_id] + name_or_ids
|
|
41
|
+
servers = Servers.new.get(name_or_ids, false)
|
|
42
|
+
servers.each { |server|
|
|
43
|
+
sub_command("rebooting server") {
|
|
44
|
+
if server.is_valid?
|
|
45
|
+
if options.hard?
|
|
46
|
+
server.fog.reboot("HARD")
|
|
47
|
+
@log.display "Hard rebooting server '#{server.name}'."
|
|
48
|
+
else
|
|
49
|
+
server.fog.reboot
|
|
50
|
+
@log.display "Soft rebooting server '#{server.name}'."
|
|
51
|
+
end
|
|
52
|
+
else
|
|
53
|
+
@log.error server.cstatus
|
|
54
|
+
end
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
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 "servers:rebuild name_or_id [image_name_or_id]", "Rebuild a server (specified by server name or ID)."
|
|
27
|
+
long_desc <<-DESC
|
|
28
|
+
Rebuild an existing server specified by name or ID. Optionally, you may rebuild the server with a new image. Rebuilding a server may take some time so it might be necessary to check the status of the server by issuing the command 'hpcloud servers'. Optionally, you can specify an availability zone.
|
|
29
|
+
|
|
30
|
+
Examples:
|
|
31
|
+
hpcloud servers:rebuild Hal9000 # Rebuild server 'Hal9000'
|
|
32
|
+
hpcloud servers:rebuild 53e78869 c80dfe05 # Rebuild server 53e78869 with image c80dfe05
|
|
33
|
+
DESC
|
|
34
|
+
CLI.add_common_options
|
|
35
|
+
define_method "servers:rebuild" do |name_or_id, *image_name_or_id|
|
|
36
|
+
cli_command(options) {
|
|
37
|
+
server = Servers.new.get(name_or_id, false)
|
|
38
|
+
if server.is_valid?
|
|
39
|
+
image_id = server.image
|
|
40
|
+
unless image_name_or_id.nil?
|
|
41
|
+
unless image_name_or_id.empty?
|
|
42
|
+
image = Images.new.get(image_name_or_id[0], false)
|
|
43
|
+
if image.is_valid?
|
|
44
|
+
image_id = image.id
|
|
45
|
+
else
|
|
46
|
+
@log.fatal image.cstatus
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
server.fog.rebuild(image_id, server.name)
|
|
51
|
+
@log.display "Server '#{server.name}' being rebuilt."
|
|
52
|
+
else
|
|
53
|
+
@log.fatal server.cstatus
|
|
54
|
+
end
|
|
55
|
+
}
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
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(servers:rm servers:delete servers:del) => 'servers:remove'
|
|
27
|
+
|
|
28
|
+
desc "servers:remove name_or_id [name_or_id ...]", "Remove a server or servers (specified by name or ID)."
|
|
29
|
+
long_desc <<-DESC
|
|
30
|
+
Remove existing servers by specifying their name or ID. Optionally, you can specify an availability zone.
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
hpcloud servers:remove my-server # Delete 'my-server'
|
|
34
|
+
hpcloud servers:remove DeepThought Blaine # Delete the servers 'DeepThought' and 'Blaine'
|
|
35
|
+
hpcloud servers:remove 53e78869 # Delete the server with the ID 53e78869
|
|
36
|
+
|
|
37
|
+
Aliases: servers:rm, servers:delete, servers:del
|
|
38
|
+
DESC
|
|
39
|
+
CLI.add_common_options
|
|
40
|
+
define_method "servers:remove" do |name_or_id, *name_or_ids|
|
|
41
|
+
cli_command(options) {
|
|
42
|
+
name_or_ids = [name_or_id] + name_or_ids
|
|
43
|
+
servers = Servers.new.get(name_or_ids, false)
|
|
44
|
+
servers.each { |server|
|
|
45
|
+
sub_command("removing server") {
|
|
46
|
+
if server.is_valid?
|
|
47
|
+
server.destroy
|
|
48
|
+
@log.display "Removed server '#{server.name}'."
|
|
49
|
+
else
|
|
50
|
+
@log.error server.cstatus
|
|
51
|
+
end
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
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 "servers:securitygroups:add <server> <security_group>", "Add a security group to a server."
|
|
27
|
+
long_desc <<-DESC
|
|
28
|
+
Add a security group to a server.
|
|
29
|
+
|
|
30
|
+
Examples:
|
|
31
|
+
hpcloud servers:securitygroups:add my_server sg1 # Add the 'sg1' security group to 'my_server'
|
|
32
|
+
DESC
|
|
33
|
+
CLI.add_common_options
|
|
34
|
+
define_method "servers:securitygroups:add" do |name_or_id, security_group|
|
|
35
|
+
cli_command(options) {
|
|
36
|
+
srv = Servers.new.get(name_or_id)
|
|
37
|
+
if srv.is_valid?
|
|
38
|
+
srv.add_security_groups(security_group)
|
|
39
|
+
@log.display "Added security group '#{security_group}' to server '#{name_or_id}'."
|
|
40
|
+
else
|
|
41
|
+
@log.fatal srv.cstatus
|
|
42
|
+
end
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
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 "servers:securitygroups:remove <server> <security_groups>", "Remove a security group from a server."
|
|
27
|
+
long_desc <<-DESC
|
|
28
|
+
Remove a security group from a server.
|
|
29
|
+
|
|
30
|
+
Examples:
|
|
31
|
+
hpcloud servers:securitygroups:remove my_server sg2 # Remove security group 'sg2' from 'my_server'
|
|
32
|
+
DESC
|
|
33
|
+
CLI.add_common_options
|
|
34
|
+
define_method "servers:securitygroups:remove" do |name_or_id, security_group|
|
|
35
|
+
cli_command(options) {
|
|
36
|
+
srv = Servers.new.get(name_or_id)
|
|
37
|
+
if srv.is_valid?
|
|
38
|
+
srv.remove_security_groups(security_group)
|
|
39
|
+
@log.display "Removed security group '#{security_group}' from server '#{name_or_id}'."
|
|
40
|
+
else
|
|
41
|
+
@log.fatal srv.cstatus
|
|
42
|
+
end
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
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 "servers:ssh <server_name_or_id>", "Secure shell into a server."
|
|
27
|
+
long_desc <<-DESC
|
|
28
|
+
Log in using the secure shell to the specified server.
|
|
29
|
+
|
|
30
|
+
Examples:
|
|
31
|
+
hpcloud servers:ssh bugs -p bunny.pem # Use the secure shell to log into the bugs server
|
|
32
|
+
hpcloud servers:ssh daffy # Use the secure shell to log into server `daffy`, which has a known key pair
|
|
33
|
+
hpcloud servers:ssh 15.185.104.210 # Use the secure shell to log into server with given public IP, which has a known key pair known to the CLI
|
|
34
|
+
DESC
|
|
35
|
+
method_option :private_key_file,
|
|
36
|
+
:type => :string, :aliases => '-p',
|
|
37
|
+
:desc => 'Name of the pem file with your private key.'
|
|
38
|
+
method_option :keypair,
|
|
39
|
+
:type => :string, :aliases => '-k',
|
|
40
|
+
:desc => 'Name of keypair to use.'
|
|
41
|
+
method_option :login,
|
|
42
|
+
:type => :string, :aliases => '-l',
|
|
43
|
+
:desc => 'Login id to use.'
|
|
44
|
+
method_option :command,
|
|
45
|
+
:type => :string, :aliases => '-c',
|
|
46
|
+
:default => 'ssh',
|
|
47
|
+
:desc => 'Command to use to connect.'
|
|
48
|
+
CLI.add_common_options
|
|
49
|
+
define_method "servers:ssh" do |name_or_id|
|
|
50
|
+
cli_command(options) {
|
|
51
|
+
servers = Servers.new
|
|
52
|
+
server = servers.get(name_or_id)
|
|
53
|
+
unless server.is_valid?
|
|
54
|
+
result = servers.find_by_ip(name_or_id)
|
|
55
|
+
unless result.nil?
|
|
56
|
+
server = result if result.is_valid?
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
if server.is_valid?
|
|
60
|
+
unless options[:keypair].nil?
|
|
61
|
+
filename = KeypairHelper.private_filename(options[:keypair])
|
|
62
|
+
end
|
|
63
|
+
unless options[:private_key_file].nil?
|
|
64
|
+
filename = options[:private_key_file]
|
|
65
|
+
end
|
|
66
|
+
if filename.nil?
|
|
67
|
+
filename = KeypairHelper.private_filename("#{server.id}")
|
|
68
|
+
if File.exists?(filename) == false
|
|
69
|
+
@log.fatal "There is no local configuration to determine what private key is associated with this server. Use the keypairs:private:add command to add a key named #{server.id} for this server or use the -k or -p option.", :incorrect_usage
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
loginid = options[:login]
|
|
73
|
+
if loginid.nil?
|
|
74
|
+
image = Images.new.get(server.image)
|
|
75
|
+
if image.is_valid?
|
|
76
|
+
loginid = image.login
|
|
77
|
+
else
|
|
78
|
+
loginid = "ubuntu"
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
command = options[:command]
|
|
82
|
+
@log.display "Connecting to '#{name_or_id}'..."
|
|
83
|
+
cmd = "#{command} #{loginid}@#{server.public_ip} -i #{filename}"
|
|
84
|
+
system(cmd)
|
|
85
|
+
else
|
|
86
|
+
@log.fatal server.cstatus
|
|
87
|
+
end
|
|
88
|
+
}
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
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/servers/add'
|
|
23
|
+
require 'hpcloud/commands/servers/console'
|
|
24
|
+
require 'hpcloud/commands/servers/limits'
|
|
25
|
+
require 'hpcloud/commands/servers/password'
|
|
26
|
+
require 'hpcloud/commands/servers/metadata'
|
|
27
|
+
require 'hpcloud/commands/servers/metadata/add'
|
|
28
|
+
require 'hpcloud/commands/servers/metadata/remove'
|
|
29
|
+
require 'hpcloud/commands/servers/ratelimits'
|
|
30
|
+
require 'hpcloud/commands/servers/remove'
|
|
31
|
+
require 'hpcloud/commands/servers/reboot'
|
|
32
|
+
require 'hpcloud/commands/servers/rebuild'
|
|
33
|
+
require 'hpcloud/commands/servers/securitygroups/add'
|
|
34
|
+
require 'hpcloud/commands/servers/securitygroups/remove'
|
|
35
|
+
require 'hpcloud/commands/servers/ssh'
|
|
36
|
+
require 'hpcloud/servers'
|
|
37
|
+
|
|
38
|
+
module HP
|
|
39
|
+
module Cloud
|
|
40
|
+
class CLI < Thor
|
|
41
|
+
|
|
42
|
+
map 'servers:list' => 'servers'
|
|
43
|
+
|
|
44
|
+
desc "servers [name_or_id ...]", "List the available servers."
|
|
45
|
+
long_desc <<-DESC
|
|
46
|
+
List the servers in your compute account. You may filter the list by server name or ID. Optionally, you can specify an availability zone.
|
|
47
|
+
|
|
48
|
+
Examples:
|
|
49
|
+
hpcloud servers # List the servers
|
|
50
|
+
hpcloud servers hal # List server `hal`
|
|
51
|
+
hpcloud servers c14411d7 # List server `c14411d7`
|
|
52
|
+
hpcloud servers -z az-2.region-a.geo-1 # List the servers for availability zone `az-2.region-a.geo-1`
|
|
53
|
+
|
|
54
|
+
Aliases: servers:list
|
|
55
|
+
DESC
|
|
56
|
+
CLI.add_report_options
|
|
57
|
+
CLI.add_common_options
|
|
58
|
+
method_option :all_regions,
|
|
59
|
+
:type => :string,
|
|
60
|
+
:desc => 'List servers for all regions.'
|
|
61
|
+
def servers(*arguments)
|
|
62
|
+
cli_command(options) {
|
|
63
|
+
keys = ServerHelper.get_keys().dup
|
|
64
|
+
if options[:all_regions].nil?
|
|
65
|
+
servers = Servers.new
|
|
66
|
+
if servers.empty?
|
|
67
|
+
@log.display "You currently have no servers, use `#{selfname} servers:add <name>` to create one."
|
|
68
|
+
end
|
|
69
|
+
ray = servers.get_array(arguments)
|
|
70
|
+
else
|
|
71
|
+
ray = []
|
|
72
|
+
keys.concat(["region"])
|
|
73
|
+
myopts = options.dup
|
|
74
|
+
Connection.instance.zones("Compute").each { |x|
|
|
75
|
+
myopts[:availability_zone] = x
|
|
76
|
+
Connection.instance.set_options(myopts)
|
|
77
|
+
zoneray = Servers.new.get_array(arguments)
|
|
78
|
+
zoneray.each { |srv| srv['region'] = x }
|
|
79
|
+
ray.concat(zoneray)
|
|
80
|
+
Connection.instance.clear_options()
|
|
81
|
+
}
|
|
82
|
+
end
|
|
83
|
+
if ray.empty?
|
|
84
|
+
@log.display "There are no servers that match the provided arguments"
|
|
85
|
+
else
|
|
86
|
+
Tableizer.new(options, keys, ray).print
|
|
87
|
+
end
|
|
88
|
+
}
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
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 "snapshots:add <name> <volume>", "Create a snapshot."
|
|
27
|
+
long_desc <<-DESC
|
|
28
|
+
Create a snapshot with the given name from a volume. Optionally, you can specify a description.
|
|
29
|
+
|
|
30
|
+
Examples:
|
|
31
|
+
hpcloud snapshots:add my_snapshot vol10 # Create the new snapshot 'my_snapshot' from the specified volume
|
|
32
|
+
hpcloud snapshots:add my_snapshot vol10 -d 'test vol' # Creates the new snapshot 'my_snapshot' from the specified volume with the description `test vol`
|
|
33
|
+
DESC
|
|
34
|
+
method_option :description,
|
|
35
|
+
:type => :string, :aliases => '-d',
|
|
36
|
+
:desc => 'Description of the snapshot.'
|
|
37
|
+
method_option :metadata,
|
|
38
|
+
:type => :string, :aliases => '-m',
|
|
39
|
+
:desc => 'Set the meta data.'
|
|
40
|
+
CLI.add_common_options
|
|
41
|
+
define_method "snapshots:add" do |name, volume_name_id|
|
|
42
|
+
cli_command(options) {
|
|
43
|
+
if Snapshots.new.get(name).is_valid? == true
|
|
44
|
+
@log.fatal "Snapshot with the name '#{name}' already exists"
|
|
45
|
+
end
|
|
46
|
+
vol = HP::Cloud::SnapshotHelper.new(Connection.instance)
|
|
47
|
+
vol.name = name
|
|
48
|
+
vol.description = options[:description]
|
|
49
|
+
if vol.set_volume(volume_name_id)
|
|
50
|
+
if vol.save == true
|
|
51
|
+
@log.display "Created snapshot '#{name}' from volume with id '#{vol.id}'."
|
|
52
|
+
else
|
|
53
|
+
@log.fatal vol.cstatus
|
|
54
|
+
end
|
|
55
|
+
else
|
|
56
|
+
@log.fatal "Cannot find volume '#{volume_name_id}'"
|
|
57
|
+
end
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
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(snapshots:rm snapshots:delete snapshots:del) => 'snapshots:remove'
|
|
27
|
+
|
|
28
|
+
desc "snapshots:remove <name_or_id> [name_or_id ...]", "Remove a snapshot or snapshots (specified by name or ID)."
|
|
29
|
+
long_desc <<-DESC
|
|
30
|
+
Remove snapshots by specifying their names or ID. Optionally, you can specify an availability zone.
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
hpcloud snapshots:remove snappy1 snappy2 # Delete the snapshots `snappy1` and `snappy2`
|
|
34
|
+
hpcloud snapshots:remove 53e78869 # Delete snapshot with the ID 53e78869
|
|
35
|
+
hpcloud snapshots:remove snappy -z az-2.region-a.geo-1 # Delete snapshot `snappy` for availability zone `az-2.region-a.geo-1`
|
|
36
|
+
|
|
37
|
+
Aliases: snapshots:rm, snapshots:delete, snapshots:del
|
|
38
|
+
DESC
|
|
39
|
+
CLI.add_common_options
|
|
40
|
+
define_method "snapshots:remove" do |name_or_id, *name_or_ids|
|
|
41
|
+
cli_command(options) {
|
|
42
|
+
name_or_ids = [name_or_id] + name_or_ids
|
|
43
|
+
snapshots = Snapshots.new.get(name_or_ids, false)
|
|
44
|
+
snapshots.each { |snapshot|
|
|
45
|
+
sub_command("removing snapshot") {
|
|
46
|
+
if snapshot.is_valid?
|
|
47
|
+
snapshot.destroy
|
|
48
|
+
@log.display "Removed snapshot '#{snapshot.name}'."
|
|
49
|
+
else
|
|
50
|
+
@log.error snapshot.cstatus
|
|
51
|
+
end
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
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/snapshots/add'
|
|
23
|
+
require 'hpcloud/commands/snapshots/remove'
|
|
24
|
+
require 'hpcloud/snapshots'
|
|
25
|
+
|
|
26
|
+
module HP
|
|
27
|
+
module Cloud
|
|
28
|
+
class CLI < Thor
|
|
29
|
+
|
|
30
|
+
map 'snapshots:list' => 'snapshots'
|
|
31
|
+
|
|
32
|
+
desc 'snapshots [name_or_id ...]', "List block devices available."
|
|
33
|
+
long_desc <<-DESC
|
|
34
|
+
Lists all block snapshots associated with the account on the server. The list starts with identifier and contains name, size, type, create date, status, description and servers to which it is attached. Optionally, you can filter the list by name or ID.
|
|
35
|
+
|
|
36
|
+
Examples:
|
|
37
|
+
hpcloud snapshots # List all snapshots
|
|
38
|
+
hpcloud snapshots b8e90a48 # List the detail information for snapshot `b8e90a48`
|
|
39
|
+
hpcloud snapshots testsnap # List the detail information about snapshot `testsnap`
|
|
40
|
+
|
|
41
|
+
Aliases: snapshots:list
|
|
42
|
+
DESC
|
|
43
|
+
CLI.add_report_options
|
|
44
|
+
CLI.add_common_options
|
|
45
|
+
def snapshots(*arguments)
|
|
46
|
+
cli_command(options) {
|
|
47
|
+
snapshots = Snapshots.new
|
|
48
|
+
if snapshots.empty?
|
|
49
|
+
@log.display "You currently have no block snapshot devices, use `#{selfname} snapshots:add <name>` to create one."
|
|
50
|
+
else
|
|
51
|
+
ray = snapshots.get_array(arguments)
|
|
52
|
+
if ray.empty?
|
|
53
|
+
@log.display "There are no snapshots that match the provided arguments"
|
|
54
|
+
else
|
|
55
|
+
Tableizer.new(options, SnapshotHelper.get_keys(), ray).print
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|