lab 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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