knife-cloudstack 0.0.15 → 0.0.16
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.
- data/CHANGES.rdoc +15 -0
- data/README.rdoc +18 -0
- data/lib/chef/knife/cs_aag_list.rb +58 -0
- data/lib/chef/knife/cs_account_list.rb +32 -75
- data/lib/chef/knife/cs_base.rb +2 -5
- data/lib/chef/knife/cs_baselist.rb +37 -7
- data/lib/chef/knife/cs_cluster_list.rb +18 -51
- data/lib/chef/knife/cs_config_list.rb +14 -43
- data/lib/chef/knife/cs_disk_list.rb +16 -47
- data/lib/chef/knife/cs_domain_list.rb +15 -45
- data/lib/chef/knife/cs_firewallrule_list.rb +19 -52
- data/lib/chef/knife/cs_host_list.rb +19 -53
- data/lib/chef/knife/cs_iso_list.rb +30 -44
- data/lib/chef/knife/cs_keypair_list.rb +12 -51
- data/lib/chef/knife/cs_network_list.rb +20 -51
- data/lib/chef/knife/cs_oscategory_list.rb +12 -40
- data/lib/chef/knife/cs_ostype_list.rb +15 -43
- data/lib/chef/knife/cs_pod_list.rb +18 -51
- data/lib/chef/knife/cs_project_list.rb +16 -45
- data/lib/chef/knife/cs_publicip_list.rb +16 -49
- data/lib/chef/knife/cs_router_list.rb +16 -46
- data/lib/chef/knife/cs_securitygroup_list.rb +14 -89
- data/lib/chef/knife/cs_server_add_nic.rb +109 -0
- data/lib/chef/knife/cs_server_create.rb +25 -5
- data/lib/chef/knife/cs_server_list.rb +35 -62
- data/lib/chef/knife/cs_server_remove_nic.rb +101 -0
- data/lib/chef/knife/cs_service_list.rb +19 -59
- data/lib/chef/knife/cs_stack_create.rb +2 -0
- data/lib/chef/knife/cs_template_list.rb +26 -55
- data/lib/chef/knife/cs_template_register.rb +4 -4
- data/lib/chef/knife/cs_user_list.rb +19 -50
- data/lib/chef/knife/cs_volume_list.rb +17 -46
- data/lib/chef/knife/cs_zone_list.rb +13 -57
- data/lib/knife-cloudstack/connection.rb +60 -9
- metadata +5 -3
@@ -16,20 +16,14 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require 'chef/knife
|
19
|
+
require 'chef/knife'
|
20
20
|
require 'chef/knife/cs_baselist'
|
21
21
|
|
22
22
|
module KnifeCloudstack
|
23
23
|
class CsVolumeList < Chef::Knife
|
24
24
|
|
25
|
-
include Chef::Knife::KnifeCloudstackBase
|
26
25
|
include Chef::Knife::KnifeCloudstackBaseList
|
27
26
|
|
28
|
-
deps do
|
29
|
-
require 'knife-cloudstack/connection'
|
30
|
-
Chef::Knife.load_deps
|
31
|
-
end
|
32
|
-
|
33
27
|
banner "knife cs volume list (options)"
|
34
28
|
|
35
29
|
option :listall,
|
@@ -48,46 +42,23 @@ module KnifeCloudstack
|
|
48
42
|
def run
|
49
43
|
validate_base_options
|
50
44
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
object_list << ui.color('VMName', :bold)
|
60
|
-
object_list << ui.color('VMState', :bold)
|
61
|
-
end
|
62
|
-
|
63
|
-
columns = object_list.count
|
64
|
-
object_list = [] if locate_config_value(:noheader)
|
65
|
-
|
66
|
-
connection_result = connection.list_object(
|
67
|
-
"listVolumes",
|
68
|
-
"volume",
|
69
|
-
locate_config_value(:filter),
|
70
|
-
locate_config_value(:listall),
|
71
|
-
locate_config_value(:keyword),
|
72
|
-
locate_config_value(:name)
|
73
|
-
)
|
74
|
-
|
75
|
-
output_format(connection_result)
|
45
|
+
columns = [
|
46
|
+
'Name :name',
|
47
|
+
'Account :account',
|
48
|
+
'Domain :domain',
|
49
|
+
'State :state',
|
50
|
+
'VMName :vmname',
|
51
|
+
'VMState :vmstate'
|
52
|
+
]
|
76
53
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
object_list << r['vmname'].to_s
|
86
|
-
object_list << r['vmstate'].to_s
|
87
|
-
end
|
88
|
-
end
|
89
|
-
puts ui.list(object_list, :uneven_columns_across, columns)
|
90
|
-
list_object_fields(connection_result) if locate_config_value(:fieldlist)
|
54
|
+
params = { 'command' => "listVolumes" }
|
55
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
56
|
+
params['listall'] = locate_config_value(:listall) if locate_config_value(:listall)
|
57
|
+
params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
|
58
|
+
params['name'] = locate_config_value(:name) if locate_config_value(:name)
|
59
|
+
|
60
|
+
result = connection.list_object(params, "volume")
|
61
|
+
list_object(columns, result)
|
91
62
|
end
|
92
63
|
|
93
64
|
end
|
@@ -18,79 +18,35 @@
|
|
18
18
|
# limitations under the License.
|
19
19
|
#
|
20
20
|
|
21
|
-
require 'chef/knife
|
21
|
+
require 'chef/knife'
|
22
22
|
require 'chef/knife/cs_baselist'
|
23
23
|
|
24
24
|
module KnifeCloudstack
|
25
25
|
class CsZoneList < Chef::Knife
|
26
26
|
|
27
|
-
include Chef::Knife::KnifeCloudstackBase
|
28
27
|
include Chef::Knife::KnifeCloudstackBaseList
|
29
28
|
|
30
|
-
deps do
|
31
|
-
require 'knife-cloudstack/connection'
|
32
|
-
require 'chef/knife'
|
33
|
-
Chef::Knife.load_deps
|
34
|
-
end
|
35
|
-
|
36
29
|
banner "knife cs zone list (options)"
|
37
30
|
|
38
31
|
option :keyword,
|
39
32
|
:long => "--keyword KEY",
|
40
33
|
:description => "List by keyword"
|
41
34
|
|
42
|
-
option :index,
|
43
|
-
:long => "--index",
|
44
|
-
:description => "Add index numbers to the output",
|
45
|
-
:boolean => true
|
46
|
-
|
47
35
|
def run
|
48
36
|
validate_base_options
|
49
37
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
|
64
|
-
columns = object_list.count
|
65
|
-
object_list = [] if locate_config_value(:noheader)
|
66
|
-
|
67
|
-
connection_result = connection.list_object(
|
68
|
-
"listZones",
|
69
|
-
"zone",
|
70
|
-
locate_config_value(:filter),
|
71
|
-
false,
|
72
|
-
locate_config_value(:keyword)
|
73
|
-
)
|
74
|
-
|
75
|
-
output_format(connection_result)
|
76
|
-
|
77
|
-
index_num = 0
|
78
|
-
connection_result.each do |r|
|
79
|
-
if locate_config_value(:index)
|
80
|
-
index_num += 1
|
81
|
-
object_list << index_num.to_s
|
82
|
-
end
|
83
|
-
|
84
|
-
if locate_config_value(:fields)
|
85
|
-
locate_config_value(:fields).downcase.split(',').each { |n| object_list << ((r[("#{n}").strip]).to_s || 'N/A') }
|
86
|
-
else
|
87
|
-
object_list << r['name'].to_s
|
88
|
-
object_list << r['networktype'].to_s
|
89
|
-
object_list << r['securitygroupsenabled'].to_s
|
90
|
-
end
|
91
|
-
end
|
92
|
-
puts ui.list(object_list, :uneven_columns_across, columns)
|
93
|
-
list_object_fields(connection_result) if locate_config_value(:fieldlist)
|
38
|
+
columns = [
|
39
|
+
'Name :name',
|
40
|
+
'Network Type :networktype',
|
41
|
+
'Security Groups :securitygroupsenabled'
|
42
|
+
]
|
43
|
+
|
44
|
+
params = { 'command' => "listZones" }
|
45
|
+
params['filter'] = locate_config_value(:filter) if locate_config_value(:filter)
|
46
|
+
params['keyword'] = locate_config_value(:keyword) if locate_config_value(:keyword)
|
47
|
+
|
48
|
+
result = connection.list_object(params, "zone")
|
49
|
+
list_object(columns, result)
|
94
50
|
end
|
95
51
|
|
96
52
|
end
|
@@ -147,17 +147,12 @@ module CloudstackClient
|
|
147
147
|
##
|
148
148
|
# List all the objects based on the command that is specified.
|
149
149
|
|
150
|
-
def list_object(
|
151
|
-
params['command'] = command
|
152
|
-
params['listall'] = true if listall || name || keyword unless listall == false
|
153
|
-
params['keyword'] = keyword if keyword
|
154
|
-
params['name'] = name if name
|
155
|
-
|
150
|
+
def list_object(params, json_result)
|
156
151
|
json = send_request(params)
|
157
152
|
Chef::Log.debug("JSON (list_object) result: #{json}")
|
158
153
|
|
159
154
|
result = json["#{json_result}"] || []
|
160
|
-
result = data_filter(result, filter) if filter
|
155
|
+
result = data_filter(result, params['filter']) if params['filter']
|
161
156
|
result
|
162
157
|
end
|
163
158
|
|
@@ -191,8 +186,10 @@ module CloudstackClient
|
|
191
186
|
end
|
192
187
|
|
193
188
|
template = get_template(template_name, zone_name)
|
189
|
+
template = get_iso(template_name, zone_name) unless template
|
190
|
+
|
194
191
|
if !template then
|
195
|
-
puts "Error: Template '#{template_name}' is invalid"
|
192
|
+
puts "Error: Template / ISO name: '#{template_name}' is invalid"
|
196
193
|
exit 1
|
197
194
|
end
|
198
195
|
|
@@ -246,7 +243,7 @@ module CloudstackClient
|
|
246
243
|
'networkids' => network_ids.join(',')
|
247
244
|
}
|
248
245
|
|
249
|
-
|
246
|
+
else
|
250
247
|
|
251
248
|
params = {
|
252
249
|
'command' => 'deployVirtualMachine',
|
@@ -427,6 +424,34 @@ module CloudstackClient
|
|
427
424
|
nil
|
428
425
|
end
|
429
426
|
|
427
|
+
##
|
428
|
+
# Finds the iso with the specified name.
|
429
|
+
|
430
|
+
def get_iso(name, zone_name=nil)
|
431
|
+
zone = zone_name ? get_zone(zone_name) : get_default_zone
|
432
|
+
|
433
|
+
params = {
|
434
|
+
'command' => 'listIsos',
|
435
|
+
'isoFilter' => 'executable',
|
436
|
+
}
|
437
|
+
params['zoneid'] = zone['id'] if zone
|
438
|
+
|
439
|
+
json = send_request(params)
|
440
|
+
iso = json['iso']
|
441
|
+
return nil unless iso
|
442
|
+
|
443
|
+
iso.each { |i|
|
444
|
+
if name.is_uuid? then
|
445
|
+
return i if i['id'] == name
|
446
|
+
else
|
447
|
+
return i if i['name'] == name
|
448
|
+
end
|
449
|
+
}
|
450
|
+
nil
|
451
|
+
end
|
452
|
+
|
453
|
+
|
454
|
+
|
430
455
|
##
|
431
456
|
# Finds the disk offering with the specified name.
|
432
457
|
|
@@ -587,6 +612,32 @@ module CloudstackClient
|
|
587
612
|
nil
|
588
613
|
end
|
589
614
|
|
615
|
+
def add_nic_to_vm(network_id, server_id, ipaddr=nil)
|
616
|
+
params = {
|
617
|
+
'command' => 'addNicToVirtualMachine',
|
618
|
+
'networkid' => network_id,
|
619
|
+
'virtualmachineid' => server_id,
|
620
|
+
}
|
621
|
+
|
622
|
+
unless ipaddr.nil?
|
623
|
+
params['ipaddress'] = ipaddr
|
624
|
+
end
|
625
|
+
|
626
|
+
json = send_async_request(params)
|
627
|
+
json['virtualmachine']
|
628
|
+
end
|
629
|
+
|
630
|
+
def remove_nic_from_vm(nic_id, server_id)
|
631
|
+
params = {
|
632
|
+
'command' => 'removeNicFromVirtualMachine',
|
633
|
+
'nicid' => nic_id,
|
634
|
+
'virtualmachineid' => server_id,
|
635
|
+
}
|
636
|
+
|
637
|
+
json = send_async_request(params)
|
638
|
+
json['virtualmachine']
|
639
|
+
end
|
640
|
+
|
590
641
|
##
|
591
642
|
# Finds the default zone for your account.
|
592
643
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-cloudstack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.16
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: chef
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- lib/chef/knife/cs_server_stop.rb
|
84
84
|
- lib/chef/knife/cs_publicip_list.rb
|
85
85
|
- lib/chef/knife/cs_pod_list.rb
|
86
|
+
- lib/chef/knife/cs_aag_list.rb
|
86
87
|
- lib/chef/knife/cs_cluster_list.rb
|
87
88
|
- lib/chef/knife/cs_server_reboot.rb
|
88
89
|
- lib/chef/knife/cs_base.rb
|
@@ -100,8 +101,10 @@ files:
|
|
100
101
|
- lib/chef/knife/cs_server_list.rb
|
101
102
|
- lib/chef/knife/cs_stack_delete.rb
|
102
103
|
- lib/chef/knife/cs_account_list.rb
|
104
|
+
- lib/chef/knife/cs_server_remove_nic.rb
|
103
105
|
- lib/chef/knife/cs_server_delete.rb
|
104
106
|
- lib/chef/knife/cs_domain_list.rb
|
107
|
+
- lib/chef/knife/cs_server_add_nic.rb
|
105
108
|
- lib/chef/knife/cs_keypair_list.rb
|
106
109
|
- lib/chef/knife/cs_project_list.rb
|
107
110
|
- lib/chef/knife/cs_ostype_list.rb
|
@@ -131,4 +134,3 @@ signing_key:
|
|
131
134
|
specification_version: 3
|
132
135
|
summary: A knife plugin for the CloudStack API
|
133
136
|
test_files: []
|
134
|
-
has_rdoc: true
|