knife-cloudstack-fog 0.2.2

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,61 @@
1
+ # Author:: Jeff Moody (<jmoody@datapipe.com>)
2
+ # Copyright:: Copyright (c) 2012 Datapipe
3
+ # License:: Apache License, Version 2.0
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
+ #
17
+
18
+
19
+ require 'chef/knife/cloudstack_base'
20
+
21
+ class Chef
22
+ class Knife
23
+ class CloudstackServiceofferingList < Knife
24
+
25
+ include Knife::CloudstackBase
26
+
27
+ banner "knife cloudstack serviceoffering list (options)"
28
+
29
+ def run
30
+ $stdout.sync = true
31
+
32
+ validate!
33
+
34
+ serviceoffering_list = [
35
+ ui.color('ID', :bold),
36
+ ui.color('Name', :bold),
37
+ ui.color('Description', :bold),
38
+ ui.color('Number of CPUs', :bold),
39
+ ui.color('CPU Speed', :bold),
40
+ ui.color('Memory (in MB)', :bold),
41
+ ui.color('Network Speed', :bold)
42
+ ]
43
+ response = connection.list_service_offerings['listserviceofferingsresponse']
44
+ if serviceofferings = response['serviceoffering']
45
+ serviceofferings.each do |serviceoffering|
46
+ serviceoffering_list << serviceoffering['id'].to_s
47
+ serviceoffering_list << serviceoffering['name'].to_s
48
+ serviceoffering_list << serviceoffering['displaytext'].to_s
49
+ serviceoffering_list << serviceoffering['cpunumber'].to_s
50
+ serviceoffering_list << serviceoffering['cpuspeed'].to_s
51
+ serviceoffering_list << serviceoffering['memory'].to_s
52
+ serviceoffering_list << serviceoffering['networkrate'].to_s
53
+ end
54
+ end
55
+ puts ui.list(serviceoffering_list, :columns_across, 7)
56
+
57
+ end
58
+
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,121 @@
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 CloudstackTemplateList < Knife
27
+
28
+ include Knife::CloudstackBase
29
+
30
+ banner "knife cloudstack template list (options)"
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
+
57
+
58
+ def print_templates(template_list,templates,options={})
59
+ temp = templates
60
+
61
+ if templateid = options[:templateid]
62
+ temp.reject!{|t| t['id'] != templateid.to_i}
63
+ end
64
+ if zoneid = options[:zoneid]
65
+ temp.reject!{|t| t['zoneid'] != zoneid.to_i}
66
+ end
67
+ if zone = options[:zone]
68
+ temp.reject!{|t| t['zonename'] != zone}
69
+ end
70
+ if hypervisor = options[:hypervisor]
71
+ temp.reject!{|t| t['hypervisor'] != hypervisor}
72
+ end
73
+
74
+ temp.each do |template|
75
+ template_list << template['id'].to_s
76
+ template_list << template['hypervisor']
77
+
78
+ template_size = template['size']
79
+ template_size = (template_size/1024/1024/1024)
80
+ template_list << template_size.to_s
81
+
82
+ template_list << template['zonename']
83
+ template_list << template['name']
84
+ end
85
+ end
86
+
87
+ def run
88
+ validate!
89
+
90
+ template_list = [
91
+ ui.color('ID', :bold),
92
+ ui.color('Hypervisor', :bold),
93
+ ui.color('Size (in GB)', :bold),
94
+ ui.color('Zone Location', :bold),
95
+ ui.color('Name', :bold)
96
+ ]
97
+
98
+ filter = locate_config_value(:filter)
99
+ zone = locate_config_value(:zone)
100
+ zoneid = locate_config_value(:zoneid)
101
+ hypervisor = locate_config_value(:hypervisor)
102
+ templateid = locate_config_value(:templateid)
103
+
104
+ settings = connection.list_templates('templatefilter' => filter)
105
+ if response = settings['listtemplatesresponse']
106
+ if templates = response['template']
107
+ filters = {}
108
+ filters[:hypervisor] = hypervisor unless hypervisor == 'all'
109
+ filters[:zone] = zone unless zone == 'all'
110
+ filters[:zoneid] = zoneid unless zoneid == 'all'
111
+ filters[:templateid] = templateid unless templateid == 'all'
112
+
113
+ print_templates(template_list,templates,filters)
114
+ end
115
+ puts ui.list(template_list, :columns_across, 5)
116
+ end
117
+
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,78 @@
1
+ # Author:: Jeff Moody (<jmoody@datapipe.com>)
2
+ # Copyright:: Copyright (c) 2012 Datapipe
3
+ # License:: Apache License, Version 2.0
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
+ #
17
+
18
+
19
+ require 'chef/knife/cloudstack_base'
20
+
21
+ class Chef
22
+ class Knife
23
+ class CloudstackVolumeList < Knife
24
+
25
+ include Knife::CloudstackBase
26
+
27
+ banner "knife cloudstack volume list (options)"
28
+
29
+ def run
30
+ $stdout.sync = true
31
+
32
+ validate!
33
+
34
+ volume_list = [
35
+ ui.color('ID', :bold),
36
+ ui.color('Name', :bold),
37
+ ui.color('Size (in GB)', :bold),
38
+ ui.color('Type', :bold),
39
+ ui.color('Virtual Machine', :bold),
40
+ ui.color('State', :bold)
41
+ ]
42
+
43
+ response = connection.list_volumes['listvolumesresponse']
44
+
45
+ if volumes = response['volume']
46
+ volumes.each do |volume|
47
+ volume_list << volume['id'].to_s
48
+ volume_list << volume['name'].to_s
49
+ volume_size = volume['size']
50
+ volume_size = (volume_size/1024/1024/1024)
51
+ volume_list << volume_size.to_s
52
+ volume_list << volume['type']
53
+ if (volume['vmdisplayname'].nil?)
54
+ volume_list << ' '
55
+ else
56
+ volume_list << volume['vmdisplayname']
57
+ end
58
+
59
+ volume_list << begin
60
+ state = volume['state'].to_s.downcase
61
+ case state
62
+ when 'allocated'
63
+ ui.color(state, :red)
64
+ when 'pending'
65
+ ui.color(state, :yellow)
66
+ else
67
+ ui.color(state, :green)
68
+ end
69
+ end
70
+ end
71
+ puts ui.list(volume_list, :columns_across, 6)
72
+ end
73
+
74
+ end
75
+
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,63 @@
1
+ # Author:: Jeff Moody (<jmoody@datapipe.com>)
2
+ # Copyright:: Copyright (c) 2012 Datapipe
3
+ # License:: Apache License, Version 2.0
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
+ #
17
+
18
+
19
+ require 'chef/knife/cloudstack_base'
20
+
21
+ class Chef
22
+ class Knife
23
+ class CloudstackZoneList < Knife
24
+
25
+ include Knife::CloudstackBase
26
+
27
+ banner "knife cloudstack zone list (options)"
28
+
29
+ def run
30
+ $stdout.sync = true
31
+
32
+ validate!
33
+
34
+ zone_list = [
35
+ ui.color('ID', :bold),
36
+ ui.color('Name', :bold),
37
+ ui.color('Network Type', :bold),
38
+ ui.color('Security Groups?', :bold)
39
+ ]
40
+ response = connection.list_zones['listzonesresponse']
41
+ if zones = response['zone']
42
+ zones.each do |zone|
43
+ zone_list << zone['id'].to_s
44
+ zone_list << zone['name'].to_s
45
+ zone_list << zone['networktype'].to_s
46
+ zone_list << begin
47
+ state = zone['securitygroupsenabled'].to_s.downcase
48
+ case state
49
+ when 'false'
50
+ ui.color('No', :red)
51
+ else
52
+ ui.color('Yes', :green)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ puts ui.list(zone_list, :columns_across, 4)
58
+
59
+ end
60
+
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,6 @@
1
+ module Knife
2
+ module Cloudstack
3
+ VERSION = "0.2.2"
4
+ MAJOR, MINOR, TINY = VERSION.split('.')
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: knife-cloudstack-fog
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chirag Jog
9
+ - Jeff Moody
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-04-11 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: fog
17
+ requirement: &70148116239160 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 1.1.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70148116239160
26
+ description: Support for the Chef Knife command, leveraging FOG, for the Citrix CloudStack
27
+ API
28
+ email:
29
+ - chirag@clogeny.com
30
+ - jmoody@datapipe.com
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files:
34
+ - README.rdoc
35
+ - LICENSE
36
+ 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
+ - lib/chef/knife/cloudstack_base.rb
46
+ - 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
+ - lib/chef/knife/cloudstack_keypair_list.rb
51
+ - lib/chef/knife/cloudstack_networks_list.rb
52
+ - lib/chef/knife/cloudstack_securitygroup_list.rb
53
+ - lib/chef/knife/cloudstack_serviceoffering_list.rb
54
+ - lib/chef/knife/cloudstack_template_list.rb
55
+ - lib/chef/knife/cloudstack_volumes_list.rb
56
+ - lib/chef/knife/cloudstack_zone_list.rb
57
+ - lib/knife-cloudstack/version.rb
58
+ homepage: https://github.com/fifthecho/knife-cloudstack-fog
59
+ licenses: []
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 1.8.10
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: Cloudstack Compute Support for Chef's Knife Command
82
+ test_files: []