vagrant-smartos-zones 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 639d1a1c0f24563384b204fab903b20d99308036
4
- data.tar.gz: b9bd26e9b6363aa267b717e74b2bb4117e7c68c9
3
+ metadata.gz: 988a3cb1d2037d6bb7f60aa880606009a23ef4ca
4
+ data.tar.gz: 95a20be29c4b4f6de32fee8eb8e693e6988589a6
5
5
  SHA512:
6
- metadata.gz: 7c28609794b6f3d3beec9851845ab463b19cdeb0f6577454407de9744abbb3b0607706a89d0305e74ed7a65db6c48ac032b4b6845b0f80f65fc4dedc6e63ae49
7
- data.tar.gz: 4dde97c193a21e38ecf30695583bcfd98118c901793c8df6ac9cad4f69c5739450a2c501af852cc82bbc94593264af5aa38f781385ca74df448065d07ea60263
6
+ metadata.gz: 733c6c0afe14d5d0a29a5cd9d7710386630aad93285db0caaef743abe688ac340573a1b66038e82f8b1280c073f5f3874c84b8aaa1f4a0bccdbd895c0ca4ba20
7
+ data.tar.gz: 91aa10f0b5183779696c57982e8739e338aa6aa329ea45e907205287dcfa59b7b6364230f3109584f9e0458d3dc3f8e0bbfa81fb47239bfe15a96c5e91aeab70
@@ -0,0 +1,30 @@
1
+ ---
2
+ driver:
3
+ name: vagrant
4
+
5
+ provisioner:
6
+ name: shell
7
+ script: test/templates/bootstrap.sh
8
+
9
+ platforms:
10
+ - name: smartos
11
+ driver_config:
12
+ box: livinginthepast/smartos-base64
13
+ box_url: https://atlas.hashicorp.com/livinginthepast/boxes/smartos-base64
14
+ vagrantfile_erb: test/templates/Vagrantfile.smartos.erb
15
+ zone:
16
+ name: base64
17
+ brand: joyent
18
+ image: d34c301e-10c3-11e4-9b79-5f67ca448df0
19
+ - name: lx
20
+ driver_config:
21
+ box: livinginthepast/smartos
22
+ box_url: https://atlas.hashicorp.com/livinginthepast/boxes/smartos
23
+ vagrantfile_erb: test/templates/Vagrantfile.smartos.erb
24
+ zone:
25
+ name: lx_zone
26
+ brand: lx
27
+ image: 14a960b0-614e-11e4-a095-eb789315ae39
28
+
29
+ suites:
30
+ - name: default
@@ -1,5 +1,7 @@
1
1
  Metrics/LineLength:
2
- Max: 120
2
+ Max: 130
3
+ Metrics/MethodLength:
4
+ Max: 15
3
5
  Style/Documentation:
4
6
  Enabled: false
5
7
  Style/DoubleNegation:
data/Gemfile CHANGED
@@ -10,3 +10,8 @@ end
10
10
  group :plugins do
11
11
  gem 'vagrant-smartos-zones', path: '.'
12
12
  end
13
+
14
+ group :integration do
15
+ gem 'test-kitchen'
16
+ gem 'kitchen-vagrant'
17
+ end
data/README.md CHANGED
@@ -72,6 +72,8 @@ Vagrant.configure('2') do |config|
72
72
  v.memory = 3072
73
73
  end
74
74
 
75
+ config.ssh.insert_key = false
76
+
75
77
  # See https://vagrantcloud.com/livinginthepast for SmartOS boxes
76
78
  config.vm.box = "livinginthepast/smartos"
77
79
  config.vm.synced_folder ".", "/vagrant", disabled: true
@@ -229,6 +231,19 @@ group with which to connect. This user should have `Primary
229
231
  Administrator` privileges. When creating a local zone, a `vagrant`
230
232
  user and group are also created in the zone.
231
233
 
234
+ ## Tests
235
+
236
+ There is a basic test suite that uses `test-kitchen` to converge
237
+ different brands of zones. Although it might not be comprehensive, it
238
+ should be ran after new features or after any significant refactoring to
239
+ ensure that nothing breaks the ability to stand up a zone.
240
+
241
+ ```bash
242
+ bundle exec kitchen test
243
+ ```
244
+
245
+ This may take a while...
246
+
232
247
  ## References / Alternatives
233
248
 
234
249
  Any success of this project depends heavily on the work of others,
@@ -1,6 +1,6 @@
1
1
  require 'vagrant/smartos/zones/cap/base'
2
2
  require 'vagrant/smartos/zones/models/zone'
3
- require 'vagrant/smartos/zones/util/zone_info'
3
+ require 'vagrant/smartos/zones/util/zones'
4
4
 
5
5
  module Vagrant
6
6
  module Smartos
@@ -17,8 +17,8 @@ module Vagrant
17
17
  machine.config.zone && machine.config.zone.image && machine.config.zone.name
18
18
  end
19
19
 
20
- def zone_info
21
- @zone_info ||= Util::ZoneInfo.new(machine)
20
+ def zones
21
+ @zones ||= Util::Zones.new(machine)
22
22
  end
23
23
 
24
24
  def zone
@@ -11,17 +11,7 @@ module Vagrant
11
11
 
12
12
  def execute
13
13
  return warn_zone_config unless zone_valid?
14
- return update_zone if zone_exists?
15
- create_zone
16
- end
17
-
18
- def create_zone
19
- zone_info.create(machine.config.zone.name)
20
- end
21
-
22
- def update_zone
23
- ui.info "Zone #{machine.config.zone.name} exists"
24
- zone_info.update(machine.config.zone.name)
14
+ Models::Zone.create_or_update(machine.config.zone.name, machine)
25
15
  end
26
16
 
27
17
  def warn_zone_config
@@ -33,10 +23,6 @@ module Vagrant
33
23
  ui.info ' config.zone.memory = 2048'
34
24
  ui.info ' config.zone.disk_size = 5'
35
25
  end
36
-
37
- def zone_json
38
- Util::ZoneJson.new(machine).to_json
39
- end
40
26
  end
41
27
  end
42
28
  end
@@ -32,10 +32,6 @@ module Vagrant
32
32
  'Manage local SmartOS datasets'
33
33
  end
34
34
 
35
- def execute
36
- process_subcommand
37
- end
38
-
39
35
  private
40
36
 
41
37
  def host
@@ -26,10 +26,6 @@ module Vagrant
26
26
  'View and interact with the SmartOS global zone'
27
27
  end
28
28
 
29
- def execute
30
- process_subcommand
31
- end
32
-
33
29
  def ssh(*_args)
34
30
  with_target_vms('default', single_target: true) do |machine|
35
31
  ssh_info = Util::GlobalZone::SSHInfo.new(machine.provider, machine.config, machine.env).to_hash
@@ -12,7 +12,16 @@ module Vagrant
12
12
  # OptionParser
13
13
  #
14
14
  module MultiCommand
15
+ # Automatically called by Vagrant when running a command
16
+ def execute
17
+ process_subcommand
18
+ end
19
+
20
+ # Sends parsed argv to an instance method that maps to the
21
+ # subcommand name. If flags are passed to the option parser,
22
+ # they will be included in argv as a trailing hash.
15
23
  def process_subcommand
24
+ @options = {}
16
25
  args = parse_options(option_parser)
17
26
  exit unless args
18
27
 
@@ -24,6 +33,7 @@ module Vagrant
24
33
  exit 1
25
34
  end
26
35
 
36
+ args << @options unless @options.empty?
27
37
  send command, *args
28
38
  end
29
39
 
@@ -33,7 +43,7 @@ module Vagrant
33
43
  end
34
44
 
35
45
  def option_parser
36
- self.class.const_get('OPTION_PARSER')
46
+ @option_parser ||= self.class.const_get('OPTION_PARSER')
37
47
  end
38
48
 
39
49
  def subcommands
@@ -28,10 +28,6 @@ module Vagrant
28
28
  'Manage SmartOS platform images'
29
29
  end
30
30
 
31
- def execute
32
- process_subcommand
33
- end
34
-
35
31
  private
36
32
 
37
33
  def host
@@ -1,8 +1,9 @@
1
1
  require 'vagrant'
2
2
  require 'vagrant/smartos/zones/errors'
3
+ require 'vagrant/smartos/zones/models/config'
3
4
  require 'vagrant/smartos/zones/models/zone'
4
5
  require 'vagrant/smartos/zones/util/snapshots'
5
- require 'vagrant/smartos/zones/util/zone_info'
6
+ require 'vagrant/smartos/zones/util/zones'
6
7
  require_relative 'multi_command'
7
8
 
8
9
  module Vagrant
@@ -12,41 +13,49 @@ module Vagrant
12
13
  class Zones < Vagrant.plugin('2', :command)
13
14
  include MultiCommand
14
15
 
15
- COMMANDS = %w(create destroy list show snapshot start stop).freeze
16
-
17
- OPTION_PARSER = OptionParser.new do |o|
18
- o.banner = 'Usage: vagrant zones [command] [name]'
19
- o.separator ''
20
- o.separator 'Commands:'
21
- o.separator ' list show status of zones'
22
- o.separator ' create [name] create or update zone with alias [name]'
23
- o.separator ' destroy [name] delete zone with alias [name]'
24
- o.separator ' show [name] show info on zone with alias [name]'
25
- o.separator ' snapshot [action] [name] [snapshot] snapshot the ZFS filesystem for [name]'
26
- o.separator ' actions: list, create, delete, rollback'
27
- o.separator ' start [name] start zone with alias [name]'
28
- o.separator ' stop [name] stop zone with alias [name]'
29
- o.separator ''
30
- o.separator 'Options:'
31
- o.separator ''
16
+ COMMANDS = %w(config create destroy list show snapshot start stop).freeze
17
+
18
+ # rubocop:disable Metrics/MethodLength
19
+ def option_parser
20
+ OptionParser.new do |o|
21
+ o.banner = 'Usage: vagrant zones [command] [name]'
22
+ o.separator ''
23
+ o.separator 'Commands:'
24
+ o.separator ' list show status of zones'
25
+ o.separator ' config [action] [options] interact with global plugin configuration'
26
+ o.separator ' create [name] create or update zone with alias [name]'
27
+ o.separator ' destroy [name] delete zone with alias [name]'
28
+ o.separator ' show [name] show info on zone with alias [name]'
29
+ o.separator ' snapshot [action] [name] [snapshot] snapshot the ZFS filesystem for [name]'
30
+ o.separator ' actions: list, create, delete, rollback'
31
+ o.separator ' start [name] start zone with alias [name]'
32
+ o.separator ' stop [name] stop zone with alias [name]'
33
+ o.separator ''
34
+ o.separator 'Options:'
35
+ o.separator ''
36
+ o.on('--delete', 'delete configuration key') do |d|
37
+ @options[:delete] = d
38
+ end
39
+ end
32
40
  end
41
+ # rubocop:enable Metrics/MethodLength
33
42
 
34
43
  def self.synopsis
35
44
  'View and interact with SmartOS zones'
36
45
  end
37
46
 
38
- def execute
39
- process_subcommand
47
+ def config(*args)
48
+ Models::Config.parse_cli(@env, *args)
40
49
  end
41
50
 
42
51
  def create(name)
43
- zones.create(name).tap do |zone|
44
- return unless zone
45
- @env.ui.info(I18n.t('vagrant.smartos.zones.commands.zones.create',
46
- name: zone.name, state: zone.state,
47
- uuid: zone.uuid, brand: zone.brand,
48
- image: zone.image),
49
- prefix: false)
52
+ with_target_vms('default') do |machine|
53
+ Models::Zone.create(name, machine).tap do |zone|
54
+ @env.ui.info(I18n.t('vagrant.smartos.zones.commands.zones.create',
55
+ name: zone.name, state: zone.state, uuid: zone.uuid,
56
+ brand: zone.brand, image: zone.image),
57
+ prefix: false)
58
+ end
50
59
  end
51
60
  end
52
61
 
@@ -54,9 +63,8 @@ module Vagrant
54
63
  with_zone(name) do |zone|
55
64
  zone.destroy
56
65
  @env.ui.info(I18n.t('vagrant.smartos.zones.commands.zones.destroyed',
57
- name: zone.name, state: zone.state,
58
- uuid: zone.uuid, brand: zone.brand,
59
- image: zone.image))
66
+ name: zone.name, state: zone.state, uuid: zone.uuid,
67
+ brand: zone.brand, image: zone.image))
60
68
  end
61
69
  end
62
70
 
@@ -73,9 +81,8 @@ module Vagrant
73
81
  def show(name)
74
82
  with_zone(name) do |zone|
75
83
  @env.ui.info(I18n.t('vagrant.smartos.zones.commands.zones.show',
76
- name: zone.name, state: zone.state,
77
- uuid: zone.uuid, brand: zone.brand,
78
- image: zone.image),
84
+ name: zone.name, state: zone.state, uuid: zone.uuid,
85
+ brand: zone.brand, image: zone.image),
79
86
  prefix: false)
80
87
  end
81
88
  end
@@ -91,9 +98,8 @@ module Vagrant
91
98
  with_zone(name) do |zone|
92
99
  zone.start
93
100
  @env.ui.info(I18n.t('vagrant.smartos.zones.commands.zones.start',
94
- name: zone.name, state: zone.state,
95
- uuid: zone.uuid, brand: zone.brand,
96
- image: zone.image))
101
+ name: zone.name, state: zone.state, uuid: zone.uuid,
102
+ brand: zone.brand, image: zone.image))
97
103
  end
98
104
  end
99
105
 
@@ -109,21 +115,13 @@ module Vagrant
109
115
 
110
116
  private
111
117
 
112
- def zones
113
- zones = nil
114
- with_target_vms('default') { |machine| zones = Util::ZoneInfo.new(machine) }
115
- zones
116
- end
117
-
118
118
  def ui
119
119
  @env.ui
120
120
  end
121
121
 
122
- def with_zone(name)
122
+ def with_zone(name, &blk)
123
123
  with_target_vms('default', single_target: true) do |machine|
124
- Models::Zone.find(machine, name).tap do |zone|
125
- yield zone
126
- end
124
+ Models::Zone.find(machine, name).tap { |zone| blk.call(zone) }
127
125
  end
128
126
  rescue ZoneNotFound
129
127
  ui.warn(I18n.t('vagrant.smartos.zones.warning.zone_not_found',
@@ -10,11 +10,11 @@ module Vagrant
10
10
 
11
11
  def initialize
12
12
  @brand = UNSET_VALUE
13
- @disk_size = UNSET_VALUE
14
- @image = UNSET_VALUE
13
+ @disk_size = nil
14
+ @image = nil
15
15
  @kernel_version = UNSET_VALUE
16
- @memory = UNSET_VALUE
17
- @name = UNSET_VALUE
16
+ @memory = nil
17
+ @name = nil
18
18
  @synced_folders = []
19
19
  end
20
20
 
@@ -24,11 +24,7 @@ module Vagrant
24
24
 
25
25
  def finalize!
26
26
  @brand = 'joyent' if @brand == UNSET_VALUE
27
- @disk_size = nil if @disk_size == UNSET_VALUE
28
- @image = nil if @image == UNSET_VALUE
29
27
  @kernel_version = '3.16' if @kernel_version == UNSET_VALUE
30
- @memory = nil if @memory == UNSET_VALUE
31
- @name = nil if @name == UNSET_VALUE
32
28
  end
33
29
  end
34
30
  end
@@ -0,0 +1,68 @@
1
+ require 'yaml'
2
+
3
+ module Vagrant
4
+ module Smartos
5
+ module Zones
6
+ module Models
7
+ class Config
8
+ def self.parse_cli(env, *args)
9
+ config(env).parse(args)
10
+ end
11
+
12
+ def self.config(env)
13
+ @config ||= new(env).load
14
+ end
15
+
16
+ attr_reader :env, :hash
17
+
18
+ def initialize(env)
19
+ @env = env
20
+ end
21
+
22
+ def parse(args)
23
+ ui.info(hash.inspect) && return if args.empty?
24
+ options = args.pop if args.last.is_a?(Hash)
25
+ if options && options[:delete]
26
+ delete args.shift
27
+ else
28
+ set(*args)
29
+ end
30
+ save
31
+ end
32
+
33
+ def delete(name, *_args)
34
+ hash.delete(name)
35
+ end
36
+
37
+ def set(name, value)
38
+ hash[name] = value
39
+ end
40
+
41
+ def load
42
+ @hash = YAML.load_file(path) if File.exist?(path)
43
+ @hash ||= {}
44
+ self
45
+ end
46
+
47
+ def save
48
+ File.open(path, 'w') { |f| f.write(YAML.dump(hash)) }
49
+ end
50
+
51
+ private
52
+
53
+ def home_path
54
+ env.respond_to?(:home_path) ? env.home_path : env[:home_path]
55
+ end
56
+
57
+ def path
58
+ home_path.join('smartos', 'config.yml')
59
+ end
60
+
61
+ def ui
62
+ env.respond_to?(:ui) ? env.ui : env[:ui]
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,5 +1,6 @@
1
1
  require 'vagrant/smartos/zones/errors'
2
2
  require 'vagrant/smartos/zones/util/global_zone/helper'
3
+ require 'vagrant/smartos/zones/util/zones'
3
4
 
4
5
  module Vagrant
5
6
  module Smartos
@@ -19,13 +20,24 @@ module Vagrant
19
20
  zones
20
21
  end
21
22
 
22
- def self.find(machine, name)
23
+ def self.create(name, machine)
24
+ Util::Zones.new(machine).create(name)
25
+ end
26
+
27
+ def self.create_or_update(name, machine)
28
+ return Util::Zones.new(machine).update(name) if find(machine, name, raise_on_error: false)
29
+ Util::Zones.new(machine).create(name)
30
+ end
31
+
32
+ def self.find(machine, name, options = {})
33
+ options = { raise_on_error: true }.merge(options)
23
34
  zone_hash = {}
24
35
  finder = "pfexec vmadm lookup -j -o uuid,alias,state,image_uuid,brand alias=#{name}"
25
36
  with_gz(machine, finder) do |output|
26
37
  hash = JSON.parse(output).first
27
- raise ZoneNotFound unless hash
28
- zone_hash.merge!(hash)
38
+ break zone_hash.merge!(hash) if hash
39
+ raise ZoneNotFound if options[:raise_on_error]
40
+ return
29
41
  end
30
42
  from_hash(zone_hash, machine)
31
43
  end
@@ -38,7 +38,7 @@ module Vagrant
38
38
  end
39
39
 
40
40
  def latest
41
- latest_html = Zones::Util::Downloader.new(platform_image_latest_url).read
41
+ latest_html = Vagrant::Smartos::Zones::Util::Downloader.new(platform_image_latest_url).read
42
42
  latest = latest_html.match(/(\d{8}T\d{6}Z)/)
43
43
  return unless latest
44
44
  latest[1]
@@ -55,7 +55,7 @@ module Vagrant
55
55
  def download_checksum_file
56
56
  return if machine && machine.config.global_zone.platform_image_url
57
57
  ui.info "Downloading checksums for SmartOS platform image #{image}"
58
- Zones::Util::Downloader.get(platform_image_checksum_url, platform_image_checksum_path)
58
+ Vagrant::Smartos::Zones::Util::Downloader.get(platform_image_checksum_url, platform_image_checksum_path)
59
59
  end
60
60
 
61
61
  def download_platform_image
@@ -16,6 +16,7 @@ module Vagrant
16
16
  end
17
17
 
18
18
  def create(project, users, comment)
19
+ return if zone.lx_brand?
19
20
  zone.zlogin("projadd -c \"#{comment}\" -U #{users.join(',')} #{project}")
20
21
  end
21
22
  end
@@ -9,7 +9,11 @@ module Vagrant
9
9
  module Smartos
10
10
  module Zones
11
11
  module Util
12
- class ZoneInfo
12
+ # Service object for creating zones
13
+ #
14
+ # Wraps up creation of associated things within a zone
15
+ #
16
+ class Zones
13
17
  include GlobalZone::Helper
14
18
 
15
19
  attr_reader :machine
@@ -1,7 +1,7 @@
1
1
  module Vagrant
2
2
  module Smartos
3
3
  module Zones
4
- VERSION = '0.0.1'
4
+ VERSION = '0.0.2'
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'vagrant user' do
4
+ describe group('vagrant') do
5
+ it { should exist }
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ require 'serverspec'
2
+
3
+ set :backend, :exec
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'vagrant user' do
4
+ describe user('vagrant') do
5
+ it { should exist }
6
+ end
7
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/ruby
2
+ #^ruby syntax highlighting
3
+
4
+ Vagrant.configure("2") do |c|
5
+ c.vm.box = "<%= config[:box] %>"
6
+ c.vm.box_url = "<%= config[:box_url] %>"
7
+
8
+ c.ssh.insert_key = false
9
+
10
+ <% if config[:zone] %>
11
+ c.vm.communicator = 'smartos'
12
+ c.global_zone.platform_image = 'latest'
13
+ c.zone.name = '<%= config[:zone][:name] %>'
14
+ c.zone.brand = '<%= config[:zone][:brand] || 'joyent' %>'
15
+ c.zone.image = '<%= config[:zone][:image] %>'
16
+ c.zone.memory = 1536
17
+ c.zone.disk_size = 5
18
+ <% end %>
19
+
20
+ <% if config[:vm_hostname] %>
21
+ c.vm.hostname = "<%= config[:vm_hostname] %>"
22
+ <% end %>
23
+ <% if config[:guest] %>
24
+ c.vm.guest = <%= config[:guest] %>
25
+ <% end %>
26
+ <% if config[:username] %>
27
+ c.ssh.username = "<%= config[:username] %>"
28
+ <% end %>
29
+ <% if config[:password] %>
30
+ c.ssh.password = "<%= config[:password] %>"
31
+ <% end %>
32
+ <% if config[:ssh_key] %>
33
+ c.ssh.private_key_path = "<%= config[:ssh_key] %>"
34
+ <% end %>
35
+
36
+ <% Array(config[:network]).each do |opts| %>
37
+ c.vm.network(:<%= opts[0] %>, <%= opts[1..-1].join(", ") %>)
38
+ <% end %>
39
+
40
+ c.vm.synced_folder ".", "/vagrant", disabled: true
41
+ <% config[:synced_folders].each do |source, destination, options| %>
42
+ c.vm.synced_folder "<%= source %>", "<%= destination %>", <%= options %>
43
+ <% end %>
44
+
45
+ c.vm.provider :<%= config[:provider] %> do |p|
46
+ <% config[:customize].each do |key, value| %>
47
+ <% case config[:provider]
48
+ when "virtualbox" %>
49
+ p.customize ["modifyvm", :id, "--<%= key %>", "<%= value %>"]
50
+ <% when "rackspace", "softlayer" %>
51
+ p.<%= key %> = "<%= value%>"
52
+ <% when /^vmware_/ %>
53
+ <% if key == :memory %>
54
+ <% unless config[:customize].include?(:memsize) %>
55
+ p.vmx["memsize"] = "<%= value %>"
56
+ <% end %>
57
+ <% else %>
58
+ p.vmx["<%= key %>"] = "<%= value %>"
59
+ <% end %>
60
+ <% end %>
61
+ <% end %>
62
+ end
63
+ end
64
+
@@ -0,0 +1,55 @@
1
+ #!/bin/bash
2
+
3
+ # This installs ruby in a location that test-kitchen
4
+ # will use with busser to run integration tests.
5
+
6
+ check_platform() {
7
+ echo $(uname -s)
8
+ }
9
+
10
+ install_fake_chef() {
11
+ mkdir -p /opt/chef/embedded/bin
12
+ }
13
+
14
+ install_ruby() {
15
+ local platform=$(check_platform)
16
+ case ${platform} in
17
+ SunOS)
18
+ install_ruby_smartos
19
+ ;;
20
+ Linux)
21
+ install_ruby_linux
22
+ ;;
23
+ esac
24
+ }
25
+
26
+ install_ruby_linux() {
27
+ apt-get install ruby
28
+ }
29
+
30
+ install_ruby_smartos() {
31
+ pkgin -y in ruby
32
+ }
33
+
34
+ symlink_ruby() {
35
+ local ruby=$(local_ruby)
36
+ local gem=$(local_gem)
37
+ ln -s ${ruby} /opt/chef/embedded/bin/ruby
38
+ ln -s ${gem} /opt/chef/embedded/bin/gem
39
+ }
40
+
41
+ local_ruby() {
42
+ echo $(which ruby)
43
+ }
44
+
45
+ local_gem() {
46
+ echo $(which gem)
47
+ }
48
+
49
+ main() {
50
+ install_fake_chef
51
+ install_ruby
52
+ symlink_ruby
53
+ }
54
+
55
+ main
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-smartos-zones
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Saxby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-11 00:00:00.000000000 Z
11
+ date: 2014-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -60,6 +60,7 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".gitignore"
63
+ - ".kitchen.yml"
63
64
  - ".rubocop.yml"
64
65
  - Gemfile
65
66
  - LICENSE.txt
@@ -114,6 +115,7 @@ files:
114
115
  - lib/vagrant/smartos/zones/errors.rb
115
116
  - lib/vagrant/smartos/zones/guest.rb
116
117
  - lib/vagrant/smartos/zones/hooks.rb
118
+ - lib/vagrant/smartos/zones/models/config.rb
117
119
  - lib/vagrant/smartos/zones/models/dataset.rb
118
120
  - lib/vagrant/smartos/zones/models/snapshot.rb
119
121
  - lib/vagrant/smartos/zones/models/zone.rb
@@ -129,11 +131,16 @@ files:
129
131
  - lib/vagrant/smartos/zones/util/public_key.rb
130
132
  - lib/vagrant/smartos/zones/util/snapshots.rb
131
133
  - lib/vagrant/smartos/zones/util/zone_group.rb
132
- - lib/vagrant/smartos/zones/util/zone_info.rb
133
134
  - lib/vagrant/smartos/zones/util/zone_json.rb
134
135
  - lib/vagrant/smartos/zones/util/zone_project.rb
135
136
  - lib/vagrant/smartos/zones/util/zone_user.rb
137
+ - lib/vagrant/smartos/zones/util/zones.rb
136
138
  - lib/vagrant/smartos/zones/version.rb
139
+ - test/integration/default/serverspec/group_spec.rb
140
+ - test/integration/default/serverspec/spec_helper.rb
141
+ - test/integration/default/serverspec/user_spec.rb
142
+ - test/templates/Vagrantfile.smartos.erb
143
+ - test/templates/bootstrap.sh
137
144
  - vagrant-smartos-zones.gemspec
138
145
  homepage: https://github.com/vagrant-smartos/vagrant-smartos-zones
139
146
  licenses:
@@ -159,5 +166,9 @@ rubygems_version: 2.4.4
159
166
  signing_key:
160
167
  specification_version: 4
161
168
  summary: Manage SmartOS zones in Vagrant
162
- test_files: []
163
- has_rdoc:
169
+ test_files:
170
+ - test/integration/default/serverspec/group_spec.rb
171
+ - test/integration/default/serverspec/spec_helper.rb
172
+ - test/integration/default/serverspec/user_spec.rb
173
+ - test/templates/Vagrantfile.smartos.erb
174
+ - test/templates/bootstrap.sh