vagrant-nodemaster 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/README.md +95 -0
  2. data/lib/vagrant-nodemaster.rb +4 -2
  3. data/lib/vagrant-nodemaster/apidesc.rb +105 -1
  4. data/lib/vagrant-nodemaster/node/nodeadd.rb +4 -4
  5. data/lib/vagrant-nodemaster/node/nodedbmanager.rb +49 -33
  6. data/lib/vagrant-nodemaster/node/nodelist.rb +2 -2
  7. data/lib/vagrant-nodemaster/node/nodeoperationcommand.rb +85 -0
  8. data/lib/vagrant-nodemaster/node/nodeoperationlast.rb +47 -0
  9. data/lib/vagrant-nodemaster/node/nodeoperationshow.rb +39 -0
  10. data/lib/vagrant-nodemaster/node/noderemove.rb +3 -3
  11. data/lib/vagrant-nodemaster/node/nodestatus.rb +2 -2
  12. data/lib/vagrant-nodemaster/node/nodeupdate.rb +2 -2
  13. data/lib/vagrant-nodemaster/node/nodeupdatepw.rb +72 -0
  14. data/lib/vagrant-nodemaster/nodecommand.rb +14 -0
  15. data/lib/vagrant-nodemaster/remote/configmanager.rb +16 -0
  16. data/lib/vagrant-nodemaster/remote/remoteboxadd.rb +11 -8
  17. data/lib/vagrant-nodemaster/remote/remoteconfigaddvm.rb +46 -0
  18. data/lib/vagrant-nodemaster/remote/remoteconfigcommand.rb +110 -0
  19. data/lib/vagrant-nodemaster/remote/remoteconfigdeletevm.rb +37 -0
  20. data/lib/vagrant-nodemaster/remote/remoteconfigshow.rb +31 -0
  21. data/lib/vagrant-nodemaster/remote/remoteconfigupload.rb +34 -0
  22. data/lib/vagrant-nodemaster/remote/remotehalt.rb +14 -5
  23. data/lib/vagrant-nodemaster/remote/remoteprovision.rb +31 -23
  24. data/lib/vagrant-nodemaster/remote/remoteresume.rb +16 -9
  25. data/lib/vagrant-nodemaster/remote/remotesnapshotcommand.rb +8 -3
  26. data/lib/vagrant-nodemaster/remote/remotesnapshotdelete.rb +31 -0
  27. data/lib/vagrant-nodemaster/remote/remotesnapshotlist.rb +1 -0
  28. data/lib/vagrant-nodemaster/remote/remotesnapshotrestore.rb +17 -9
  29. data/lib/vagrant-nodemaster/remote/remotesnapshottake.rb +16 -6
  30. data/lib/vagrant-nodemaster/remote/remotesuspend.rb +15 -7
  31. data/lib/vagrant-nodemaster/remote/remoteup.rb +18 -22
  32. data/lib/vagrant-nodemaster/remote/remotevmstatus.rb +1 -1
  33. data/lib/vagrant-nodemaster/remotecommand.rb +18 -5
  34. data/lib/vagrant-nodemaster/requestcontroller.rb +321 -69
  35. data/lib/vagrant-nodemaster/version.rb +1 -1
  36. data/vagrant-nodemaster.gemspec +7 -2
  37. metadata +18 -7
  38. data/Readme.md +0 -0
@@ -16,10 +16,10 @@ module Vagrant
16
16
  return if !argv
17
17
  raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length != 0
18
18
 
19
- dbmanager=DB::NodeDBManager.new
19
+ #
20
20
 
21
21
  @env.ui.info("#{"NODE".ljust(25)} ADDRESS (PORT) ",:prefix => false)
22
- dbmanager.get_nodes.each do |entry|
22
+ DB::NodeDBManager.get_nodes.each do |entry|
23
23
  @env.ui.info("#{entry[:name].ljust(25)} #{entry[:address]}(#{entry[:port]})", :prefix => false)
24
24
  end
25
25
  @env.ui.info(" ", :prefix => false)
@@ -0,0 +1,85 @@
1
+ require 'vagrant/plugin'
2
+ require 'sqlite3'
3
+
4
+
5
+ module Vagrant
6
+ module NodeMaster
7
+
8
+ class NodeOperationCommand < Vagrant.plugin(2, :command)
9
+
10
+ def initialize(argv, env)
11
+ super
12
+
13
+ @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
14
+
15
+
16
+ @subcommands = Vagrant::Registry.new
17
+
18
+ @subcommands.register(:show) do
19
+ require File.expand_path("../nodeoperationshow", __FILE__)
20
+ NodeOperationShow
21
+ end
22
+
23
+ @subcommands.register(:last) do
24
+ require File.expand_path("../nodeoperationlast", __FILE__)
25
+ NodeOperationLast
26
+ end
27
+
28
+ end
29
+
30
+
31
+
32
+
33
+
34
+ def execute
35
+ if @main_args.include?("-h") || @main_args.include?("--help")
36
+ # Print the help for all the box commands.
37
+ return help
38
+ end
39
+
40
+
41
+
42
+ # If we reached this far then we must have a subcommand. If not,
43
+ # then we also just print the help and exit.
44
+ command_class = @subcommands.get(@sub_command.to_sym) if @sub_command
45
+ return help if !command_class || !@sub_command
46
+ @logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
47
+
48
+ begin
49
+ # Initialize and execute the command class
50
+ command_class.new(@sub_args, @env).execute
51
+ rescue Exception => e
52
+ @env.ui.error(e.message)
53
+ end
54
+
55
+
56
+ 0
57
+ end
58
+
59
+ def help
60
+ opts = OptionParser.new do |opts|
61
+ opts.banner = "Usage: vagrant node <command> [<args>]"
62
+ opts.separator ""
63
+ opts.separator "Available subcommands:"
64
+
65
+ # Add the available subcommands as separators in order to print them
66
+ # out as well.
67
+ keys = []
68
+ @subcommands.each { |key, value| keys << key.to_s }
69
+
70
+ keys.sort.each do |key|
71
+ opts.separator " #{key}"
72
+ end
73
+
74
+ opts.separator ""
75
+ opts.separator "For help on any individual command run `vagrant node COMMAND -h`"
76
+ end
77
+
78
+ @env.ui.info(opts.help, :prefix => false)
79
+ end
80
+
81
+
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,47 @@
1
+ require 'vagrant-nodemaster/node/nodedbmanager'
2
+ require 'vagrant-nodemaster/requestcontroller'
3
+
4
+ module Vagrant
5
+ module NodeMaster
6
+
7
+ class NodeOperationLast < Vagrant.plugin(2, :command)
8
+
9
+ def execute
10
+
11
+ options = {}
12
+
13
+ opts = OptionParser.new do |opts|
14
+ opts.banner = "Usage: vagrant node operation last <node-name>"
15
+ end
16
+
17
+ argv = parse_options(opts)
18
+ return if !argv
19
+ raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length != 1
20
+
21
+ result = RequestController.node_operation_queued_last(argv[0])
22
+
23
+
24
+ if (result.empty?)
25
+ @env.ui.info("Operation queue is empty");
26
+
27
+ else
28
+ @env.ui.info("-------------------------------------------------------------------------------------")
29
+ @env.ui.info("| RESULT CODE | RESUL T INFO |")
30
+ @env.ui.info("-------------------------------------------------------------------------------------")
31
+
32
+ result.each do |operation|
33
+ @env.ui.info("| #{operation[0]} |#{operation[1].ljust(5)}")
34
+ @env.ui.info("-------------------------------------------------------------------------------------")
35
+ end
36
+ end
37
+
38
+
39
+
40
+
41
+ 0
42
+ end
43
+
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,39 @@
1
+ require 'vagrant-nodemaster/node/nodedbmanager'
2
+ require 'vagrant-nodemaster/requestcontroller'
3
+
4
+ module Vagrant
5
+ module NodeMaster
6
+
7
+ class NodeOperationShow < Vagrant.plugin(2, :command)
8
+
9
+ def execute
10
+
11
+ options = {}
12
+
13
+ opts = OptionParser.new do |opts|
14
+ opts.banner = "Usage: vagrant node operation show <node-name> <operation-id>"
15
+ end
16
+
17
+ argv = parse_options(opts)
18
+ return if !argv
19
+ raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length != 2
20
+
21
+ result = RequestController.node_operation_queued(argv[0],argv[1])
22
+
23
+
24
+ case result[0]
25
+ when 100
26
+ @env.ui.info("The operation #{argv[1]} is \"IN PROGRESS\"")
27
+ when 200
28
+ @env.ui.success("The operation #{argv[1]} succeeded.")
29
+ else
30
+ @env.ui.error("The operation #{argv[1]} failed. The result is:\n#{result[1]}")
31
+ end
32
+
33
+ 0
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+ end
@@ -24,12 +24,12 @@ module Vagrant
24
24
  return if !argv
25
25
  raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if (argv.length < 1 && !options[:clean]) || (argv.length >1)
26
26
 
27
- dbmanager=DB::NodeDBManager.new
27
+ #dbmanager=DB::NodeDBManager.new
28
28
 
29
29
  if (options[:clean])
30
- dbmanager.remove_nodes
30
+ DB::NodeDBManager.remove_nodes
31
31
  elsif
32
- dbmanager.remove_node(argv[0])
32
+ DB::NodeDBManager.remove_node(argv[0])
33
33
  end
34
34
 
35
35
  0
@@ -19,13 +19,13 @@ module Vagrant
19
19
  return if !argv
20
20
  raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length != 0
21
21
 
22
- dbmanager=DB::NodeDBManager.new
22
+ #dbmanager=DB::NodeDBManager.new
23
23
 
24
24
  status = {}
25
25
 
26
26
 
27
27
 
28
- dbmanager.get_nodes.each do |entry|
28
+ DB::NodeDBManager.get_nodes.each do |entry|
29
29
  status[entry[:name]]=ERROR
30
30
  if port_open?(entry[:address],entry[:port])
31
31
  status[entry[:name]]=OK
@@ -27,10 +27,10 @@ module Vagrant
27
27
  return if !argv
28
28
  raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length != 3
29
29
 
30
- dbmanager=DB::NodeDBManager.new
30
+ #dbmanager=DB::NodeDBManager.new
31
31
 
32
32
 
33
- dbmanager.update_node(argv[0],argv[1],argv[2].to_i,options[:dns])
33
+ DB::NodeDBManager.update_node(argv[0],argv[1],argv[2].to_i,options[:dns])
34
34
 
35
35
  0
36
36
  end
@@ -0,0 +1,72 @@
1
+ require 'vagrant-nodemaster/node/nodedbmanager'
2
+ require 'vagrant-nodemaster/requestcontroller'
3
+
4
+ module Vagrant
5
+ module NodeMaster
6
+
7
+ class NodeUpdatePw < Vagrant.plugin(2, :command)
8
+ def execute
9
+
10
+ options = {}
11
+ options[:remote] = false
12
+
13
+ opts = OptionParser.new do |opts|
14
+ opts.banner = "Usage: vagrant node updatepw <node-name> --remote"
15
+ opts.on("--remote", "Change also remote node pasword") do |r|
16
+ options[:remote] = r
17
+ end
18
+
19
+ end
20
+
21
+ argv = parse_options(opts)
22
+
23
+ raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length != 1
24
+
25
+
26
+
27
+
28
+ pass_m = "Insert your new password for the Node #{argv[0]}: "
29
+ confirm_m = "Please Insert again the new password: "
30
+
31
+ if STDIN.respond_to?(:noecho)
32
+ print pass_m
33
+ password=STDIN.noecho(&:gets).chomp
34
+ print "\n#{confirm_m}"
35
+ confirm=STDIN.noecho(&:gets).chomp
36
+ print "\n"
37
+ else
38
+ password = @env.ui.ask(pass_m)
39
+ confirm = @env.ui.ask(confirm_m)
40
+ end
41
+
42
+
43
+ raise "Passwords does not match!" if (password!=confirm)
44
+
45
+
46
+ #First, change Password at remote node
47
+ if (options[:remote])
48
+ if (!RequestController.node_password_change(argv[0],password))
49
+ @env.ui.error("Remote password change failed! No changes have been comitted locally")
50
+ return
51
+ end
52
+ end
53
+
54
+ #If everything is ok then change the password locally
55
+ #db=DB::NodeDBManager.new
56
+ DB::NodeDBManager.update_node_password(argv[0],password)
57
+
58
+ if options[:remote]
59
+ @env.ui.success("Password change performed successfully locally and remotely")
60
+ else
61
+ @env.ui.success("Password change performed successfully locally")
62
+ end
63
+
64
+ 0
65
+ end
66
+
67
+ end
68
+
69
+
70
+
71
+ end
72
+ end
@@ -1,5 +1,6 @@
1
1
  require 'vagrant/plugin'
2
2
  require 'sqlite3'
3
+ require 'vagrant-nodemaster/node/nodedbmanager'
3
4
 
4
5
  module Vagrant
5
6
  module NodeMaster
@@ -11,6 +12,9 @@ module Vagrant
11
12
 
12
13
  @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
13
14
 
15
+ #Initializing db structure
16
+ DB::NodeDBManager.new(@env.data_dir)
17
+
14
18
  # puts "MAIN ARGS #{@main_args}"
15
19
  # puts "SUB COMMAND #{@sub_command}"
16
20
  # puts "SUB ARGS #{@sub_args}"
@@ -36,12 +40,22 @@ module Vagrant
36
40
  require File.expand_path("../node/nodeupdate", __FILE__)
37
41
  NodeUpdate
38
42
  end
43
+
44
+ @subcommands.register(:updatepw) do
45
+ require File.expand_path("../node/nodeupdatepw", __FILE__)
46
+ NodeUpdatePw
47
+ end
39
48
 
40
49
  @subcommands.register(:status) do
41
50
  require File.expand_path("../node/nodestatus", __FILE__)
42
51
  NodeStatus
43
52
  end
44
53
 
54
+ @subcommands.register(:operation) do
55
+ require File.expand_path("../node/nodeoperationcommand", __FILE__)
56
+ NodeOperationCommand
57
+ end
58
+
45
59
  end
46
60
 
47
61
 
@@ -0,0 +1,16 @@
1
+ module Vagrant
2
+ module NodeMaster
3
+
4
+ class ConfigManager
5
+
6
+ def initialize(env)
7
+ @env = env
8
+ end
9
+
10
+
11
+
12
+ end
13
+
14
+
15
+ end
16
+ end
@@ -5,9 +5,14 @@ module Vagrant
5
5
  class BoxAdd < Vagrant.plugin(2, :command)
6
6
  def execute
7
7
  options = {}
8
+ options[:async] = true
8
9
 
9
10
  opts = OptionParser.new do |opts|
10
- opts.banner = "Usage: vagrant remote box add <node-name> <box-name> <url>"
11
+ opts.banner = "Usage: vagrant remote box add <node-name> <box-name> <url> [--synchronous]"
12
+ opts.separator ""
13
+ opts.on("-s", "--synchronous", "Wait until the operation finishes") do |f|
14
+ options[:async] = false
15
+ end
11
16
  end
12
17
 
13
18
 
@@ -17,14 +22,12 @@ module Vagrant
17
22
  raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length != 3
18
23
 
19
24
 
20
-
21
- # begin
25
+ res = RequestController.box_add(argv[0],argv[1],argv[2],options[:async])
22
26
 
23
- RequestController.box_add(argv[0],argv[1],argv[2])
24
- # @env.ui.info("Remote Client \"#{argv[0]}\": Box \"#{argv[1]}\" with provider \"#{argv[2]}\" removed")
25
- # rescue RestClient::ResourceNotFound => e
26
- # @env.ui.error("Remote Client \"#{argv[0]}\": Box \"#{argv[1]}\" with provider \"#{argv[2]}\" could not be found")
27
- # end
27
+ @env.ui.success("Remote Client \"#{argv[0]}\": Box \"#{argv[1]}\" added") if options[:async]==false
28
+
29
+ @env.ui.info("Remote Client \"#{argv[0]}\": The operation ID is \"#{res.gsub!(/\D/, "")}\"") if options[:async]==true
30
+
28
31
 
29
32
  0
30
33
  end
@@ -0,0 +1,46 @@
1
+ require 'optparse'
2
+ require 'vagrant-nodemaster/requestcontroller'
3
+ module Vagrant
4
+ module NodeMaster
5
+ class AddVM < Vagrant.plugin(2, :command)
6
+
7
+ def execute
8
+ options = {}
9
+ options[:rename] = false
10
+
11
+ opts = OptionParser.new do |opts|
12
+
13
+ opts.banner = "Usage: vagrant remote config addvm <node-name> <vm_config_file> [--rename]"
14
+ opts.separator ""
15
+ opts.on("-r", "--rename", "Rename VM automatically if another VM with the same name exists") do |r|
16
+ options[:rename] = r
17
+ end
18
+
19
+ end
20
+
21
+
22
+
23
+ argv = parse_options(opts)
24
+
25
+ return if !argv
26
+
27
+ raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if (argv.length != 2)
28
+
29
+ #Add machines
30
+ result=RequestController.vm_add(argv[0],argv[1],options[:rename])
31
+
32
+ @env.ui.success("Operation successfully performed") if result
33
+
34
+
35
+ # @env.ui.info("Remote Client: #{argv[0]}", :prefix => false)
36
+ # machines.each do |machine|
37
+ # @env.ui.info(" * Virtual Machine '#{machine}' destroyed", :prefix => false)
38
+ # end
39
+ #
40
+ # @env.ui.info(" ")
41
+
42
+
43
+ end
44
+ end
45
+ end
46
+ end