lab 0.2.2 → 0.2.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 (42) hide show
  1. data/config/test_lab.yml +61 -0
  2. data/lab.gemspec +4 -1
  3. data/lib/lab/controller/vsphere_controller.rb +2 -46
  4. data/lib/lab/driver/vsphere_driver.rb +2 -2
  5. data/lib/lab/version.rb +1 -1
  6. data/lib/lab/vm_controller.rb +15 -4
  7. data/util/console.rb +10 -0
  8. metadata +21 -43
  9. data/src/Gemfile +0 -4
  10. data/src/Rakefile +0 -1
  11. data/src/TODO +0 -15
  12. data/src/config/test_lab.yml +0 -11
  13. data/src/config/test_targets.yml +0 -21
  14. data/src/lab.gemspec +0 -35
  15. data/src/lib/lab/controller/dynagen_controller.rb +0 -14
  16. data/src/lib/lab/controller/fog_controller.rb +0 -6
  17. data/src/lib/lab/controller/remote_esxi_controller.rb +0 -62
  18. data/src/lib/lab/controller/remote_workstation_controller.rb +0 -22
  19. data/src/lib/lab/controller/virtualbox_controller.rb +0 -25
  20. data/src/lib/lab/controller/vsphere_controller.rb +0 -18
  21. data/src/lib/lab/controller/workstation_controller.rb +0 -17
  22. data/src/lib/lab/controller/workstation_vixr_controller.rb +0 -19
  23. data/src/lib/lab/controllers.rb +0 -9
  24. data/src/lib/lab/driver/dynagen_driver.rb +0 -47
  25. data/src/lib/lab/driver/fog_driver.rb +0 -104
  26. data/src/lib/lab/driver/remote_esxi_driver.rb +0 -177
  27. data/src/lib/lab/driver/remote_workstation_driver.rb +0 -197
  28. data/src/lib/lab/driver/virtualbox_driver.rb +0 -142
  29. data/src/lib/lab/driver/vm_driver.rb +0 -195
  30. data/src/lib/lab/driver/vsphere_driver.rb +0 -120
  31. data/src/lib/lab/driver/workstation_driver.rb +0 -234
  32. data/src/lib/lab/driver/workstation_vixr_driver.rb +0 -126
  33. data/src/lib/lab/drivers.rb +0 -9
  34. data/src/lib/lab/modifier/backtrack5_modifier.rb +0 -16
  35. data/src/lib/lab/modifier/dos_modifier.rb +0 -14
  36. data/src/lib/lab/modifier/test_modifier.rb +0 -16
  37. data/src/lib/lab/modifiers.rb +0 -3
  38. data/src/lib/lab/version.rb +0 -3
  39. data/src/lib/lab/vm.rb +0 -269
  40. data/src/lib/lab/vm_controller.rb +0 -275
  41. data/src/lib/lab.rb +0 -2
  42. data/src/test/.gitkeep +0 -0
data/config/test_lab.yml CHANGED
@@ -6,6 +6,67 @@
6
6
  credentials:
7
7
  - user: root
8
8
  pass: toor
9
+ admin: true
9
10
  os: linux
10
11
  flavor: ubuntu
11
12
  arch: 64
13
+ - vmid: backtrack_remote
14
+ driver: remote_workstation
15
+ user: root
16
+ host: vmhost
17
+ modifiers:
18
+ - Test
19
+ credentials:
20
+ - user: root
21
+ pass: toor
22
+ admin: true
23
+ os: linux
24
+ flavor: ubuntu
25
+ arch: 64
26
+ ###
27
+ # Windows XP SP3 - Browser Autopwn Target
28
+ ###
29
+ - vmid: 222
30
+ hostname: xp
31
+ description: Windows XP SP3 - Browser Autopwn Target
32
+ driver: remote_esxi
33
+ user: root
34
+ host: vmhost1
35
+ type: target
36
+ arch: 32
37
+ os: linux
38
+ credentials:
39
+ - user: msfadmin
40
+ pass: msfadmin
41
+ admin: true
42
+ tags:
43
+ - ie6
44
+ - ie7
45
+ - ie8
46
+ - firefox
47
+ - java
48
+ - flash
49
+ - quicktime
50
+ ###
51
+ # Windows 7 SP1
52
+ ###
53
+ - vmid: 1111
54
+ hostname: win7
55
+ description: Windows 7 SP1 - Browser Autopwn Target
56
+ driver: remote_esxi
57
+ user: root
58
+ host: vmhost1
59
+ pass: whatever
60
+ type: target
61
+ arch: 32
62
+ os: linux
63
+ credentials:
64
+ - user: msfadmin
65
+ pass: msfadmin
66
+ admin: true
67
+ tags:
68
+ - ie8
69
+ - firefox
70
+ - java
71
+ - flash
72
+ - quicktime
data/lab.gemspec CHANGED
@@ -31,5 +31,8 @@ Gem::Specification.new do |s|
31
31
 
32
32
  # Vmware vsphere driver
33
33
  s.add_runtime_dependency "rbvmomi"
34
-
34
+
35
+ # util/console.rb
36
+ s.add_runtime_dependency "pry"
37
+
35
38
  end
@@ -3,58 +3,14 @@
3
3
 
4
4
  module Lab
5
5
  module Controllers
6
- module RemoteEsxiController
7
-
8
- # Note that 3.5 was different (vmware-vim-cmd)
9
- VIM_CMD = 'vim-cmd'.freeze
6
+ module VsphereController
10
7
 
11
8
  def self.dir_list(basepath=nil)
12
9
  # Does this method really even make sense for esxi?
13
- return "Unsupported :("
10
+ return "Unimplemented"
14
11
  end
15
12
 
16
13
  def self.running_list(user, host)
17
- user.gsub!(/(\W)*/, '')
18
- host.gsub!(/(\W)*/, '')
19
-
20
- # first get all registered vms
21
- registered_vms = self.get_vms(user, host) || []
22
- running_vms = []
23
-
24
- # now let's see which ones are running
25
- # TODO: this is ghetto, would be better not to connect repeatedly
26
- registered_vms.each do |vm|
27
- remote_cmd = "ssh #{user}@#{host} \"#{VIM_CMD} vmsvc/power.getstate #{vm[:id]}\""
28
- raw = `#{remote_cmd}`
29
- running_vms << vm if raw =~ /Powered on/
30
- end
31
-
32
- return running_vms
33
- end
34
-
35
- private
36
-
37
- def self.get_vms(user, host)
38
- user.gsub!(/(\W)*/, '')
39
- host.gsub!(/(\W)*/, '')
40
-
41
- vms = [] # array of VM hashes
42
- remote_cmd = "ssh #{user}@#{host} \"#{VIM_CMD} vmsvc/getallvms | grep ^[0-9] | sed 's/[[:blank:]]\\{3,\\}/ /g'\""
43
- raw = `#{remote_cmd}`.split("\n")
44
-
45
- raw.each do |line|
46
- # So effing ghetto
47
- id_and_name = line.split('[datastore').first
48
- id = id_and_name.split(' ').first
49
-
50
- # TODO - there's surely a better way to do this.
51
- name_array = id_and_name.split(' ')
52
- name_array.shift
53
- name = name_array.join(' ')
54
- vms << {:id => id, :name => name}
55
- end
56
-
57
- return vms
58
14
  end
59
15
 
60
16
  end
@@ -15,7 +15,7 @@ class VsphereDriver < VmDriver
15
15
  def initialize(config)
16
16
  unless config['user'] then raise ArgumentError, "Must provide a username" end
17
17
  unless config['host'] then raise ArgumentError, "Must provide a hostname" end
18
- unless config[''] then raise ArgumentError, "Must provide a password" end
18
+ unless config['pass'] then raise ArgumentError, "Must provide a password" end
19
19
  super(config)
20
20
 
21
21
  @user = filter_command(config['user'])
@@ -28,7 +28,7 @@ class VsphereDriver < VmDriver
28
28
  raise "WARNING: Library rbvmomi not found. Could not create driver!"
29
29
  end
30
30
 
31
- vim = RbVmomi::VIM.connect host: @host, user: @user, password: @pass
31
+ vim = RbVmomi::VIM.connect host: @host, user: @user, password: @pass, insecure: true
32
32
  dc = vim.serviceInstance.find_datacenter("datacenter1") or fail "datacenter not found"
33
33
  @vm = dc.find_vm("test") or fail "VM not found"
34
34
  end
data/lib/lab/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lab
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -35,7 +35,7 @@ module Controllers
35
35
  include Lab::Controllers::FogController
36
36
  include Lab::Controllers::DynagenController
37
37
  include Lab::Controllers::RemoteEsxiController
38
- include Lab::Controllers::VsphereDriver
38
+ include Lab::Controllers::VsphereController
39
39
  #include Lab::Controllers::QemuController
40
40
  #include Lab::Controllers::QemudoController
41
41
  def initialize (labdef=nil)
@@ -62,15 +62,19 @@ module Controllers
62
62
 
63
63
  def find_by_vmid(search)
64
64
  @vms.each do |vm|
65
- return vm if vm.hostname.to_s.downcase == search.to_s.downcase
65
+ return vm if vm.hostname == search
66
66
  end
67
- return nil
67
+ nil
68
+ end
69
+
70
+ def find_by_hostname(search)
71
+ self.find_by_vmid search
68
72
  end
69
73
 
70
74
  def find_by_tag(search)
71
75
  @vms.each do |vm|
72
76
  vm.tags.each do |tag|
73
- return vm if tag.downcase == search.to_s.downcase
77
+ return vm if tag == search
74
78
  end
75
79
  end
76
80
  return nil
@@ -121,6 +125,13 @@ module Controllers
121
125
  false
122
126
  end
123
127
 
128
+ def includes_hostname?(hostname)
129
+ @vms.each do |vm|
130
+ return true if (vm.hostname == hostname)
131
+ end
132
+ false
133
+ end
134
+
124
135
  #
125
136
  # Build a vm lab from a directory of files. Really only useful for file-based
126
137
  # vm hosts. (vmware workstation)
data/util/console.rb ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pry'
3
+ require "#{File.expand_path(File.dirname(__FILE__))}/../lib/lab/vm_controller"
4
+
5
+ @controller = Lab::Controllers::VmController.new
6
+ @controller.from_file("#{File.expand_path(File.dirname(__FILE__))}/../config/test_lab.yml")
7
+
8
+ ENV['SSL_CERT_FILE'] = "/home/jcran/.cacert.pem"
9
+
10
+ Pry.start(self, :prompt => [proc{"lab (@controller) >"}])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &21345740 !ruby/object:Gem::Requirement
16
+ requirement: &16389100 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *21345740
24
+ version_requirements: *16389100
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: net-ssh
27
- requirement: &21329820 !ruby/object:Gem::Requirement
27
+ requirement: &16388080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *21329820
35
+ version_requirements: *16388080
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: net-scp
38
- requirement: &21328760 !ruby/object:Gem::Requirement
38
+ requirement: &16372100 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *21328760
46
+ version_requirements: *16372100
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rbvmomi
49
- requirement: &21328000 !ruby/object:Gem::Requirement
49
+ requirement: &16371000 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,18 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *21328000
57
+ version_requirements: *16371000
58
+ - !ruby/object:Gem::Dependency
59
+ name: pry
60
+ requirement: &16370260 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *16370260
58
69
  description: ! 'Start/Stop/Revert and do other cool stuff w/ Vmware, Virtualbox, and
59
70
  ESXi vms. This gem wraps common CLI utilities and other gems to create a common
60
71
  inteface for vms. '
@@ -101,41 +112,8 @@ files:
101
112
  - lib/lab/version.rb
102
113
  - lib/lab/vm.rb
103
114
  - lib/lab/vm_controller.rb
104
- - src/Gemfile
105
- - src/Rakefile
106
- - src/TODO
107
- - src/config/test_lab.yml
108
- - src/config/test_targets.yml
109
- - src/lab.gemspec
110
- - src/lib/lab.rb
111
- - src/lib/lab/controller/dynagen_controller.rb
112
- - src/lib/lab/controller/fog_controller.rb
113
- - src/lib/lab/controller/remote_esxi_controller.rb
114
- - src/lib/lab/controller/remote_workstation_controller.rb
115
- - src/lib/lab/controller/virtualbox_controller.rb
116
- - src/lib/lab/controller/vsphere_controller.rb
117
- - src/lib/lab/controller/workstation_controller.rb
118
- - src/lib/lab/controller/workstation_vixr_controller.rb
119
- - src/lib/lab/controllers.rb
120
- - src/lib/lab/driver/dynagen_driver.rb
121
- - src/lib/lab/driver/fog_driver.rb
122
- - src/lib/lab/driver/remote_esxi_driver.rb
123
- - src/lib/lab/driver/remote_workstation_driver.rb
124
- - src/lib/lab/driver/virtualbox_driver.rb
125
- - src/lib/lab/driver/vm_driver.rb
126
- - src/lib/lab/driver/vsphere_driver.rb
127
- - src/lib/lab/driver/workstation_driver.rb
128
- - src/lib/lab/driver/workstation_vixr_driver.rb
129
- - src/lib/lab/drivers.rb
130
- - src/lib/lab/modifier/backtrack5_modifier.rb
131
- - src/lib/lab/modifier/dos_modifier.rb
132
- - src/lib/lab/modifier/test_modifier.rb
133
- - src/lib/lab/modifiers.rb
134
- - src/lib/lab/version.rb
135
- - src/lib/lab/vm.rb
136
- - src/lib/lab/vm_controller.rb
137
- - src/test/.gitkeep
138
115
  - test/.gitkeep
116
+ - util/console.rb
139
117
  homepage: http://www.github.com/rapid7/lab/wiki
140
118
  licenses: []
141
119
  post_install_message:
data/src/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in lab.gemspec
4
- gemspec
data/src/Rakefile DELETED
@@ -1 +0,0 @@
1
- require "bundler/gem_tasks"
data/src/TODO DELETED
@@ -1,15 +0,0 @@
1
- This is a list of basic priorities for the lab code...
2
-
3
- * Implement more technologies
4
-
5
- a) finish amazon ec2 (via fog)
6
- b) qemu
7
- c) qemudo
8
- d) kvm
9
- e) other cloud technologies (newservers, slicehost/rackspace,etc)
10
-
11
- * Implement a cloning function on each controller
12
-
13
- * Support Windows as a host platform. Currently all the code assumes a linux host is running it. The same applies for the remote_* drivers -- they've not been tested on windows.
14
-
15
- * Consolidate the remote_system_command code & provide a filter. Create an unsafe_system_command and unsafe_remote_system_command function call for when we control the entire string.
@@ -1,11 +0,0 @@
1
- - vmid: backtrack
2
- driver: workstation
3
- location: /opt/vm/backtrack5/Backtrack5x64.vmx
4
- modifiers:
5
- - Test
6
- credentials:
7
- - user: root
8
- pass: toor
9
- os: linux
10
- flavor: ubuntu
11
- arch: 64
@@ -1,21 +0,0 @@
1
- - vmid: metasploitable
2
- driver: workstation
3
- location: /opt/vm/lab/user/Metasploitable/Metasploitable.vmx
4
- tools: false
5
- credentials:
6
- - user: msfadmin
7
- pass: msfadmin
8
- - vmid: windows2000_target
9
- driver: workstation
10
- location: /opt/vm/lab/vuln/msf_Win2000SP4/Windows 2000 AS.vmx
11
- tools: true
12
- credentials:
13
- - vmid: windowsxp_target
14
- driver: remote_workstation
15
- host: vmhost
16
- user: root
17
- location: /opt/vm/lab/vuln/msf_WinXPSP1/Windows XP Professional.vmx
18
- tools: true
19
- credentials:
20
- - user: administrator
21
- pass: administrator
data/src/lab.gemspec DELETED
@@ -1,35 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib/', __FILE__)
3
- $:.unshift lib unless $:.include?(lib)
4
- require 'lab/version'
5
-
6
- Gem::Specification.new do |s|
7
- s.name = "lab"
8
- s.version = Lab::VERSION
9
- s.authors = ["Jonathan Cran"]
10
- s.email = ["jcran@rapid7.com"]
11
- s.homepage = "http://www.github.com/rapid7/lab/wiki"
12
- s.summary = %q{Manage VMs like a boss}
13
- s.description = %q{Start/Stop/Revert and do other cool stuff w/ Vmware, Virtualbox, and ESXi vms. This gem wraps common CLI utilities and other gems to create a common inteface for vms. }
14
-
15
- s.rubyforge_project = "lab"
16
-
17
- s.files = `git ls-files`.split("\n")
18
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
- s.require_paths = ["lib"]
21
-
22
- # specify any dependencies here; for example:
23
- # s.add_development_dependency "rspec"
24
-
25
- # ??
26
- s.add_runtime_dependency "nokogiri"
27
-
28
- # Multiple things - fallback execute / copy
29
- s.add_runtime_dependency "net-ssh"
30
- s.add_runtime_dependency "net-scp"
31
-
32
- # Vmware ESX driver
33
- s.add_runtime_dependency "rbvmomi"
34
-
35
- end
@@ -1,14 +0,0 @@
1
- module Lab
2
- module Controllers
3
- module DynagenController
4
-
5
- def self.running_list
6
- raise "Unsupported"
7
- end
8
-
9
- def self.dir_list(basepath=nil)
10
- raise "Unsupported"
11
- end
12
- end
13
- end
14
- end
@@ -1,6 +0,0 @@
1
- module Lab
2
- module Controllers
3
- module FogController
4
- end
5
- end
6
- end
@@ -1,62 +0,0 @@
1
- # This controller was built against:
2
- # VMware ESX Host Agent 4.1.0 build-348481
3
-
4
- module Lab
5
- module Controllers
6
- module RemoteEsxiController
7
-
8
- # Note that 3.5 was different (vmware-vim-cmd)
9
- VIM_CMD = 'vim-cmd'.freeze
10
-
11
- def self.dir_list(basepath=nil)
12
- # Does this method really even make sense for esxi?
13
- return "Unsupported :("
14
- end
15
-
16
- def self.running_list(user, host)
17
- user.gsub!(/(\W)*/, '')
18
- host.gsub!(/(\W)*/, '')
19
-
20
- # first get all registered vms
21
- registered_vms = self.get_vms(user, host) || []
22
- running_vms = []
23
-
24
- # now let's see which ones are running
25
- # TODO: this is ghetto, would be better not to connect repeatedly
26
- registered_vms.each do |vm|
27
- remote_cmd = "ssh #{user}@#{host} \"#{VIM_CMD} vmsvc/power.getstate #{vm[:id]}\""
28
- raw = `#{remote_cmd}`
29
- running_vms << vm if raw =~ /Powered on/
30
- end
31
-
32
- return running_vms
33
- end
34
-
35
- private
36
-
37
- def self.get_vms(user, host)
38
- user.gsub!(/(\W)*/, '')
39
- host.gsub!(/(\W)*/, '')
40
-
41
- vms = [] # array of VM hashes
42
- remote_cmd = "ssh #{user}@#{host} \"#{VIM_CMD} vmsvc/getallvms | grep ^[0-9] | sed 's/[[:blank:]]\\{3,\\}/ /g'\""
43
- raw = `#{remote_cmd}`.split("\n")
44
-
45
- raw.each do |line|
46
- # So effing ghetto
47
- id_and_name = line.split('[datastore').first
48
- id = id_and_name.split(' ').first
49
-
50
- ## TODO - there's surely a better way to do this.
51
- name_array = id_and_name.split(' ')
52
- name_array.shift
53
- name = name_array.join(' ')
54
- vms << {:id => id, :name => name}
55
- end
56
-
57
- return vms
58
- end
59
-
60
- end
61
- end
62
- end
@@ -1,22 +0,0 @@
1
- module Lab
2
- module Controllers
3
- module RemoteWorkstationController
4
-
5
- def self.running_list(user, host)
6
- user.gsub!(/(\W)*/, '')
7
- host.gsub!(/(\W)*/, '')
8
-
9
- remote_cmd = "ssh #{user}@#{host} \"vmrun list nogui\""
10
- vm_list = `#{remote_cmd}`.split("\n")
11
- vm_list.shift
12
-
13
- return vm_list
14
- end
15
-
16
- def self.dir_list(basepath=nil)
17
- vm_list = Find.find(basepath).select { |f| f =~ /\.vmx$/ }
18
- return vm_list
19
- end
20
- end
21
- end
22
- end
@@ -1,25 +0,0 @@
1
- module Lab
2
- module Controllers
3
- module VirtualBoxController
4
-
5
- def self.running_list
6
- vm_names_and_uuids = `VBoxManage list runningvms`
7
- return vm_names_and_uuids.scan(/\"(.*)\" {.*}/).flatten
8
- end
9
-
10
- def self.config_list
11
- vm_names_and_uuids = `VBoxManage list vms`
12
- return vm_names_and_uuids.scan(/\"(.*)\" {.*}/).flatten
13
- end
14
-
15
- def self.config_list_uuid
16
- vm_names_and_uuids = `VBoxManage list vms`
17
- return vm_names_and_uuids.scan(/\".*\" {(.*)}/).flatten
18
- end
19
-
20
- def self.dir_list(basepath=nil)
21
- vm_list = Find.find(basepath).select { |f| f =~ /\.xml$/ }
22
- end
23
- end
24
- end
25
- end
@@ -1,18 +0,0 @@
1
- # This controller was built against:
2
- # VMware ESX Host Agent 4.1.0 build-348481
3
-
4
- module Lab
5
- module Controllers
6
- module VsphereController
7
-
8
- def self.dir_list(basepath=nil)
9
- return "Unimplemented"
10
- end
11
-
12
- def self.running_list(user, host)
13
- return "Unimplemented"
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,17 +0,0 @@
1
- module Lab
2
- module Controllers
3
- module WorkstationController
4
-
5
- def self.running_list
6
- vm_list = `vmrun list`.split("\n")
7
- vm_list.shift
8
- return vm_list
9
- end
10
-
11
- def self.dir_list(basepath=nil)
12
- vm_list = Find.find(basepath).select { |f| f =~ /\.vmx$/ }
13
- return vm_list
14
- end
15
- end
16
- end
17
- end
@@ -1,19 +0,0 @@
1
- module Lab
2
- module Controllers
3
- module WorkstationVixrController
4
-
5
- def self.running_list
6
- vm_list = `vmrun list`.split("\n")
7
- vm_list.shift
8
-
9
- return vm_list
10
- end
11
-
12
- def self.dir_list(basepath=nil)
13
- vm_list = Find.find(basepath).select { |f| f =~ /\.vmx$/ }
14
-
15
- return vm_list
16
- end
17
- end
18
- end
19
- end
@@ -1,9 +0,0 @@
1
- require 'controller/workstation_controller'
2
- require 'controller/virtualbox_controller'
3
- require 'controller/fog_controller'
4
- require 'controller/dynagen_controller'
5
- require 'controller/remote_workstation_controller'
6
- require 'controller/remote_esxi_controller'
7
- require 'controller/vsphere_controller'
8
- #require 'controller/qemu_controller'
9
- #require 'controller/qemudo_controller'
@@ -1,47 +0,0 @@
1
- require 'vm_driver'
2
-
3
- #
4
- # $Id$
5
- #
6
-
7
- #
8
- # To use this driver, you have to have a lab which is preconfigured. The best / easiest
9
- # way i've found to to set up a lab is GNS3
10
- #
11
-
12
- module Lab
13
- module Drivers
14
- class DynagenDriver < VmDriver
15
- def initialize(config,dynagen_config)
16
- super(config)
17
- @running = false
18
- @dynagen_platform = filter_command(dynagen_config['dynagen_platform'])
19
- end
20
-
21
- def start
22
- # TODO - write the location-file to a temp-file
23
- # and set the autostart property
24
-
25
- ## start background dynamips process
26
- system_command("dynamips -H #{@dynagen_platform} &")
27
- system_command("dynagen #{@location}")
28
- @running = true
29
- end
30
-
31
- def stop
32
- system_command("killall dynagen")
33
- @running = false
34
- end
35
-
36
- def cleanup
37
- `killall dynagen`
38
- `killall dynamips`
39
- @running = false
40
- end
41
-
42
- def running?
43
- return @running
44
- end
45
- end
46
- end
47
- end