vagrant-smartos 0.0.1alpha → 0.0.2pre1

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
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .vagrant
data/README.md CHANGED
@@ -1,29 +1,99 @@
1
- # Vagrant::Smartos
1
+ # Vagrant SmartOS Provider
2
2
 
3
- TODO: Write a gem description
3
+ Provision SmartOS zones using vagrant. For now, it only works with OS container zones.
4
+
5
+ ## Notes
6
+
7
+ This has only been demonstrated to work against a SmartOS hypervisor running in a VMware Fusion image, but since it's only interacted with via SSH, there is no reason why this won't work against a physical SmartOS hypervisor.
8
+
9
+ This is purely a prototype / proof-of-concept hacked together. I make no apologies for the state of the code or the lack of tests. Feel free to fix and pull-request :-p
10
+
11
+ Also, right now it uses a dummy box to get vagrant to play ball, whilst requiring an `image_uuid` parameter in the Vagrantfile. It might be much tidier if we could package up SmartOS images into vagrant-boxes and use those.
4
12
 
5
13
  ## Installation
6
14
 
7
- Add this line to your application's Gemfile:
15
+ * Get Vagrant 1.2.0+ installed (see elsewhere - I've been building using version 1.2.2).
16
+
17
+ * Install the gem from RubyGems:
18
+
19
+ `vagrant plugin install --plugin-prerelease --plugin-source https://rubygems.org/ vagrant-smartos`
20
+
21
+ * Add the dummy box:
22
+
23
+ `vagrant box add smartos-dummy https://github.com/joshado/vagrant-smartos/raw/master/example_box/smartos.box`
24
+
25
+ * Boot a SmartOS hypervisor somewhere. It shouldn't matter if this is VMWare Fusion, VirtualBox or a dedicated machine, as long as you have SSH access to it.
26
+
27
+ * Ensure your local ssh key is in the roots `authorized_keys` file on the SmartOS box. The simple way to test this is to `ssh root@<hypervisor ip>` from your workstation, which should drop you straight into a root shell on the hypervisor.
28
+
29
+ * Write your `Vagrantfile`. See below for an example one and the options you can provide.
30
+
31
+ * Run your VMs:
32
+
33
+ `vagrant up --provider=smartos`
34
+
35
+
36
+ ## Example Vagrantfile and options
37
+
38
+ There are two specific parameters required for the SmartOS provider (`hypervisor` and `image_uuid`) and a bunch of optional ones, you should be able to work it out:
39
+
40
+ Vagrant.require_plugin "vagrant-smartos"
41
+
42
+ Vagrant.configure("2") do |config|
43
+
44
+ # For the time being, use our dummy box
45
+ config.vm.box = "smartos-dummy"
46
+
47
+ config.vm.provider :smartos do |smartos, override|
48
+ # Required: This is which hypervisor to provision the VM on.
49
+ # The format must be "<username>@<ip or hostname>"
50
+ smartos.hypervisor = "root@172.16.251.129"
51
+
52
+ # Required: This is the UUID of the SmartOS image to use for the VMs.
53
+ # It must already be imported before running vagrant.
54
+ smartos.image_uuid = "cf7e2f40-9276-11e2-af9a-0bad2233fb0b" # this is base64:1.9.1
55
+
56
+ # Optional: The RAM allocation for the machine, defaults to the SmartOS default (256MB)
57
+ # smartos.ram = 512
8
58
 
9
- gem 'vagrant-smartos'
59
+ # Optional: Disk quota for the machine, defaults to the SmartOS default (5G)
60
+ # smartos.quota = 10
10
61
 
11
- And then execute:
62
+ # Optional: Specify the nic_tag to use
63
+ # If omitted, 'admin' will be the default
64
+ # smartos.nic_tag = "admin"
12
65
 
13
- $ bundle
66
+ # Optional: Specify a static IP address for the VM
67
+ # If omitted, 'dhcp' will be used
68
+ # smartos.ip_address = "1.2.3.4"
14
69
 
15
- Or install it yourself as:
70
+ # Optional: Specify the net-mask (required if not using dhcp)
71
+ # smartos.subnet_mask = "255.255.255.0"
16
72
 
17
- $ gem install vagrant-smartos
73
+ # Optional: Specify the gateway (required if not using dhcp)
74
+ # smartos.gateway = "255.255.255.0"
18
75
 
19
- ## Usage
76
+ # Optional: Specify a VLAN tag for this VM
77
+ # smartos.vlan = 1234
78
+ end
20
79
 
21
- TODO: Write usage instructions here
80
+ # RSync'ed shared folders should work as normal
81
+ config.vm.synced_folder "./", "/work-dir"
22
82
 
23
- ## Contributing
83
+ # Multi-VMs should be fine, too; they will take the default parameters from above, and you can override
84
+ # specifics for each VM
85
+ #
86
+ # config.vm.define :box1 do |box|
87
+ # box.vm.provider :smartos do |smartos, override|
88
+ # smartos.ip_address = "172.16.251.21"
89
+ # end
90
+ # end
91
+ #
92
+ # config.vm.define :box2 do |box|
93
+ # box.vm.provider :smartos do |smartos, override|
94
+ # smartos.ip_address = "172.16.251.21"
95
+ # end
96
+ # end
97
+ #
24
98
 
25
- 1. Fork it
26
- 2. Create your feature branch (`git checkout -b my-new-feature`)
27
- 3. Commit your changes (`git commit -am 'Add some feature'`)
28
- 4. Push to the branch (`git push origin my-new-feature`)
29
- 5. Create new Pull Request
99
+ end
data/Vagrantfile CHANGED
@@ -3,44 +3,26 @@ Vagrant.require_plugin "vagrant-smartos"
3
3
  Vagrant.configure("2") do |config|
4
4
  config.vm.box = "smartos-dummy"
5
5
 
6
-
7
- config.vm.provision :shell, :inline => "pkgin -y install ruby193-base"
8
-
9
6
  config.vm.provider :smartos do |smartos, override|
10
7
 
11
8
  smartos.hypervisor = "root@172.16.251.129"
12
- smartos.image_uuid = "cf7e2f40-9276-11e2-af9a-0bad2233fb0b"
13
-
14
- smartos.ip_address = "172.16.251.18"
15
- smartos.subnet_mask = "255.255.255.0"
16
- smartos.gateway = "172.16.251.2"
9
+ smartos.image_uuid = "13ba5a87-caa8-4092-a488-65589afb7799"
10
+ smartos.ram = 512
11
+
12
+ # smartos.ip_address = "172.16.251.18"
13
+ # smartos.subnet_mask = "255.255.255.0"
14
+ # smartos.gateway = "172.16.251.2"
17
15
  end
18
16
 
19
17
  config.vm.synced_folder "locales/", "/vagrant"
20
18
 
21
19
 
22
20
  config.vm.define :test1 do |test|
23
- test.vm.provider :smartos do |smartos, override|
24
- smartos.ip_address = "172.16.251.21"
25
- end
21
+ # test.vm.provider :smartos do |smartos, override|
22
+ # smartos.ip_address = "172.16.251.21"
23
+ # end
26
24
  end
27
25
 
28
- config.vm.define :test2 do |test|
29
- test.vm.provider :smartos do |smartos, override|
30
- smartos.ip_address = "172.16.251.22"
31
- end
32
- end
33
26
 
34
- config.vm.define :test3 do |test|
35
- test.vm.provider :smartos do |smartos, override|
36
- smartos.ip_address = "172.16.251.23"
37
- end
38
- end
39
-
40
- config.vm.define :test4 do |test|
41
- test.vm.provider :smartos do |smartos, override|
42
- smartos.ip_address = "172.16.251.24"
43
- end
44
- end
45
27
 
46
28
  end
@@ -2,12 +2,12 @@ require 'pathname'
2
2
 
3
3
  require "vagrant-smartos/version"
4
4
  require 'vagrant-smartos/plugin'
5
+ require 'vagrant-smartos/errors'
5
6
 
6
7
  module VagrantPlugins
7
8
  module Smartos
8
9
  lib_path = Pathname.new(File.expand_path("../vagrant-smartos", __FILE__))
9
- #autoload :Action, lib_path.join("action")
10
- #autoload :Errors, lib_path.join("errors")
10
+
11
11
 
12
12
  # This returns the path to the source of this plugin.
13
13
  #
@@ -6,6 +6,31 @@ module VagrantPlugins
6
6
  class Provider
7
7
 
8
8
 
9
+ class SshOutput
10
+ attr_accessor :exit_code
11
+ attr_reader :command
12
+
13
+ def initialize(command)
14
+ @command = command
15
+ @stderr = []
16
+ @stdout = []
17
+ end
18
+
19
+ def append_stderr(data)
20
+ @stderr << data
21
+ end
22
+ def append_stdout(data)
23
+ @stdout << data
24
+ end
25
+
26
+ def stdout
27
+ @stdout.join("").chomp
28
+ end
29
+ def stderr
30
+ @stderr.join("").chomp
31
+ end
32
+ end
33
+
9
34
  class SshWrapper
10
35
  def initialize(net_ssh)
11
36
  @ssh = net_ssh
@@ -16,35 +41,35 @@ module VagrantPlugins
16
41
 
17
42
  # Public: Execute and block on a command on the remote SSH server
18
43
  #
19
- # Returns the stdout data, stderr is piped out to screen
44
+ # Returns an SshOutput instance
20
45
  #
21
46
  # Raises SshWrapper::UnexpectedExitCode if the exitcode is non-0
22
47
  # Raises SshWrapper::CommandExecutionFailed if the command failed to execute
23
48
  def exec(command)
24
- stdout_data = []
25
- channel = @ssh.open_channel do |ch|
26
- ch.exec command do |ch, success|
27
- raise SshWrapper::CommandExecutionFailed unless success
28
-
29
- # "on_data" is called when the process writes something to stdout
30
- ch.on_data do |c, data|
31
- stdout_data << data
32
- end
49
+ SshOutput.new(command).tap do |output|
33
50
 
34
- # "on_extended_data" is called when the process writes something to stderr
35
- ch.on_extended_data do |c, type, data|
36
- $stderr.print data
37
- end
51
+ channel = @ssh.open_channel do |ch|
52
+ ch.exec command do |ch, success|
53
+ raise SshWrapper::CommandExecutionFailed unless success
54
+
55
+ # "on_data" is called when the process writes something to stdout
56
+ ch.on_data do |c, data|
57
+ output.append_stdout(data)
58
+ end
38
59
 
39
- channel.on_request("exit-status") do |ch,data|
40
- raise SshWrapper::UnexpectedExitCode unless data.read_long == 0
60
+ # "on_extended_data" is called when the process writes something to stderr
61
+ ch.on_extended_data do |c, type, data|
62
+ output.append_stderr(data)
63
+ end
64
+
65
+ channel.on_request("exit-status") do |ch,data|
66
+ output.exit_code = data.read_long
67
+ end
41
68
  end
42
69
  end
43
- end
44
70
 
45
- channel.wait
46
-
47
- stdout_data.join("")
71
+ channel.wait
72
+ end
48
73
  end
49
74
  end
50
75
 
@@ -12,32 +12,70 @@ module VagrantPlugins
12
12
  end
13
13
 
14
14
  def call(env)
15
- output = env[:machine].id && read_state(env[:hyp], env[:machine])
16
-
17
- if output
18
- env[:machine_state_id] = output["state"].to_sym
19
- env[:machine_ssh_info] = {
20
- :host => output["nics"].first["ip"],
21
- :port => 22
22
- }
23
- else
15
+ # Try reading the VM's "external" state
16
+ vminfo = env[:machine].id && read_state(env[:hyp], env[:machine])
17
+
18
+ # If it's got a DHCP, we'll need to wait until it's running, then read out
19
+ if !vminfo || vminfo['state'] != "running"
20
+ # Don't do anything until we're actually running...
24
21
  env[:machine_state_id] = :not_created
22
+ else
23
+
24
+ # Mark the state of the VM
25
+ env[:machine_state_id] = vminfo["state"].to_sym
26
+
27
+ # If the nic is DHCP, then we'll need to grab the internal state :-\
28
+ if vminfo["nics"].first["ip"] == "dhcp"
29
+ vm_sysinfo = read_internal_state(env[:hyp], env[:machine])
30
+ net0_ip = vm_sysinfo["Virtual Network Interfaces"]["net0"]["ip4addr"] rescue nil # I'm so lazy...
31
+
32
+ if vm_sysinfo && net0_ip
33
+ env[:machine_ssh_info] = {
34
+ :host => net0_ip,
35
+ :port => 22
36
+ }
37
+ end
38
+
39
+ else
40
+ env[:machine_ssh_info] = {
41
+ :host => vminfo["nics"].first["ip"],
42
+ :port => 22
43
+ }
44
+ end
25
45
  end
26
46
 
27
47
  @app.call(env)
28
48
  end
29
49
 
30
- def read_state(hyp, machine)
31
- begin
32
- output = hyp.exec("vmadm get #{machine.id}")
33
- rescue SshWrapper::UnexpectedExitCode
34
- return :not_created
50
+ # Internal: Reads the zone's internal state using a zlogin <uuid> sysinfo call
51
+ #
52
+ # hyp - the hypervisor object
53
+ # machine - the machine object
54
+ #
55
+ # Returns a hash of the sysinfo data: {"Live Image"=>"20130207T202554Z", "System Type"=>"SunOS", "Boot Time"=>"1371045058", "ZFS Quota"=>"5G", "UUID"=>"22fc9a70-b596-0130-6aac-109add5d41b9", "Hostname"=>"22fc9a70-b596-0130-6aac-109add5d41b9", "Setup"=>"false", "CPU Total Cores"=>1, "MiB of Memory"=>"512", "Virtual Network Interfaces"=>{"net0"=>{"MAC Address"=>"92:ed:e4:cd:c2:de", "ip4addr"=>"172.16.251.147", "Link Status"=>"up", "VLAN"=>"0"}}}
56
+ def read_internal_state(hyp, machine)
57
+ output = hyp.exec("zlogin #{machine.id} sysinfo")
58
+ if output.exit_code != 0
59
+ nil
60
+ else
61
+ JSON.load(output.stdout)
35
62
  end
63
+ end
64
+
65
+
66
+ # Internal: Reads the current state of the machine from the hypervisor
67
+ #
68
+ # hyp - the hypervisor connection object
69
+ # machine - the Vagrant machine object
70
+ #
71
+ # Returns a hash of data returned by vmadm, or nil if the VM isn't found
72
+ def read_state(hyp, machine)
73
+ output = hyp.exec("vmadm get #{machine.id}")
36
74
 
37
- if output.chomp == ""
75
+ if output.exit_code != 0 || output.stderr.chomp =~ /No such zone configured/ || output.stdout == ""
38
76
  nil
39
77
  else
40
- JSON.load(output)
78
+ JSON.load(output.stdout)
41
79
  end
42
80
  end
43
81
  end
@@ -0,0 +1,29 @@
1
+ require 'uuid'
2
+ require "log4r"
3
+ require 'vagrant/util/retryable'
4
+
5
+ module VagrantPlugins
6
+ module Smartos
7
+ class Provider
8
+ # This runs the configured instance.
9
+ class ReloadInstance
10
+ include Vagrant::Util::Retryable
11
+
12
+ def initialize(app, env)
13
+ @app = app
14
+ @logger = Log4r::Logger.new("vagrant_smartos::action::reload_instance")
15
+ end
16
+
17
+ def call(env)
18
+ vm_uuid = env[:machine].id
19
+
20
+ if env[:machine].state.id != :not_created
21
+ env[:ui].info(I18n.t("vagrant_smartos.reloading"))
22
+ output = env[:hyp].exec("vmadm reboot #{vm_uuid}")
23
+ env[:machine].id = nil
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -16,22 +16,19 @@ module VagrantPlugins
16
16
 
17
17
  def call(env)
18
18
 
19
- image_uuid =
20
-
21
- vlan = "" #104
22
- nic_tag = "admin"
23
- ip_address = "172.16.251.120"
24
- subnet_mask = "255.255.255.0"
25
- gateway = "172.16.251.2"
26
-
27
19
  nic = {
28
20
  "nic_tag" => env[:machine].provider_config.nic_tag,
29
21
  "ip" => env[:machine].provider_config.ip_address,
30
- "netmask" => env[:machine].provider_config.subnet_mask,
22
+ "netmask" =>env[:machine].provider_config.subnet_mask,
31
23
  "gateway" => env[:machine].provider_config.gateway,
32
24
  "primary" => true
33
25
  }
34
26
 
27
+ # Make sure we don't pass empty-string gateway / netmask to vmadm, as it isn't happy with this
28
+ nic.delete("netmask") if nic['netmask'].nil? || nic['netmask'].length == 0
29
+ nic.delete("gateway") if nic['gateway'].nil? || nic['gateway'].length == 0
30
+
31
+
35
32
  if env[:machine].provider_config.vlan
36
33
  nic["vlan_id"] = env[:machine].provider_config.vlan
37
34
  end
@@ -51,11 +48,13 @@ module VagrantPlugins
51
48
  }
52
49
  }
53
50
 
54
-
55
51
  # Launch!
56
52
  env[:ui].info(I18n.t("vagrant_smartos.launching_instance"))
57
53
 
58
- env[:hyp].exec("vmadm create <<JSON\n#{JSON.dump(machine_json)}\nJSON")
54
+ output = env[:hyp].exec("vmadm create <<JSON\n#{JSON.dump(machine_json)}\nJSON")
55
+ if output.exit_code != 0 || output.stderr.chomp != "Successfully created #{env[:machine].id}"
56
+ raise Errors::VmadmError, :message => I18n.t("vagrant_smartos.errors.vmadm_create", :output => output.stderr.chomp)
57
+ end
59
58
 
60
59
  env[:ui].info(I18n.t("vagrant_smartos.waiting_for_ready"))
61
60
  while true
@@ -8,7 +8,7 @@ module VagrantPlugins
8
8
  module Smartos
9
9
  class Provider
10
10
  # This middleware uses `rsync` to sync the folders over to the
11
- # AWS instance.
11
+ # zone.
12
12
  class SyncFolders
13
13
  include Vagrant::Util::ScopedHashOverride
14
14
 
@@ -35,9 +35,7 @@ module VagrantPlugins
35
35
  # avoid creating an additional directory with rsync
36
36
  hostpath = "#{hostpath}/" if hostpath !~ /\/$/
37
37
 
38
- env[:ui].info(I18n.t("vagrant_smartos.rsync_folder",
39
- :hostpath => hostpath,
40
- :guestpath => guestpath))
38
+ env[:ui].info(I18n.t("vagrant_smartos.rsync_folder", :hostpath => hostpath, :guestpath => guestpath))
41
39
 
42
40
  # Create the guest path
43
41
  env[:machine].communicate.sudo("mkdir -p '#{guestpath}'")
@@ -54,10 +52,7 @@ module VagrantPlugins
54
52
 
55
53
  r = Vagrant::Util::Subprocess.execute(*command)
56
54
  if r.exit_code != 0
57
- raise Errors::RsyncError,
58
- :guestpath => guestpath,
59
- :hostpath => hostpath,
60
- :stderr => r.stderr
55
+ raise Errors::RsyncError, :guestpath => guestpath, :hostpath => hostpath, :stderr => r.stderr
61
56
  end
62
57
  end
63
58
  end
@@ -19,7 +19,7 @@ module VagrantPlugins
19
19
 
20
20
  if env[:machine].state.id != :not_created
21
21
  env[:ui].info(I18n.t("vagrant_smartos.terminating"))
22
- env[:hyp].exec("vmadm destroy #{vm_uuid}")
22
+ output = env[:hyp].exec("vmadm destroy #{vm_uuid}")
23
23
  env[:machine].id = nil
24
24
  end
25
25
  end
@@ -30,7 +30,7 @@ module VagrantPlugins
30
30
  @hypervisor = nil if @hypervisor == UNSET_VALUE
31
31
  @image_uuid = nil if @image_uuid == UNSET_VALUE
32
32
  @nic_tag = "admin" if @nic_tag == UNSET_VALUE
33
- @ip_address = nil if @ip_address == UNSET_VALUE
33
+ @ip_address = "dhcp" if @ip_address == UNSET_VALUE
34
34
  @subnet_mask = nil if @subnet_mask == UNSET_VALUE
35
35
  @gateway = nil if @gateway == UNSET_VALUE
36
36
  @vlan = nil if @vlan == UNSET_VALUE
@@ -46,9 +46,10 @@ module VagrantPlugins
46
46
 
47
47
  errors << I18n.t("vagrant_smartos.config.hypervisor_required") if @hypervisor.nil?
48
48
  errors << I18n.t("vagrant_smartos.config.image_uuid_required") if @image_uuid.nil?
49
- errors << I18n.t("vagrant_smartos.config.ip_address_required") if @ip_address.nil?
50
- errors << I18n.t("vagrant_smartos.config.subnet_mask_required") if @subnet_mask.nil?
51
- errors << I18n.t("vagrant_smartos.config.gateway_required") if @gateway.nil?
49
+ unless @ip_address == "dhcp"
50
+ errors << I18n.t("vagrant_smartos.config.static_netmask_requied") if @subnet_mask.nil?
51
+ errors << I18n.t("vagrant_smartos.config.static_gateway_required") if @gateway.nil?
52
+ end
52
53
 
53
54
  { "SmartOS Provider" => errors }
54
55
  end
@@ -0,0 +1,16 @@
1
+ require "vagrant"
2
+
3
+ module VagrantPlugins
4
+ module Smartos
5
+ module Errors
6
+ class VagrantSmartosError < Vagrant::Errors::VagrantError
7
+ error_namespace("vagrant_smartos.errors")
8
+ end
9
+
10
+ class VmadmError < VagrantSmartosError
11
+ error_key(:vmadm)
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -1,4 +1,3 @@
1
- puts "I GOT LOADED"
2
1
  begin
3
2
  require "vagrant"
4
3
  rescue LoadError
@@ -16,6 +16,7 @@ module VagrantPlugins
16
16
  autoload :ReadState, action_root.join("read_state")
17
17
  autoload :RunInstance, action_root.join("run_instance")
18
18
  autoload :SyncFolders, action_root.join("sync_folders")
19
+ autoload :ReloadInstance, action_root.join("reload_instance")
19
20
  autoload :TerminateInstance, action_root.join("terminate_instance")
20
21
 
21
22
  def initialize(machine)
@@ -47,6 +48,14 @@ module VagrantPlugins
47
48
 
48
49
  end
49
50
 
51
+ def action_reload
52
+ Vagrant::Action::Builder.new.tap do |b|
53
+ b.use ConfigValidate
54
+ b.use ConnectHypervisor
55
+ b.use ReloadInstance
56
+ end
57
+ end
58
+
50
59
  def action_provision
51
60
  Vagrant::Action::Builder.new.tap do |b|
52
61
  b.use ConfigValidate
@@ -121,6 +130,8 @@ module VagrantPlugins
121
130
  action_ssh_run
122
131
  when :provision
123
132
  action_provision
133
+ when :reload
134
+ action_reload
124
135
  end
125
136
  end
126
137
 
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module Smartos
3
- VERSION = "0.0.1alpha"
3
+ VERSION = "0.0.2pre1"
4
4
  end
5
5
  end
data/locales/en.yml CHANGED
@@ -1,5 +1,13 @@
1
1
  en:
2
2
  vagrant_smartos:
3
+
4
+ errors:
5
+ vmadm: |-
6
+ Error when running vmadm on the hypervisor: %{message}
7
+
8
+ vmadm_create: |-
9
+ `vmadm create` returned: '%{output}'
10
+
3
11
  config:
4
12
  hypervisor_required: |-
5
13
  A hypervisor must be specified
@@ -7,32 +15,42 @@ en:
7
15
  image_uuid_required: |-
8
16
  An image_uuid value is required
9
17
 
18
+ static_gateway_required: |-
19
+ A gateway value is required if a static IP address is used
20
+
21
+ static_netmask_required: |-
22
+ A network mask value is required if a static IP address is used
23
+
10
24
  states:
11
- running_short: |-
12
- Running
13
- running_long: |-
25
+ short_running: |-
14
26
  Running
27
+ long_running: |-
28
+ running
29
+ short_not_created: |-
30
+ not created
31
+ long_not_created: |-
32
+ The zone has not been created
15
33
 
16
34
  not_created: |-
17
- Not CREATED!
35
+ Zone hasn't been created yet
18
36
 
19
37
  already_created: |-
20
- ALREADY CREATED!
38
+ Zone already created
21
39
 
22
40
  launching_instance: |-
23
- Yo, launching an instance, innit.
41
+ Launching SmartOS zone
24
42
 
25
43
  waiting_for_ready: |-
26
- Yar, this is taking time. Hang on...
44
+ Waiting for zone to be ready
27
45
 
28
46
  waiting_for_ssh: |-
29
- FFS. Should be done now. Still farting around with SSH.
47
+ Waiting for SSH
30
48
 
31
49
  ready: |-
32
- Finally, the bastard is ready.
50
+ Zone is ready
33
51
 
34
52
  rsync_folder: |-
35
- Fucker is out of date. Updating.
53
+ Updating the rsync shared folder
36
54
 
37
55
  terminating: |-
38
- Yeah, I didn't really like it either.
56
+ Shutting down the zone
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["thomas@haggett.org"]
11
11
  gem.description = %q{SmartOS Hypervisor provider for Vagrant}
12
12
  gem.summary = %q{SmartOS Hypervisor provider for Vagrant}
13
- gem.homepage = ""
13
+ gem.homepage = "http://github.com/joshado/vagrant-smartos/"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
metadata CHANGED
@@ -1,47 +1,41 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: vagrant-smartos
3
- version: !ruby/object:Gem::Version
4
- prerelease: true
5
- segments:
6
- - 0
7
- - 0
8
- - 1alpha
9
- version: 0.0.1alpha
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2pre1
5
+ prerelease: 5
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Thomas Haggett
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2013-06-06 00:00:00 +01:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-06-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: uuid
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- version: "0"
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
30
22
  type: :runtime
31
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
32
30
  description: SmartOS Hypervisor provider for Vagrant
33
- email:
31
+ email:
34
32
  - thomas@haggett.org
35
33
  executables: []
36
-
37
34
  extensions: []
38
-
39
35
  extra_rdoc_files: []
40
-
41
- files:
36
+ files:
42
37
  - .gitignore
43
38
  - Gemfile
44
- - LICENSE.txt
45
39
  - README.md
46
40
  - Rakefile
47
41
  - Vagrantfile
@@ -54,46 +48,39 @@ files:
54
48
  - lib/vagrant-smartos/action/message_already_created.rb
55
49
  - lib/vagrant-smartos/action/message_not_created.rb
56
50
  - lib/vagrant-smartos/action/read_state.rb
51
+ - lib/vagrant-smartos/action/reload_instance.rb
57
52
  - lib/vagrant-smartos/action/run_instance.rb
58
53
  - lib/vagrant-smartos/action/sync_folders.rb
59
54
  - lib/vagrant-smartos/action/terminate_instance.rb
60
55
  - lib/vagrant-smartos/config.rb
56
+ - lib/vagrant-smartos/errors.rb
61
57
  - lib/vagrant-smartos/plugin.rb
62
58
  - lib/vagrant-smartos/provider.rb
63
59
  - lib/vagrant-smartos/version.rb
64
60
  - locales/en.yml
65
61
  - vagrant-smartos.gemspec
66
- has_rdoc: true
67
- homepage: ""
62
+ homepage: http://github.com/joshado/vagrant-smartos/
68
63
  licenses: []
69
-
70
64
  post_install_message:
71
65
  rdoc_options: []
72
-
73
- require_paths:
66
+ require_paths:
74
67
  - lib
75
- required_ruby_version: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- segments:
80
- - 0
81
- version: "0"
82
- required_rubygems_version: !ruby/object:Gem::Requirement
83
- requirements:
84
- - - ">"
85
- - !ruby/object:Gem::Version
86
- segments:
87
- - 1
88
- - 3
89
- - 1
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>'
78
+ - !ruby/object:Gem::Version
90
79
  version: 1.3.1
91
80
  requirements: []
92
-
93
81
  rubyforge_project:
94
- rubygems_version: 1.3.6
82
+ rubygems_version: 1.8.25
95
83
  signing_key:
96
84
  specification_version: 3
97
85
  summary: SmartOS Hypervisor provider for Vagrant
98
86
  test_files: []
99
-
data/LICENSE.txt DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2013 Thomas Haggett
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.