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,26 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Set the default api client in the config'
|
3
|
+
arg_name 'alias'
|
4
|
+
command [:client_default] do |c|
|
4
5
|
|
5
|
-
|
6
|
+
c.action do |global_options, options, args|
|
6
7
|
|
7
|
-
|
8
|
-
|
8
|
+
info "Using config file #{CONFIG.config_filename}"
|
9
|
+
calias = args.shift
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
if calias.nil?
|
12
|
+
raise "You must specify the api alias you want to set as the default"
|
13
|
+
end
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
client_config = CONFIG[calias]
|
16
|
+
if client_config.empty?
|
17
|
+
raise "An api client with the alias #{calias} does not exist in the config"
|
18
|
+
end
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
info "Setting #{calias} as default api client"
|
21
|
+
CONFIG['core']['default_client'] = calias
|
22
|
+
CONFIG.save!
|
22
23
|
|
24
|
+
end
|
23
25
|
end
|
24
26
|
end
|
@@ -1,22 +1,25 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Lists the api clients defined in the config'
|
3
|
+
command [:client_list] do |c|
|
3
4
|
|
4
|
-
|
5
|
+
c.action do |global_options, options, args|
|
5
6
|
|
6
|
-
|
7
|
+
info "Using config file #{CONFIG.config_filename}"
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
9
|
+
clients = CONFIG.clients.collect do |calias|
|
10
|
+
c = CONFIG[calias]
|
11
|
+
calias = calias + "*" if CONFIG.client_name == calias and CONFIG.clients.size > 1
|
12
|
+
{
|
13
|
+
:alias => calias,
|
14
|
+
:client_id => c["client_id"],
|
15
|
+
:secret => c["secret"],
|
16
|
+
:api_url => c["api_url"],
|
17
|
+
:auth_url => c["auth_url"] || c["api_url"]
|
18
|
+
}
|
19
|
+
end
|
19
20
|
|
20
|
-
|
21
|
+
render_table clients, :fields => [:alias, :client_id, :secret, :api_url, :auth_url]
|
22
|
+
end
|
21
23
|
end
|
24
|
+
|
22
25
|
end
|
@@ -1,25 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Remove api client details from config'
|
3
|
+
arg_name 'alias'
|
4
|
+
command [:client_remove] do |c|
|
4
5
|
|
5
|
-
|
6
|
+
c.action do |global_options, options, args|
|
6
7
|
|
7
|
-
|
8
|
+
info "Using config file #{CONFIG.config_filename}"
|
8
9
|
|
9
|
-
|
10
|
+
calias = args.shift
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
if calias.nil?
|
13
|
+
raise "You must specify the api alias you want to remove"
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
client_config = CONFIG[calias]
|
17
|
+
if client_config.empty?
|
18
|
+
raise "An api client with alias #{calias} does not exist in the config"
|
19
|
+
end
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
info "Removing api client #{calias}"
|
22
|
+
CONFIG.delete_section calias
|
23
|
+
CONFIG.save!
|
23
24
|
|
25
|
+
end
|
24
26
|
end
|
25
27
|
end
|
@@ -1,24 +1,26 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Destroy images'
|
3
|
+
arg_name 'image-id...'
|
4
|
+
command [:destroy] 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 images you want to destroy"
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
images = Image.find_or_call(args) do |id|
|
13
|
+
raise "Couldn't find image #{id}"
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
images.each do |i|
|
17
|
+
info "Destroying image #{i}"
|
18
|
+
i.destroy
|
19
|
+
i.reload
|
20
|
+
end
|
20
21
|
|
21
|
-
|
22
|
+
render_table(images)
|
22
23
|
|
24
|
+
end
|
23
25
|
end
|
24
26
|
end
|
@@ -1,26 +1,28 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'List available images'
|
3
|
+
arg_name '[image-id...]'
|
4
|
+
command [:list] do |c|
|
5
|
+
c.action do |global_options, options, args|
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
if args.empty?
|
8
|
+
images = Image.find(:all)
|
9
|
+
else
|
10
|
+
images = Image.find_or_call(args) do |id|
|
11
|
+
warn "Couldn't find image #{id}"
|
12
|
+
end
|
11
13
|
end
|
12
|
-
end
|
13
14
|
|
14
|
-
|
15
|
+
snapshots = images.select { |i| i.source_type == 'snapshot' }
|
15
16
|
|
16
|
-
|
17
|
+
images = images - snapshots
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
images.sort! do |a,b|
|
20
|
+
[a.official ? 0 : 1, a.name, a.arch] <=> [b.official ? 0 : 1, b.name, b.arch]
|
21
|
+
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
snapshots.sort! { |a, b| a.created_at <=> b.created_at }
|
24
|
+
|
25
|
+
render_table(images + snapshots, global_options)
|
26
|
+
end
|
25
27
|
end
|
26
28
|
end
|
@@ -1,31 +1,33 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Register an image'
|
3
|
+
command [:register] do |c|
|
3
4
|
|
4
|
-
|
5
|
-
|
5
|
+
c.desc "Name to give the image"
|
6
|
+
c.flag [:n, "name"]
|
6
7
|
|
7
|
-
|
8
|
-
|
8
|
+
c.desc "Archtecture of the image (i686 or x86_64)"
|
9
|
+
c.flag [:a, "arch"]
|
9
10
|
|
10
|
-
|
11
|
-
|
11
|
+
c.desc "Source filename of the image you uploaded to the image library"
|
12
|
+
c.flag [:s, "source"]
|
12
13
|
|
13
|
-
|
14
|
-
|
14
|
+
c.desc "This image does not support virtio so needs 'compatibility mode'"
|
15
|
+
c.switch [:c, "compatibility"]
|
15
16
|
|
16
|
-
|
17
|
-
|
17
|
+
c.desc "Image description"
|
18
|
+
c.flag [:d, "description"]
|
18
19
|
|
19
|
-
|
20
|
+
c.action do |global_options,options,args|
|
20
21
|
|
21
|
-
|
22
|
-
|
22
|
+
raise "You must specify the architecture" unless options[:a]
|
23
|
+
raise "You must specify the source filename" unless options[:s]
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
image = Image.register :name => options[:n], :arch => options[:a],
|
26
|
+
:source => options[:s], :compatibility_mode => options[:c],
|
27
|
+
:description => options[:d]
|
27
28
|
|
28
|
-
|
29
|
+
render_table([image])
|
29
30
|
|
31
|
+
end
|
30
32
|
end
|
31
33
|
end
|
@@ -1,23 +1,25 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Show detailed image info'
|
3
|
+
arg_name 'image-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 images you want to show"
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
images = Image.find_or_call(args) do |id|
|
13
|
+
warn "Couldn't find image #{id}"
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
table_opts = global_options.merge({
|
17
|
+
:vertical => true,
|
18
|
+
:fields => [:id, :type, :owner, :created_at, :status, :arch, :name, :description, :virtual_size, :disk_size, "compatibility_mode", :official, :ancestor_id ]
|
19
|
+
})
|
19
20
|
|
20
|
-
|
21
|
+
render_table(images, table_opts)
|
21
22
|
|
23
|
+
end
|
22
24
|
end
|
23
25
|
end
|
@@ -1,20 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Add nodes to a load balancer'
|
3
|
+
arg_name 'lb-id node-id...'
|
4
|
+
command [:add_nodes] do |c|
|
4
5
|
|
5
|
-
|
6
|
+
c.action do |global_options, options, args|
|
6
7
|
|
7
|
-
|
8
|
+
raise "You must specify the load balancer and the node ids to add" if args.size < 2
|
8
9
|
|
9
|
-
|
10
|
+
lb = LoadBalancer.find(args.shift)
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
nodes = Server.find_or_call(args) do |id|
|
13
|
+
raise "Couldn't find server #{id}"
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
info "Adding #{nodes.size} nodes to load balancer #{lb.id}"
|
17
|
+
lb.add_nodes nodes
|
18
|
+
lb.reload
|
19
|
+
render_table([lb], global_options)
|
20
|
+
end
|
19
21
|
end
|
20
22
|
end
|
@@ -1,87 +1,89 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
module Brightbox
|
2
|
+
desc 'Create a load balancer'
|
3
|
+
long_desc "All intervals and timeouts are in milliseconds"
|
4
|
+
arg_name 'srv-id...'
|
5
|
+
command [:create] do |c|
|
5
6
|
|
6
|
-
|
7
|
-
|
7
|
+
c.desc "Friendly name of load balancer"
|
8
|
+
c.flag [:n, :name]
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
c.desc "Load balancer policy"
|
11
|
+
c.default_value "least-connections"
|
12
|
+
c.flag [:p, :policy]
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
c.desc "Listeners. Format: in-port:out-port:type. Comma separate multiple listeners."
|
15
|
+
c.default_value "80:80:http,443:443:tcp"
|
16
|
+
c.flag [:l, :listeners]
|
16
17
|
|
17
|
-
|
18
|
-
|
18
|
+
c.desc "Healthcheck port. Defaults to first listener out port."
|
19
|
+
c.flag [:k, "hc-port"]
|
19
20
|
|
20
|
-
|
21
|
-
|
21
|
+
c.desc "Healthcheck type. Defaults to first listener protocol."
|
22
|
+
c.flag [:y, "hc-type"]
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
c.desc "Healthcheck timeout"
|
25
|
+
c.default_value "5000"
|
26
|
+
c.flag [:t, "hc-timeout"]
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
c.desc "Healthcheck request. When the type is 'http' this is the url to request."
|
29
|
+
c.default_value "/"
|
30
|
+
c.flag [:s, "hc-request"]
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
c.desc "Healthcheck interval"
|
33
|
+
c.default_value "5000"
|
34
|
+
c.flag [:e, "hc-interval"]
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
c.desc "Healthcheck threshold up. Number of successful healthchecks for the node to be considered up."
|
37
|
+
c.default_value "3"
|
38
|
+
c.flag [:u, "hc-up"]
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
|
40
|
+
c.desc "Healthcheck threshold down. Number of failed healthchecks for the node to be considered down."
|
41
|
+
c.default_value "3"
|
42
|
+
c.flag [:d, "hc-down"]
|
42
43
|
|
43
|
-
|
44
|
+
c.action do |global_options, options, args|
|
44
45
|
|
45
|
-
|
46
|
+
raise "You must specify which servers to balance connections to" if args.empty?
|
46
47
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
48
|
+
listeners = options[:l].split(",").collect do |l|
|
49
|
+
inport, outport, protocol = l.split ":"
|
50
|
+
raise "listener '#{l}' is invalid" if inport.nil? or outport.nil? or protocol.nil?
|
51
|
+
{ :in => inport, :out => outport, :protocol => protocol }
|
52
|
+
end
|
52
53
|
|
53
|
-
|
54
|
+
raise "You must specify at least one listener" if listeners.empty?
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
56
|
+
# Setup default healthcheck port if not specified
|
57
|
+
if options[:k].nil?
|
58
|
+
options[:k] = listeners.first[:out]
|
59
|
+
end
|
59
60
|
|
60
|
-
|
61
|
-
|
62
|
-
|
61
|
+
if options[:y].nil?
|
62
|
+
options[:y] = listeners.first[:protocol]
|
63
|
+
end
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
65
|
+
hc_arg_lookup = { :k => :port, :y => :type, :t => :timeout, :s =>
|
66
|
+
:request, :e => :interval, :u => :threshold_up, :d =>
|
67
|
+
:threshold_down }
|
67
68
|
|
68
|
-
|
69
|
+
healthcheck = {}
|
69
70
|
|
70
|
-
|
71
|
-
|
72
|
-
|
71
|
+
options.keys.each do |k|
|
72
|
+
if options[k] and hc_arg_lookup[k]
|
73
|
+
healthcheck[hc_arg_lookup[k]] = options[k]
|
74
|
+
end
|
73
75
|
end
|
74
|
-
end
|
75
76
|
|
76
|
-
|
77
|
+
nodes = args.collect { |i| { :node => i } }
|
77
78
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
79
|
+
msg = "Creating a new load balancer"
|
80
|
+
info msg
|
81
|
+
lb = LoadBalancer.create(:policy => options[:policy],
|
82
|
+
:name => options[:n],
|
83
|
+
:healthcheck => healthcheck,
|
84
|
+
:listeners => listeners,
|
85
|
+
:nodes => nodes)
|
86
|
+
render_table([lb], global_options)
|
87
|
+
end
|
86
88
|
end
|
87
89
|
end
|