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.
@@ -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
@@ -0,0 +1,6 @@
1
+ # VERSION
2
+ module VagrantPlugins
3
+ module ESXi
4
+ VERSION = '1.0.1'
5
+ end
6
+ 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: []