cloudstack-cli 1.5.0 → 1.5.1
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 +4 -4
- data/Gemfile.lock +3 -3
- data/cloudstack-cli.gemspec +1 -1
- data/lib/cloudstack-cli/commands/compute_offer.rb +4 -1
- data/lib/cloudstack-cli/commands/stack.rb +6 -4
- data/lib/cloudstack-cli/option_resolver.rb +30 -3
- data/lib/cloudstack-cli/version.rb +1 -1
- data/test/stack_example.yml +5 -5
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0627b894e7b7c1cef8693c8b0b467bb2deaa4cb2
|
4
|
+
data.tar.gz: b48db8f182a2d17717d7a9897ec775f975d0ed10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50f9c65fcee553a3b35a9881e84b52a87a2481bbc9975c3ea66fec608b7bb0c4f1676299ddc16ae5bb813af256ff801387f3ae7395d181b6eedb070717789046
|
7
|
+
data.tar.gz: f084ea2345dd07d0ca976d93d72cd2b13fbef5fd8753215bd97b346a426850b3aa40ca7247407d8b5740e242e8e3f682fc4f9135f701b982b3ade62221da11e7
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../cloudstack_client/
|
3
3
|
specs:
|
4
|
-
cloudstack_client (1.
|
4
|
+
cloudstack_client (1.4.0)
|
5
5
|
|
6
6
|
PATH
|
7
7
|
remote: .
|
8
8
|
specs:
|
9
|
-
cloudstack-cli (1.5.
|
10
|
-
cloudstack_client (~> 1.
|
9
|
+
cloudstack-cli (1.5.1)
|
10
|
+
cloudstack_client (~> 1.4)
|
11
11
|
thor (~> 0.19)
|
12
12
|
|
13
13
|
GEM
|
data/cloudstack-cli.gemspec
CHANGED
@@ -33,6 +33,7 @@ class ComputeOffer < CloudstackCli::Base
|
|
33
33
|
option :domain
|
34
34
|
option :ha, type: :boolean
|
35
35
|
option :tags
|
36
|
+
option :hosttags
|
36
37
|
def create(name)
|
37
38
|
resolve_domain
|
38
39
|
options[:name] = name
|
@@ -73,12 +74,14 @@ class ComputeOffer < CloudstackCli::Base
|
|
73
74
|
|
74
75
|
no_commands do
|
75
76
|
def print_compute_offerings(offerings, totals = true)
|
76
|
-
table = [%w(Name Displaytext Domain ID)]
|
77
|
+
table = [%w(Name Displaytext Domain Tags HostTags ID)]
|
77
78
|
offerings.each do |offering|
|
78
79
|
table << [
|
79
80
|
offering["name"],
|
80
81
|
offering["displaytext"],
|
81
82
|
offering["domain"],
|
83
|
+
offering["tags"],
|
84
|
+
offering["hosttags"],
|
82
85
|
offering["id"]
|
83
86
|
]
|
84
87
|
end
|
@@ -22,18 +22,19 @@ class Stack < CloudstackCli::Base
|
|
22
22
|
name: name,
|
23
23
|
displayname: instance["decription"],
|
24
24
|
zone: instance["zone"] || stack["zone"],
|
25
|
+
project: stack["project"],
|
25
26
|
template: instance["template"],
|
26
27
|
iso: instance["iso"] ,
|
27
28
|
offering: instance["offering"],
|
28
29
|
networks: load_string_or_array(instance["networks"]),
|
29
|
-
|
30
|
+
ip_network_list: instance["ip_network_list"],
|
30
31
|
disk_offering: instance["disk_offering"],
|
31
32
|
size: instance["disk_size"],
|
32
33
|
group: instance["group"] || stack["group"],
|
33
34
|
keypair: instance["keypair"] || stack["keypair"],
|
34
|
-
ip_address: instance["ip_address"]
|
35
|
+
ip_address: instance["ip_address"]
|
35
36
|
})
|
36
|
-
|
37
|
+
|
37
38
|
jobs << {
|
38
39
|
id: client.deploy_virtual_machine(
|
39
40
|
vm_options_to_params,
|
@@ -123,6 +124,7 @@ class Stack < CloudstackCli::Base
|
|
123
124
|
def string_to_array(string)
|
124
125
|
string ? string.gsub(', ', ',').split(',') : nil
|
125
126
|
end
|
126
|
-
|
127
|
+
|
128
|
+
end # no_commands
|
127
129
|
|
128
130
|
end
|
@@ -13,7 +13,11 @@ module CloudstackCli
|
|
13
13
|
say "Error: Template or ISO is required.", :red
|
14
14
|
exit 1
|
15
15
|
end
|
16
|
-
|
16
|
+
if options[:ip_network_list]
|
17
|
+
resolve_ip_network_list
|
18
|
+
else
|
19
|
+
resolve_networks
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
23
|
def resolve_zone
|
@@ -86,8 +90,6 @@ module CloudstackCli
|
|
86
90
|
end
|
87
91
|
networks.compact!
|
88
92
|
if networks.empty?
|
89
|
-
#unless default_network = client.list_networks(project_id: options[:project_id]).find {
|
90
|
-
# |n| n['isdefault'] == true }
|
91
93
|
unless default_network = client.list_networks(project_id: options[:project_id]).first
|
92
94
|
say "Error: No default network found.", :red
|
93
95
|
exit 1
|
@@ -98,6 +100,31 @@ module CloudstackCli
|
|
98
100
|
options
|
99
101
|
end
|
100
102
|
|
103
|
+
def resolve_ip_network_list
|
104
|
+
network_list = []
|
105
|
+
available_networks = network = client.list_networks(
|
106
|
+
zone_id: options[:zone_id],
|
107
|
+
project_id: options[:project_id]
|
108
|
+
)
|
109
|
+
if options[:ip_network_list]
|
110
|
+
options[:ip_network_list].each do |item|
|
111
|
+
unless network = available_networks.find { |n| n['name'] == item["name"] }
|
112
|
+
say "Error: Network '#{name}' not found.", :red
|
113
|
+
exit 1
|
114
|
+
end
|
115
|
+
item.delete("name")
|
116
|
+
network_list << {networkid: network["id"]}.merge(item) # rescue nil
|
117
|
+
end
|
118
|
+
end
|
119
|
+
network_list.compact!
|
120
|
+
if network_list.empty?
|
121
|
+
say "Error: IP network list can't be empty.", :red
|
122
|
+
exit 1
|
123
|
+
end
|
124
|
+
options[:ip_to_network_list] = network_list
|
125
|
+
options
|
126
|
+
end
|
127
|
+
|
101
128
|
def resolve_iso
|
102
129
|
if options[:iso]
|
103
130
|
iso = false
|
data/test/stack_example.yml
CHANGED
@@ -6,18 +6,18 @@
|
|
6
6
|
project: "Playground"
|
7
7
|
group: "my_web_stack"
|
8
8
|
servers:
|
9
|
-
-
|
10
|
-
name: "web-001, web-002"
|
9
|
+
- name: "web-001, web-002"
|
11
10
|
description: "Web nodes"
|
12
11
|
template: "CentOS-7-x86_64"
|
13
12
|
offering: "1cpu_1gb"
|
14
13
|
networks: "M_PLAY"
|
15
14
|
port_rules: ":80, :443"
|
16
|
-
-
|
17
|
-
name: "db-001"
|
15
|
+
- name: "db-001"
|
18
16
|
description: "PostgreSQL Master"
|
19
17
|
iso: "CentOS-7.0-x64"
|
20
18
|
disk_offering: "Perf Storage"
|
21
19
|
disk_size: "5"
|
22
20
|
offering: "2cpu_4gb"
|
23
|
-
|
21
|
+
ip_network_list:
|
22
|
+
- name: "M_PLAY"
|
23
|
+
ip: 10.101.64.42
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudstack-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nik Wolfgramm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.4'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: thor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|