vagrant-node 1.0.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module Node
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.1"
4
4
  end
5
5
  end
@@ -1,6 +1,9 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+
6
+
4
7
  require 'vagrant-node/version'
5
8
 
6
9
  Gem::Specification.new do |spec|
@@ -19,17 +22,26 @@ This plugin has been developed in the context of the Catedra SAES of the Univers
19
22
 
20
23
  spec.rubyforge_project = "vagrant-node"
21
24
 
22
- spec.add_dependency "sinatra"
25
+ spec.add_dependency "sinatra"
23
26
  spec.add_dependency "json"
24
27
  spec.add_dependency "rack"
28
+ #IMPORTANT Mysql DEV libraries must be installed on system
29
+ spec.add_dependency "mysql2"
30
+ spec.add_dependency "usagewatch"
31
+ spec.add_dependency "facter"
25
32
  spec.add_dependency "rubyzip", '< 1.0.0'
26
- spec.add_dependency "sqlite3"
33
+ # spec.add_dependency "sqlite3"
27
34
  spec.add_dependency "ruby2ruby", "~> 2.0.6"
28
35
  spec.add_dependency "ruby_parser", "~> 3.2.2"
36
+ spec.add_dependency "sys-cpu"
37
+
38
+
39
+
29
40
  #spec.add_dependency "sambal"
30
41
  #spec.add_dependency "rexml"
31
42
 
32
- spec.files = `git ls-files`.split($/)
43
+ #spec.files = `git ls-files`.split($/)
44
+ spec.files = `git ls-files`.split("\n")
33
45
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
34
46
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
35
47
  spec.require_paths = ["lib"]
@@ -37,3 +49,5 @@ This plugin has been developed in the context of the Catedra SAES of the Univers
37
49
  spec.add_development_dependency "bundler", "~> 1.3"
38
50
  spec.add_development_dependency "rake"
39
51
  end
52
+
53
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-node
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 0
9
- - 0
10
- version: 1.0.0
8
+ - 1
9
+ - 1
10
+ version: 1.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Francisco Javier Lopez de San Pedro
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2014-02-12 00:00:00 Z
18
+ date: 2014-12-12 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: sinatra
@@ -60,23 +60,21 @@ dependencies:
60
60
  type: :runtime
61
61
  version_requirements: *id003
62
62
  - !ruby/object:Gem::Dependency
63
- name: rubyzip
63
+ name: mysql2
64
64
  prerelease: false
65
65
  requirement: &id004 !ruby/object:Gem::Requirement
66
66
  none: false
67
67
  requirements:
68
- - - <
68
+ - - ">="
69
69
  - !ruby/object:Gem::Version
70
- hash: 23
70
+ hash: 3
71
71
  segments:
72
- - 1
73
72
  - 0
74
- - 0
75
- version: 1.0.0
73
+ version: "0"
76
74
  type: :runtime
77
75
  version_requirements: *id004
78
76
  - !ruby/object:Gem::Dependency
79
- name: sqlite3
77
+ name: usagewatch
80
78
  prerelease: false
81
79
  requirement: &id005 !ruby/object:Gem::Requirement
82
80
  none: false
@@ -90,9 +88,39 @@ dependencies:
90
88
  type: :runtime
91
89
  version_requirements: *id005
92
90
  - !ruby/object:Gem::Dependency
93
- name: ruby2ruby
91
+ name: facter
94
92
  prerelease: false
95
93
  requirement: &id006 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ hash: 3
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ type: :runtime
103
+ version_requirements: *id006
104
+ - !ruby/object:Gem::Dependency
105
+ name: rubyzip
106
+ prerelease: false
107
+ requirement: &id007 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - <
111
+ - !ruby/object:Gem::Version
112
+ hash: 23
113
+ segments:
114
+ - 1
115
+ - 0
116
+ - 0
117
+ version: 1.0.0
118
+ type: :runtime
119
+ version_requirements: *id007
120
+ - !ruby/object:Gem::Dependency
121
+ name: ruby2ruby
122
+ prerelease: false
123
+ requirement: &id008 !ruby/object:Gem::Requirement
96
124
  none: false
97
125
  requirements:
98
126
  - - ~>
@@ -104,11 +132,11 @@ dependencies:
104
132
  - 6
105
133
  version: 2.0.6
106
134
  type: :runtime
107
- version_requirements: *id006
135
+ version_requirements: *id008
108
136
  - !ruby/object:Gem::Dependency
109
137
  name: ruby_parser
110
138
  prerelease: false
111
- requirement: &id007 !ruby/object:Gem::Requirement
139
+ requirement: &id009 !ruby/object:Gem::Requirement
112
140
  none: false
113
141
  requirements:
114
142
  - - ~>
@@ -120,11 +148,25 @@ dependencies:
120
148
  - 2
121
149
  version: 3.2.2
122
150
  type: :runtime
123
- version_requirements: *id007
151
+ version_requirements: *id009
152
+ - !ruby/object:Gem::Dependency
153
+ name: sys-cpu
154
+ prerelease: false
155
+ requirement: &id010 !ruby/object:Gem::Requirement
156
+ none: false
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ hash: 3
161
+ segments:
162
+ - 0
163
+ version: "0"
164
+ type: :runtime
165
+ version_requirements: *id010
124
166
  - !ruby/object:Gem::Dependency
125
167
  name: bundler
126
168
  prerelease: false
127
- requirement: &id008 !ruby/object:Gem::Requirement
169
+ requirement: &id011 !ruby/object:Gem::Requirement
128
170
  none: false
129
171
  requirements:
130
172
  - - ~>
@@ -135,11 +177,11 @@ dependencies:
135
177
  - 3
136
178
  version: "1.3"
137
179
  type: :development
138
- version_requirements: *id008
180
+ version_requirements: *id011
139
181
  - !ruby/object:Gem::Dependency
140
182
  name: rake
141
183
  prerelease: false
142
- requirement: &id009 !ruby/object:Gem::Requirement
184
+ requirement: &id012 !ruby/object:Gem::Requirement
143
185
  none: false
144
186
  requirements:
145
187
  - - ">="
@@ -149,7 +191,7 @@ dependencies:
149
191
  - 0
150
192
  version: "0"
151
193
  type: :development
152
- version_requirements: *id009
194
+ version_requirements: *id012
153
195
  description: This Vagrant plugin allows you to configure a vm environment as a node in a client/server infraestructure. See also vagrant-nodemaster
154
196
  email:
155
197
  - fjsanpedro@gmail.com
@@ -166,8 +208,7 @@ files:
166
208
  - README.md
167
209
  - Rakefile
168
210
  - lib/vagrant-node.rb
169
- - lib/vagrant-node/actions/.svn/entries
170
- - lib/vagrant-node/actions/.svn/text-base/snapshot.rb.svn-base
211
+ - lib/vagrant-node/actions/boxadd.rb
171
212
  - lib/vagrant-node/actions/snapshot.rb
172
213
  - lib/vagrant-node/api.rb
173
214
  - lib/vagrant-node/apidesc.rb
@@ -179,9 +220,11 @@ files:
179
220
  - lib/vagrant-node/nodeserverpasswd.rb
180
221
  - lib/vagrant-node/nodeserverstart.rb
181
222
  - lib/vagrant-node/nodeserverstop.rb
223
+ - lib/vagrant-node/obmanager.rb
182
224
  - lib/vagrant-node/pidfile.rb
183
225
  - lib/vagrant-node/pwmanager.rb
184
226
  - lib/vagrant-node/server.rb
227
+ - lib/vagrant-node/util/downloader.rb
185
228
  - lib/vagrant-node/version.rb
186
229
  - vagrant-node.gemspec
187
230
  homepage: http://www.catedrasaes.org
@@ -1,62 +0,0 @@
1
- 10
2
-
3
- dir
4
- 9519
5
- svn+ssh://fjlopez@merovingio.inf.um.es/opt/svn-csaesumu/anotaciones/virtualizacion/plugin_vagrant/vagrant-node.v.1.0/lib/vagrant-node/actions
6
- svn+ssh://fjlopez@merovingio.inf.um.es/opt/svn-csaesumu
7
-
8
-
9
-
10
- 2013-11-12T10:06:01.121208Z
11
- 9519
12
- fjlopez
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
- ba35cbf9-6f3f-4c47-8bc9-f733df4a0683
28
-
29
- snapshot.rb
30
- file
31
- 9673
32
-
33
-
34
-
35
- 2013-12-12T12:01:25.734270Z
36
- 902583c2ad2de012ee3561adccd9ea17
37
- 2013-12-20T12:34:18.314374Z
38
- 9673
39
- fjlopez
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
- 8490
62
-
@@ -1,310 +0,0 @@
1
- require 'pp'
2
- require "rexml/document"
3
- require 'rubygems'
4
- require 'zip/zip'
5
-
6
-
7
- module Vagrant
8
- module Node
9
-
10
- class SnapshotAction
11
- LIST = :list
12
- TAKE = :take
13
- DELETE = :delete
14
- RESTORE = :restore
15
- BACKUP = :backup
16
- ERROR = :error
17
-
18
- def initialize(app, env)
19
- @app = app
20
- end
21
-
22
- def call(env)
23
-
24
- #FIXME generate a result code error to this case in order
25
- #to provide more info to the client
26
- raise RestException.new(406,"Couldn't perform the operation because machine is not yet created") if env[:machine].state.id==:not_created
27
- #return @app.call(env) if env[:machine].state.id==:not_created
28
-
29
- current_driver=env[:machine].provider.driver
30
-
31
- begin
32
- current_driver.check_snapshot_stuff
33
- rescue Exception => e
34
- case env[:machine].provider_name.to_s
35
- when "virtualbox" then
36
- attach_vbox_methods(current_driver)
37
- end
38
-
39
- end
40
-
41
- case env[:machine_action]
42
- when LIST then
43
- env[:snapshots_list]=current_driver.list
44
- when TAKE then
45
- env[:last_snapshot]=current_driver.take_snapshot(env[:snapshot_name],env[:snapshot_desc])
46
- when RESTORE then
47
- env[:restore_result]=current_driver.restore_snapshot(env[:snapshot_id])
48
- when DELETE then
49
- env[:delete_result]=current_driver.delete_snapshot(env[:snapshot_id])
50
- when BACKUP then
51
- env[:bak_filename]=current_driver.backup_vm(env[:machine].name.to_s,env[:machine].data_dir)
52
- end
53
-
54
- @app.call(env)
55
-
56
- end
57
-
58
- private
59
-
60
- def attach_vbox_methods(driver)
61
-
62
- def driver.check_snapshot_stuff
63
- return true
64
- end
65
-
66
- #FIXME Si no se hace con --pause y la máquina esta running
67
- #se produce un error y deja a la máquina en estado 'gurumeditating'
68
- def driver.take_snapshot(name,description=" ")
69
-
70
- raise RestException.new(400,"Snapshot name can't be emtpy") if name.empty?
71
-
72
- #Snapshots with the same name are not allowed
73
- begin
74
- #if this command doesn't fail means that there is a snapshot with the same name
75
- execute("snapshot",self.uuid,"showvminfo",name)
76
- raise RestException.new(400,"There is a snapshot with the same name, please choose another name for the new snapshot")
77
- rescue Vagrant::Errors::VBoxManageError => e
78
- #Doing nothing continue with the snapshot creation
79
- end
80
-
81
-
82
- #Execute the take command
83
- if (description)
84
- execute("snapshot",self.uuid,"take",name,"--description",description,"--pause")
85
- else
86
- execute("snapshot",self.uuid,"take",name,"--pause")
87
- end
88
-
89
- snapshot = {}
90
-
91
- #Getting the uuid of the latest snapshot
92
- execute("snapshot",self.uuid,"list").split("\n").each do |line|
93
- if line =~ /Name:\s(.*?)\s\(UUID:\s(.*?)\)\s\*$/
94
- snapshot[:name] = $1
95
- snapshot[:id] = $2
96
- end
97
-
98
- end
99
-
100
-
101
- #return snapshot
102
- snapshot
103
-
104
-
105
- end #driver.take_snapshot
106
-
107
- def driver.delete_snapshot(snapid)
108
- raise RestException.new(400,"Snapshot Identifier can't be emtpy") if snapid.empty?
109
- begin
110
- execute("snapshot",self.uuid,"delete",snapid)
111
- return true
112
- rescue =>e
113
- if e.message =~ /VBOX_E_OBJECT_NOT_FOUND/
114
- raise RestException.new(404,"The snapshot identifier provided doesn't exist")
115
- elsif e.message =~ /NS_ERROR_FAILURE/
116
- raise RestException.new(500,"Internal VBoxManage Error: can't delete the snapshot, try shutting down the Vm")
117
- else
118
- raise RestException.new(500,"Internal VBoxManage Error")
119
- end
120
- end
121
- end
122
-
123
-
124
-
125
- def driver.backup_vm(vmname,path)
126
-
127
- zipfilename=nil
128
- begin
129
- #Execute the export command
130
-
131
-
132
- time = Time.now
133
- basename = "Backup.#{vmname}.#{time.year}.#{time.month}.#{time.day}.#{time.hour}.#{time.min}.#{time.sec}"
134
- zipfilename = path.to_s + '/'+ basename + '.zip'
135
-
136
- vmdir = nil
137
- execute("showvminfo",self.uuid,"--machinereadable").split("\n").each do |line|
138
- vmdir = File.dirname($1) if line =~ /^CfgFile="(.*?)"$/
139
- end
140
-
141
-
142
- Zip::ZipFile.open(zipfilename, Zip::ZipFile::CREATE) do |zipfile|
143
- Dir[File.join(vmdir, '**', '**')].each do |file|
144
- zipfile.add(file.sub(vmdir+"/", ''), file)
145
- end
146
- end
147
-
148
- zipfilename
149
-
150
- rescue => e
151
- File.delete(zipfilename) if File.exists?(zipfilename)
152
- return ERROR
153
- end
154
-
155
-
156
- end #driver.backup_vm
157
-
158
-
159
-
160
- # def driver.export_vm(path)
161
- #
162
- # begin
163
- #Execute the export command
164
- # basename = "Backup.#{Time.now.to_i.to_s}"
165
- # filename = path + basename
166
- # execute("export",self.uuid,"--output",filename.to_s+".ovf")
167
- # zipfilename = filename.to_s + '.zip'
168
- #
169
- # files_to_zip = []
170
- # Dir.chdir(path)
171
- # Dir.glob(basename+"*") do |file|
172
- # files_to_zip << file
173
- # end
174
- #
175
- # Zip::ZipFile.open(zipfilename, Zip::ZipFile::CREATE) do |zipfile|
176
- # files_to_zip.each do |file|
177
- # zipfile.add(file,file)
178
- # end
179
- # end
180
- #
181
- #
182
- # Cleaning files
183
- # files_to_zip.each do |file|
184
- # File.delete(file)
185
- # end
186
- # return zipfilename
187
- #
188
- # rescue => e
189
- # puts e.message
190
- # return ERROR
191
- # end
192
-
193
-
194
- #end #driver.export_vm
195
-
196
-
197
- def driver.list
198
- config = nil
199
- current_snapshot = nil
200
-
201
- execute("showvminfo",self.uuid,"--machinereadable").split("\n").each do |line|
202
- config = $1 if line =~ /^CfgFile="(.*?)"$/
203
-
204
- end
205
-
206
- snapshots = []
207
-
208
- doc = REXML::Document.new File.new(config)
209
- machine = doc.elements["VirtualBox/Machine"]
210
-
211
- @current_snapshot = machine.attributes["currentSnapshot"]
212
-
213
- snapshots = search_snapshot(machine) if @current_snapshot
214
-
215
-
216
- snapshots
217
-
218
-
219
- end #driver.list
220
-
221
- def driver.search_snapshot(path)
222
-
223
- snapshots = []
224
- if path
225
- path.elements.each("Snapshot") { |element|
226
- snapshot = {}
227
- original_uuid = element.attributes["uuid"]
228
- snapshot[:uuid] = original_uuid[1..original_uuid.length-2]
229
- snapshot[:name] = element.attributes["name"]
230
- snapshot[:timestamp] = element.attributes["timeStamp"]
231
-
232
- if element.elements["Description"]
233
- snapshot[:description] = element.elements["Description"].text
234
- else
235
- snapshot[:description] = " "
236
- end
237
-
238
- if (original_uuid==@current_snapshot)
239
- snapshot[:current_state] = true
240
- else
241
- snapshot[:current_state] = false
242
- end
243
-
244
- snapshot[:snapshots] = search_snapshot(element.elements["Snapshots"])
245
-
246
- snapshots << snapshot
247
- }
248
- end #driver.search_snapshot(path)
249
-
250
- #return snapshot array
251
- snapshots
252
-
253
- end
254
-
255
- #snapipd could be the snapshot uuid or its name
256
- def driver.restore_snapshot(snapid)
257
-
258
- snapshots = []
259
-
260
- begin
261
-
262
- result = execute("snapshot",self.uuid,"restore",snapid)
263
-
264
- if result =~ /^Restoring snapshot\s(.*?)$/
265
- snapshots << $1
266
- end
267
-
268
- #return snapshot array
269
- snapshots
270
-
271
- rescue Vagrant::Errors::VBoxManageError => e
272
- return snapshots if e.message=~ /Could not find a snapshot named/
273
- end
274
- end
275
-
276
- end # attach_vbox_methods(driver)
277
-
278
-
279
- end
280
-
281
- end
282
- end
283
-
284
- # def driver.list
285
- # puts "LISTING SNAPSHOT"
286
- # begin
287
- # snapshots = []
288
- # puts "UUID #{self.uuid}"
289
- # execute("snapshot",self.uuid,"list").split("\n").each do |line|
290
- # snapshot = {}
291
- #
292
- # if line =~ /Name:\s(.*?)\s\(UUID:\s(.*?)\)$/
293
- # snapshot[:name] = $1
294
- # snapshot[:id] = $2
295
- # snapshot[:current_state] = false
296
- # elsif line =~ /Name:\s(.*?)\s\(UUID:\s(.*?)\)\s\*$/
297
- # snapshot[:name] = $1
298
- # snapshot[:id] = $2
299
- # snapshot[:current_state] = true
300
- # end
301
- # snapshots.push(snapshot)
302
- # end
303
- # rescue Exception => e
304
- # puts e.message
305
- # end
306
- #
307
- # puts snapshots
308
- # return snapshots
309
- # end
310
-