knife-vsphere 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,24 +2,14 @@
2
2
  # Author:: Ezra Pagel (<ezra@cpan.org>)
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
5
 
17
6
  require 'chef/knife'
18
7
  require 'rbvmomi'
19
8
 
9
+ # Base class for vsphere knife commands
20
10
  class Chef
21
11
  class Knife
22
- class VsphereBaseCommand < Knife
12
+ class BaseVsphereCommand < Knife
23
13
 
24
14
  deps do
25
15
  require 'chef/knife/bootstrap'
@@ -34,11 +24,6 @@ class Chef
34
24
 
35
25
  def self.get_common_options
36
26
 
37
- option :host,
38
- :short => "-H HOST",
39
- :long => "--host HOST",
40
- :description => "The host to create the VM on"
41
-
42
27
  option :vsphere_user,
43
28
  :short => "-u USERNAME",
44
29
  :long => "--user USERNAME",
@@ -115,6 +100,10 @@ class Chef
115
100
  find { |o| o.name == name }
116
101
  end
117
102
 
103
+ def fatal_exit(msg)
104
+ ui.fatal(msg)
105
+ exit 1
106
+ end
118
107
 
119
108
 
120
109
  end
@@ -1,42 +1,29 @@
1
- #r# Author:: Ezra Pagel (<ezra@cpan.org>)
2
- # License:: Apache License, Version 2.0
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
1
  #
8
- # http://www.apache.org/licenses/LICENSE-2.0
2
+ # Author:: Ezra Pagel (<ezra@cpan.org>)
3
+ # License:: Apache License, Version 2.0
9
4
  #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
5
  require 'chef/knife'
17
- require 'chef/knife/VsphereBaseCommand'
6
+ require 'chef/knife/BaseVsphereCommand'
18
7
 
19
- class Chef
20
- class Knife
21
- class VsphereCustomizationList < VsphereBaseCommand
8
+ # Lists all customization specifications in the configured datacenter
9
+ class Chef::Knife::VsphereCustomizationList < Chef::Knife::BaseVsphereCommand
22
10
 
23
- banner "knife vsphere customization list"
11
+ banner "knife vsphere customization list"
24
12
 
25
- get_common_options
26
-
27
- def run
13
+ get_common_options
14
+
15
+ def run
28
16
 
29
- $stdout.sync = true
30
-
31
- vim = get_vim_connection
17
+ $stdout.sync = true
18
+
19
+ vim = get_vim_connection
32
20
 
33
- csm = vim.serviceContent.customizationSpecManager
34
- csm.info.each do |c|
35
- puts "#{ui.color("Customization Name", :cyan)}: #{c.name}"
36
-
37
- end
38
-
39
- end
21
+ csm = vim.serviceContent.customizationSpecManager
22
+ csm.info.each do |c|
23
+ puts "#{ui.color("Customization Name", :cyan)}: #{c.name}"
24
+
40
25
  end
26
+
41
27
  end
42
28
  end
29
+
@@ -2,48 +2,34 @@
2
2
  # Author:: Ezra Pagel (<ezra@cpan.org>)
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
5
 
17
6
  require 'chef/knife'
18
- require 'chef/knife/VsphereBaseCommand'
7
+ require 'chef/knife/BaseVsphereCommand'
19
8
 
20
- class Chef
21
- class Knife
22
- class VsphereTemplateList < VsphereBaseCommand
9
+ # Lists all known VM templates in the configured datacenter
10
+ class Chef::Knife::VsphereTemplateList < Chef::Knife::BaseVsphereCommand
23
11
 
24
- banner "knife vsphere template list"
12
+ banner "knife vsphere template list"
25
13
 
26
- get_common_options
27
-
14
+ get_common_options
15
+
16
+ def run
28
17
 
29
- def run
18
+ $stdout.sync = true
19
+ $stderr.sync = true
30
20
 
31
- $stdout.sync = true
32
-
33
- vim = get_vim_connection
21
+ vim = get_vim_connection
34
22
 
35
- dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
36
- dc = vim.serviceInstance.find_datacenter(dcname) or abort "datacenter not found"
37
-
38
- vmFolders = get_folders(dc.vmFolder)
23
+ dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
24
+ dc = vim.serviceInstance.find_datacenter(dcname) or abort "datacenter not found"
25
+
26
+ vmFolders = get_folders(dc.vmFolder)
39
27
 
40
- vms = find_all_in_folders(dc.vmFolder, RbVmomi::VIM::VirtualMachine).
41
- select {|v| !v.config.nil? && v.config.template == true }
42
-
43
- vms.each do |vm|
44
- puts "#{ui.color("Template Name", :cyan)}: #{vm.name}"
45
- end
46
- end
28
+ vms = find_all_in_folders(dc.vmFolder, RbVmomi::VIM::VirtualMachine).
29
+ select {|v| !v.config.nil? && v.config.template == true }
30
+
31
+ vms.each do |vm|
32
+ puts "#{ui.color("Template Name", :cyan)}: #{vm.name}"
47
33
  end
48
34
  end
49
35
  end
@@ -2,48 +2,48 @@
2
2
  # Author:: Ezra Pagel (<ezra@cpan.org>)
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
5
 
17
6
  require 'chef/knife'
18
- require 'chef/knife/VsphereBaseCommand'
7
+ require 'chef/knife/BaseVsphereCommand'
19
8
  require 'rbvmomi'
20
9
  require 'netaddr'
21
10
 
22
- class Chef::Knife::VsphereVmClone < Chef::Knife::VsphereBaseCommand
11
+ # Clone an existing template into a new VM, optionally applying a customization specification.
12
+ #
13
+ # usage:
14
+ # knife vsphere vm clone NewNode UbuntuTemplate --cspec StaticSpec \
15
+ # --cips 192.168.0.99/24,192.168.1.99/24 \
16
+ # --chostname NODENAME --cdomain NODEDOMAIN
17
+ class Chef::Knife::VsphereVmClone < Chef::Knife::BaseVsphereCommand
23
18
 
24
- banner "knife vsphere vm clone (options)"
19
+ banner "knife vsphere vm clone VMNAME TEMPLATE (options)"
25
20
 
26
21
  get_common_options
27
22
 
28
- option :template,
29
- :short => "-t TEMPLATE",
30
- :long => "--template TEMPLATE",
31
- :description => "The template to create the VM from"
32
-
33
- option :vmname,
34
- :short => "-N VMNAME",
35
- :long => "--vmname VMNAME",
36
- :description => "The name for the new virtual machine"
37
-
38
23
  option :customization_spec,
39
- :long => "--cspec CUSTOMIZATION_SPEC",
24
+ :long => "--cspec CUST_SPEC",
40
25
  :description => "The name of any customization specification to apply"
41
26
 
42
27
  option :customization_ips,
43
- :long => "--cips CUSTOMIZATION_IPS",
44
- :description => "A comma-delimited list of CIDR notation static IPs to be mapped in order for "+
45
- "any applied customization specification that expects IP addresses"
28
+ :long => "--cips CUST_IPS",
29
+ :description => "Comma-delimited list of CIDR IPs for customization"
30
+
31
+ option :customization_hostname,
32
+ :long => "--chostname CUST_HOSTNAME",
33
+ :description => "Unqualified hostname for customization"
34
+
35
+ option :customization_domain,
36
+ :long => "--cdomain CUST_DOMAIN",
37
+ :description => "Domain name for customization"
46
38
 
39
+ option :customization_tz,
40
+ :long => "--ctz CUST_TIMEZONE",
41
+ :description => "Timezone invalid 'Area/Location' format"
42
+
43
+ option :power,
44
+ :long => "--start STARTVM",
45
+ :description => "Indicates whether to start the VM after a successful clone",
46
+ :default => true
47
47
 
48
48
 
49
49
 
@@ -51,9 +51,18 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::VsphereBaseCommand
51
51
 
52
52
  $stdout.sync = true
53
53
 
54
- template = config[:template] or abort "source template name required"
55
- vmname = config[:vmname] or abort "destination vm name required"
56
-
54
+ vmname = @name_args[0]
55
+ if vmname.nil?
56
+ show_usage
57
+ fatal_exit("You must specify a virtual machine name")
58
+ end
59
+
60
+ template = @name_args[1]
61
+ if template.nil?
62
+ show_usage
63
+ fatal_exit("You must specify a template name")
64
+ end
65
+
57
66
  vim = get_vim_connection
58
67
 
59
68
  dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
@@ -74,20 +83,54 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::VsphereBaseCommand
74
83
 
75
84
  if config[:customization_spec]
76
85
  csi = find_customization(vim, config[:customization_spec]) or
77
- abort "failed to find customization specification named #{config[:customization_spec]}"
86
+ fatal_exit("failed to find customization specification named #{config[:customization_spec]}")
87
+
88
+ if csi.info.type != "Linux"
89
+ fatal_exit("Only Linux customization specifications are currently supported")
90
+ end
78
91
 
79
92
  if config[:customization_ips]
80
93
  csi.spec.nicSettingMap = config[:customization_ips].split(',').map { |i| generate_adapter_map(i) }
81
94
  end
82
95
 
96
+ use_ident = !config[:customization_hostname].nil? || !config[:customization_domain].nil?
97
+
98
+ if use_ident
99
+ # TODO - verify that we're deploying a linux spec, at least warn
100
+ ident = RbVmomi::VIM.CustomizationLinuxPrep
101
+
102
+ if config[:customization_hostname]
103
+ ident.hostName = RbVmomi::VIM.CustomizationFixedName
104
+ ident.hostName.name = config[:customization_hostname]
105
+ else
106
+ ident.hostName = RbVmomi::VIM.CustomizationFixedName
107
+ ident.hostName.name = config[:customization_domain]
108
+ end
109
+
110
+ if config[:customization_domain]
111
+ ident.domain = config[:customization_domain]
112
+ end
113
+
114
+ csi.spec.identity = ident
115
+ end
116
+
83
117
  clone_spec.customization = csi.spec
84
118
 
85
119
  end
86
120
 
87
121
  task = src_vm.CloneVM_Task(:folder => src_vm.parent, :name => vmname, :spec => clone_spec)
88
122
  puts "Cloning template #{template} to new VM #{vmname}"
89
- task.wait_for_completion
123
+ task.wait_for_completion
90
124
  puts "Finished creating virtual machine #{vmname}"
125
+
126
+ if config[:power]
127
+ vm = find_in_folders(dc.vmFolder, RbVmomi::VIM::VirtualMachine, vmname) or
128
+ fatal_exit("VM #{vmname} not found")
129
+ vm.PowerOnVM_Task.wait_for_completion
130
+ puts "Powered on virtual machine #{vmname}"
131
+ end
132
+
133
+
91
134
  end
92
135
 
93
136
 
@@ -116,7 +159,7 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::VsphereBaseCommand
116
159
  settings.subnetMask = cidr_ip.netmask_ext
117
160
 
118
161
  # TODO - want to confirm gw/ip are in same subnet?
119
- if [gw.nil?]
162
+ if gw.nil?
120
163
  settings.gateway = [cidr_ip.network(:Objectify => true).next_ip]
121
164
  else
122
165
  gw_cidr = NetAddr::CIDR.create(gw)
@@ -127,7 +170,7 @@ class Chef::Knife::VsphereVmClone < Chef::Knife::VsphereBaseCommand
127
170
  adapter_map = RbVmomi::VIM.CustomizationAdapterMapping
128
171
  adapter_map.adapter = settings
129
172
  adapter_map
130
- #end
173
+
131
174
  end
132
175
 
133
176
  end
@@ -2,55 +2,40 @@
2
2
  # Author:: Ezra Pagel (<ezra@cpan.org>)
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
5
 
17
6
  require 'chef/knife'
18
- require 'chef/knife/VsphereBaseCommand'
7
+ require 'chef/knife/BaseVsphereCommand'
19
8
  require 'rbvmomi'
20
9
 
21
- class Chef
22
- class Knife
23
- class VsphereVmDelete < VsphereBaseCommand
24
-
10
+ # Delete a virtual machine from vCenter
11
+ class Chef::Knife::VsphereVmDelete < Chef::Knife::BaseVsphereCommand
25
12
 
26
- banner "knife vsphere vm delete (options)"
13
+ banner "knife vsphere vm delete VMNAME"
27
14
 
28
- get_common_options
29
-
30
- option :vmname,
31
- :short => "-N VMNAME",
32
- :long => "--vmname VMNAME",
33
- :description => "The name of the virtual machine to delete"
15
+ get_common_options
16
+
17
+ def run
18
+ $stdout.sync = true
34
19
 
35
- def run
20
+ vmname = @name_args[0]
36
21
 
37
- $stdout.sync = true
38
-
39
- vmname = config[:vmname] or abort "virtual machine name required"
40
-
41
- vim = get_vim_connection
22
+ if vmname.nil?
23
+ show_usage
24
+ fatal_exit("You must specify a virtual machine name")
25
+ end
26
+
27
+ vim = get_vim_connection
42
28
 
43
- dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
44
- dc = vim.serviceInstance.find_datacenter(dcname) or abort "datacenter not found"
29
+ dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
30
+ dc = vim.serviceInstance.find_datacenter(dcname) or
31
+ fatal_exit("datacenter not found")
45
32
 
46
- vm = find_in_folders(dc.vmFolder, RbVmomi::VIM::VirtualMachine, vmname) or
47
- abort "VM #{vmname} not found"
33
+ vm = find_in_folders(dc.vmFolder, RbVmomi::VIM::VirtualMachine, vmname) or
34
+ fatal_exit("VM #{vmname} not found")
48
35
 
49
- vm.PowerOffVM_Task.wait_for_completion unless vm.runtime.powerState == "poweredOff"
50
- vm.Destroy_Task
51
- puts "Deleted virtual machine #{vmname}"
36
+ vm.PowerOffVM_Task.wait_for_completion unless vm.runtime.powerState == "poweredOff"
37
+ vm.Destroy_Task
38
+ puts "Deleted virtual machine #{vmname}"
52
39
 
53
- end
54
- end
55
40
  end
56
41
  end
@@ -1,56 +1,42 @@
1
- #r# Author:: Ezra Pagel (<ezra@cpan.org>)
2
- # License:: Apache License, Version 2.0
3
- #
4
- # Licensed under the Apache License, Version 2.0 (the "License");
5
- # you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
1
  #
8
- # http://www.apache.org/licenses/LICENSE-2.0
2
+ # Author:: Ezra Pagel (<ezra@cpan.org>)
3
+ # License:: Apache License, Version 2.0
9
4
  #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS,
12
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- # See the License for the specific language governing permissions and
14
- # limitations under the License.
15
-
16
5
  require 'chef/knife'
17
- require 'chef/knife/VsphereBaseCommand'
6
+ require 'chef/knife/BaseVsphereCommand'
18
7
 
19
- class Chef
20
- class Knife
21
- class VsphereVmList < VsphereBaseCommand
8
+ # Lists all known virtual machines in the configured datacenter
9
+ class Chef::Knife::VsphereVmList < Chef::Knife::BaseVsphereCommand
22
10
 
23
- banner "knife vsphere vm list"
11
+ banner "knife vsphere vm list"
24
12
 
25
- get_common_options
26
-
27
- option :folder,
28
- :short => "-f SHOWFOLDER",
29
- :long => "--folder",
30
- :description => "The folder to list VMs in"
13
+ get_common_options
14
+
15
+ option :folder,
16
+ :short => "-f SHOWFOLDER",
17
+ :long => "--folder",
18
+ :description => "The folder to list VMs in"
31
19
 
32
- def run
20
+ def run
33
21
 
34
- $stdout.sync = true
35
-
36
- vim = get_vim_connection
22
+ $stdout.sync = true
23
+
24
+ vim = get_vim_connection
37
25
 
38
26
 
39
- dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
40
- dc = vim.serviceInstance.find_datacenter(dcname) or abort "datacenter not found"
41
-
42
- baseFolder = dc.vmFolder;
27
+ dcname = config[:vsphere_dc] || Chef::Config[:knife][:vsphere_dc]
28
+ dc = vim.serviceInstance.find_datacenter(dcname) or abort "datacenter not found"
29
+
30
+ baseFolder = dc.vmFolder;
43
31
 
44
- if config[:folder]
45
- baseFolder = get_folders(dc.vmFolder).find { |f| f.name == config[:folder]} or
46
- abort "no such folder #{config[:folder]}"
47
- end
32
+ if config[:folder]
33
+ baseFolder = get_folders(dc.vmFolder).find { |f| f.name == config[:folder]} or
34
+ abort "no such folder #{config[:folder]}"
35
+ end
48
36
 
49
- vms = find_all_in_folders(baseFolder, RbVmomi::VIM::VirtualMachine)
50
- vms.each do |vm|
51
- puts "#{ui.color("Template Name", :cyan)}: #{vm.name}"
52
- end
53
- end
37
+ vms = find_all_in_folders(baseFolder, RbVmomi::VIM::VirtualMachine)
38
+ vms.each do |vm|
39
+ puts "#{ui.color("VM Name", :cyan)}: #{vm.name}"
54
40
  end
55
41
  end
56
42
  end
@@ -2,20 +2,9 @@
2
2
  # Author:: Ezra Pagel (<ezra@cpan.org>)
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
5
 
17
6
  require 'chef/knife'
18
- require 'chef/knife/VsphereBaseCommand'
7
+ require 'chef/knife/BaseVsphereCommand'
19
8
  require 'rbvmomi'
20
9
  require 'netaddr'
21
10
 
@@ -29,17 +18,13 @@ PowerStates = {
29
18
  PsSuspended => 'suspended'
30
19
  }
31
20
 
32
- class Chef::Knife::VsphereVmState < Chef::Knife::VsphereBaseCommand
21
+ # Manage power state of a virtual machine
22
+ class Chef::Knife::VsphereVmState < Chef::Knife::BaseVsphereCommand
33
23
 
34
- banner "knife vsphere vm state (options)"
24
+ banner "knife vsphere vm state VMNAME (options)"
35
25
 
36
26
  get_common_options
37
27
 
38
- option :vmname,
39
- :short => "-N VMNAME",
40
- :long => "--vmname VMNAME",
41
- :description => "The name for the new virtual machine"
42
-
43
28
  option :state,
44
29
  :short => "-s STATE",
45
30
  :long => "--state STATE",
@@ -49,7 +34,12 @@ class Chef::Knife::VsphereVmState < Chef::Knife::VsphereBaseCommand
49
34
 
50
35
  $stdout.sync = true
51
36
 
52
- vmname = config[:vmname] or abort "destination vm name required"
37
+ vmname = @name_args[0]
38
+ if vmname.nil?
39
+ show_usage
40
+ ui.fatal("You must specify a virtual machine name")
41
+ exit 1
42
+ end
53
43
 
54
44
  vim = get_vim_connection
55
45
 
@@ -1,4 +1,4 @@
1
1
  module KnifeVsphere
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
4
4
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-vsphere
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 4
10
- version: 0.1.4
9
+ - 5
10
+ version: 0.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ezra Pagel
@@ -15,13 +15,29 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-05 00:00:00 -05:00
18
+ date: 2011-07-06 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: chef
22
+ name: netaddr
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 1
32
+ - 5
33
+ - 0
34
+ version: 1.5.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: chef
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
25
41
  none: false
26
42
  requirements:
27
43
  - - ~>
@@ -33,11 +49,11 @@ dependencies:
33
49
  - 0
34
50
  version: 0.10.0
35
51
  type: :runtime
36
- version_requirements: *id001
52
+ version_requirements: *id002
37
53
  - !ruby/object:Gem::Dependency
38
54
  name: rbvmomi
39
55
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
41
57
  none: false
42
58
  requirements:
43
59
  - - ~>
@@ -49,7 +65,7 @@ dependencies:
49
65
  - 3
50
66
  version: 1.2.3
51
67
  type: :runtime
52
- version_requirements: *id002
68
+ version_requirements: *id003
53
69
  description: VMware vSphere Support for Chef's Knife Command
54
70
  email: ezra@cpan.org
55
71
  executables: []
@@ -59,13 +75,13 @@ extensions: []
59
75
  extra_rdoc_files: []
60
76
 
61
77
  files:
78
+ - lib/chef/knife/BaseVsphereCommand.rb
62
79
  - lib/chef/knife/vsphere_customization_list.rb
63
80
  - lib/chef/knife/vsphere_template_list.rb
64
81
  - lib/chef/knife/vsphere_vm_clone.rb
65
82
  - lib/chef/knife/vsphere_vm_delete.rb
66
83
  - lib/chef/knife/vsphere_vm_list.rb
67
84
  - lib/chef/knife/vsphere_vm_state.rb
68
- - lib/chef/knife/VsphereBaseCommand.rb
69
85
  - lib/knife-vsphere/version.rb
70
86
  has_rdoc: true
71
87
  homepage: