vagrant-vmware-esxi 1.0.1
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 +7 -0
- data/Gemfile +14 -0
- data/LICENSE +674 -0
- data/README.md +175 -0
- data/Rakefile +4 -0
- data/example_box/metadata.json +4 -0
- data/lib/vagrant-vmware-esxi.rb +18 -0
- data/lib/vagrant-vmware-esxi/action.rb +119 -0
- data/lib/vagrant-vmware-esxi/action/boot.rb +59 -0
- data/lib/vagrant-vmware-esxi/action/connect_esxi.rb +58 -0
- data/lib/vagrant-vmware-esxi/action/createvm.rb +302 -0
- data/lib/vagrant-vmware-esxi/action/destroy.rb +58 -0
- data/lib/vagrant-vmware-esxi/action/halt.rb +52 -0
- data/lib/vagrant-vmware-esxi/action/read_ssh_info.rb +63 -0
- data/lib/vagrant-vmware-esxi/action/read_state.rb +67 -0
- data/lib/vagrant-vmware-esxi/action/resume.rb +63 -0
- data/lib/vagrant-vmware-esxi/action/suspend.rb +61 -0
- data/lib/vagrant-vmware-esxi/action/wait_for_state.rb +40 -0
- data/lib/vagrant-vmware-esxi/config.rb +56 -0
- data/lib/vagrant-vmware-esxi/errors.rb +22 -0
- data/lib/vagrant-vmware-esxi/plugin.rb +61 -0
- data/lib/vagrant-vmware-esxi/provider.rb +44 -0
- data/lib/vagrant-vmware-esxi/version.rb +6 -0
- data/locales/en.yml +65 -0
- data/vagrant-vmware-esxi.gemspec +27 -0
- metadata +151 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'vagrant'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module ESXi
|
5
|
+
module Errors
|
6
|
+
# Error class
|
7
|
+
class VagrantESXiErrors < Vagrant::Errors::VagrantError
|
8
|
+
error_namespace('vagrant_vmware_esxi.errors')
|
9
|
+
end
|
10
|
+
|
11
|
+
# Error class
|
12
|
+
class ESXiError < VagrantESXiErrors
|
13
|
+
error_key(:esxi_error)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Error class
|
17
|
+
class ESXiConfigError < VagrantESXiErrors
|
18
|
+
error_key(:esxi_config_error)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# Plugins
|
2
|
+
module VagrantPlugins
|
3
|
+
module ESXi
|
4
|
+
# Class Plugin
|
5
|
+
class Plugin < Vagrant.plugin('2')
|
6
|
+
name 'vmware-esxi'
|
7
|
+
description 'Vagrant VMware-ESXi provider plugin'
|
8
|
+
config(:vmware_esxi, :provider) do
|
9
|
+
require_relative 'config'
|
10
|
+
Config
|
11
|
+
end
|
12
|
+
|
13
|
+
provider(
|
14
|
+
:vmware_esxi,
|
15
|
+
box_format: %w(vmware_esxi vmware vmware_desktop vmware_fusion vmware_workstation),
|
16
|
+
parallel: true
|
17
|
+
) do
|
18
|
+
setup_logging
|
19
|
+
setup_i18n
|
20
|
+
|
21
|
+
require_relative 'provider'
|
22
|
+
Provider
|
23
|
+
end
|
24
|
+
|
25
|
+
# This initializes the internationalization strings.
|
26
|
+
def self.setup_i18n
|
27
|
+
require 'pathname'
|
28
|
+
I18n.load_path << File.expand_path('locales/en.yml', ESXi.source_root)
|
29
|
+
I18n.reload!
|
30
|
+
end
|
31
|
+
|
32
|
+
# This sets up our log level to be whatever VAGRANT_LOG is.
|
33
|
+
def self.setup_logging
|
34
|
+
require 'log4r'
|
35
|
+
level = nil
|
36
|
+
begin
|
37
|
+
level = Log4r.const_get(ENV['VAGRANT_LOG'].upcase)
|
38
|
+
rescue NameError
|
39
|
+
# This means that the logging constant wasn't found,
|
40
|
+
# which is fine. We just keep `level` as `nil`. But
|
41
|
+
# we tell the user.
|
42
|
+
level = nil
|
43
|
+
end
|
44
|
+
|
45
|
+
# Some constants, such as "true" resolve to booleans, so the
|
46
|
+
# above error checking doesn't catch it. This will check to make
|
47
|
+
# sure that the log level is an integer, as Log4r requires.
|
48
|
+
level = nil unless level.is_a?(Integer)
|
49
|
+
|
50
|
+
# Set the logging level on all "vagrant" namespaced
|
51
|
+
# logs as long as we have a valid level.
|
52
|
+
if level
|
53
|
+
logger = Log4r::Logger.new('vagrant_esxi')
|
54
|
+
logger.outputters = Log4r::Outputter.stderr
|
55
|
+
logger.level = level
|
56
|
+
logger = nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'log4r'
|
2
|
+
require 'vagrant'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module ESXi
|
6
|
+
# Provider class
|
7
|
+
class Provider < Vagrant.plugin('2', :provider)
|
8
|
+
def initialize(machine)
|
9
|
+
@machine = machine
|
10
|
+
@logger = Log4r::Logger.new('vagrant_vmware_esxi::action::provider')
|
11
|
+
end
|
12
|
+
|
13
|
+
def action(name)
|
14
|
+
method = "action_#{name}"
|
15
|
+
if Action.respond_to? method
|
16
|
+
Action.send(method)
|
17
|
+
else
|
18
|
+
# the specified action is not supported
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def state
|
24
|
+
@machine.action('connect_esxi')
|
25
|
+
env = @machine.action('read_state')
|
26
|
+
state_id = env[:machine_state]
|
27
|
+
|
28
|
+
# Get the short and long description
|
29
|
+
@logger.info("vagrant-vmware-esxi, boot: state_id: #{env[:state_id]}")
|
30
|
+
|
31
|
+
short = I18n.t("vagrant_vmware_esxi.states.#{state_id}.short")
|
32
|
+
long = I18n.t("vagrant_vmware_esxi.states.#{state_id}.long")
|
33
|
+
|
34
|
+
# Return the MachineState object
|
35
|
+
Vagrant::MachineState.new(state_id, short, long)
|
36
|
+
end
|
37
|
+
|
38
|
+
def ssh_info
|
39
|
+
env = @machine.action('read_ssh_info')
|
40
|
+
env[:machine_ssh_info]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
en:
|
2
|
+
vagrant_vmware_esxi:
|
3
|
+
support: |-
|
4
|
+
-----------------------:----------------------
|
5
|
+
Please support my work and efforts contributing
|
6
|
+
to the Linux community. A $25 payment per
|
7
|
+
server would be highly appreciated.
|
8
|
+
-----------------------:----------------------
|
9
|
+
Author : Jonathan Senkerik
|
10
|
+
Website : http://www.jintegrate.co
|
11
|
+
github : http://github.com/josenk/vagrant-vmware-esxi
|
12
|
+
Paypal : josenk@jintegrate.co
|
13
|
+
Bitcoin : 1MTNg7SqcEWs5uwLKwNiAfYqBfnKFJu65p
|
14
|
+
errors:
|
15
|
+
esxi_error: |-
|
16
|
+
There was an error talking to ESXi.
|
17
|
+
%{message}
|
18
|
+
esxi_config_error: |-
|
19
|
+
There was an ESXi configuration error.
|
20
|
+
%{message}
|
21
|
+
vagrant_vmware_esxi_message: |-
|
22
|
+
--- %{message}
|
23
|
+
vmbuild_not_done: |-
|
24
|
+
Virtual Machine will be built.
|
25
|
+
vmbuild_already_done: |-
|
26
|
+
Virtual Machine is already built.
|
27
|
+
already_powered_on: |-
|
28
|
+
The VM is already powered_on.
|
29
|
+
already_powered_off: |-
|
30
|
+
The VM is already powered_off.
|
31
|
+
already_suspended: |-
|
32
|
+
The VM is already suspended.
|
33
|
+
already_destroyed: |-
|
34
|
+
The VM is destroyed.
|
35
|
+
config:
|
36
|
+
esxi_hostname_is_required: |-
|
37
|
+
hostname is required
|
38
|
+
esxi_username_is_required: |-
|
39
|
+
username is required
|
40
|
+
states:
|
41
|
+
running:
|
42
|
+
short: |-
|
43
|
+
running
|
44
|
+
long: |-
|
45
|
+
The virtual machine is running.
|
46
|
+
powered_on:
|
47
|
+
short: |-
|
48
|
+
powered on
|
49
|
+
long: |-
|
50
|
+
The virtual machine is powered on.
|
51
|
+
powered_off:
|
52
|
+
short: |-
|
53
|
+
powered off
|
54
|
+
long: |-
|
55
|
+
The virtual machine is powered off.
|
56
|
+
suspended:
|
57
|
+
short: |-
|
58
|
+
suspended
|
59
|
+
long: |-
|
60
|
+
The virtual machine is suspended.
|
61
|
+
not_created:
|
62
|
+
short: |-
|
63
|
+
not created
|
64
|
+
long: |-
|
65
|
+
No Virtual Machines are created.
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.expand_path('../lib/vagrant-vmware-esxi/version', __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'vagrant-vmware-esxi'
|
5
|
+
s.version = VagrantPlugins::ESXi::VERSION
|
6
|
+
s.date = '2017-09-01'
|
7
|
+
s.summary = 'Vagrant ESXi provider plugin'
|
8
|
+
s.description = 'A Vagrant plugin that adds a VMware ESXi provider support'
|
9
|
+
s.authors = ['Jonathan Senkerik']
|
10
|
+
s.email = 'josenk@jintegrate.co'
|
11
|
+
s.require_paths = ['lib']
|
12
|
+
s.homepage = 'https://github.com/josenk/vagrant-vmware-esxi'
|
13
|
+
s.license = 'GNU'
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split($\)
|
16
|
+
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
18
|
+
|
19
|
+
s.add_runtime_dependency 'i18n', '~> 0.6'
|
20
|
+
s.add_runtime_dependency 'log4r', '~> 1.1'
|
21
|
+
s.add_runtime_dependency "iniparse", '> 1.0'
|
22
|
+
s.add_runtime_dependency "net-ssh-simple", '> 1.5'
|
23
|
+
|
24
|
+
s.add_development_dependency "bundler"
|
25
|
+
s.add_development_dependency "rspec-core"
|
26
|
+
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vagrant-vmware-esxi
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jonathan Senkerik
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-09-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: i18n
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.6'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: log4r
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.1'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: iniparse
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: net-ssh-simple
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.5'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.5'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec-core
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
description: A Vagrant plugin that adds a VMware ESXi provider support
|
98
|
+
email: josenk@jintegrate.co
|
99
|
+
executables: []
|
100
|
+
extensions: []
|
101
|
+
extra_rdoc_files: []
|
102
|
+
files:
|
103
|
+
- Gemfile
|
104
|
+
- LICENSE
|
105
|
+
- README.md
|
106
|
+
- Rakefile
|
107
|
+
- example_box/metadata.json
|
108
|
+
- lib/vagrant-vmware-esxi.rb
|
109
|
+
- lib/vagrant-vmware-esxi/action.rb
|
110
|
+
- lib/vagrant-vmware-esxi/action/boot.rb
|
111
|
+
- lib/vagrant-vmware-esxi/action/connect_esxi.rb
|
112
|
+
- lib/vagrant-vmware-esxi/action/createvm.rb
|
113
|
+
- lib/vagrant-vmware-esxi/action/destroy.rb
|
114
|
+
- lib/vagrant-vmware-esxi/action/halt.rb
|
115
|
+
- lib/vagrant-vmware-esxi/action/read_ssh_info.rb
|
116
|
+
- lib/vagrant-vmware-esxi/action/read_state.rb
|
117
|
+
- lib/vagrant-vmware-esxi/action/resume.rb
|
118
|
+
- lib/vagrant-vmware-esxi/action/suspend.rb
|
119
|
+
- lib/vagrant-vmware-esxi/action/wait_for_state.rb
|
120
|
+
- lib/vagrant-vmware-esxi/config.rb
|
121
|
+
- lib/vagrant-vmware-esxi/errors.rb
|
122
|
+
- lib/vagrant-vmware-esxi/plugin.rb
|
123
|
+
- lib/vagrant-vmware-esxi/provider.rb
|
124
|
+
- lib/vagrant-vmware-esxi/version.rb
|
125
|
+
- locales/en.yml
|
126
|
+
- vagrant-vmware-esxi.gemspec
|
127
|
+
homepage: https://github.com/josenk/vagrant-vmware-esxi
|
128
|
+
licenses:
|
129
|
+
- GNU
|
130
|
+
metadata: {}
|
131
|
+
post_install_message:
|
132
|
+
rdoc_options: []
|
133
|
+
require_paths:
|
134
|
+
- lib
|
135
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
requirements: []
|
146
|
+
rubyforge_project:
|
147
|
+
rubygems_version: 2.6.12
|
148
|
+
signing_key:
|
149
|
+
specification_version: 4
|
150
|
+
summary: Vagrant ESXi provider plugin
|
151
|
+
test_files: []
|