vagrant-rimu 0.0.2 → 0.0.3

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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +3 -2
  3. data/.travis.yml +3 -1
  4. data/Gemfile +3 -1
  5. data/README.md +1 -2
  6. data/Rakefile +6 -3
  7. data/gemfiles/vagrant_1.5.gemfile +3 -1
  8. data/gemfiles/vagrant_1.6.gemfile +5 -3
  9. data/gemfiles/vagrant_1.7.gemfile +10 -8
  10. data/lib/vagrant-rimu/actions/abstract_action.rb +20 -0
  11. data/lib/vagrant-rimu/actions/billing_methods.rb +11 -4
  12. data/lib/vagrant-rimu/actions/connect_to_rimu.rb +5 -3
  13. data/lib/vagrant-rimu/actions/create.rb +8 -3
  14. data/lib/vagrant-rimu/actions/is_created.rb +4 -2
  15. data/lib/vagrant-rimu/actions/is_stopped.rb +4 -2
  16. data/lib/vagrant-rimu/actions/list_distributions.rb +11 -4
  17. data/lib/vagrant-rimu/actions/list_servers.rb +11 -6
  18. data/lib/vagrant-rimu/actions/message_already_created.rb +4 -2
  19. data/lib/vagrant-rimu/actions/message_already_off.rb +4 -2
  20. data/lib/vagrant-rimu/actions/message_not_created.rb +4 -2
  21. data/lib/vagrant-rimu/actions/message_will_not_destroy.rb +4 -2
  22. data/lib/vagrant-rimu/actions/modify_provision_path.rb +4 -2
  23. data/lib/vagrant-rimu/actions/move.rb +26 -3
  24. data/lib/vagrant-rimu/actions/read_ssh_info.rb +4 -2
  25. data/lib/vagrant-rimu/actions/read_state.rb +4 -2
  26. data/lib/vagrant-rimu/actions/rebuild.rb +7 -2
  27. data/lib/vagrant-rimu/actions/reload.rb +4 -2
  28. data/lib/vagrant-rimu/actions/setup_sudo.rb +15 -8
  29. data/lib/vagrant-rimu/actions/setup_user.rb +35 -24
  30. data/lib/vagrant-rimu/actions/start_instance.rb +4 -2
  31. data/lib/vagrant-rimu/actions/stop_instance.rb +11 -5
  32. data/lib/vagrant-rimu/actions/terminate_instance.rb +4 -2
  33. data/lib/vagrant-rimu/actions.rb +1 -0
  34. data/lib/vagrant-rimu/commands/abstract_command.rb +47 -0
  35. data/lib/vagrant-rimu/commands/billing_methods.rb +10 -10
  36. data/lib/vagrant-rimu/commands/distributions.rb +10 -10
  37. data/lib/vagrant-rimu/commands/list_servers.rb +10 -10
  38. data/lib/vagrant-rimu/commands/move.rb +10 -10
  39. data/lib/vagrant-rimu/commands/rebuild.rb +9 -10
  40. data/lib/vagrant-rimu/commands/rimu_command.rb +13 -0
  41. data/lib/vagrant-rimu/commands/root.rb +26 -43
  42. data/lib/vagrant-rimu/commands/utils.rb +22 -0
  43. data/lib/vagrant-rimu/config.rb +1 -0
  44. data/lib/vagrant-rimu/errors.rb +4 -0
  45. data/lib/vagrant-rimu/version.rb +1 -1
  46. data/locales/en.yml +50 -19
  47. data/spec/vagrant-rimu/actions/billing_methods_spec.rb +4 -4
  48. data/spec/vagrant-rimu/actions/create_spec.rb +164 -0
  49. data/spec/vagrant-rimu/actions/list_distributions_spec.rb +4 -4
  50. data/spec/vagrant-rimu/actions/list_servers_spec.rb +4 -4
  51. data/spec/vagrant-rimu/actions/move_spec.rb +75 -0
  52. data/spec/vagrant-rimu/commands/billing_methods_spec.rb +17 -0
  53. data/spec/vagrant-rimu/commands/distributions_spec.rb +17 -0
  54. data/spec/vagrant-rimu/commands/list_servers_spec.rb +17 -0
  55. data/spec/vagrant-rimu/commands/move_spec.rb +17 -0
  56. data/spec/vagrant-rimu/commands/rebuild_spec.rb +17 -0
  57. data/test/Vagrantfile +1 -1
  58. data/vagrant-rimu.gemspec +2 -0
  59. metadata +58 -22
@@ -1,16 +1,18 @@
1
1
  require 'log4r'
2
2
 
3
+ require 'vagrant-rimu/actions/abstract_action'
4
+
3
5
  module VagrantPlugins
4
6
  module Rimu
5
7
  module Actions
6
- class SetupSudo
8
+ class SetupSudo < AbstractAction
7
9
  def initialize(app, env)
8
10
  @app = app
9
11
  @machine = env[:machine]
10
12
  @logger = Log4r::Logger.new('vagrant::rimu::setup_sudo')
11
13
  end
12
14
 
13
- def call(env)
15
+ def execute(env)
14
16
  # check if setup is enabled
15
17
  return @app.call(env) unless @machine.provider_config.setup?
16
18
 
@@ -18,10 +20,20 @@ module VagrantPlugins
18
20
  user = @machine.config.ssh.username
19
21
  @machine.config.ssh.username = 'root'
20
22
 
23
+ # modify the sudoers file
24
+ modify_sudo(env)
25
+
26
+ # reset ssh username
27
+ @machine.config.ssh.username = user
28
+
29
+ @app.call(env)
30
+ end
31
+
32
+ def modify_sudo(env)
21
33
  # check for guest name available in Vagrant 1.2 first
22
34
  guest_name = @machine.guest.name if @machine.guest.respond_to?(:name)
23
35
  guest_name ||= @machine.guest.to_s.downcase
24
-
36
+
25
37
  case guest_name
26
38
  when /redhat/
27
39
  env[:ui].info I18n.t('vagrant_rimu.modifying_sudo')
@@ -31,11 +43,6 @@ module VagrantPlugins
31
43
  sed -i'.bk' -e 's/\(Defaults\s\+requiretty\)/# \1/' /etc/sudoers
32
44
  BASH
33
45
  end
34
-
35
- # reset ssh username
36
- @machine.config.ssh.username = user
37
-
38
- @app.call(env)
39
46
  end
40
47
  end
41
48
  end
@@ -1,16 +1,19 @@
1
1
  require 'log4r'
2
2
 
3
+ require 'vagrant-rimu/actions/abstract_action'
4
+
3
5
  module VagrantPlugins
4
6
  module Rimu
5
7
  module Actions
6
- class SetupUser
8
+ class SetupUser < AbstractAction
7
9
  def initialize(app, env)
8
10
  @app = app
9
11
  @machine = env[:machine]
10
12
  @logger = Log4r::Logger.new('vagrant::rimu::setup_user')
11
13
  end
12
14
 
13
- def call(env)
15
+ # rubocop:disable Metrics/AbcSize
16
+ def execute(env)
14
17
  # check if setup is enabled
15
18
  return @app.call(env) unless @machine.provider_config.setup?
16
19
 
@@ -21,30 +24,22 @@ module VagrantPlugins
21
24
  user = @machine.config.ssh.username
22
25
  @machine.config.ssh.username = 'root'
23
26
 
24
- env[:ui].info I18n.t('vagrant_rimu.creating_user', {
25
- :user => user
26
- })
27
-
28
27
  # create user account
29
- @machine.communicate.execute(<<-BASH)
30
- if ! (grep ^#{user}: /etc/passwd); then
31
- useradd -m -s /bin/bash #{user};
32
- fi
33
- BASH
34
-
35
- # grant user sudo access with no password requirement
36
- @machine.communicate.execute(<<-BASH)
37
- if ! (grep #{user} /etc/sudoers); then
38
- echo "#{user} ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers;
39
- else
40
- sed -i -e "/#{user}/ s/=.*/=(ALL:ALL) NOPASSWD: ALL/" /etc/sudoers;
41
- fi
42
- BASH
28
+ create_user(env, user)
43
29
 
44
30
  # create the .ssh directory in the users home
45
31
  @machine.communicate.execute("su #{user} -c 'mkdir -p ~/.ssh'")
46
32
 
47
33
  # add the specified key to the authorized keys file
34
+ upload_key(user)
35
+
36
+ # reset username
37
+ @machine.config.ssh.username = user
38
+
39
+ @app.call(env)
40
+ end
41
+
42
+ def upload_key(user)
48
43
  path = @machine.config.ssh.private_key_path
49
44
  path = path[0] if path.is_a?(Array)
50
45
  path = File.expand_path(path, @machine.env.root_path)
@@ -56,11 +51,27 @@ module VagrantPlugins
56
51
 
57
52
  chown -R #{user} /home/#{user}/.ssh;
58
53
  BASH
54
+ end
55
+
56
+ def create_user(env, user)
57
+ env[:ui].info I18n.t('vagrant_rimu.creating_user', {
58
+ :user => user
59
+ })
60
+
61
+ @machine.communicate.execute(<<-BASH)
62
+ if ! (grep ^#{user}: /etc/passwd); then
63
+ useradd -m -s /bin/bash #{user};
64
+ fi
65
+ BASH
59
66
 
60
- # reset username
61
- @machine.config.ssh.username = user
62
-
63
- @app.call(env)
67
+ # grant user sudo access with no password requirement
68
+ @machine.communicate.execute(<<-BASH)
69
+ if ! (grep #{user} /etc/sudoers); then
70
+ echo "#{user} ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers;
71
+ else
72
+ sed -i -e "/#{user}/ s/=.*/=(ALL:ALL) NOPASSWD: ALL/" /etc/sudoers;
73
+ fi
74
+ BASH
64
75
  end
65
76
 
66
77
  def public_key(private_key_path)
@@ -1,16 +1,18 @@
1
1
  require 'log4r'
2
2
 
3
+ require 'vagrant-rimu/actions/abstract_action'
4
+
3
5
  module VagrantPlugins
4
6
  module Rimu
5
7
  module Actions
6
- class StartInstance
8
+ class StartInstance < AbstractAction
7
9
  def initialize(app, env)
8
10
  @app = app
9
11
  @machine = env[:machine]
10
12
  @logger = Log4r::Logger.new("vagrant_rimu::action::start_instance")
11
13
  end
12
14
 
13
- def call(env)
15
+ def execute(env)
14
16
  client = env[:rimu_api]
15
17
  env[:ui].info I18n.t('vagrant_rimu.starting')
16
18
  begin
@@ -1,26 +1,32 @@
1
1
  require 'log4r'
2
2
 
3
+ require 'vagrant-rimu/actions/abstract_action'
4
+
3
5
  module VagrantPlugins
4
6
  module Rimu
5
7
  module Actions
6
8
  # This stops the running instance.
7
- class StopInstance
9
+ class StopInstance < AbstractAction
8
10
  def initialize(app, _env)
9
11
  @app = app
10
12
  @logger = Log4r::Logger.new('vagrant_rimu::action::stop_instance')
11
13
  end
12
14
 
13
- def call(env)
15
+ def execute(env)
14
16
  if env[:machine].state.id == :stopped
15
17
  env[:ui].info(I18n.t('vagrant_rimu.already_status', :status => env[:machine].state.id))
16
18
  else
17
- env[:ui].info(I18n.t('vagrant_rimu.stopping'))
18
- client = env[:rimu_api]
19
- client.servers.shutdown(env[:machine].id.to_i)
19
+ shutdown(env)
20
20
  end
21
21
 
22
22
  @app.call(env)
23
23
  end
24
+
25
+ def shutdown(env)
26
+ env[:ui].info(I18n.t('vagrant_rimu.stopping'))
27
+ client = env[:rimu_api]
28
+ client.servers.shutdown(env[:machine].id.to_i)
29
+ end
24
30
  end
25
31
  end
26
32
  end
@@ -1,16 +1,18 @@
1
1
  require 'log4r'
2
2
 
3
+ require 'vagrant-rimu/actions/abstract_action'
4
+
3
5
  module VagrantPlugins
4
6
  module Rimu
5
7
  module Actions
6
8
  # This terminates the running server, if there is one.
7
- class TerminateInstance
9
+ class TerminateInstance < AbstractAction
8
10
  def initialize(app, _env)
9
11
  @app = app
10
12
  @logger = Log4r::Logger.new("vagrant_rimu::action::terminate_instance")
11
13
  end
12
14
 
13
- def call(env)
15
+ def execute(env)
14
16
  if env[:machine].id
15
17
  env[:ui].info(I18n.t("vagrant_rimu.terminating"))
16
18
  client = env[:rimu_api]
@@ -4,6 +4,7 @@ require 'vagrant/action/builder'
4
4
 
5
5
  module VagrantPlugins
6
6
  module Rimu
7
+ # rubocop:disable Metrics/ModuleLength
7
8
  module Actions
8
9
  include Vagrant::Action::Builtin
9
10
 
@@ -0,0 +1,47 @@
1
+ require 'colorize'
2
+
3
+ module VagrantPlugins
4
+ module Rimu
5
+ module Commands
6
+ class AbstractCommand < Vagrant.plugin('2', :command)
7
+ def initialize(argv, env)
8
+ @env = env
9
+ super(normalize_args(argv), env)
10
+ end
11
+
12
+ def execute(name)
13
+ env = {}
14
+ with_target_vms(nil, provider: :rimu) do |machine|
15
+ env[:machine] = machine
16
+ env[:ui] = @env.ui
17
+ end
18
+
19
+ before_cmd(name, @argv, env)
20
+
21
+ cmd(name, @argv, env)
22
+ @env.ui.info('')
23
+ # rubocop:disable Lint/RescueException
24
+ rescue Errors::ApiError, SystemExit, Interrupt => e
25
+ raise e
26
+ rescue Exception => e
27
+ puts I18n.t('vagrant_rimu.errors.global_error').red unless e.message && e.message.start_with?('Catched Error:')
28
+ raise e
29
+ end
30
+ # rubocop:enable Lint/RescueException
31
+
32
+ def normalize_args(args)
33
+ return args if args.nil?
34
+ args.pop if args.size > 0 && args.last == '--'
35
+ args
36
+ end
37
+
38
+ def before_cmd(_name, _argv, _env)
39
+ end
40
+
41
+ def cmd(_name, _argv, _env)
42
+ fail 'Command not implemented. \'cmd\' method must be overridden in all subclasses'
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,16 +1,16 @@
1
+ require 'vagrant-rimu/commands/rimu_command'
2
+
1
3
  module VagrantPlugins
2
4
  module Rimu
3
5
  module Commands
4
- class BillingMethods < Vagrant.plugin('2', :command)
5
- def execute
6
- opts = OptionParser.new do |o|
7
- o.banner = 'Usage: vagrant rimu billing_methods [options]'
8
- end
9
- argv = parse_options(opts)
10
- return unless argv
11
- with_target_vms(argv, provider: :rimu) do |machine|
12
- machine.action('billing_methods')
13
- end
6
+ class BillingMethods < RimuCommand
7
+ def self.synopsis
8
+ I18n.t('vagrant_rimu.commands.billing_methods')
9
+ end
10
+
11
+ def cmd(name, argv, env)
12
+ fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
13
+ env[:machine].action('billing_methods')
14
14
  end
15
15
  end
16
16
  end
@@ -1,16 +1,16 @@
1
+ require 'vagrant-rimu/commands/rimu_command'
2
+
1
3
  module VagrantPlugins
2
4
  module Rimu
3
5
  module Commands
4
- class Distributions < Vagrant.plugin('2', :command)
5
- def execute
6
- opts = OptionParser.new do |o|
7
- o.banner = 'Usage: vagrant rimu distributions [options]'
8
- end
9
- argv = parse_options(opts)
10
- return unless argv
11
- with_target_vms(argv, provider: :rimu) do |machine|
12
- machine.action('list_distributions')
13
- end
6
+ class Distributions < RimuCommand
7
+ def self.synopsis
8
+ I18n.t('vagrant_rimu.commands.list_distributions')
9
+ end
10
+
11
+ def cmd(name, argv, env)
12
+ fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
13
+ env[:machine].action('list_distributions')
14
14
  end
15
15
  end
16
16
  end
@@ -1,16 +1,16 @@
1
+ require 'vagrant-rimu/commands/rimu_command'
2
+
1
3
  module VagrantPlugins
2
4
  module Rimu
3
5
  module Commands
4
- class ListServers < Vagrant.plugin('2', :command)
5
- def execute
6
- opts = OptionParser.new do |o|
7
- o.banner = 'Usage: vagrant rimu servers [options]'
8
- end
9
- argv = parse_options(opts)
10
- return unless argv
11
- with_target_vms(argv, provider: :rimu) do |machine|
12
- machine.action('list_servers')
13
- end
6
+ class ListServers < RimuCommand
7
+ def self.synopsis
8
+ I18n.t('vagrant_rimu.commands.list_servers')
9
+ end
10
+
11
+ def cmd(name, argv, env)
12
+ fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
13
+ env[:machine].action('list_servers')
14
14
  end
15
15
  end
16
16
  end
@@ -1,16 +1,16 @@
1
+ require 'vagrant-rimu/commands/abstract_command'
2
+
1
3
  module VagrantPlugins
2
4
  module Rimu
3
5
  module Commands
4
- class Move < Vagrant.plugin('2', :command)
5
- def execute
6
- opts = OptionParser.new do |o|
7
- o.banner = 'Usage: vagrant rimu move [options]'
8
- end
9
- argv = parse_options(opts)
10
- return unless argv
11
- with_target_vms(argv, provider: :rimu) do |machine|
12
- machine.action('move')
13
- end
6
+ class Move < AbstractCommand
7
+ def self.synopsis
8
+ I18n.t('vagrant_rimu.commands.move')
9
+ end
10
+
11
+ def cmd(name, argv, env)
12
+ fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
13
+ env[:machine].action('move')
14
14
  end
15
15
  end
16
16
  end
@@ -1,18 +1,17 @@
1
1
  require 'optparse'
2
+ require 'vagrant-rimu/commands/abstract_command'
2
3
 
3
4
  module VagrantPlugins
4
5
  module Rimu
5
6
  module Commands
6
- class Rebuild < Vagrant.plugin('2', :command)
7
- def execute
8
- opts = OptionParser.new do |o|
9
- o.banner = 'Usage: vagrant rebuild [vm-name]'
10
- end
11
- argv = parse_options(opts)
12
- with_target_vms(argv) do |machine|
13
- machine.action(:rebuild)
14
- end
15
- 0
7
+ class Rebuild < AbstractCommand
8
+ def self.synopsis
9
+ I18n.t('vagrant_rimu.commands.rebuild')
10
+ end
11
+
12
+ def cmd(name, argv, env)
13
+ fail Errors::NoArgRequiredForCommand, cmd: name unless argv.size == 0
14
+ env[:machine].action('rebuild')
16
15
  end
17
16
  end
18
17
  end
@@ -0,0 +1,13 @@
1
+ require 'vagrant-rimu/commands/abstract_command'
2
+
3
+ module VagrantPlugins
4
+ module Rimu
5
+ module Commands
6
+ class RimuCommand < AbstractCommand
7
+ def before_cmd(_name, _argv, env)
8
+ VagrantPlugins::Rimu::Actions::ConnectToRimu.new(nil, env).call(env)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,65 +1,48 @@
1
- require 'optparse'
2
-
3
1
  module VagrantPlugins
4
2
  module Rimu
5
3
  module Commands
4
+ COMMANDS = [
5
+ { name: :'billing-methods', file: 'billing_methods', clazz: 'BillingMethods' },
6
+ { name: :'distributions', file: 'distributions', clazz: 'Distributions' },
7
+ { name: :'servers', file: 'list_servers', clazz: 'ListServers' },
8
+ { name: :'move-vps', file: 'move', clazz: 'Move' },
9
+ { name: :'rebuild', file: 'rebuild', clazz: 'Rebuild' },
10
+ ]
11
+
6
12
  class Root < Vagrant.plugin('2', :command)
7
13
  def self.synopsis
8
- 'query Rimu for various options'
14
+ I18n.t('vagrant_rimu.command.root_synopsis')
9
15
  end
10
16
 
11
17
  def initialize(argv, env)
18
+ @env = env
12
19
  @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
20
+ @commands = Vagrant::Registry.new
13
21
 
14
- @subcommands = Vagrant::Registry.new
15
-
16
- @subcommands.register(:distributions) do
17
- require File.expand_path('../distributions', __FILE__)
18
- Distributions
19
- end
20
-
21
- @subcommands.register(:move) do
22
- require File.expand_path('../move', __FILE__)
23
- Move
24
- end
25
-
26
- @subcommands.register(:billing_methods) do
27
- require File.expand_path('../billing_methods', __FILE__)
28
- BillingMethods
29
- end
30
-
31
- @subcommands.register(:servers) do
32
- require File.expand_path('../list_servers', __FILE__)
33
- ListServers
22
+ COMMANDS.each do |cmd|
23
+ @commands.register(cmd[:name]) do
24
+ require_relative cmd[:file]
25
+ Commands.const_get(cmd[:clazz])
26
+ end
34
27
  end
35
28
 
36
29
  super(argv, env)
37
30
  end
38
31
 
39
32
  def execute
40
- if @main_args.include?('-h') || @main_args.include?('--help')
41
- return help
42
- end
43
- command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
44
- return help if !command_class || !@sub_command
45
- @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
46
- command_class.new(@sub_args, @env).execute
33
+ command_class = @commands.get(@sub_command.to_sym) if @sub_command
34
+ return usage unless command_class && @sub_command
35
+ command_class.new(@sub_args, @env).execute(@sub_command)
47
36
  end
48
37
 
49
- def help
50
- opts = OptionParser.new do |o|
51
- o.banner = 'Usage: vagrant rimu <subcommand> [<args>]'
52
- o.separator ''
53
- o.separator 'Available subcommands:'
54
- keys = []
55
- @subcommands.each { |key, _value| keys << key.to_s }
56
- keys.sort.each do |key|
57
- o.separator " #{key}"
58
- end
59
- o.separator ''
60
- o.separator 'For help on any individual subcommand run `vagrant rimu <subcommand> -h`'
38
+ def usage
39
+ @env.ui.info I18n.t('vagrant_rimu.commands.root_usage')
40
+ @env.ui.info ''
41
+ @env.ui.info I18n.t('vagrant_rimu.commands.available_subcommands')
42
+ @commands.each do |key, value|
43
+ @env.ui.info " #{key.to_s.ljust(20)} #{value.synopsis}"
61
44
  end
62
- @env.ui.info(opts.help, prefix: false)
45
+ @env.ui.info ''
63
46
  end
64
47
  end
65
48
  end
@@ -0,0 +1,22 @@
1
+ require 'terminal-table'
2
+
3
+ module VagrantPlugins
4
+ module Rimu
5
+ module Commands
6
+ module Utils
7
+ # def display_item_list(env, items)
8
+ # rows = []
9
+ # items.each do |item|
10
+ # rows << [item.id, item.name]
11
+ # end
12
+ # display_table(env, %w(ID Name), rows)
13
+ # end
14
+
15
+ def display_table(env, headers, rows)
16
+ table = Terminal::Table.new headings: headers, rows: rows
17
+ env[:ui].info("\n#{table}")
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -137,6 +137,7 @@ module VagrantPlugins
137
137
  @data_centre = UNSET_VALUE
138
138
  end
139
139
 
140
+ # rubocop:disable Metrics/AbcSize
140
141
  def finalize!
141
142
  @api_key = ENV['RIMU_API_KEY'] if @api_key == UNSET_VALUE
142
143
  @api_url = ENV['RIMU_URL'] if @api_url == UNSET_VALUE
@@ -18,6 +18,10 @@ module VagrantPlugins
18
18
  class ApiError < RimuError
19
19
  error_key(:api_error)
20
20
  end
21
+
22
+ class NoArgRequiredForCommand < RimuError
23
+ error_key(:no_args)
24
+ end
21
25
  end
22
26
  end
23
27
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Rimu
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
  end
5
5
  end
data/locales/en.yml CHANGED
@@ -35,25 +35,6 @@ en:
35
35
  private_key: "A valid SSH private key path option: [private_key_path] is required"
36
36
  missing_private_key: "SSH private key not found: %{key}"
37
37
  public_key: "SSH public key not found: %{key}"
38
- errors:
39
- api_error: |-
40
- The API request failed. Please inspect the error message
41
- below for more info.
42
-
43
- Error: %{stderr}
44
- public_key: |-
45
- There was an issue reading the public key at:
46
-
47
- Path: %{path}
48
-
49
- Please check the file's permissions.
50
- rsync: |-
51
- There was an error when attemping to rsync a share folder.
52
- Please inspect the error message below for more info.
53
-
54
- Host path: %{hostpath}
55
- Guest path: %{guestpath}
56
- Error: %{stderr}
57
38
  states:
58
39
  short_not_created: |-
59
40
  not created
@@ -77,3 +58,53 @@ en:
77
58
  long_running: |-
78
59
  The VPS is running. To stop this machine, you can run
79
60
  `vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
61
+ commands:
62
+ root_synopsis: |-
63
+ Rimu provider specific commands
64
+ root_usage: |-
65
+ Usage: vagrant rimu <subcommand> [<args>]
66
+ available_subcommands: |-
67
+ Available subcommands:
68
+ billing_methods: |-
69
+ List billing methods
70
+ list_distributions: |-
71
+ List Distributions
72
+ list_servers: |-
73
+ List servers
74
+ move: |-
75
+ Moves server to different host
76
+ rebuild: |-
77
+ Rebuilds the server, retaining the current IP address
78
+ errors:
79
+ global_error: |-
80
+ An unknown error happened in Vagrant Rimu provider
81
+
82
+ To easily debug what happened, we recommend to set the environment
83
+ variable VAGRANT_RIMU_LOG to debug
84
+
85
+ $ export VAGRANT_RIMU_LOG=debug
86
+
87
+ If doing this does not help fixing your issue, there may be a bug
88
+ in the provider. Please submit an issue on Github at
89
+ https://github.com/akissa/vagrant-rimu
90
+ with the stracktrace and the logs.
91
+ no_args: |-
92
+ Command '%{cmd}' does not required any argument.
93
+ api_error: |-
94
+ The API request failed. Please inspect the error message
95
+ below for more info.
96
+
97
+ Error: %{stderr}
98
+ public_key: |-
99
+ There was an issue reading the public key at:
100
+
101
+ Path: %{path}
102
+
103
+ Please check the file permissions.
104
+ rsync: |-
105
+ There was an error when attemping to rsync a share folder.
106
+ Please inspect the error message below for more info.
107
+
108
+ Host path: %{hostpath}
109
+ Guest path: %{guestpath}
110
+ Error: %{stderr}