knife-cloudstack-fog 0.2.3 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/chef/knife/{cloudstack_instance_create.rb → cloudstack_server_create.rb} +0 -0
- data/lib/chef/knife/{cloudstack_instance_delete.rb → cloudstack_server_delete.rb} +0 -0
- data/lib/chef/knife/cloudstack_server_list.rb +115 -0
- data/lib/chef/knife/cloudstack_template_list.rb +25 -25
- data/lib/knife-cloudstack/version.rb +1 -1
- metadata +15 -16
- data/.gitignore +0 -19
- data/CHANGES.rdoc +0 -66
- data/Gemfile +0 -4
- data/Rakefile +0 -2
- data/erb/centos5-gems.erb +0 -41
- data/knife-cloudstack-fog.gemspec +0 -23
- data/lib/chef/knife/cloudstack_instance_list.rb +0 -91
File without changes
|
File without changes
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# Author:: Chirag Jog (<chirag@clogeny.com>)
|
2
|
+
# Copyright:: Copyright (c) 2011 Clogeny Technologies.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Author:: Jeff Moody (<jmoody@datapipe.com>)
|
6
|
+
# Copyright:: Copyright (c) 2012 Datapipe
|
7
|
+
# License:: Apache License, Version 2.0
|
8
|
+
#
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
10
|
+
# you may not use this file except in compliance with the License.
|
11
|
+
# You may obtain a copy of the License at
|
12
|
+
#
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
14
|
+
#
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
18
|
+
# See the License for the specific language governing permissions and
|
19
|
+
# limitations under the License.
|
20
|
+
#
|
21
|
+
|
22
|
+
require 'chef/knife/cloudstack_base'
|
23
|
+
|
24
|
+
class Chef
|
25
|
+
class Knife
|
26
|
+
class CloudstackServerList < Knife
|
27
|
+
|
28
|
+
include Knife::CloudstackBase
|
29
|
+
|
30
|
+
banner "knife cloudstack server list (options)"
|
31
|
+
option :zoneid,
|
32
|
+
:short => "-z ZONEID",
|
33
|
+
:long => "--zoneid ZONEID",
|
34
|
+
:description => "Limit responses to servers only running in a specific zone (specified by ID #). Default provides servers from all zones.",
|
35
|
+
:default => "all"
|
36
|
+
option :state,
|
37
|
+
:short => "-s STATE",
|
38
|
+
:long => "--state STATE",
|
39
|
+
:description => "Limit responses to servers only of a given state. Possible values are 'running,' 'stopped,' 'starting,' 'pending,' 'shutting-down,' 'terminated,' and 'stopping.' Default provides servers in all states.",
|
40
|
+
:default => "all"
|
41
|
+
|
42
|
+
def print_servers(server_list,servers,options={})
|
43
|
+
server = servers
|
44
|
+
if zoneid = options[:zoneid]
|
45
|
+
server.reject!{|t| t['zoneid'] != zoneid.to_i}
|
46
|
+
end
|
47
|
+
if state = options[:state]
|
48
|
+
state.downcase!
|
49
|
+
server.reject!{|t| t['state'].downcase != state}
|
50
|
+
end
|
51
|
+
|
52
|
+
server.each do |instance|
|
53
|
+
server_list << instance['name'].to_s
|
54
|
+
server_list << instance['displayname'].to_s
|
55
|
+
ip_list = []
|
56
|
+
instance['nic'].each do |nic|
|
57
|
+
ip_list << nic['ipaddress'].to_s
|
58
|
+
end
|
59
|
+
server_list << ip_list.join(", ")
|
60
|
+
sg_list = []
|
61
|
+
instance['securitygroup'].each do |group|
|
62
|
+
sg_list << group['name'].to_s
|
63
|
+
end
|
64
|
+
server_list << sg_list.join(", ")
|
65
|
+
|
66
|
+
server_list << instance['zonename'].to_s
|
67
|
+
server_list << instance['serviceofferingname'].to_s
|
68
|
+
server_list << instance['templatedisplaytext'].to_s
|
69
|
+
|
70
|
+
server_list << begin
|
71
|
+
state = instance['state'].to_s.downcase
|
72
|
+
case state
|
73
|
+
when 'shutting-down','terminated','stopping','stopped'
|
74
|
+
ui.color(state, :red)
|
75
|
+
when 'pending', 'starting'
|
76
|
+
ui.color(state, :yellow)
|
77
|
+
else
|
78
|
+
ui.color(state, :green)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
def run
|
86
|
+
$stdout.sync = true
|
87
|
+
|
88
|
+
validate!
|
89
|
+
|
90
|
+
server_list = [
|
91
|
+
ui.color('Server ID', :bold),
|
92
|
+
ui.color('Display Name', :bold),
|
93
|
+
ui.color('IP Address', :bold),
|
94
|
+
ui.color('Security Group', :bold),
|
95
|
+
ui.color('Server Zone', :bold),
|
96
|
+
ui.color('Service Offering', :bold),
|
97
|
+
ui.color('Template', :bold),
|
98
|
+
ui.color('State', :bold)
|
99
|
+
]
|
100
|
+
|
101
|
+
zoneid = locate_config_value(:zoneid)
|
102
|
+
state = locate_config_value(:state)
|
103
|
+
|
104
|
+
response = connection.list_virtual_machines['listvirtualmachinesresponse']
|
105
|
+
if virtual_machines = response['virtualmachine']
|
106
|
+
filters = {}
|
107
|
+
filters[:zoneid] = zoneid unless zoneid == 'all'
|
108
|
+
filters[:state] = state unless state == 'all'
|
109
|
+
print_servers(server_list, virtual_machines, filters)
|
110
|
+
puts ui.list(server_list, :columns_across, 8)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -28,31 +28,31 @@ class Chef
|
|
28
28
|
include Knife::CloudstackBase
|
29
29
|
|
30
30
|
banner "knife cloudstack template list (options)"
|
31
|
-
option
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
option
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
option
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
option
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
31
|
+
option :filter,
|
32
|
+
:short => "-L FILTER",
|
33
|
+
:long => "--filter FILTER",
|
34
|
+
:description => "The template search filter. Default is 'featured.' Other options are 'self,' 'self-executable,' 'executable,' and 'community.'",
|
35
|
+
:default => "featured"
|
36
|
+
option :zone,
|
37
|
+
:short => "-Z ZONE",
|
38
|
+
:long => "--zone ZONE",
|
39
|
+
:description => "Limit responses to templates only located in a specific zone. Default provides templates from all zones.",
|
40
|
+
:default => "all"
|
41
|
+
option :hypervisor,
|
42
|
+
:short => "-H HYPERVISOR",
|
43
|
+
:long => "--hypervisor HYPERVISOR",
|
44
|
+
:description => "Limit responses to templates only running on a specific hypervisor. Default provides templates from all hypervisors.",
|
45
|
+
:default => "all"
|
46
|
+
option :zoneid,
|
47
|
+
:short => "-z ZONEID",
|
48
|
+
:long => "--zoneid ZONEID",
|
49
|
+
:description => "Limit responses to templates only running in a specific zone (specified by ID #). Default provides templates from all zones.",
|
50
|
+
:default => "all"
|
51
|
+
option :templateid,
|
52
|
+
:short => "-T TEMPLATEID",
|
53
|
+
:long => "--templateid TEMPLATEID",
|
54
|
+
:description => "Limit responses to a single template ID. Default provides all templates.",
|
55
|
+
:default => "all"
|
56
56
|
|
57
57
|
|
58
58
|
def print_templates(template_list,templates,options={})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-cloudstack-fog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-04-
|
13
|
+
date: 2012-04-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: fog
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,7 +22,12 @@ dependencies:
|
|
22
22
|
version: 1.3.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 1.3.1
|
26
31
|
description: Support for the Chef Knife command, leveraging FOG, for the Citrix CloudStack
|
27
32
|
API
|
28
33
|
email:
|
@@ -34,27 +39,21 @@ extra_rdoc_files:
|
|
34
39
|
- README.rdoc
|
35
40
|
- LICENSE
|
36
41
|
files:
|
37
|
-
- .gitignore
|
38
|
-
- CHANGES.rdoc
|
39
|
-
- Gemfile
|
40
|
-
- LICENSE
|
41
|
-
- README.rdoc
|
42
|
-
- Rakefile
|
43
|
-
- erb/centos5-gems.erb
|
44
|
-
- knife-cloudstack-fog.gemspec
|
45
42
|
- lib/chef/knife/cloudstack_base.rb
|
46
43
|
- lib/chef/knife/cloudstack_diskoffering_list.rb
|
47
|
-
- lib/chef/knife/cloudstack_instance_create.rb
|
48
|
-
- lib/chef/knife/cloudstack_instance_delete.rb
|
49
|
-
- lib/chef/knife/cloudstack_instance_list.rb
|
50
44
|
- lib/chef/knife/cloudstack_keypair_list.rb
|
51
45
|
- lib/chef/knife/cloudstack_networks_list.rb
|
52
46
|
- lib/chef/knife/cloudstack_securitygroup_list.rb
|
47
|
+
- lib/chef/knife/cloudstack_server_create.rb
|
48
|
+
- lib/chef/knife/cloudstack_server_delete.rb
|
49
|
+
- lib/chef/knife/cloudstack_server_list.rb
|
53
50
|
- lib/chef/knife/cloudstack_serviceoffering_list.rb
|
54
51
|
- lib/chef/knife/cloudstack_template_list.rb
|
55
52
|
- lib/chef/knife/cloudstack_volumes_list.rb
|
56
53
|
- lib/chef/knife/cloudstack_zone_list.rb
|
57
54
|
- lib/knife-cloudstack/version.rb
|
55
|
+
- README.rdoc
|
56
|
+
- LICENSE
|
58
57
|
homepage: https://github.com/fifthecho/knife-cloudstack-fog
|
59
58
|
licenses: []
|
60
59
|
post_install_message:
|
@@ -75,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
74
|
version: '0'
|
76
75
|
requirements: []
|
77
76
|
rubyforge_project:
|
78
|
-
rubygems_version: 1.8.
|
77
|
+
rubygems_version: 1.8.23
|
79
78
|
signing_key:
|
80
79
|
specification_version: 3
|
81
80
|
summary: Cloudstack Compute Support for Chef's Knife Command
|
data/.gitignore
DELETED
data/CHANGES.rdoc
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
= Changes
|
2
|
-
|
3
|
-
== 2012-15-03 (0.2.0)
|
4
|
-
* Brought in sync with Chirajog's knife-cloudstack plugin. Rewritten to leverage FOG CloudStack support (available in GIT
|
5
|
-
gem), HTTP/HTTPS, and Security Groups.
|
6
|
-
|
7
|
-
== 2011-11-03 (0.0.11)
|
8
|
-
* Added LICENSE file and licensing headers to source. No feature changes.
|
9
|
-
|
10
|
-
== 2011-10-13 (0.0.10)
|
11
|
-
* Support for multi-homed VMs: The --networks option for the <tt>server create</tt> command takes a comma-separated list
|
12
|
-
of network offering names. The created VM will have one nic per network, with nics assigned to networks in the order
|
13
|
-
specified (e.g. the first network in the list will be assigned to eth0, the second to eth1 and so on). The --networks
|
14
|
-
option replaces the --network option, which supported a single network name.
|
15
|
-
* The <tt>server list</tt> command now shows the VM 'displayname' in parentheses when the displayname is defined and is
|
16
|
-
different than the VM name.
|
17
|
-
* Public IP logic has been updated to support multi-homed VMs. It now uses the first nic attached to a network with the
|
18
|
-
'default' value set to true as the primary interface.
|
19
|
-
|
20
|
-
== 2011-08-30 (0.0.9)
|
21
|
-
* Added subcommands: <tt>server start</tt>, <tt>server stop</tt> and <tt>server reboot</tt>.
|
22
|
-
* Updated the <tt>hosts</tt> command to return short hostnames and FQDNs. Also added comments where needed so the output
|
23
|
-
can be directly pasted into /etc/hosts.
|
24
|
-
|
25
|
-
== 2011-08-06 (0.0.8)
|
26
|
-
* Changed cloudstack async command timeout from 60 to 300 seconds.
|
27
|
-
|
28
|
-
== 2011-07-21 (0.0.7)
|
29
|
-
* Fixed http_request actions in <tt>stack create</tt>.
|
30
|
-
|
31
|
-
== 2011-07-15 (0.0.6)
|
32
|
-
* The <tt>server delete</tt> command now deletes the chef node and client if their names match the fqdn of the server.
|
33
|
-
* Added the <tt>stack create</tt> and <tt>stack delete</tt> commands for bulk creation and deletion of servers using a
|
34
|
-
JSON definition file. These commands are still experimental and subject to change. See README.rdoc for details.
|
35
|
-
* Added a <tt>hosts</tt> command, which lists the public ip address and fqdn of all servers in /etc/hosts file format.
|
36
|
-
* Fixed nil reference bug in <tt>server list</tt> command.
|
37
|
-
|
38
|
-
== 2011-06-05 (0.0.5)
|
39
|
-
* Added <tt>--port-rules</tt> option to the <tt>cs server create</tt> command. It accepts a list of port forwarding
|
40
|
-
rules to be created for the server (only applies to servers on a virtual network). See 'Port forwarding rules for
|
41
|
-
virtual networks' in README.rdoc for details.
|
42
|
-
|
43
|
-
== 2011-06-01 (0.0.4)
|
44
|
-
* Fixed ssh detection bug.
|
45
|
-
|
46
|
-
== 2011-05-30 (0.0.3)
|
47
|
-
|
48
|
-
* Added support for virtual networks. A public IP address is allocated for each new server in a virtual network
|
49
|
-
and an ssh port forwarding rule is created. The IP is released when the server is destroyed as long as it doesn't
|
50
|
-
have forwarding rules for any servers other than the one being deleted.
|
51
|
-
* Default network is now detected automatically. If there is more than one network marked as 'default' for an
|
52
|
-
account, the first Direct network is preferred.
|
53
|
-
|
54
|
-
== 2011-05-22 (0.0.2)
|
55
|
-
|
56
|
-
* Added subcommands: <tt>service list</tt>, <tt>template list</tt>, <tt>network list</tt> and <tt>zone list</tt>.
|
57
|
-
* Removed -H (and --hostname) option from the <tt>cs server create</tt> command. The host name is now the first
|
58
|
-
argument to the command: <tt>knife cs server create myhostname</tt>. If a host name is not specified, CloudStack
|
59
|
-
will use an auto-generated name.
|
60
|
-
* Added --no-bootstrap option to the server create command. This prevents Chef from being installed on the new server.
|
61
|
-
* Fixed help banners (commands were shown as <tt>knife cloudstack ...</tt> instead of <tt>knife cs ...</tt>).
|
62
|
-
* Added README.rdoc.
|
63
|
-
|
64
|
-
== 2011-05-15 (0.0.1)
|
65
|
-
|
66
|
-
* Initial release
|
data/Gemfile
DELETED
data/Rakefile
DELETED
data/erb/centos5-gems.erb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
bash -c '
|
2
|
-
<%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
|
3
|
-
|
4
|
-
if [ ! -f /usr/bin/chef-client ]; then
|
5
|
-
wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
|
6
|
-
rpm -Uvh epel-release-5-4.noarch.rpm
|
7
|
-
wget <%= "--proxy=on " if knife_config[:bootstrap_proxy] %>-O /etc/yum.repos.d/aegis.repo http://rpm.aegisco.com/aegisco/el5/aegisco.repo
|
8
|
-
yum install gcc gcc-c++ automake autoconf make ruby.x86_64 ruby-devel.x86_64 ruby-libs.x86_64 ruby-ri.x8_64 ruby-rdoc.x86_64 -y
|
9
|
-
yum remove ruby-libs.i386 -y
|
10
|
-
wget http://production.cf.rubygems.org/rubygems/rubygems-1.7.2.tgz
|
11
|
-
tar zxf rubygems-1.7.2.tgz
|
12
|
-
cd rubygems-1.7.2
|
13
|
-
ruby setup.rb --no-format-executable
|
14
|
-
gem install chef -V --no-rdoc --no-ri
|
15
|
-
|
16
|
-
fi
|
17
|
-
|
18
|
-
|
19
|
-
mkdir -p /etc/chef
|
20
|
-
|
21
|
-
(
|
22
|
-
cat <<'EOP'
|
23
|
-
<%= validation_key %>
|
24
|
-
EOP
|
25
|
-
) > /tmp/validation.pem
|
26
|
-
awk NF /tmp/validation.pem > /etc/chef/validation.pem
|
27
|
-
rm /tmp/validation.pem
|
28
|
-
|
29
|
-
(
|
30
|
-
cat <<'EOP'
|
31
|
-
<%= config_content %>
|
32
|
-
EOP
|
33
|
-
) > /etc/chef/client.rb
|
34
|
-
|
35
|
-
(
|
36
|
-
cat <<'EOP'
|
37
|
-
<%= { "run_list" => @run_list }.to_json %>
|
38
|
-
EOP
|
39
|
-
) > /etc/chef/first-boot.json
|
40
|
-
|
41
|
-
<%= start_chef %>'
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "knife-cloudstack/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "knife-cloudstack-fog"
|
7
|
-
s.version = Knife::Cloudstack::VERSION
|
8
|
-
s.platform = Gem::Platform::RUBY
|
9
|
-
s.has_rdoc = true
|
10
|
-
s.extra_rdoc_files = ["README.rdoc", "LICENSE" ]
|
11
|
-
s.authors = ["Chirag Jog", "Jeff Moody"]
|
12
|
-
s.email = ["chirag@clogeny.com", "jmoody@datapipe.com"]
|
13
|
-
s.homepage = "https://github.com/fifthecho/knife-cloudstack-fog"
|
14
|
-
s.summary = %q{Cloudstack Compute Support for Chef's Knife Command}
|
15
|
-
s.description = %q{Support for the Chef Knife command, leveraging FOG, for the Citrix CloudStack API}
|
16
|
-
|
17
|
-
s.files = `git ls-files`.split("\n")
|
18
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
-
s.require_paths = ["lib"]
|
21
|
-
|
22
|
-
s.add_dependency "fog", "~> 1.3.1"
|
23
|
-
end
|
@@ -1,91 +0,0 @@
|
|
1
|
-
# Author:: Chirag Jog (<chirag@clogeny.com>)
|
2
|
-
# Copyright:: Copyright (c) 2011 Clogeny Technologies.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Author:: Jeff Moody (<jmoody@datapipe.com>)
|
6
|
-
# Copyright:: Copyright (c) 2012 Datapipe
|
7
|
-
# License:: Apache License, Version 2.0
|
8
|
-
#
|
9
|
-
# Author:: Seth Chisamore (<schisamo@opscode.com>)
|
10
|
-
# Copyright:: Copyright (c) 2011 Opscode, Inc.
|
11
|
-
# License:: Apache License, Version 2.0
|
12
|
-
#
|
13
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
14
|
-
# you may not use this file except in compliance with the License.
|
15
|
-
# You may obtain a copy of the License at
|
16
|
-
#
|
17
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
18
|
-
#
|
19
|
-
# Unless required by applicable law or agreed to in writing, software
|
20
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
21
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
22
|
-
# See the License for the specific language governing permissions and
|
23
|
-
# limitations under the License.
|
24
|
-
#
|
25
|
-
|
26
|
-
require 'chef/knife/cloudstack_base'
|
27
|
-
|
28
|
-
class Chef
|
29
|
-
class Knife
|
30
|
-
class CloudstackServerList < Knife
|
31
|
-
|
32
|
-
include Knife::CloudstackBase
|
33
|
-
|
34
|
-
banner "knife cloudstack server list (options)"
|
35
|
-
|
36
|
-
def run
|
37
|
-
$stdout.sync = true
|
38
|
-
|
39
|
-
validate!
|
40
|
-
|
41
|
-
instance_list = [
|
42
|
-
ui.color('Instance ID', :bold),
|
43
|
-
ui.color('Display Name', :bold),
|
44
|
-
ui.color('IP Address', :bold),
|
45
|
-
ui.color('Security Group', :bold),
|
46
|
-
ui.color('Instance Zone', :bold),
|
47
|
-
ui.color('Service Offering', :bold),
|
48
|
-
ui.color('Template', :bold),
|
49
|
-
ui.color('State', :bold)
|
50
|
-
]
|
51
|
-
|
52
|
-
response = connection.list_virtual_machines['listvirtualmachinesresponse']
|
53
|
-
if virtual_machines = response['virtualmachine']
|
54
|
-
virtual_machines.each do |instance|
|
55
|
-
instance_list << instance['name'].to_s
|
56
|
-
instance_list << instance['displayname'].to_s
|
57
|
-
ip_list = []
|
58
|
-
instance['nic'].each do |nic|
|
59
|
-
ip_list << nic['ipaddress'].to_s
|
60
|
-
end
|
61
|
-
instance_list << ip_list.join(", ")
|
62
|
-
sg_list = []
|
63
|
-
instance['securitygroup'].each do |group|
|
64
|
-
sg_list << group['name'].to_s
|
65
|
-
end
|
66
|
-
instance_list << sg_list.join(", ")
|
67
|
-
|
68
|
-
instance_list << instance['zonename'].to_s
|
69
|
-
instance_list << instance['serviceofferingname'].to_s
|
70
|
-
instance_list << instance['templatedisplaytext'].to_s
|
71
|
-
|
72
|
-
instance_list << begin
|
73
|
-
state = instance['state'].to_s.downcase
|
74
|
-
case state
|
75
|
-
when 'shutting-down','terminated','stopping','stopped'
|
76
|
-
ui.color(state, :red)
|
77
|
-
when 'pending', 'starting'
|
78
|
-
ui.color(state, :yellow)
|
79
|
-
else
|
80
|
-
ui.color(state, :green)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
end
|
85
|
-
|
86
|
-
puts ui.list(instance_list, :columns_across, 8)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|