knife-vcloud 0.2.3 → 1.0.0
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/CHANGELOG.md +44 -1
- data/README.md +356 -91
- data/lib/chef/knife/{vc_catalog_item_show.rb → catalog/vc_catalog_item_show.rb} +13 -13
- data/lib/chef/knife/{vc_catalog_show.rb → catalog/vc_catalog_show.rb} +9 -12
- data/lib/chef/knife/common/vc_bootstrap_common.rb +208 -0
- data/lib/chef/knife/common/vc_catalog_common.rb +58 -0
- data/lib/chef/knife/common/vc_common.rb +165 -0
- data/lib/chef/knife/common/vc_network_common.rb +34 -0
- data/lib/chef/knife/common/vc_vapp_common.rb +49 -0
- data/lib/chef/knife/common/vc_vdc_common.rb +43 -0
- data/lib/chef/knife/common/vc_vm_common.rb +80 -0
- data/lib/chef/knife/network/vc_network_show.rb +45 -0
- data/lib/chef/knife/{vc_org_list.rb → org/vc_org_list.rb} +3 -5
- data/lib/chef/knife/{vc_org_show.rb → org/vc_org_show.rb} +10 -11
- data/lib/chef/knife/ovf/vc_ovf_upload.rb +71 -0
- data/lib/chef/knife/vapp/vc_vapp_bootstrap.rb +51 -0
- data/lib/chef/knife/vapp/vc_vapp_clone.rb +80 -0
- data/lib/chef/knife/{vc_vapp_create.rb → vapp/vc_vapp_create.rb} +10 -9
- data/lib/chef/knife/{vc_vapp_delete.rb → vapp/vc_vapp_delete.rb} +12 -10
- data/lib/chef/knife/vapp/vc_vapp_network_external.rb +101 -0
- data/lib/chef/knife/vapp/vc_vapp_network_internal.rb +151 -0
- data/lib/chef/knife/vapp/vc_vapp_reboot.rb +45 -0
- data/lib/chef/knife/vapp/vc_vapp_reset.rb +44 -0
- data/lib/chef/knife/vapp/vc_vapp_show.rb +90 -0
- data/lib/chef/knife/vapp/vc_vapp_snapshot.rb +58 -0
- data/lib/chef/knife/{vc_vapp_start.rb → vapp/vc_vapp_start.rb} +7 -7
- data/lib/chef/knife/{vc_vapp_stop.rb → vapp/vc_vapp_stop.rb} +7 -7
- data/lib/chef/knife/vapp/vc_vapp_suspend.rb +44 -0
- data/lib/chef/knife/vc_commands.rb +70 -0
- data/lib/chef/knife/vc_login.rb +2 -2
- data/lib/chef/knife/{vc_vdc_show.rb → vdc/vc_vdc_show.rb} +13 -14
- data/lib/chef/knife/vm/vc_vm_bootstrap.rb +48 -0
- data/lib/chef/knife/vm/vc_vm_config_guest.rb +110 -0
- data/lib/chef/knife/{vc_vm_config_network.rb → vm/vc_vm_config_network.rb} +17 -11
- data/lib/chef/knife/vm/vc_vm_reboot.rb +44 -0
- data/lib/chef/knife/vm/vc_vm_reset.rb +44 -0
- data/lib/chef/knife/vm/vc_vm_set_disks.rb +78 -0
- data/lib/chef/knife/vm/vc_vm_set_info.rb +79 -0
- data/lib/chef/knife/{vc_vm_show.rb → vm/vc_vm_show.rb} +35 -18
- data/lib/chef/knife/vm/vc_vm_start.rb +44 -0
- data/lib/chef/knife/vm/vc_vm_stop.rb +44 -0
- data/lib/chef/knife/vm/vc_vm_suspend.rb +44 -0
- data/lib/knife-vcloud/version.rb +3 -0
- metadata +69 -38
- data/lib/chef/knife/vc_common.rb +0 -103
- data/lib/chef/knife/vc_vapp_config_network.rb +0 -63
- data/lib/chef/knife/vc_vapp_show.rb +0 -59
- data/lib/chef/knife/vc_vm_config_guest.rb +0 -67
@@ -0,0 +1,80 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Stefano Tortarolo (<stefano.tortarolo@gmail.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
class Chef
|
20
|
+
class Knife
|
21
|
+
class VcVappClone < Chef::Knife
|
22
|
+
include Knife::VcCommon
|
23
|
+
|
24
|
+
banner "knife vc vapp clone [VDC] [SOURCE_VAPP] [DEST_NAME] (options)"
|
25
|
+
|
26
|
+
option :vm_deploy_clone,
|
27
|
+
:long => "--[no-]deploy-clone",
|
28
|
+
:description => "Deploy vApp after cloning (default true)",
|
29
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:vm_deploy_clone] = key },
|
30
|
+
:boolean => true,
|
31
|
+
:default => true
|
32
|
+
|
33
|
+
option :vm_poweron_clone,
|
34
|
+
:long => "--[no-]poweron-clone",
|
35
|
+
:description => "Poweron vApp after cloning (default false)",
|
36
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:vm_poweron_clone] = key },
|
37
|
+
:boolean => true,
|
38
|
+
:default => false
|
39
|
+
|
40
|
+
option :vm_delete_source,
|
41
|
+
:long => "--[no-]delete-source",
|
42
|
+
:description => "Delete source vApp",
|
43
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:vm_delete_source] = key },
|
44
|
+
:boolean => true,
|
45
|
+
:default => false
|
46
|
+
|
47
|
+
option :vdc_name,
|
48
|
+
:long => "--vdc VDC_NAME",
|
49
|
+
:description => "VDC to whom vApp belongs",
|
50
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:default_vdc_name] = key }
|
51
|
+
|
52
|
+
def run
|
53
|
+
$stdout.sync = true
|
54
|
+
|
55
|
+
vdc_arg = @name_args.shift
|
56
|
+
vapp_arg = @name_args.shift
|
57
|
+
dest_vapp_name = @name_args.shift
|
58
|
+
|
59
|
+
org_name = locate_org_option
|
60
|
+
deploy_clone = locate_config_value(:vm_deploy_clone).to_s
|
61
|
+
poweron_clone = locate_config_value(:vm_poweron_clone).to_s
|
62
|
+
delete_source = locate_config_value(:vm_delete_source).to_s
|
63
|
+
|
64
|
+
connection.login
|
65
|
+
|
66
|
+
org = connection.get_organization_by_name org_name
|
67
|
+
vdc = connection.get_vdc_by_name org, vdc_arg
|
68
|
+
vapp = connection.get_vapp_by_name org, vdc[:name], vapp_arg
|
69
|
+
|
70
|
+
result = connection.clone_vapp vdc[:id], vapp[:id], dest_vapp_name, deploy_clone, poweron_clone, delete_source
|
71
|
+
|
72
|
+
ui.msg "Cloning vApp..."
|
73
|
+
wait_task(connection, result[:task_id])
|
74
|
+
ui.msg "vApp cloned with ID: #{ui.color(result[:vapp_id], :cyan)}"
|
75
|
+
|
76
|
+
connection.logout
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Stefano Tortarolo (<stefano.tortarolo@gmail.com>)
|
3
|
-
# Copyright:: Copyright (c) 2012
|
3
|
+
# Copyright:: Copyright (c) 2012-2013
|
4
4
|
# License:: Apache License, Version 2.0
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -16,30 +16,31 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'chef/knife/vc_common'
|
20
|
-
|
21
19
|
class Chef
|
22
20
|
class Knife
|
23
21
|
class VcVappCreate < Chef::Knife
|
24
22
|
include Knife::VcCommon
|
23
|
+
include Knife::VcVDCCommon
|
25
24
|
|
26
|
-
banner "knife vc vapp create [
|
25
|
+
banner "knife vc vapp create [VDC] [NAME] [DESCRIPTION] [TEMPLATE_ID] (options)"
|
27
26
|
|
28
27
|
def run
|
29
28
|
$stdout.sync = true
|
30
29
|
|
31
|
-
|
30
|
+
vdc_arg = @name_args.shift
|
32
31
|
name = @name_args.shift
|
33
32
|
description = @name_args.shift
|
34
33
|
templateId = @name_args.shift
|
35
34
|
|
36
35
|
connection.login
|
37
36
|
|
38
|
-
|
37
|
+
vdc = get_vdc(vdc_arg)
|
38
|
+
|
39
|
+
result = connection.create_vapp_from_template vdc[:id], name, description, templateId
|
39
40
|
|
40
|
-
|
41
|
-
wait_task(connection, task_id)
|
42
|
-
|
41
|
+
ui.msg "vApp creation..."
|
42
|
+
wait_task(connection, result[:task_id])
|
43
|
+
ui.msg "vApp created with ID: #{ui.color(result[:vapp_id], :cyan)}"
|
43
44
|
|
44
45
|
connection.logout
|
45
46
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Stefano Tortarolo (<stefano.tortarolo@gmail.com>)
|
3
|
-
# Copyright:: Copyright (c) 2012
|
3
|
+
# Copyright:: Copyright (c) 2012-2013
|
4
4
|
# License:: Apache License, Version 2.0
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -16,29 +16,31 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'chef/knife/vc_common'
|
20
|
-
|
21
19
|
class Chef
|
22
20
|
class Knife
|
23
21
|
class VcVappDelete < Chef::Knife
|
24
22
|
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
25
24
|
|
26
|
-
banner "knife vc vapp delete [
|
25
|
+
banner "knife vc vapp delete [VAPP] (options)"
|
27
26
|
|
28
27
|
def run
|
29
28
|
$stdout.sync = true
|
30
29
|
|
31
|
-
|
30
|
+
vapp_arg = @name_args.shift
|
31
|
+
|
32
|
+
connection.login
|
33
|
+
|
34
|
+
vapp = get_vapp(vapp_arg)
|
32
35
|
|
33
|
-
if ui.confirm("Do you really want to #{ui.color('DELETE', :red)} vApp #{
|
34
|
-
connection.
|
35
|
-
task_id = connection.delete_vapp vapp_id
|
36
|
+
if ui.confirm("Do you really want to #{ui.color('DELETE', :red)} vApp #{vapp[:name]} (ID: #{vapp[:id]})")
|
37
|
+
task_id = connection.delete_vapp vapp[:id]
|
36
38
|
|
37
|
-
|
39
|
+
ui.msg "vApp deletion..."
|
38
40
|
wait_task(connection, task_id)
|
39
41
|
|
40
|
-
connection.logout
|
41
42
|
end
|
43
|
+
connection.logout
|
42
44
|
end
|
43
45
|
end
|
44
46
|
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Stefano Tortarolo (<stefano.tortarolo@gmail.com>)
|
3
|
+
# Copyright:: Copyright (c) 2012-2013
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
class Chef
|
20
|
+
class Knife
|
21
|
+
class VcVappNetworkExternal < Chef::Knife
|
22
|
+
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
24
|
+
include Knife::VcNetworkCommon
|
25
|
+
|
26
|
+
banner "knife vc vapp network external [add|delete|edit| [VAPP] [NETWORK] (options)"
|
27
|
+
|
28
|
+
option :retain_network,
|
29
|
+
:long => "--[no-]retain-network",
|
30
|
+
:description => "Toggle Retain Network across deployments (default true)",
|
31
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:retain_network] = key },
|
32
|
+
:boolean => true,
|
33
|
+
:default => true
|
34
|
+
|
35
|
+
option :parent_network,
|
36
|
+
:short => "-p PARENT_NETWORK",
|
37
|
+
:long => "--parent-network PARENT_NETWORK",
|
38
|
+
:description => "Set a parent network. Defaults to the current network.",
|
39
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:parent_network] = key }
|
40
|
+
|
41
|
+
def run
|
42
|
+
$stdout.sync = true
|
43
|
+
|
44
|
+
command_arg = @name_args.shift
|
45
|
+
vapp_arg = @name_args.shift
|
46
|
+
network_arg = @name_args.shift
|
47
|
+
|
48
|
+
unless command_arg =~ /add|delete|edit/
|
49
|
+
raise ArgumentError, "Invalid command #{command_arg} supplied. Only add, delete and edit are allowed."
|
50
|
+
end
|
51
|
+
|
52
|
+
command = command_arg.to_sym
|
53
|
+
|
54
|
+
config = {
|
55
|
+
:fence_mode => 'bridged',
|
56
|
+
:retain_network => locate_config_value(:retain_network)
|
57
|
+
}
|
58
|
+
|
59
|
+
connection.login
|
60
|
+
|
61
|
+
vapp = get_vapp(vapp_arg)
|
62
|
+
network = get_network network_arg
|
63
|
+
|
64
|
+
unless network
|
65
|
+
raise new ArgumentError, "Network #{network_arg} not found in vDC, please use `vapp network internal` if you want an internal network."
|
66
|
+
end
|
67
|
+
|
68
|
+
unless command == :delete
|
69
|
+
parent_network_arg = locate_config_value(:parent_network)
|
70
|
+
if parent_network_arg
|
71
|
+
ui.msg "Retrieving parent network details"
|
72
|
+
parent_network = get_network parent_network_arg
|
73
|
+
config[:parent_network] = { :id => parent_network[:id],
|
74
|
+
:name => parent_network[:name] }
|
75
|
+
else
|
76
|
+
ui.msg "Forcing parent network to itself"
|
77
|
+
config[:parent_network] = { :id => network[:id],
|
78
|
+
:name => network[:name] }
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
case command
|
83
|
+
when :add
|
84
|
+
ui.msg "Adding #{network[:name]} to vApp..."
|
85
|
+
task_id, response = connection.add_org_network_to_vapp vapp[:id], network, config
|
86
|
+
wait_task(connection, task_id)
|
87
|
+
when :delete
|
88
|
+
ui.msg "Removing #{network[:name]} from vApp..."
|
89
|
+
task_id, response = connection.delete_vapp_network vapp[:id], network
|
90
|
+
wait_task(connection, task_id)
|
91
|
+
when :edit
|
92
|
+
ui.msg "vApp network configuration for #{network[:name]}..."
|
93
|
+
task_id, response = connection.set_vapp_network_config vapp[:id], network, config
|
94
|
+
wait_task(connection, task_id)
|
95
|
+
end
|
96
|
+
|
97
|
+
connection.logout
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Stefano Tortarolo (<stefano.tortarolo@gmail.com>)
|
3
|
+
# Copyright:: Copyright (c) 2012-2013
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
class Chef
|
20
|
+
class Knife
|
21
|
+
class VcVappNetworkInternal < Chef::Knife
|
22
|
+
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
24
|
+
include Knife::VcNetworkCommon
|
25
|
+
|
26
|
+
banner "knife vc vapp network internal [add|delete|edit| [VAPP] [NETWORK] (options)"
|
27
|
+
|
28
|
+
option :gateway,
|
29
|
+
:long => "--gateway GATEWAY",
|
30
|
+
:description => "Set a gateway"
|
31
|
+
|
32
|
+
option :netmask,
|
33
|
+
:long => "--netmask NETMASK",
|
34
|
+
:description => "Set a netmask"
|
35
|
+
|
36
|
+
option :dns1,
|
37
|
+
:long => "--dns1 DNS",
|
38
|
+
:description => "Set a DNS"
|
39
|
+
|
40
|
+
option :dns2,
|
41
|
+
:long => "--dns2 DNS",
|
42
|
+
:description => "Set a DNS"
|
43
|
+
|
44
|
+
option :dns_suffix,
|
45
|
+
:long => "--dns-suffix DNS_SUFFIX",
|
46
|
+
:description => "Set a DNS Suffix"
|
47
|
+
|
48
|
+
option :start_address,
|
49
|
+
:long => "--start-address ADDRESS",
|
50
|
+
:description => "Set a start address"
|
51
|
+
|
52
|
+
option :end_address,
|
53
|
+
:long => "--end-address ADDRESS",
|
54
|
+
:description => "Set a end address"
|
55
|
+
|
56
|
+
option :is_inherited,
|
57
|
+
:long => "--[no-]inherited",
|
58
|
+
:description => "Toggle IsInherited (default false)",
|
59
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:is_inherited] = key },
|
60
|
+
:boolean => true,
|
61
|
+
:default => false
|
62
|
+
|
63
|
+
option :retain_network,
|
64
|
+
:long => "--[no-]retain-network",
|
65
|
+
:description => "Toggle Retain Network across deployments (default true)",
|
66
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:retain_network] = key },
|
67
|
+
:boolean => true,
|
68
|
+
:default => true
|
69
|
+
|
70
|
+
option :parent_network,
|
71
|
+
:short => "-p PARENT_NETWORK",
|
72
|
+
:long => "--parent-network PARENT_NETWORK",
|
73
|
+
:description => "Set a parent network for this internal network",
|
74
|
+
:proc => Proc.new { |key| Chef::Config[:knife][:parent_network] = key }
|
75
|
+
|
76
|
+
def run
|
77
|
+
$stdout.sync = true
|
78
|
+
|
79
|
+
command_arg = @name_args.shift
|
80
|
+
vapp_arg = @name_args.shift
|
81
|
+
network_arg = @name_args.shift
|
82
|
+
|
83
|
+
unless command_arg =~ /add|delete|edit/
|
84
|
+
raise ArgumentError, "Invalid command #{command_arg} supplied. Only add, delete and edit are allowed."
|
85
|
+
end
|
86
|
+
|
87
|
+
command = command_arg.to_sym
|
88
|
+
|
89
|
+
config = { :fence_mode => 'isolated' }
|
90
|
+
|
91
|
+
connection.login
|
92
|
+
|
93
|
+
vapp = get_vapp(vapp_arg)
|
94
|
+
|
95
|
+
network = vapp[:networks].select{|n| n[:name] == network_arg }.first
|
96
|
+
|
97
|
+
unless network
|
98
|
+
if command != :add
|
99
|
+
raise ArgumentError, "Network #{network_arg} not found in vApp, " \
|
100
|
+
"please use `--add` if you want to add new network."
|
101
|
+
else
|
102
|
+
network = {:name => network_arg}
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
unless command == :delete
|
107
|
+
fields = [:gateway, :netmask, :dns1, :dns2, :dns_suffix,
|
108
|
+
:start_address, :end_address, :is_inherited, :retain_network]
|
109
|
+
|
110
|
+
fields.each do |field|
|
111
|
+
config[field] = locate_config_value(field)
|
112
|
+
|
113
|
+
if command == :add && config[field].nil?
|
114
|
+
config[field] = ui.ask_question(" #{pretty_symbol(field)}: ")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
parent_network_arg = locate_config_value(:parent_network)
|
119
|
+
if parent_network_arg
|
120
|
+
ui.msg "Retrieving parent network details"
|
121
|
+
parent_network = get_network parent_network_arg
|
122
|
+
config[:parent_network] = { :id => parent_network[:id],
|
123
|
+
:name => parent_network[:name] }
|
124
|
+
end
|
125
|
+
|
126
|
+
if parent_network && config[:fence_mode] != 'natRouted'
|
127
|
+
ui.info "Setting a parent network for an internal network requires fence mode natRouted. Fixing it..."
|
128
|
+
config[:fence_mode] = 'natRouted'
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
case command
|
133
|
+
when :add
|
134
|
+
ui.msg "Adding #{network[:name]} to vApp..."
|
135
|
+
task_id, response = connection.add_internal_network_to_vapp vapp[:id], network, config
|
136
|
+
wait_task(connection, task_id)
|
137
|
+
when :delete
|
138
|
+
ui.msg "Removing #{network[:name]} from vApp..."
|
139
|
+
task_id, response = connection.delete_vapp_network vapp[:id], network
|
140
|
+
wait_task(connection, task_id)
|
141
|
+
when :edit
|
142
|
+
ui.msg "vApp network configuration for #{network[:name]}..."
|
143
|
+
task_id, response = connection.set_vapp_network_config vapp[:id], network, config
|
144
|
+
wait_task(connection, task_id)
|
145
|
+
end
|
146
|
+
|
147
|
+
connection.logout
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Stefano Tortarolo (<stefano.tortarolo@gmail.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
class Chef
|
20
|
+
class Knife
|
21
|
+
class VcVappReboot < Chef::Knife
|
22
|
+
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
24
|
+
|
25
|
+
banner "knife vc vapp reboot [VAPP] (options)"
|
26
|
+
|
27
|
+
|
28
|
+
def run
|
29
|
+
$stdout.sync = true
|
30
|
+
|
31
|
+
vapp_arg = @name_args.shift
|
32
|
+
|
33
|
+
connection.login
|
34
|
+
vapp = get_vapp(vapp_arg)
|
35
|
+
|
36
|
+
task_id = connection.reboot_vapp vapp[:id]
|
37
|
+
|
38
|
+
ui.msg "vApp reboot..."
|
39
|
+
wait_task(connection, task_id)
|
40
|
+
|
41
|
+
connection.logout
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|