bbcloud 0.11.2 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -2
- data/Gemfile +3 -0
- data/README +11 -1
- data/README.rdoc +11 -1
- data/Rakefile +12 -0
- data/bbcloud.gemspec +10 -10
- data/bin/brightbox-accounts +7 -2
- data/bin/brightbox-cloudips +7 -2
- data/bin/brightbox-config +7 -2
- data/bin/brightbox-images +7 -2
- data/bin/brightbox-lbs +7 -2
- data/bin/brightbox-servers +7 -2
- data/bin/brightbox-types +7 -2
- data/bin/brightbox-users +7 -2
- data/bin/brightbox-zones +7 -2
- data/lib/bbcloud.rb +43 -0
- data/lib/bbcloud/accounts.rb +5 -3
- data/lib/bbcloud/command_generator.rb +50 -0
- data/lib/bbcloud/commands/accounts-list.rb +13 -11
- data/lib/bbcloud/commands/accounts-reset-ftp-password.rb +26 -23
- data/lib/bbcloud/commands/accounts-show.rb +20 -16
- data/lib/bbcloud/commands/cloudips-create.rb +16 -14
- data/lib/bbcloud/commands/cloudips-destroy.rb +29 -26
- data/lib/bbcloud/commands/cloudips-list.rb +13 -11
- data/lib/bbcloud/commands/cloudips-map.rb +48 -46
- data/lib/bbcloud/commands/cloudips-show.rb +15 -12
- data/lib/bbcloud/commands/cloudips-unmap.rb +28 -25
- data/lib/bbcloud/commands/config-client-add.rb +33 -31
- data/lib/bbcloud/commands/config-client-default.rb +18 -16
- data/lib/bbcloud/commands/config-client-list.rb +19 -16
- data/lib/bbcloud/commands/config-client-remove.rb +18 -16
- data/lib/bbcloud/commands/images-destroy.rb +18 -16
- data/lib/bbcloud/commands/images-list.rb +20 -18
- data/lib/bbcloud/commands/images-register.rb +21 -19
- data/lib/bbcloud/commands/images-show.rb +17 -15
- data/lib/bbcloud/commands/lbs-add-nodes.rb +15 -13
- data/lib/bbcloud/commands/lbs-create.rb +65 -63
- data/lib/bbcloud/commands/lbs-destroy.rb +13 -11
- data/lib/bbcloud/commands/lbs-list.rb +13 -11
- data/lib/bbcloud/commands/lbs-remove-nodes.rb +15 -13
- data/lib/bbcloud/commands/lbs-show.rb +15 -13
- data/lib/bbcloud/commands/lbs-update.rb +59 -57
- data/lib/bbcloud/commands/servers-activate-cloud.rb +18 -16
- data/lib/bbcloud/commands/servers-create.rb +80 -77
- data/lib/bbcloud/commands/servers-destroy.rb +17 -15
- data/lib/bbcloud/commands/servers-list.rb +14 -14
- data/lib/bbcloud/commands/servers-show.rb +39 -37
- data/lib/bbcloud/commands/servers-shutdown.rb +14 -12
- data/lib/bbcloud/commands/servers-snapshot.rb +14 -12
- data/lib/bbcloud/commands/servers-start.rb +15 -13
- data/lib/bbcloud/commands/servers-stop.rb +14 -12
- data/lib/bbcloud/commands/types-list.rb +13 -11
- data/lib/bbcloud/commands/types-show.rb +18 -16
- data/lib/bbcloud/commands/users-list.rb +13 -11
- data/lib/bbcloud/commands/users-show.rb +17 -15
- data/lib/bbcloud/commands/users-update.rb +27 -25
- data/lib/bbcloud/commands/zones-list.rb +13 -11
- data/lib/bbcloud/config.rb +125 -111
- data/lib/bbcloud/error_parser.rb +34 -0
- data/lib/bbcloud/fog_extensions.rb +19 -0
- data/lib/bbcloud/gli_global_hooks.rb +56 -0
- data/lib/bbcloud/logging.rb +40 -0
- data/lib/bbcloud/ruby_core_ext.rb +9 -0
- data/lib/bbcloud/servers.rb +7 -2
- data/lib/bbcloud/tables.rb +78 -73
- data/lib/bbcloud/vendor/gli/.gitignore +10 -0
- data/lib/bbcloud/vendor/gli/.rvmrc +1 -0
- data/lib/bbcloud/vendor/gli/Gemfile +5 -0
- data/lib/bbcloud/vendor/gli/LICENSE.txt +201 -0
- data/lib/bbcloud/vendor/gli/README.rdoc +54 -0
- data/lib/bbcloud/vendor/gli/Rakefile +84 -0
- data/lib/bbcloud/vendor/gli/bin/gli +72 -0
- data/lib/bbcloud/vendor/gli/bin/report_on_rake_results +10 -0
- data/lib/bbcloud/vendor/gli/bin/test_all_rubies.sh +2 -0
- data/lib/bbcloud/vendor/gli/features/gli_executable.feature +88 -0
- data/lib/bbcloud/vendor/gli/features/gli_init.feature +122 -0
- data/lib/bbcloud/vendor/gli/features/step_definitions/gli_executable_steps.rb +12 -0
- data/lib/bbcloud/vendor/gli/features/step_definitions/gli_init_steps.rb +4 -0
- data/lib/bbcloud/vendor/gli/features/support/env.rb +21 -0
- data/lib/bbcloud/vendor/gli/gli.cheat +80 -0
- data/lib/bbcloud/vendor/gli/gli.gemspec +46 -0
- data/lib/bbcloud/vendor/gli/gli.rdoc +51 -0
- data/lib/bbcloud/vendor/gli/lib/gli.rb +560 -0
- data/lib/bbcloud/vendor/gli/lib/gli/command.rb +124 -0
- data/lib/bbcloud/vendor/gli/lib/gli/command_line_token.rb +58 -0
- data/lib/bbcloud/vendor/gli/lib/gli/copy_options_to_aliases.rb +33 -0
- data/lib/bbcloud/vendor/gli/lib/gli/exceptions.rb +45 -0
- data/lib/bbcloud/vendor/gli/lib/gli/flag.rb +67 -0
- data/lib/bbcloud/vendor/gli/lib/gli/options.rb +19 -0
- data/lib/bbcloud/vendor/gli/lib/gli/switch.rb +63 -0
- data/lib/bbcloud/vendor/gli/lib/gli/terminal.rb +79 -0
- data/lib/bbcloud/vendor/gli/lib/gli_version.rb +3 -0
- data/lib/bbcloud/vendor/gli/lib/support/help.rb +180 -0
- data/lib/bbcloud/vendor/gli/lib/support/initconfig.rb +34 -0
- data/lib/bbcloud/vendor/gli/lib/support/rdoc.rb +119 -0
- data/lib/bbcloud/vendor/gli/lib/support/scaffold.rb +284 -0
- data/lib/bbcloud/vendor/gli/test/config.yaml +9 -0
- data/lib/bbcloud/vendor/gli/test/gli.reek +116 -0
- data/lib/bbcloud/vendor/gli/test/roodi.yaml +9 -0
- data/lib/bbcloud/vendor/gli/test/tc_command.rb +329 -0
- data/lib/bbcloud/vendor/gli/test/tc_flag.rb +67 -0
- data/lib/bbcloud/vendor/gli/test/tc_gli.rb +429 -0
- data/lib/bbcloud/vendor/gli/test/tc_options.rb +31 -0
- data/lib/bbcloud/vendor/gli/test/tc_parsing.rb +279 -0
- data/lib/bbcloud/vendor/gli/test/tc_switch.rb +80 -0
- data/lib/bbcloud/vendor/gli/test/tc_terminal.rb +91 -0
- data/lib/bbcloud/version.rb +1 -1
- data/pkg/bbcloud-0.12.0.gem +0 -0
- data/spec/fixtures/vcr_cassettes/server_list.yml +117 -0
- data/spec/servers_spec.rb +36 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/support/common_helpers.rb +47 -0
- metadata +129 -135
- data/lib/bbcloud/cli.rb +0 -160
- data/lib/bbcloud/vendor/fog/lib/fog.rb +0 -14
- data/lib/bbcloud/vendor/fog/lib/fog/compute.rb +0 -43
- data/lib/bbcloud/vendor/fog/lib/fog/compute/brightbox.rb +0 -162
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/account.rb +0 -51
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/cloud_ip.rb +0 -47
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/cloud_ips.rb +0 -34
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/flavor.rb +0 -33
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/flavors.rb +0 -28
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/image.rb +0 -56
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/images.rb +0 -28
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/load_balancer.rb +0 -50
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/load_balancers.rb +0 -28
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/server.rb +0 -108
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/servers.rb +0 -29
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/user.rb +0 -39
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/users.rb +0 -29
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/zone.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/zones.rb +0 -29
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/activate_console_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_api_client.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_image.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_load_balancer.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_server.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_api_client.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_image.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_account.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_api_client.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_image.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_interface.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_server_type.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_user.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_zone.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_api_clients.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_images.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_load_balancers.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_server_types.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_servers.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_users.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_zones.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/resize_server.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/shutdown_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/snapshot_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/start_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/stop_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_account.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_api_client.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_image.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_load_balancer.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_server.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_user.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/core.rb +0 -32
- data/lib/bbcloud/vendor/fog/lib/fog/core/attributes.rb +0 -178
- data/lib/bbcloud/vendor/fog/lib/fog/core/collection.rb +0 -127
- data/lib/bbcloud/vendor/fog/lib/fog/core/connection.rb +0 -35
- data/lib/bbcloud/vendor/fog/lib/fog/core/credentials.rb +0 -92
- data/lib/bbcloud/vendor/fog/lib/fog/core/deprecation.rb +0 -23
- data/lib/bbcloud/vendor/fog/lib/fog/core/errors.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/core/hmac.rb +0 -48
- data/lib/bbcloud/vendor/fog/lib/fog/core/mock.rb +0 -68
- data/lib/bbcloud/vendor/fog/lib/fog/core/model.rb +0 -57
- data/lib/bbcloud/vendor/fog/lib/fog/core/parser.rb +0 -99
- data/lib/bbcloud/vendor/fog/lib/fog/core/provider.rb +0 -18
- data/lib/bbcloud/vendor/fog/lib/fog/core/scp.rb +0 -67
- data/lib/bbcloud/vendor/fog/lib/fog/core/service.rb +0 -175
- data/lib/bbcloud/vendor/fog/lib/fog/core/ssh.rb +0 -120
- data/lib/bbcloud/vendor/fog/lib/fog/core/time.rb +0 -27
- data/lib/bbcloud/vendor/fog/lib/fog/core/wait_for.rb +0 -17
- data/lib/bbcloud/vendor/fog/lib/fog/providers.rb +0 -9
- data/lib/bbcloud/vendor/fog/lib/fog/providers/brightbox.rb +0 -9
@@ -1,24 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Show detailed account info'
|
3
|
+
arg_name 'account-id...'
|
4
|
+
command [:show] do |c|
|
4
5
|
|
5
|
-
|
6
|
+
c.action do |global_options,options,args|
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
if args.empty?
|
9
|
+
raise "You must specify the accounts to show"
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
accounts = Account.find_or_call(args) do |id|
|
13
|
+
warn "Couldn't find account #{id}"
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
table_opts = global_options.merge({
|
17
|
+
:vertical => true,
|
18
|
+
:fields => [:id, :name, :cloud_ip_limit, :ram_limit, :ram_used,
|
19
|
+
:ram_free, :library_ftp_host, :library_ftp_user ]
|
20
|
+
})
|
20
21
|
|
21
|
-
|
22
|
+
render_table(accounts, table_opts)
|
22
23
|
|
24
|
+
end
|
23
25
|
end
|
24
26
|
end
|
27
|
+
|
28
|
+
|
@@ -1,21 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Create a new cloud ip'
|
3
|
+
command [:create] do |c|
|
4
|
+
c.desc "Number of cloud ips to create"
|
5
|
+
c.default_value 1
|
6
|
+
c.flag [:i, "count"]
|
6
7
|
|
7
|
-
|
8
|
+
c.action do |global_options, options, args|
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
if options[:i].to_s !~ /^[0-9]+$/
|
11
|
+
raise "count must be a number"
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
+
options[:i] = options[:i].to_i
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
ips = []
|
17
|
+
options[:i].times do
|
18
|
+
ips << CloudIP.create
|
19
|
+
end
|
20
|
+
render_table(ips, global_options)
|
18
21
|
end
|
19
|
-
render_table(ips, global_options)
|
20
22
|
end
|
21
23
|
end
|
@@ -1,37 +1,40 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'destroy Cloud IPs'
|
3
|
+
arg_name '[cloudip-id...]'
|
4
|
+
command [:destroy] do |c|
|
5
|
+
c.desc "Unmap mapped ips before destroying them"
|
6
|
+
c.switch [:u, "unmap"]
|
6
7
|
|
7
|
-
|
8
|
+
c.action do |global_options,options,args|
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
if args.empty?
|
11
|
+
raise "You must specify the cloud ips you want to destroy"
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
ips = CloudIP.find_or_call(args) do |id|
|
15
|
+
raise "Couldn't find cloud ip #{id}"
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
+
ips.each do |ip|
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
if ip.mapped?
|
21
|
+
if options[:u]
|
22
|
+
info "Unmapping cloud ip #{ip}"
|
23
|
+
ip.unmap
|
24
|
+
3.times do
|
25
|
+
break unless ip.mapped?
|
26
|
+
sleep 1
|
27
|
+
ip.reload
|
28
|
+
end
|
29
|
+
else
|
30
|
+
raise "Cannot destroy mapped cloud ip #{ip}"
|
27
31
|
end
|
28
|
-
else
|
29
|
-
raise "Cannot destroy mapped cloud ip #{ip}"
|
30
32
|
end
|
33
|
+
info "Destroying cloud ip #{ip}"
|
34
|
+
ip.destroy
|
31
35
|
end
|
32
|
-
info "Destroying cloud ip #{ip}"
|
33
|
-
ip.destroy
|
34
|
-
end
|
35
36
|
|
37
|
+
end
|
36
38
|
end
|
39
|
+
|
37
40
|
end
|
@@ -1,17 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'List CloudIPs'
|
3
|
+
arg_name '[cloudip-id...]'
|
4
|
+
command [:list] do |c|
|
4
5
|
|
5
|
-
|
6
|
+
c.action do |global_options,options,args|
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
if args.empty?
|
9
|
+
ips = CloudIP.find(:all)
|
10
|
+
else
|
11
|
+
ips = CloudIP.find_or_call(args) do |id|
|
12
|
+
warn "Couldn't find cloud ip #{id}"
|
13
|
+
end
|
12
14
|
end
|
13
|
-
end
|
14
15
|
|
15
|
-
|
16
|
+
render_table(ips.sort, global_options)
|
17
|
+
end
|
16
18
|
end
|
17
19
|
end
|
@@ -1,58 +1,60 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'map Cloud IPs'
|
3
|
+
arg_name 'cloudip-id destination'
|
4
|
+
command [:map] do |c|
|
5
|
+
c.desc "Unmap mapped ips before remapping them"
|
6
|
+
c.switch [:u, "unmap"]
|
6
7
|
|
7
|
-
|
8
|
+
c.action do |global_options,options,args|
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
if args.size > 2
|
11
|
+
raise "Too many arguments"
|
12
|
+
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
if args.size < 2
|
15
|
+
raise "You must specify the cloud ip id and the destination"
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
ip = CloudIP.find ip_id
|
20
|
-
|
21
|
-
destination_id = args.last
|
22
|
-
case destination_id
|
23
|
-
when /^srv\-/
|
24
|
-
server = Server.find destination_id
|
25
|
-
destination_id = server.interfaces.first["id"]
|
26
|
-
info "Mapping #{ip} to interface #{destination_id} on #{server}"
|
27
|
-
when /^lba\-/
|
28
|
-
lb = LoadBalancer.find destination_id
|
29
|
-
info "Mapping #{ip} to load balancer #{lb}"
|
30
|
-
else
|
31
|
-
raise "Unknown destination '#{destination_id}'"
|
32
|
-
end
|
18
|
+
ip_id = args.first
|
33
19
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
20
|
+
ip = CloudIP.find ip_id
|
21
|
+
|
22
|
+
destination_id = args.last
|
23
|
+
case destination_id
|
24
|
+
when /^srv\-/
|
25
|
+
server = Server.find destination_id
|
26
|
+
destination_id = server.interfaces.first["id"]
|
27
|
+
info "Mapping #{ip} to interface #{destination_id} on #{server}"
|
28
|
+
when /^lba\-/
|
29
|
+
lb = LoadBalancer.find destination_id
|
30
|
+
info "Mapping #{ip} to load balancer #{lb}"
|
42
31
|
else
|
43
|
-
raise "
|
32
|
+
raise "Unknown destination '#{destination_id}'"
|
44
33
|
end
|
45
|
-
end
|
46
34
|
|
47
|
-
|
35
|
+
if ip.mapped?
|
36
|
+
if options[:u]
|
37
|
+
ip.unmap
|
38
|
+
3.times do
|
39
|
+
break unless ip.mapped?
|
40
|
+
sleep 1
|
41
|
+
ip.reload
|
42
|
+
end
|
43
|
+
else
|
44
|
+
raise "Refusing to map already mapped ip #{ip}"
|
45
|
+
end
|
46
|
+
end
|
48
47
|
|
49
|
-
|
50
|
-
3.times do
|
51
|
-
ip.reload
|
52
|
-
break if ip.mapped?
|
53
|
-
sleep 1
|
54
|
-
end
|
48
|
+
ip.map destination_id
|
55
49
|
|
56
|
-
|
50
|
+
# Wait up to 3 seconds for mapping to complete
|
51
|
+
3.times do
|
52
|
+
ip.reload
|
53
|
+
break if ip.mapped?
|
54
|
+
sleep 1
|
55
|
+
end
|
56
|
+
|
57
|
+
render_table([ip], global_options)
|
58
|
+
end
|
57
59
|
end
|
58
60
|
end
|
@@ -1,19 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'show details on Cloud IPs'
|
3
|
+
arg_name 'cloudip-id...'
|
4
|
+
command [:show] do |c|
|
4
5
|
|
5
|
-
|
6
|
+
c.action do |global_options,options,args|
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
if args.empty?
|
9
|
+
raise "You must specify the cloud ips you want to show"
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
ips = CloudIP.find_or_call(args) do |id|
|
13
|
+
warn "Couldn't find cloud ip #{id}"
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
+
fields = [:id, :status, :public_ip, :reverse_dns, :destination, :interface_id]
|
16
17
|
|
17
|
-
|
18
|
+
render_table(ips.compact, global_options.merge({ :vertical => true, :fields => fields}))
|
19
|
+
end
|
18
20
|
end
|
21
|
+
|
19
22
|
end
|
@@ -1,34 +1,37 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'unmap Cloud IPs'
|
3
|
+
arg_name 'cloudip-id...'
|
4
|
+
command [:unmap] do |c|
|
4
5
|
|
5
|
-
|
6
|
+
c.action do |global_options,options,args|
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
if args.empty?
|
9
|
+
raise "You must specify the cloud ips you want to unmap"
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
ips = CloudIP.find_or_call(args) do |id|
|
13
|
+
raise "Couldn't find cloud ip #{id}"
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
16
|
+
ips.each do |ip|
|
17
|
+
if ip.mapped?
|
18
|
+
info "Unmapping cloud ip #{ip}"
|
19
|
+
ip.unmap
|
20
|
+
ip.reload
|
21
|
+
else
|
22
|
+
warn "Cloud ip #{ip} already unmapped"
|
23
|
+
end
|
22
24
|
end
|
23
|
-
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
# Wait up to 3 seconds for unmapping to complete
|
27
|
+
3.times do
|
28
|
+
break unless ips.find { |ip| ip.mapped? }
|
29
|
+
sleep 1
|
30
|
+
ips.each { |ip| ip.reload if ip.mapped? }
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
+
render_table(ips, global_options)
|
34
|
+
end
|
33
35
|
end
|
36
|
+
|
34
37
|
end
|
@@ -1,45 +1,47 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Add new api client details to config'
|
3
|
+
arg_name 'client-id secret [api_url, auth_url]'
|
4
|
+
command [:client_add] do |c|
|
4
5
|
|
5
|
-
|
6
|
-
|
6
|
+
c.desc "api client alias, for local reference (defaults to client-id)"
|
7
|
+
c.flag [:a, "alias"]
|
7
8
|
|
8
|
-
|
9
|
-
|
9
|
+
c.desc "auth url"
|
10
|
+
c.flag [:t, "auth-url"]
|
10
11
|
|
11
|
-
|
12
|
+
c.action do |global_options, options, args|
|
12
13
|
|
13
|
-
|
14
|
+
info "Using config file #{CONFIG.config_filename}"
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
client_id = args.shift
|
17
|
+
secret = args.shift
|
18
|
+
api_url = args.shift || "https://api.gb1.brightbox.com"
|
19
|
+
auth_url = args.shift || api_url
|
20
|
+
calias = options[:a] || client_id
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
if client_id.nil?
|
23
|
+
raise "You must specify the api client-id"
|
24
|
+
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
26
|
+
if secret.nil?
|
27
|
+
raise "You must specify the api secret"
|
28
|
+
end
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
client_config = CONFIG[calias]
|
31
|
+
unless client_config.empty?
|
32
|
+
raise "An api client with the id or alias #{calias} already exists"
|
33
|
+
end
|
33
34
|
|
34
|
-
|
35
|
+
info "Creating new api client config #{calias}"
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
client_config['alias'] = calias
|
38
|
+
client_config['client_id'] = client_id
|
39
|
+
client_config['secret'] = secret
|
40
|
+
client_config['api_url'] = api_url
|
41
|
+
client_config['auth_url'] = auth_url
|
41
42
|
|
42
|
-
|
43
|
+
CONFIG.save!
|
43
44
|
|
45
|
+
end
|
44
46
|
end
|
45
47
|
end
|