sahara 0.0.13 → 0.0.15

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.
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ pkg/*
4
4
  tmp/*
5
5
  .vagrant
6
6
  Vagrantfile
7
+ Gemfile.lock
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "sahara", :path => "."
3
+ gemspec
4
4
  gem "rake"
5
- #gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git"
5
+
data/README.md CHANGED
@@ -1,3 +1,9 @@
1
+ # Notice
2
+
3
+ - Sahara does not work with Vagrant 1.0 or lower.
4
+ - If you want to install an old version for Vagrant 1.0, you have to run the command like "gem install sahara -v 0.0.13"
5
+ - But I strongly recommend you to upgrade your Vagrant to latest version.
6
+
1
7
  # Description
2
8
 
3
9
  Sahara allows vagrant to operate in sandbox mode.
@@ -14,10 +20,17 @@ Many kudos go to the creators of [vagrant](http://vagrantup.com)
14
20
 
15
21
  # Installation
16
22
 
17
- This is now available as gem:
23
+ From source:
24
+ <pre>
25
+ bundle install
26
+ rake build
27
+ vagrant plugin install pkg/sahara-0.0.xx.gem
28
+ </pre>
18
29
 
19
- <pre>gem install sahara</pre>
20
-
21
- # Windows Notes
30
+ This is now available as gem:
31
+ <pre>
32
+ vagrant plugin install sahara
33
+ </pre>
22
34
 
23
- It works on Windows with Vagrant 1.0.x installed (with patch for [issue#817](https://github.com/mitchellh/vagrant/issues/817))
35
+ # License
36
+ This is licensed under the MIT license.
@@ -1 +1,19 @@
1
- require 'vagrant'
1
+ # -*- encoding: utf-8 -*-
2
+ # vim: set fileencoding=utf-8
3
+
4
+ require "vagrant"
5
+ require File.expand_path("../sahara/session", __FILE__)
6
+
7
+ module Sahara
8
+ class Plugin < Vagrant.plugin("2")
9
+ name "sahara"
10
+ description <<-DESC
11
+ Sahara
12
+ DESC
13
+
14
+ command("sandbox") do
15
+ require File.expand_path("../sahara/command/root", __FILE__)
16
+ Command::Root
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,6 @@
1
1
  module Sahara
2
2
  module Command
3
- class Commit < ::Vagrant::Command::Base
3
+ class Commit < Vagrant.plugin("2", :command)
4
4
  def execute
5
5
 
6
6
  options = {}
@@ -16,9 +16,10 @@ module Sahara
16
16
  argv = parse_options(opts)
17
17
  return if !argv
18
18
 
19
- boxname=argv[0]
20
- begin
21
- Sahara::Session.commit(boxname)
19
+ ses = Sahara::Session::Command.new(@app, @env)
20
+
21
+ with_target_vms(argv, :reverse => true) do |machine|
22
+ ses.commit(machine)
22
23
  end
23
24
  end
24
25
  end
@@ -1,6 +1,6 @@
1
1
  module Sahara
2
2
  module Command
3
- class Off < ::Vagrant::Command::Base
3
+ class Off < Vagrant.plugin("2", :command)
4
4
  def execute
5
5
 
6
6
  options = {}
@@ -16,9 +16,10 @@ module Sahara
16
16
  argv = parse_options(opts)
17
17
  return if !argv
18
18
 
19
- boxname=argv[0]
20
- begin
21
- Sahara::Session.off(boxname)
19
+ ses = Sahara::Session::Command.new(@app, @env)
20
+
21
+ with_target_vms(argv, :reverse => true) do |machine|
22
+ ses.off(machine)
22
23
  end
23
24
  end
24
25
  end
@@ -1,6 +1,8 @@
1
+ require "optparse"
2
+
1
3
  module Sahara
2
4
  module Command
3
- class On < ::Vagrant::Command::Base
5
+ class On < Vagrant.plugin("2", :command)
4
6
  def execute
5
7
 
6
8
  options = {}
@@ -16,9 +18,10 @@ module Sahara
16
18
  argv = parse_options(opts)
17
19
  return if !argv
18
20
 
19
- boxname=argv[0]
20
- begin
21
- Sahara::Session.on(boxname)
21
+ ses = Sahara::Session::Command.new(@app, @env)
22
+
23
+ with_target_vms(argv, :reverse => true) do |machine|
24
+ ses.on(machine)
22
25
  end
23
26
  end
24
27
  end
@@ -1,6 +1,6 @@
1
1
  module Sahara
2
2
  module Command
3
- class Rollback < ::Vagrant::Command::Base
3
+ class Rollback < Vagrant.plugin("2", :command)
4
4
  def execute
5
5
 
6
6
  options = {}
@@ -16,9 +16,10 @@ module Sahara
16
16
  argv = parse_options(opts)
17
17
  return if !argv
18
18
 
19
- boxname=argv[0]
20
- begin
21
- Sahara::Session.rollback(boxname)
19
+ ses = Sahara::Session::Command.new(@app, @env)
20
+
21
+ with_target_vms(argv, :reverse => true) do |machine|
22
+ ses.rollback(machine)
22
23
  end
23
24
  end
24
25
  end
@@ -1,30 +1,43 @@
1
- require 'sahara'
2
1
  require 'optparse'
3
- require 'sahara/command/status'
4
- require 'sahara/command/on'
5
- require 'sahara/command/commit'
6
- require 'sahara/command/rollback'
7
- require 'sahara/command/off'
8
2
 
9
- module Sahara
3
+ module Sahara
10
4
  module Command
11
- class Sandbox < ::Vagrant::Command::Base
12
- def initialize(argv,env)
5
+ class Root < Vagrant.plugin("2", :command)
6
+ def initialize(argv, env)
13
7
  super
14
8
 
15
9
  @main_args, @sub_command, @sub_args = split_main_and_subcommand(argv)
16
10
 
17
- @subcommands = ::Vagrant::Registry.new
18
- @subcommands.register(:status) { Sahara::Command::Status }
19
- @subcommands.register(:on) { Sahara::Command::On }
20
- @subcommands.register(:off) { Sahara::Command::Off }
21
- @subcommands.register(:commit) { Sahara::Command::Commit }
22
- @subcommands.register(:rollback) { Sahara::Command::Rollback }
11
+ @subcommands = Vagrant::Registry.new
12
+ @subcommands.register(:on) do
13
+ require_relative "on"
14
+ On
15
+ end
16
+
17
+ @subcommands.register(:off) do
18
+ require_relative "off"
19
+ Off
20
+ end
21
+
22
+ @subcommands.register(:commit) do
23
+ require_relative "commit"
24
+ Commit
25
+ end
26
+
27
+ @subcommands.register(:rollback) do
28
+ require_relative "rollback"
29
+ Rollback
30
+ end
31
+
32
+ @subcommands.register(:status) do
33
+ require_relative "status"
34
+ Status
35
+ end
23
36
  end
24
37
 
25
38
  def execute
26
39
  if @main_args.include?("-h") || @main_args.include?("--help")
27
- # Print the help for all the box commands.
40
+ # Print the help for all the sub-commands.
28
41
  return help
29
42
  end
30
43
 
@@ -40,10 +53,10 @@ module Sahara
40
53
 
41
54
  # Prints the help out for this command
42
55
  def help
43
- opts = OptionParser.new do |opts|
44
- opts.banner = "Usage: vagrant sandbox <command> [<args>]"
45
- opts.separator ""
46
- opts.separator "Available subcommands:"
56
+ opts = OptionParser.new do |o|
57
+ o.banner = "Usage: vagrant plugin <command> [<args>]"
58
+ o.separator ""
59
+ o.separator "Available subcommands:"
47
60
 
48
61
  # Add the available subcommands as separators in order to print them
49
62
  # out as well.
@@ -51,11 +64,11 @@ module Sahara
51
64
  @subcommands.each { |key, value| keys << key.to_s }
52
65
 
53
66
  keys.sort.each do |key|
54
- opts.separator " #{key}"
67
+ o.separator " #{key}"
55
68
  end
56
69
 
57
- opts.separator ""
58
- opts.separator "For help on any individual command run `vagrant sandbox COMMAND -h`"
70
+ o.separator ""
71
+ o.separator "For help on any individual command run `vagrant plugin COMMAND -h`"
59
72
  end
60
73
 
61
74
  @env.ui.info(opts.help, :prefix => false)
@@ -2,7 +2,7 @@ require 'optparse'
2
2
 
3
3
  module Sahara
4
4
  module Command
5
- class Status < ::Vagrant::Command::Base
5
+ class Status < Vagrant.plugin("2", :command)
6
6
 
7
7
  def execute
8
8
 
@@ -19,9 +19,10 @@ module Sahara
19
19
  argv = parse_options(opts)
20
20
  return if !argv
21
21
 
22
- boxname=argv[0]
23
- begin
24
- Sahara::Session.status(boxname)
22
+ ses = Sahara::Session::Command.new(@app, @env)
23
+
24
+ with_target_vms(argv, :reverse => true) do |machine|
25
+ ses.status(machine)
25
26
  end
26
27
  end
27
28
  end
@@ -1,240 +1,135 @@
1
1
  require 'pp'
2
2
 
3
- require 'sahara/shell'
4
-
5
3
  module Sahara
6
4
  module Session
5
+ class Command
7
6
 
8
- def self.determine_vboxcmd
9
- if windows?
10
- # On Windows, we use the VBOX_INSTALL_PATH environmental
11
- if ENV.has_key?("VBOX_INSTALL_PATH")
12
- # The path usually ends with a \ but we make sure here
13
- path = File.join(ENV["VBOX_INSTALL_PATH"], "VBoxManage.exe")
14
- return "\"#{path}\""
7
+ def initialize(app, env)
8
+ @app = app
9
+ @env = env
10
+ @vboxcmd=determine_vboxcmd
11
+ @sandboxname="sahara-sandbox"
12
+ end
13
+
14
+ def determine_vboxcmd
15
+ if windows?
16
+ # On Windows, we use the VBOX_INSTALL_PATH environmental
17
+ if ENV.has_key?("VBOX_INSTALL_PATH")
18
+ # The path usually ends with a \ but we make sure here
19
+ path = File.join(ENV["VBOX_INSTALL_PATH"], "VBoxManage.exe")
20
+ return "\"#{path}\""
21
+ end
22
+ else
23
+ # for other platforms assume it is on the PATH
24
+ return "VBoxManage"
15
25
  end
16
- else
17
- # for other platforms assume it is on the PATH
18
- return "VBoxManage"
19
26
  end
20
- end
21
-
22
- def self.windows?
23
- %W[mingw mswin].each do |text|
24
- return true if RbConfig::CONFIG["host_os"].downcase.include?(text)
27
+
28
+ def windows?
29
+ %W[mingw mswin].each do |text|
30
+ return true if RbConfig::CONFIG["host_os"].downcase.include?(text)
31
+ end
32
+ false
25
33
  end
26
- false
27
- end
28
-
29
- def self.initialize
30
- @vagrant_env=Vagrant::Environment.new
31
- @vboxcmd=determine_vboxcmd
32
- @sandboxname="sahara-sandbox"
33
- end
34
-
35
- def self.status(selection)
36
- self.initialize
37
-
38
- on_selected_vms(selection) do |boxname|
39
- if is_snapshot_mode_on?(boxname)
40
- puts "[#{boxname}] - snapshot mode is on"
41
- else
42
- puts "[#{boxname}] - snapshot mode is off"
34
+
35
+ def list_snapshots(machine)
36
+ snapshotlist=Array.new
37
+ instance_id = machine.id
38
+ output = `#{@vboxcmd} showvminfo --machinereadable "#{instance_id}"`
39
+ snapshotresult=output.scan(/SnapshotName.*=(.*)/).flatten
40
+ snapshotresult.each do |result|
41
+ clean=result.gsub(/\"/,'').chomp
42
+ snapshotlist << clean
43
43
  end
44
+ snapshotlist
44
45
  end
45
-
46
- end
47
-
48
- def self.on(selection)
49
- self.initialize
50
-
51
- on_selected_vms(selection) do |boxname|
52
- if is_snapshot_mode_on?(boxname)
53
- puts "[#{boxname}] - snapshot mode is already on"
46
+
47
+ def status(machine)
48
+ if !self.is_vm_created?(machine) then
49
+ puts "[#{machine.name}] VM is not created"
50
+ return
51
+ end
52
+ if self.is_snapshot_mode_on?(machine) then
53
+ puts "[#{machine.name}] Sandbox mode is on"
54
54
  else
55
- instance_uuid="#{@vagrant_env.vms[boxname.to_sym].uuid}"
56
-
57
- #Creating a snapshot
58
- puts "[#{boxname}] - Enabling sandbox"
59
-
60
- execute("#{@vboxcmd} snapshot \"#{instance_uuid}\" take \"#{@sandboxname}\" --pause")
55
+ puts "[#{machine.name}] Sandbox mode is off"
61
56
  end
62
-
63
57
  end
64
- end
65
-
66
- def self.commit(selection)
67
-
68
- self.initialize
69
- on_selected_vms(selection) do |boxname|
70
-
71
-
72
- if !is_snapshot_mode_on?(boxname)
73
- puts "[#{boxname}] - this requires that sandbox mode is on."
58
+
59
+ def is_snapshot_mode_on?(machine)
60
+ snapshots=self.list_snapshots(machine)
61
+ return snapshots.include?(@sandboxname)
62
+ end
63
+
64
+ def off(machine)
65
+ if !self.is_vm_created?(machine) then
66
+ puts "[#{machine.name}] VM is not created"
67
+ return
68
+ end
69
+ if self.is_snapshot_mode_on?(machine) then
70
+ instance_id = machine.id
71
+ `#{@vboxcmd} snapshot "#{instance_id}" delete "#{@sandboxname}" `
74
72
  else
75
- instance_uuid="#{@vagrant_env.vms[boxname.to_sym].uuid}"
76
-
77
- #Discard snapshot so current state is the latest state
78
- puts "[#{boxname}] - unwinding sandbox"
79
- execute("#{@vboxcmd} snapshot \"#{instance_uuid}\" delete \"#{@sandboxname}\"")
80
-
81
- #Now retake the snapshot
82
- puts "[#{boxname}] - fastforwarding sandbox"
83
-
84
- execute("#{@vboxcmd} snapshot \"#{instance_uuid}\" take \"#{@sandboxname}\" --pause")
85
-
73
+ puts "[#{machine.name}] Not sandbox mode now"
86
74
  end
87
-
88
75
  end
89
-
90
- end
91
-
92
- def self.rollback(selection)
93
- self.initialize
94
-
95
- on_selected_vms(selection) do |boxname|
96
-
97
- if !is_snapshot_mode_on?(boxname)
98
- puts "[#{boxname}] - this requires that sandbox mode is on."
76
+
77
+ def on(machine)
78
+ if !self.is_vm_created?(machine) then
79
+ puts "[#{machine.name}] VM is not created"
80
+ return
81
+ end
82
+ if !self.is_snapshot_mode_on?(machine) then
83
+ instance_id = machine.id
84
+ `#{@vboxcmd} snapshot "#{instance_id}" take "#{@sandboxname}" --pause`
99
85
  else
100
- instance_uuid="#{@vagrant_env.vms[boxname.to_sym].uuid}"
101
-
102
- puts "[#{boxname}] - powering off machine"
103
-
104
- #Poweroff machine
105
- execute("#{@vboxcmd} controlvm \"#{instance_uuid}\" poweroff")
106
-
107
- #Poweroff takes a second or so to complete; Virtualbox will throw errors
108
- #if you try to restore a snapshot before it's ready.
109
- sleep 2
110
-
111
- puts "[#{boxname}] - roll back machine"
112
-
113
- #Rollback until snapshot
114
- execute("#{@vboxcmd} snapshot \"#{instance_uuid}\" restore \"#{@sandboxname}\"")
115
-
116
- puts "[#{boxname}] - starting the machine again"
117
-
118
- #Startvm again
119
- #
120
- # Grab the boot_mode setting from the Vagrantfile
121
- config_boot_mode="#{@vagrant_env.vms[boxname.to_sym].config.vm.boot_mode.to_s}"
122
-
123
- case config_boot_mode
124
- when 'vrdp'
125
- boot_mode='headless'
126
- when 'headless'
127
- boot_mode='headless'
128
- when 'gui'
129
- boot_mode='gui'
130
- else
131
- puts "Vagrantfile config.vm.boot_mode=#{config_boot_mode} setting unknown - defaulting to headless"
132
- boot_mode='headless'
133
- end
134
-
135
- execute("#{@vboxcmd} startvm --type #{boot_mode} \"#{instance_uuid}\" ")
136
-
86
+ puts "[#{machine.name}] Already sandbox mode"
137
87
  end
138
-
139
88
  end
140
-
141
-
142
- end
143
-
144
- def self.off(selection)
145
- self.initialize
146
-
147
- on_selected_vms(selection) do |boxname|
148
-
149
-
150
- instance_uuid="#{@vagrant_env.vms[boxname.to_sym].uuid}"
151
-
152
- if !is_snapshot_mode_on?(boxname)
153
- puts "[#{boxname}] - this requires that sandbox mode is on."
89
+
90
+ def commit(machine)
91
+ if !self.is_vm_created?(machine) then
92
+ puts "[#{machine.name}] VM is not created"
93
+ return
94
+ end
95
+ if self.is_snapshot_mode_on?(machine) then
96
+ instance_id = machine.id
97
+ `#{@vboxcmd} snapshot "#{instance_id}" delete "#{@sandboxname}"`
98
+ `#{@vboxcmd} snapshot "#{instance_id}" take "#{@sandboxname}" --pause`
154
99
  else
155
- puts "[#{boxname}] - switching sandbox off"
156
-
157
- # We might wanna check for sandbox changes or not
158
-
159
- #Discard snapshot
160
- execute("#{@vboxcmd} snapshot \"#{instance_uuid}\" delete \"#{@sandboxname}\" ")
161
-
100
+ puts "[#{machine.name}] Not sandbox mode now"
162
101
  end
163
-
164
102
  end
165
- end
166
-
167
- def self.execute(command)
168
- #puts "#{command}"
169
- output=Sahara::Shell.execute("#{command}")
170
- return output
171
- end
172
-
173
- def self.is_vm_created?(boxname)
174
- if @vagrant_env.vms[boxname.to_sym].nil?
175
- puts "[#{boxname}] - Box name doesn't exist in the Vagrantfile"
176
- return false
177
- else
178
- return !@vagrant_env.vms[boxname.to_sym].uuid.nil?
179
- end
180
- end
181
-
182
- def self.list_snapshots(boxname)
183
-
184
- instance_uuid="#{@vagrant_env.vms[boxname.to_sym].uuid}"
185
- snapshotlist=Array.new
186
- output=execute("#{@vboxcmd} showvminfo --machinereadable \"#{instance_uuid}\"").join
187
- snapshotresult=output.scan(/SnapshotName.*=(.*)/).flatten
188
- snapshotresult.each do |result|
189
- clean=result.gsub(/\"/,'').chomp
190
- snapshotlist << clean
191
- end
192
- return snapshotlist
193
- end
194
-
195
- def self.is_snapshot_mode_on?(boxname)
196
- snapshots=list_snapshots(boxname)
197
- return snapshots.include?(@sandboxname)
198
- end
199
-
200
- def self.on_selected_vms(selection,&block)
201
-
202
- if selection.nil?
203
- #puts "no selection was done"
204
- @vagrant_env.vms.each do |name,vm|
205
- #puts "Processing #{name}"
206
- if @vagrant_env.multivm?
207
- if name.to_s!="default"
208
- if is_vm_created?(name)
209
- yield name
210
- else
211
- puts "[#{name}] - machine not created"
212
- end
213
- end
214
- else
215
- if is_vm_created?(name)
216
- yield name
217
- else
218
- puts "[#{name}] - machine not created"
219
- end
220
- end
103
+
104
+ def rollback(machine)
105
+ if !self.is_vm_created?(machine) then
106
+ puts "[#{machine.name}] VM is not created"
107
+ return
108
+ end
109
+ if !self.is_snapshot_mode_on?(machine) then
110
+ puts "[#{machine.name}] Not sandbox mode now"
111
+ return
221
112
  end
222
- else
223
- if is_vm_created?(selection)
224
- yield selection
113
+
114
+ instance_id = machine.id
115
+ `#{@vboxcmd} controlvm "#{instance_id}" poweroff `
116
+ sleep 2
117
+ `#{@vboxcmd} snapshot "#{instance_id}" restore "#{@sandboxname}"`
118
+
119
+ gui_boot = machine.provider_config.gui
120
+ if gui_boot
121
+ boot_mode = "gui"
225
122
  else
226
- puts "[#{selection}] - machine not created"
123
+ boot_mode = "headless"
227
124
  end
125
+ # restore boot mode
126
+ `#{@vboxcmd} startvm --type #{boot_mode} "#{instance_id}" `
228
127
  end
128
+
129
+ def is_vm_created?(machine)
130
+ return !machine.id.nil?
131
+ end
132
+
229
133
  end
230
134
  end
231
135
  end
232
-
233
-
234
- #command="#{@vboxcmd} unregistervm '#{boxname}' --delete"
235
- #puts command
236
- #puts "Deleting vm #{boxname}"
237
-
238
- #Exec and system stop the execution here
239
- #Veewee::Shell.execute("#{command}")
240
-
@@ -1,3 +1,3 @@
1
1
  module Sahara
2
- VERSION = "0.0.13"
2
+ VERSION = "0.0.15"
3
3
  end
@@ -14,7 +14,6 @@ Gem::Specification.new do |s|
14
14
  s.required_rubygems_version = ">= 1.3.6"
15
15
  s.rubyforge_project = "sahara"
16
16
 
17
- s.add_dependency "vagrant", "~> 1.0"
18
17
  s.add_dependency "popen4", "~> 0.1.2"
19
18
  s.add_dependency "thor", "> 0.14"
20
19
 
metadata CHANGED
@@ -1,149 +1,110 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sahara
3
- version: !ruby/object:Gem::Version
4
- hash: 5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.15
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 13
10
- version: 0.0.13
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Patrick Debois
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-08-21 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :runtime
22
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2013-06-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: popen4
16
+ requirement: !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
18
+ requirements:
25
19
  - - ~>
26
- - !ruby/object:Gem::Version
27
- hash: 15
28
- segments:
29
- - 1
30
- - 0
31
- version: "1.0"
32
- prerelease: false
33
- name: vagrant
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
20
+ - !ruby/object:Gem::Version
21
+ version: 0.1.2
36
22
  type: :runtime
37
- requirement: &id002 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
38
25
  none: false
39
- requirements:
26
+ requirements:
40
27
  - - ~>
41
- - !ruby/object:Gem::Version
42
- hash: 31
43
- segments:
44
- - 0
45
- - 1
46
- - 2
28
+ - !ruby/object:Gem::Version
47
29
  version: 0.1.2
48
- prerelease: false
49
- name: popen4
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- type: :runtime
53
- requirement: &id003 !ruby/object:Gem::Requirement
30
+ - !ruby/object:Gem::Dependency
31
+ name: thor
32
+ requirement: !ruby/object:Gem::Requirement
54
33
  none: false
55
- requirements:
56
- - - ">"
57
- - !ruby/object:Gem::Version
58
- hash: 23
59
- segments:
60
- - 0
61
- - 14
62
- version: "0.14"
34
+ requirements:
35
+ - - ! '>'
36
+ - !ruby/object:Gem::Version
37
+ version: '0.14'
38
+ type: :runtime
63
39
  prerelease: false
64
- name: thor
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- type: :development
68
- requirement: &id004 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>'
44
+ - !ruby/object:Gem::Version
45
+ version: '0.14'
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
69
49
  none: false
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 23
74
- segments:
75
- - 1
76
- - 0
77
- - 0
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
78
53
  version: 1.0.0
54
+ type: :development
79
55
  prerelease: false
80
- name: bundler
81
- version_requirements: *id004
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.0
82
62
  description: Allows you to sandbox your vagrant
83
- email:
63
+ email:
84
64
  - patrick.debois@jedi.be
85
65
  executables: []
86
-
87
66
  extensions: []
88
-
89
67
  extra_rdoc_files: []
90
-
91
- files:
68
+ files:
92
69
  - .gitignore
93
- - .rvmrc
94
70
  - Gemfile
95
- - Gemfile.lock
96
71
  - README.md
97
72
  - Rakefile
98
- - Vagrantfile.multi
99
- - Vagrantfile.single
100
73
  - lib/sahara.rb
101
74
  - lib/sahara/command/commit.rb
102
75
  - lib/sahara/command/off.rb
103
76
  - lib/sahara/command/on.rb
104
77
  - lib/sahara/command/rollback.rb
105
- - lib/sahara/command/sandbox.rb
78
+ - lib/sahara/command/root.rb
106
79
  - lib/sahara/command/status.rb
107
- - lib/sahara/command/vagrant.rb
108
80
  - lib/sahara/session.rb
109
- - lib/sahara/shell.rb
110
81
  - lib/sahara/version.rb
111
- - lib/vagrant_init.rb
112
82
  - sahara.gemspec
113
83
  homepage: http://github.com/jedi4ever/sahara/
114
84
  licenses: []
115
-
116
85
  post_install_message:
117
86
  rdoc_options: []
118
-
119
- require_paths:
87
+ require_paths:
120
88
  - lib
121
- required_ruby_version: !ruby/object:Gem::Requirement
89
+ required_ruby_version: !ruby/object:Gem::Requirement
122
90
  none: false
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- hash: 3
127
- segments:
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ segments:
128
96
  - 0
129
- version: "0"
130
- required_rubygems_version: !ruby/object:Gem::Requirement
97
+ hash: 2159711704490986345
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
99
  none: false
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- hash: 23
136
- segments:
137
- - 1
138
- - 3
139
- - 6
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
140
103
  version: 1.3.6
141
104
  requirements: []
142
-
143
105
  rubyforge_project: sahara
144
- rubygems_version: 1.8.12
106
+ rubygems_version: 1.8.24
145
107
  signing_key:
146
108
  specification_version: 3
147
109
  summary: Vagrant box creation
148
110
  test_files: []
149
-
data/.rvmrc DELETED
@@ -1,5 +0,0 @@
1
- rvm use ruby-1.8.7
2
- rvm_gemset_create_on_use_flag=1
3
- rvm gemset use sahara
4
- alias vagrant="bundle exec vagrant"
5
- alias irb="bundle exec irb"
@@ -1,45 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- sahara (0.0.13)
5
- popen4 (~> 0.1.2)
6
- thor (> 0.14)
7
- vagrant (~> 1.0)
8
-
9
- GEM
10
- remote: http://rubygems.org/
11
- specs:
12
- Platform (0.4.0)
13
- archive-tar-minitar (0.5.2)
14
- childprocess (0.3.2)
15
- ffi (~> 1.0.6)
16
- erubis (2.7.0)
17
- ffi (1.0.11)
18
- i18n (0.6.0)
19
- json (1.5.4)
20
- log4r (1.1.10)
21
- net-scp (1.0.4)
22
- net-ssh (>= 1.99.1)
23
- net-ssh (2.2.2)
24
- open4 (1.3.0)
25
- popen4 (0.1.2)
26
- Platform (>= 0.4.0)
27
- open4 (>= 0.4.0)
28
- rake (0.9.2.2)
29
- thor (0.15.2)
30
- vagrant (1.0.3)
31
- archive-tar-minitar (= 0.5.2)
32
- childprocess (~> 0.3.1)
33
- erubis (~> 2.7.0)
34
- i18n (~> 0.6.0)
35
- json (~> 1.5.1)
36
- log4r (~> 1.1.9)
37
- net-scp (~> 1.0.4)
38
- net-ssh (~> 2.2.2)
39
-
40
- PLATFORMS
41
- ruby
42
-
43
- DEPENDENCIES
44
- rake
45
- sahara!
@@ -1,12 +0,0 @@
1
- Vagrant::Config.run do |config|
2
-
3
- config.vm.define :one do |admin_config|
4
- admin_config.vm.box = "maverick64"
5
- end
6
-
7
- config.vm.define :two do |fe_config|
8
- fe_config.vm.box = "maverick64"
9
- end
10
-
11
- end
12
-
@@ -1,33 +0,0 @@
1
- Vagrant::Config.run do |config|
2
-
3
- # All Vagrant configuration is done here. The most common configuration
4
- # options are documented and commented below. For a complete reference,
5
- # please see the online documentation at vagrantup.com.
6
-
7
- # Every Vagrant virtual environment requires a box to build off of.
8
- config.vm.box = "maverick64"
9
-
10
- # Enable provisioning with chef server, specifying the chef server URL,
11
- # and the path to the validation key (relative to this Vagrantfile).
12
- #
13
- # The Opscode Platform uses HTTPS. Substitute your organization for
14
- # ORGNAME in the URL and validation key.
15
- #
16
- # If you have your own Chef Server, use the appropriate URL, which may be
17
- # HTTP instead of HTTPS depending on your configuration. Also change the
18
- # validation key to validation.pem.
19
- #
20
- #config.vm.provision :chef_server do |chef|
21
- #chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
22
- #chef.validation_key_path = "ORGNAME-validator.pem"
23
- #end
24
- #
25
- # If you're using the Opscode platform, your validator client is
26
- # ORGNAME-validator, replacing ORGNAME with your organization name.
27
- #
28
- # IF you have your own Chef Server, the default validation client name is
29
- # chef-validator, unless you changed the configuration.
30
- #
31
- # chef.validation_client_name = "ORGNAME-validator"
32
- end
33
-
@@ -1,5 +0,0 @@
1
- require 'sahara'
2
- require 'sahara/session'
3
- require 'sahara/command/sandbox'
4
-
5
- Vagrant.commands.register(:sandbox) { Sahara::Command::Sandbox }
@@ -1,58 +0,0 @@
1
- #require 'open4'
2
-
3
- module Sahara
4
- class Shell
5
-
6
- def self.execute(command,options = {})
7
- STDOUT.sync = true
8
- output=nil
9
- result=IO.popen("#{command}") {|f| output=f.readlines}
10
- #{ |f| print "#{f}, #{f.class}" }
11
- # output=result.read
12
- return output
13
- end
14
-
15
- #pty allows you to gradually see the output of a local command
16
- #http://www.shanison.com/?p=415
17
- def self.execute2(command, options = {} )
18
- require "pty"
19
- begin
20
- PTY.spawn( command ) do |r, w, pid|
21
- begin
22
- #r.each { }
23
- r.each { |line| print line;}
24
-
25
- rescue Errno::EIO
26
- end
27
- end
28
- rescue PTY::ChildExited => e
29
- puts "The child process exited!"
30
- end
31
- end
32
-
33
- #occassinally fails with 'no child processes
34
- def self.execute3(command, options = {} )
35
- defaults= { :port => "22", :exitcode => "0", :user => "root"}
36
- options=defaults.merge(options)
37
-
38
- status = POpen4::popen4(command) do |stdout,stderr,stdin|
39
- stdout.each do |line|
40
- puts line
41
- end
42
- end
43
-
44
- @status=status.to_i
45
-
46
- if (@status.to_s != options[:exitcode] )
47
- if (options[:exitcode]=="*")
48
- #its a test so we don't need to worry
49
- else
50
- raise "Exitcode was not what we expected"
51
- end
52
-
53
- end
54
-
55
- end
56
-
57
- end #Class
58
- end #Module
@@ -1,8 +0,0 @@
1
- begin
2
- require 'vagrant'
3
- require 'sahara/command/vagrant'
4
- rescue LoadError
5
- require 'rubygems'
6
- require 'vagrant'
7
- require 'sahara/command/vagrant'
8
- end