knife-vcloud 0.2.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,44 @@
|
|
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 VcVappReset < Chef::Knife
|
22
|
+
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
24
|
+
|
25
|
+
banner "knife vc vapp reset [VAPP] (options)"
|
26
|
+
|
27
|
+
def run
|
28
|
+
$stdout.sync = true
|
29
|
+
|
30
|
+
vapp_arg = @name_args.shift
|
31
|
+
|
32
|
+
connection.login
|
33
|
+
vapp = get_vapp(vapp_arg)
|
34
|
+
|
35
|
+
task_id = connection.reset_vapp vapp[:id]
|
36
|
+
|
37
|
+
ui.msg "vApp reset..."
|
38
|
+
wait_task(connection, task_id)
|
39
|
+
|
40
|
+
connection.logout
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,90 @@
|
|
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 VcVappShow < Chef::Knife
|
22
|
+
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
24
|
+
|
25
|
+
banner "knife vc vapp show VAPP (options)"
|
26
|
+
|
27
|
+
def run
|
28
|
+
$stdout.sync = true
|
29
|
+
|
30
|
+
vapp_arg = @name_args.shift
|
31
|
+
|
32
|
+
connection.login
|
33
|
+
vapp = get_vapp(vapp_arg)
|
34
|
+
connection.logout
|
35
|
+
|
36
|
+
out_msg("Name", vapp[:name])
|
37
|
+
out_msg("Description", vapp[:description])
|
38
|
+
out_msg("Status", vapp[:status])
|
39
|
+
out_msg("IP", vapp[:ip])
|
40
|
+
|
41
|
+
ui.msg("#{ui.color('Networks', :cyan)}")
|
42
|
+
|
43
|
+
vapp[:networks].each do |network|
|
44
|
+
ui.msg ui.color(network[:name], :bold)
|
45
|
+
|
46
|
+
list = [
|
47
|
+
ui.color(' ', :bold),
|
48
|
+
ui.color('Gateway', :bold),
|
49
|
+
ui.color('Netmask', :bold),
|
50
|
+
ui.color('Fence Mode', :bold),
|
51
|
+
ui.color('Parent Network', :bold),
|
52
|
+
ui.color('Retain Network', :bold)
|
53
|
+
]
|
54
|
+
|
55
|
+
list << " "
|
56
|
+
list << (network[:scope][:gateway] || '')
|
57
|
+
list << (network[:scope][:netmask] || '')
|
58
|
+
list << (network[:scope][:fence_mode] || '')
|
59
|
+
list << (network[:scope][:parent_network] || '')
|
60
|
+
list << (network[:scope][:retain_network] || '')
|
61
|
+
|
62
|
+
ui.msg ui.list(list, :uneven_columns_across, 6)
|
63
|
+
end
|
64
|
+
|
65
|
+
if vapp[:vapp_snapshot]
|
66
|
+
out_msg("Snapshot", vapp[:vapp_snapshot][:creation_date])
|
67
|
+
end
|
68
|
+
|
69
|
+
ui.msg("#{ui.color('VMs', :cyan)}")
|
70
|
+
|
71
|
+
list = [
|
72
|
+
ui.color('Name', :bold),
|
73
|
+
ui.color('Status', :bold),
|
74
|
+
ui.color('IPs', :bold),
|
75
|
+
ui.color('ID', :bold),
|
76
|
+
ui.color('Scoped ID', :bold)
|
77
|
+
]
|
78
|
+
|
79
|
+
vapp[:vms_hash].each do |k, v|
|
80
|
+
list << (k || '')
|
81
|
+
list << (v[:status] || '')
|
82
|
+
list << (v[:addresses].join(', ') || '<no ip>')
|
83
|
+
list << (v[:id] || '')
|
84
|
+
list << (v[:vapp_scoped_local_id] || '')
|
85
|
+
end
|
86
|
+
ui.msg ui.list(list, :uneven_columns_across, 5)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,58 @@
|
|
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 VcVappSnapshot < Chef::Knife
|
22
|
+
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
24
|
+
|
25
|
+
banner "knife vc vapp snapshot [create|revert] [VAPP] (options)"
|
26
|
+
|
27
|
+
def run
|
28
|
+
$stdout.sync = true
|
29
|
+
|
30
|
+
command_arg = @name_args.shift
|
31
|
+
vapp_arg = @name_args.shift
|
32
|
+
|
33
|
+
unless command_arg =~ /create|revert/
|
34
|
+
raise ArgumentError, "Invalid command #{command_arg} supplied. Only create and revert are allowed."
|
35
|
+
end
|
36
|
+
|
37
|
+
command = command_arg.to_sym
|
38
|
+
|
39
|
+
connection.login
|
40
|
+
|
41
|
+
vapp = get_vapp(vapp_arg)
|
42
|
+
|
43
|
+
case command
|
44
|
+
when :create
|
45
|
+
task_id = connection.create_snapshot vapp[:id]
|
46
|
+
ui.msg "vApp snapshot creation..."
|
47
|
+
wait_task(connection, task_id)
|
48
|
+
when :revert
|
49
|
+
task_id = connection.revert_snapshot vapp[:id]
|
50
|
+
ui.msg "vApp snapshot revert..."
|
51
|
+
wait_task(connection, task_id)
|
52
|
+
end
|
53
|
+
|
54
|
+
connection.logout
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
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,25 +16,25 @@
|
|
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 VcVappStart < Chef::Knife
|
24
22
|
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
25
24
|
|
26
|
-
banner "knife vc vapp start [
|
25
|
+
banner "knife vc vapp start [VAPP] (options)"
|
27
26
|
|
28
27
|
def run
|
29
28
|
$stdout.sync = true
|
30
29
|
|
31
|
-
|
30
|
+
vapp_arg = @name_args.shift
|
32
31
|
|
33
32
|
connection.login
|
33
|
+
vapp = get_vapp(vapp_arg)
|
34
34
|
|
35
|
-
task_id = connection.poweron_vapp
|
35
|
+
task_id = connection.poweron_vapp vapp[:id]
|
36
36
|
|
37
|
-
|
37
|
+
ui.msg "vApp startup..."
|
38
38
|
wait_task(connection, task_id)
|
39
39
|
|
40
40
|
connection.logout
|
@@ -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,25 +16,25 @@
|
|
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 VcVappStop < Chef::Knife
|
24
22
|
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
25
24
|
|
26
|
-
banner "knife vc vapp stop [
|
25
|
+
banner "knife vc vapp stop [VAPP] (options)"
|
27
26
|
|
28
27
|
def run
|
29
28
|
$stdout.sync = true
|
30
29
|
|
31
|
-
|
30
|
+
vapp_arg = @name_args.shift
|
32
31
|
|
33
32
|
connection.login
|
33
|
+
vapp = get_vapp(vapp_arg)
|
34
34
|
|
35
|
-
task_id = connection.poweroff_vapp
|
35
|
+
task_id = connection.poweroff_vapp vapp[:id]
|
36
36
|
|
37
|
-
|
37
|
+
ui.msg "vApp shutdown..."
|
38
38
|
wait_task(connection, task_id)
|
39
39
|
|
40
40
|
connection.logout
|
@@ -0,0 +1,44 @@
|
|
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 VcVappSuspend < Chef::Knife
|
22
|
+
include Knife::VcCommon
|
23
|
+
include Knife::VcVappCommon
|
24
|
+
|
25
|
+
banner "knife vc vapp suspend [VAPP] (options)"
|
26
|
+
|
27
|
+
def run
|
28
|
+
$stdout.sync = true
|
29
|
+
|
30
|
+
vapp_arg = @name_args.shift
|
31
|
+
|
32
|
+
connection.login
|
33
|
+
vapp = get_vapp(vapp_arg)
|
34
|
+
|
35
|
+
task_id = connection.suspend_vapp vapp[:id]
|
36
|
+
|
37
|
+
ui.msg "vApp suspend..."
|
38
|
+
wait_task(connection, task_id)
|
39
|
+
|
40
|
+
connection.logout
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,70 @@
|
|
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
|
+
require 'chef/knife/common/vc_common'
|
20
|
+
|
21
|
+
# ORG
|
22
|
+
require 'chef/knife/org/vc_org_list'
|
23
|
+
require 'chef/knife/org/vc_org_show'
|
24
|
+
|
25
|
+
# VDC
|
26
|
+
require 'chef/knife/common/vc_vdc_common'
|
27
|
+
require 'chef/knife/vdc/vc_vdc_show'
|
28
|
+
|
29
|
+
# Catalog
|
30
|
+
require 'chef/knife/common/vc_catalog_common'
|
31
|
+
require 'chef/knife/catalog/vc_catalog_show'
|
32
|
+
require 'chef/knife/catalog/vc_catalog_item_show'
|
33
|
+
|
34
|
+
# Network
|
35
|
+
require 'chef/knife/common/vc_network_common'
|
36
|
+
require 'chef/knife/network/vc_network_show'
|
37
|
+
|
38
|
+
# VAPP
|
39
|
+
require 'chef/knife/common/vc_bootstrap_common'
|
40
|
+
require 'chef/knife/common/vc_vapp_common'
|
41
|
+
require 'chef/knife/vapp/vc_vapp_network_external'
|
42
|
+
require 'chef/knife/vapp/vc_vapp_network_internal'
|
43
|
+
require 'chef/knife/vapp/vc_vapp_create'
|
44
|
+
require 'chef/knife/vapp/vc_vapp_delete'
|
45
|
+
require 'chef/knife/vapp/vc_vapp_reboot'
|
46
|
+
require 'chef/knife/vapp/vc_vapp_reset'
|
47
|
+
require 'chef/knife/vapp/vc_vapp_show'
|
48
|
+
require 'chef/knife/vapp/vc_vapp_start'
|
49
|
+
require 'chef/knife/vapp/vc_vapp_stop'
|
50
|
+
require 'chef/knife/vapp/vc_vapp_suspend'
|
51
|
+
require 'chef/knife/vapp/vc_vapp_clone'
|
52
|
+
require 'chef/knife/vapp/vc_vapp_bootstrap'
|
53
|
+
require 'chef/knife/vapp/vc_vapp_snapshot'
|
54
|
+
|
55
|
+
# VM
|
56
|
+
require 'chef/knife/common/vc_vm_common'
|
57
|
+
require 'chef/knife/vm/vc_vm_config_guest'
|
58
|
+
require 'chef/knife/vm/vc_vm_config_network'
|
59
|
+
require 'chef/knife/vm/vc_vm_show'
|
60
|
+
require 'chef/knife/vm/vc_vm_set_info'
|
61
|
+
require 'chef/knife/vm/vc_vm_set_disks'
|
62
|
+
require 'chef/knife/vm/vc_vm_reboot'
|
63
|
+
require 'chef/knife/vm/vc_vm_reset'
|
64
|
+
require 'chef/knife/vm/vc_vm_start'
|
65
|
+
require 'chef/knife/vm/vc_vm_stop'
|
66
|
+
require 'chef/knife/vm/vc_vm_suspend'
|
67
|
+
require 'chef/knife/vm/vc_vm_bootstrap'
|
68
|
+
|
69
|
+
# OVF
|
70
|
+
require 'chef/knife/ovf/vc_ovf_upload'
|
data/lib/chef/knife/vc_login.rb
CHANGED
@@ -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,7 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'chef/knife/vc_common'
|
19
|
+
require 'chef/knife/common/vc_common'
|
20
20
|
|
21
21
|
class Chef
|
22
22
|
class Knife
|
@@ -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,22 +16,23 @@
|
|
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 VcVdcShow < Chef::Knife
|
24
22
|
include Knife::VcCommon
|
23
|
+
include Knife::VcVDCCommon
|
25
24
|
|
26
|
-
banner "knife vc vdc show
|
25
|
+
banner "knife vc vdc show VDC (options)"
|
27
26
|
|
28
27
|
def run
|
29
28
|
$stdout.sync = true
|
30
29
|
|
31
|
-
|
30
|
+
vdc_arg = @name_args.shift
|
32
31
|
|
33
32
|
connection.login
|
34
33
|
|
34
|
+
vdc = get_vdc(vdc_arg)
|
35
|
+
|
35
36
|
header = [
|
36
37
|
ui.color('Name', :bold),
|
37
38
|
ui.color('ID', :bold),
|
@@ -39,21 +40,19 @@ class Chef
|
|
39
40
|
ui.color('IP', :bold),
|
40
41
|
]
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
puts "#{ui.color('Description:', :cyan)} #{description}"
|
43
|
+
ui.msg "#{ui.color('Description:', :cyan)} #{vdc[:description]}"
|
45
44
|
list = ["#{ui.color('vAPPS', :cyan)}", '', '', '']
|
46
45
|
list << header
|
47
46
|
list.flatten!
|
48
|
-
vapps.each do |k, v|
|
49
|
-
|
50
|
-
list << ("#{k} (#{vms_hash.count} VMs)" || '')
|
47
|
+
sort_by_key(vdc[:vapps]).each do |k, v|
|
48
|
+
vapp = connection.get_vapp v
|
49
|
+
list << ("#{k} (#{vapp[:vms_hash].count} VMs)" || '')
|
51
50
|
list << (v || '')
|
52
|
-
list << (status || '')
|
53
|
-
list << (ip || '')
|
51
|
+
list << (vapp[:status] || '')
|
52
|
+
list << (vapp[:ip] || '')
|
54
53
|
end
|
55
54
|
|
56
|
-
|
55
|
+
ui.msg ui.list(list, :columns_across, 4)
|
57
56
|
connection.logout
|
58
57
|
end
|
59
58
|
end
|