vagrant-node 1.1.1 → 1.1.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.
@@ -10,8 +10,10 @@ module DB
10
10
  class DBManager
11
11
 
12
12
  DOWNLOAD_ERROR=-1
13
- DOWNLOAD_PROCESS=0
14
- DOWNLOAD_SUCCESS=0
13
+ DOWNLOAD_STOP=0
14
+ DOWNLOAD_START=1
15
+ DOWNLOAD_SUCCESS=2
16
+ DOWNLOAD_UNCOMPRESS = 3
15
17
 
16
18
  def initialize(data_dir)
17
19
  @db=check_database(data_dir)
@@ -91,48 +93,79 @@ module DB
91
93
  @db.query(sql)
92
94
  end
93
95
 
96
+ def quote_string(s)
97
+ s.gsub(/\\/, '\&\&').gsub(/'/, "''") # ' (for ruby-mode)
98
+ end
99
+
100
+
101
+ UNESCAPES = {
102
+ 'a' => "\x07", 'b' => "\x08", 't' => "\x09",
103
+ 'n' => "\x0a", 'v' => "\x0b", 'f' => "\x0c",
104
+ 'r' => "\x0d", 'e' => "\x1b", "\\\\" => "\x5c",
105
+ "\"" => "\x22", "'" => "\x27"
106
+ }
107
+
108
+ def unescape(str)
109
+ # Escape all the things
110
+ str.gsub(/\\(?:([#{UNESCAPES.keys.join}])|u([\da-fA-F]{4}))|\\0?x([\da-fA-F]{2})/) {
111
+ if $1
112
+ if $1 == '\\' then '\\' else UNESCAPES[$1] end
113
+ elsif $2 # escape \u0000 unicode
114
+ ["#$2".hex].pack('U*')
115
+ elsif $3 # escape \0xff or \xff
116
+ [$3].pack('H2')
117
+ end
118
+ }
119
+ end
120
+
121
+
94
122
  def set_queued_process_error(id,exception)
95
123
 
96
124
  errlog = []
97
-
98
- errcode=PROCESS_ERROR
99
125
 
100
- # decoded=exception.message.to_s.tr("\n"," ")
101
- # puts exception.message.to_s
102
- # pp exception.message.to_s
103
- # pp decoded
104
126
 
127
+ errcode=PROCESS_ERROR
105
128
 
106
-
129
+ #Code to avoid some annoying things related to special chars
130
+ error_msg=exception.message
131
+ error_msg=quote_string(error_msg).to_json
132
+ error_msg=error_msg[1,error_msg.size-2]
133
+
134
+
135
+
107
136
  if (exception.class==VMActionException)
108
- errlog << {"vmname" => exception.vmname,"provider"=>exception.provider,"status" => exception.message.to_s.tr("\'","\"")}
137
+ #errlog << {"vmname" => exception.vmname,"provider"=>exception.provider,"status" => @db.escape(error_msg)}
138
+ errlog << {"vmname" => exception.vmname,"provider"=>exception.provider,"status" => error_msg}
109
139
  elsif (exception.class==RestException)
110
140
  errcode=exception.code
111
- errlog << {"status" => exception.message.to_s.tr("\'","\"")}
141
+ errlog << {"status" => error_msg}
112
142
  else
113
- errlog << {"status" => exception.message.to_s.tr("\'","\"")}
143
+ # errlog << {"status" => exception.message.to_s.tr("\'","\"")}
144
+ errlog << {"status" => error_msg}
114
145
  end
146
+
147
+ #sql="UPDATE #{OPERATION_QUEUE_TABLE_NAME} SET #{OPERATION_STATUS_COLUMN} = #{errcode},#{OPERATION_RESULT_COLUMN} = '#{errlog.to_json}' WHERE #{OPERATION_ID_COLUMN}= #{id}"
115
148
 
116
149
 
150
+ sql="UPDATE #{OPERATION_QUEUE_TABLE_NAME} SET #{OPERATION_STATUS_COLUMN} = #{errcode},#{OPERATION_RESULT_COLUMN} = '#{errlog.to_json}' WHERE #{OPERATION_ID_COLUMN}= #{id}"
117
151
 
118
- sql="UPDATE #{OPERATION_QUEUE_TABLE_NAME} SET #{OPERATION_STATUS_COLUMN} = #{errcode},#{OPERATION_RESULT_COLUMN} = '#{errlog.to_json}' WHERE #{OPERATION_ID_COLUMN}= #{id}"
119
-
120
-
121
- #errlog << {"vmname" => "TODO","status" => exception.message.to_s}
152
+
122
153
 
154
+
123
155
  #@db.execute(sql,errcode,errlog.to_json,id)
124
156
  @db.query(sql)
125
157
  end
126
158
 
127
159
  def get_queued_process_result(id)
128
160
  check_operation_timeout
129
- sql="SELECT #{OPERATION_STATUS_COLUMN},#{OPERATION_RESULT_COLUMN} FROM #{OPERATION_QUEUE_TABLE_NAME} WHERE #{OPERATION_ID_COLUMN}= #{id};"
161
+ #sql="SELECT #{OPERATION_STATUS_COLUMN},QUOTE(#{OPERATION_RESULT_COLUMN}) as operation_result FROM #{OPERATION_QUEUE_TABLE_NAME} WHERE #{OPERATION_ID_COLUMN}= #{id};"
162
+ sql="SELECT #{OPERATION_STATUS_COLUMN},#{OPERATION_RESULT_COLUMN} FROM #{OPERATION_QUEUE_TABLE_NAME} WHERE #{OPERATION_ID_COLUMN}= #{id};"
130
163
  @db.query(sql)
131
164
  end
132
165
 
133
166
  def get_queued_last
134
167
  check_operation_timeout
135
- sql="SELECT #{OPERATION_STATUS_COLUMN},#{OPERATION_RESULT_COLUMN} FROM #{OPERATION_QUEUE_TABLE_NAME};"
168
+ sql="SELECT #{OPERATION_STATUS_COLUMN},#{OPERATION_RESULT_COLUMN} FROM #{OPERATION_QUEUE_TABLE_NAME};"
136
169
  @db.query(sql)
137
170
  end
138
171
 
@@ -141,14 +174,57 @@ module DB
141
174
  sql="DELETE FROM #{OPERATION_QUEUE_TABLE_NAME}"
142
175
  @db.query(sql)
143
176
  end
177
+
178
+ def are_boxes_queued
179
+ result=@db.query("SELECT * FROM #{DOWNLOAD_BOX_TABLE} WHERE #{DOWNLOAD_STATUS_COLUMN} = #{DOWNLOAD_STOP}")
180
+
181
+ result.size!=0
182
+
183
+ end
144
184
 
145
- def add_box_download_info(box_name,box_url)
146
- sql="INSERT INTO #{DOWNLOAD_BOX_TABLE}(#{DOWNLOAD_BOX_COLUMN},#{DOWNLOAD_URL_COLUMN},#{DOWNLOAD_PROGRESS_COLUMN},#{DOWNLOAD_REMAINING_COLUMN},#{DOWNLOAD_STATUS_COLUMN}) VALUES ('#{box_name}','#{box_url}','0%','--:--:--',#{DOWNLOAD_PROCESS})"
185
+ def start_box_download
186
+
187
+ result=@db.query("SELECT * FROM #{DOWNLOAD_BOX_TABLE} WHERE #{DOWNLOAD_STATUS_COLUMN} = #{DOWNLOAD_STOP}")
188
+
189
+
190
+ id_next=result.first["id"]
191
+
192
+
193
+ sql="UPDATE #{DOWNLOAD_BOX_TABLE} SET
194
+ #{DOWNLOAD_PROGRESS_COLUMN}='0%',
195
+ #{DOWNLOAD_REMAINING_COLUMN}='--:--:--',
196
+ #{DOWNLOAD_STATUS_COLUMN}=#{DOWNLOAD_START}
197
+ WHERE #{DOWNLOAD_ID_COLUMN}=#{id_next}"
198
+
147
199
  @db.query(sql)
200
+
201
+ id_next
202
+ end
203
+
204
+ def add_box_download_info(box_name,box_url)
205
+ sql="INSERT INTO #{DOWNLOAD_BOX_TABLE}(#{DOWNLOAD_BOX_COLUMN},#{DOWNLOAD_URL_COLUMN},#{DOWNLOAD_PROGRESS_COLUMN},#{DOWNLOAD_REMAINING_COLUMN},#{DOWNLOAD_STATUS_COLUMN}) VALUES ('#{box_name}','#{box_url}','WAITING','WAITING',#{DOWNLOAD_STOP})"
206
+ @db.query(sql)
207
+
148
208
  last_id=@db.query("SELECT LAST_INSERT_ID() as last")
149
209
  last_id.first["last"]
150
210
  end
151
211
 
212
+ def is_box_downloading
213
+ result=@db.query("SELECT * FROM #{DOWNLOAD_BOX_TABLE} WHERE #{DOWNLOAD_STATUS_COLUMN} = #{DOWNLOAD_START}")
214
+ return false if result.size==0
215
+ return true
216
+ end
217
+
218
+ def get_box_to_download
219
+ result=@db.query("SELECT * FROM #{DOWNLOAD_BOX_TABLE} WHERE #{DOWNLOAD_STATUS_COLUMN} = #{DOWNLOAD_STOP}")
220
+
221
+ ((result.size==0)?nil:result.first)
222
+
223
+
224
+ #id_next=result.first["id"]
225
+ #id_next
226
+ end
227
+
152
228
  def get_box_download
153
229
  sql="SELECT * FROM #{DOWNLOAD_BOX_TABLE}"
154
230
  @db.query(sql)
@@ -165,7 +241,7 @@ module DB
165
241
  end
166
242
 
167
243
  def set_box_download_error(id)
168
- sql="UPDATE #{DOWNLOAD_BOX_TABLE} SET #{DOWNLOAD_STATUS_COLUMN} = #{DOWNLOAD_ERROR}, #{DOWNLOAD_PROGRESS_COLUMN} = 'ERROR' WHERE #{DOWNLOAD_ID_COLUMN}=#{id}"
244
+ sql="UPDATE #{DOWNLOAD_BOX_TABLE} SET #{DOWNLOAD_STATUS_COLUMN} = #{DOWNLOAD_ERROR}, #{DOWNLOAD_PROGRESS_COLUMN} = 'ERROR',#{DOWNLOAD_REMAINING_COLUMN}='ERROR' WHERE #{DOWNLOAD_ID_COLUMN}=#{id}"
169
245
  @db.query(sql)
170
246
  end
171
247
 
@@ -175,13 +251,15 @@ module DB
175
251
  @db.query(sql)
176
252
  end
177
253
 
178
- def add_box_uncompression(box_name,box_url)
179
- sql="INSERT INTO #{DOWNLOAD_BOX_TABLE}(#{DOWNLOAD_BOX_COLUMN},#{DOWNLOAD_URL_COLUMN},#{DOWNLOAD_PROGRESS_COLUMN},#{DOWNLOAD_REMAINING_COLUMN},#{DOWNLOAD_STATUS_COLUMN}) VALUES ('#{box_name}','#{box_url}','Uncompressing','Uncompressing',#{DOWNLOAD_PROCESS})"
254
+ def add_box_uncompression(id)
255
+
256
+ sql="UPDATE #{DOWNLOAD_BOX_TABLE} SET #{DOWNLOAD_PROGRESS_COLUMN}='Uncompressing',#{DOWNLOAD_REMAINING_COLUMN}='Uncompressing',#{DOWNLOAD_STATUS_COLUMN}=#{DOWNLOAD_UNCOMPRESS} WHERE #{DOWNLOAD_ID_COLUMN}=#{id}"
257
+ #sql="INSERT INTO #{DOWNLOAD_BOX_TABLE}(#{DOWNLOAD_BOX_COLUMN},#{DOWNLOAD_URL_COLUMN},#{DOWNLOAD_PROGRESS_COLUMN},#{DOWNLOAD_REMAINING_COLUMN},#{DOWNLOAD_STATUS_COLUMN}) VALUES ('#{box_name}','#{box_url}','Uncompressing','Uncompressing',#{DOWNLOAD_STOP})"
180
258
  #@db.execute(sql,box_name,box_url,DOWNLOAD_PROCESS)
181
259
  @db.query(sql)
182
260
 
183
- last_id=@db.query("SELECT LAST_INSERT_ID() as last")
184
- last_id.first["last"]
261
+ # last_id=@db.query("SELECT LAST_INSERT_ID() as last")
262
+ # last_id.first["last"]
185
263
  end
186
264
 
187
265
  def set_box_uncompression_error(id)
@@ -191,7 +269,7 @@ module DB
191
269
  end
192
270
 
193
271
  def clear_box_uncompression(id)
194
- sql="DELETE FROM #{DOWNLOAD_BOX_TABLE} WHERE #{DOWNLOAD_STATUS_COLUMN}!=#{id}"
272
+ sql="DELETE FROM #{DOWNLOAD_BOX_TABLE} WHERE #{DOWNLOAD_ID_COLUMN}=#{id}"
195
273
  @db.query(sql)
196
274
  end
197
275
 
@@ -262,7 +340,7 @@ module DB
262
340
  DOWNLOAD_ID_COLUMN = 'id'
263
341
  DOWNLOAD_BOX_COLUMN = 'box_name'
264
342
  DOWNLOAD_URL_COLUMN = 'box_url'
265
- DOWNLOAD_STATUS_COLUMN = 'download_status'
343
+ DOWNLOAD_STATUS_COLUMN = 'download_status'
266
344
  DOWNLOAD_PROGRESS_COLUMN = 'download_progress'
267
345
  DOWNLOAD_REMAINING_COLUMN = 'download_remaining'
268
346
  CONFIG_DBUSER = 'dbuser'
@@ -317,7 +395,7 @@ module DB
317
395
  `#{DOWNLOAD_URL_COLUMN}` text NOT NULL,
318
396
  `#{DOWNLOAD_PROGRESS_COLUMN}` VARCHAR(10),
319
397
  `#{DOWNLOAD_STATUS_COLUMN}` int(11) NOT NULL,
320
- `#{DOWNLOAD_REMAINING_COLUMN}` VARCHAR(10),
398
+ `#{DOWNLOAD_REMAINING_COLUMN}` VARCHAR(10),
321
399
  PRIMARY KEY (`#{DOWNLOAD_ID_COLUMN}`)
322
400
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;")
323
401
 
@@ -32,8 +32,7 @@ module Vagrant
32
32
  class ExceptionMutator < RestException
33
33
  include Vagrant::Errors
34
34
  def initialize(exception)
35
- if (exception.is_a?(Vagrant::Errors::VagrantError))
36
- puts exception.class
35
+ if (exception.is_a?(Vagrant::Errors::VagrantError))
37
36
  case exception
38
37
  when BaseVMNotFound,
39
38
  BoxNotFound,
@@ -9,29 +9,26 @@ module Vagrant
9
9
  START_COMMAND = "start"
10
10
  STOP_COMMAND = "stop"
11
11
  def initialize(argv, env)
12
- super
12
+ super
13
13
 
14
- @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
15
- @subcommands = Vagrant::Registry.new
16
-
17
- @subcommands.register(:start) do
18
- require File.expand_path("../nodeserverstart", __FILE__)
19
- NodeServerStart
20
- end
21
-
22
- @subcommands.register(:stop) do
23
- require File.expand_path("../nodeserverstop", __FILE__)
24
- NodeServerStop
25
- end
26
-
27
- @subcommands.register(:passwd) do
28
- require File.expand_path("../nodeserverpasswd", __FILE__)
29
- NodeServerPasswd
30
- end
14
+ @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
15
+ @subcommands = Vagrant::Registry.new
16
+
17
+ @subcommands.register(:start) do
18
+ require File.expand_path("../nodeserverstart", __FILE__)
19
+ NodeServerStart
20
+ end
21
+
22
+ @subcommands.register(:stop) do
23
+ require File.expand_path("../nodeserverstop", __FILE__)
24
+ NodeServerStop
25
+ end
26
+
27
+ @subcommands.register(:passwd) do
28
+ require File.expand_path("../nodeserverpasswd", __FILE__)
29
+ NodeServerPasswd
30
+ end
31
31
 
32
- # puts "MAIN ARGS #{@main_args}"
33
- # puts "SUB COMMAND #{@sub_command}"
34
- # puts "SUB ARGS #{@sub_args}"
35
32
  end
36
33
 
37
34
  def execute
@@ -47,17 +44,7 @@ module Vagrant
47
44
 
48
45
  command_class.new(@sub_args, @env).execute
49
46
 
50
- # case @sub_command
51
- # when START_COMMAND then
52
- # @env.lock_path contiene la ruta al fichero de lock
53
- #incluyendo el nombre de este, por lo tanto se pasa
54
- #únicamente la ruta
55
- # ServerAPI::ServerManager.run(File.dirname(@env.lock_path))
56
- # when STOP_COMMAND then
57
- # ServerAPI::ServerManager.stop(File.dirname(@env.lock_path))
58
- # else
59
- # return help
60
- # end
47
+
61
48
  0
62
49
  end
63
50
 
@@ -77,24 +77,7 @@ module Vagrant
77
77
  print "Can't connect to mysql with current configuration, please review provided credentials. Please execute again this command to reconfigure"
78
78
  DB::DBManager.delete_config_file(@env.data_dir)
79
79
  end
80
-
81
- # #if (exception.class==Mysql2::Error)
82
- # if (i<1)
83
- # puts "Configuring database connection "
84
- # puts "Do you let us create "
85
- # puts "Insert privilege database user:"
86
- # user=STDIN.noecho(&:gets).chomp
87
- # print "\n"
88
- # print "Insert privilege database password:"
89
- # password=STDIN.noecho(&:gets).chomp
90
- # print "\n"
91
- # print "Insert database name:"
92
- # database=STDIN.noecho(&:gets).chomp
93
- # print "\n"
94
- # DB::DBManager.create_config_file(@env.data_dir,'localhost',database,user,password)
95
- # i=i+1
96
- # retry
97
- # end
80
+
98
81
  end
99
82
 
100
83
  if (!db.nil?)
@@ -136,9 +119,7 @@ module Vagrant
136
119
 
137
120
 
138
121
 
139
- # else
140
- # puts "INTRODUCIDA EN TERMINAL"
141
- # end
122
+
142
123
 
143
124
 
144
125
 
@@ -15,7 +15,9 @@ module Vagrant
15
15
  # options[:password] = b
16
16
  # end
17
17
  end
18
-
18
+
19
+ raise Errors::NoEnvironmentError if !@env.root_path
20
+
19
21
  argv = parse_options(opts)
20
22
  return if !argv
21
23
  raise Vagrant::Errors::CLIInvalidUsage, :help => opts.help.chomp if argv.length > 1
@@ -42,6 +42,8 @@ module Vagrant
42
42
  :AccessLog => access_log
43
43
  }
44
44
 
45
+
46
+
45
47
 
46
48
  #begin
47
49
  server = WEBrick::HTTPServer.new(options)
@@ -52,6 +54,8 @@ module Vagrant
52
54
 
53
55
  trap("USR1") {
54
56
 
57
+ puts "SERVER.RB RESTARTING SERVER"
58
+
55
59
  #Stopping server
56
60
  server.shutdown
57
61
 
@@ -64,7 +64,9 @@ module Vagrant
64
64
 
65
65
  # Setup the proc that'll receive the real-time data from
66
66
  # the downloader.
67
- last_id=@db.add_box_download_info(@box_name,@source)
67
+ last_id = @db.start_box_download
68
+
69
+ #last_id=@db.add_box_download_info(@box_name,@source)
68
70
 
69
71
  comienzo = Time.now();
70
72
 
@@ -139,12 +141,18 @@ module Vagrant
139
141
  end
140
142
 
141
143
 
142
- if ((!interrupted) && (result.exit_code==0))
143
- # @db.update_box_download_info(last_id,"100%","--:--:--")
144
- @db.delete_box_download(last_id)
145
- else
144
+ # if ((!interrupted) && (result.exit_code==0))
145
+ # # @db.update_box_download_info(last_id,"100%","--:--:--")
146
+ # @db.delete_box_download(last_id)
147
+ # else
148
+ # @db.set_box_download_error(last_id)
149
+ # end
150
+
151
+ if (interrupted || (result.exit_code!=0))
146
152
  @db.set_box_download_error(last_id)
147
153
  end
154
+
155
+
148
156
 
149
157
 
150
158
  # If the download was interrupted, then raise a specific error
@@ -0,0 +1,73 @@
1
+
2
+ require 'pp'
3
+
4
+ module Vagrant
5
+ module Node
6
+ module Util
7
+
8
+ class HwFunctions
9
+ MAJOR_SATA = 8
10
+ MAJOR_IDE = 3
11
+ MAJOR_FIELD = 0
12
+ MINOR_FIELD = 1
13
+ NAME_FIELD = 2
14
+ def self.get_mem_values
15
+
16
+ mem = []
17
+
18
+ mem_file = "/proc/meminfo"
19
+ mem_values = IO.readlines(mem_file)
20
+
21
+
22
+ mem[0] = (mem_values[0].split[1].to_i / 1024.0).round(2) #Converting to MB
23
+ mem[1] = (mem_values[1].split[1].to_i / 1024.0).round(2) #Converting to MB
24
+
25
+ mem
26
+
27
+ end
28
+
29
+ def self.get_disk_values
30
+
31
+ disk = []
32
+
33
+ stat_file = "/proc/diskstats"
34
+
35
+
36
+ IO.readlines(stat_file).each do |line|
37
+ major_number = line.split[MAJOR_FIELD].to_i
38
+ minor_number = line.split[MINOR_FIELD].to_i
39
+
40
+ if (((major_number==MAJOR_SATA) || (major_number==MAJOR_IDE)) && minor_number!=0)
41
+ #In this point you have all single disk partitions
42
+ #But we only want mounted ones
43
+ resout= `df -h`
44
+ resout.split("\n").each do |line1|
45
+ if (line1.split[0]=="/dev/"+line.split[NAME_FIELD])
46
+ entry =[]
47
+ entry[0] = line.split[NAME_FIELD]
48
+ entry[1] = line1.split[1]
49
+ entry[2] = line1.split[3]
50
+ entry[3] = line1.split[4]
51
+ disk << {:partition=>"/dev/"+line.split[NAME_FIELD],
52
+ :total=>line1.split[1],
53
+ :free=>line1.split[3],
54
+ :freepercent=>line1.split[4]}
55
+ # disk.push entry
56
+ end
57
+ end
58
+
59
+
60
+ end
61
+ end
62
+
63
+
64
+
65
+ disk
66
+
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+ end
73
+ end