fog-proxmox 0.8.1 → 0.8.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +1 -0
- data/lib/fog/identity/proxmox/requests/change_password.rb +1 -1
- data/lib/fog/proxmox.rb +9 -8
- data/lib/fog/proxmox/version.rb +1 -1
- data/spec/compute_spec.rb +106 -106
- data/spec/fixtures/proxmox/compute/containers.yml +1387 -2096
- data/spec/fixtures/proxmox/compute/identity_ticket.yml +8 -8
- data/spec/fixtures/proxmox/compute/nodes.yml +24 -24
- data/spec/fixtures/proxmox/compute/servers.yml +2849 -2920
- data/spec/fixtures/proxmox/compute/snapshots.yml +308 -293
- data/spec/fixtures/proxmox/compute/storages.yml +32 -32
- data/spec/fixtures/proxmox/compute/tasks.yml +57 -55
- data/spec/fixtures/proxmox/identity/auth.yml +125 -8
- data/spec/fixtures/proxmox/identity/domains.yml +120 -118
- data/spec/fixtures/proxmox/identity/groups.yml +52 -52
- data/spec/fixtures/proxmox/identity/identity_ticket.yml +8 -8
- data/spec/fixtures/proxmox/identity/permissions.yml +119 -119
- data/spec/fixtures/proxmox/identity/pools.yml +97 -97
- data/spec/fixtures/proxmox/identity/read_version.yml +8 -8
- data/spec/fixtures/proxmox/identity/roles.yml +55 -55
- data/spec/fixtures/proxmox/identity/users.yml +115 -115
- data/spec/fixtures/proxmox/network/identity_ticket.yml +8 -8
- data/spec/fixtures/proxmox/network/networks.yml +84 -64
- data/spec/identity_spec.rb +82 -60
- data/spec/network_spec.rb +6 -6
- metadata +2 -2
@@ -4,11 +4,11 @@ http_interactions:
|
|
4
4
|
method: post
|
5
5
|
uri: https://192.168.56.101:8006/api2/json/access/ticket
|
6
6
|
body:
|
7
|
-
encoding:
|
8
|
-
string: username=root
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: username=root%40pam&password=proxmox01
|
9
9
|
headers:
|
10
10
|
User-Agent:
|
11
|
-
- fog-core/1.
|
11
|
+
- fog-core/2.1.2
|
12
12
|
Accept:
|
13
13
|
- application/json
|
14
14
|
response:
|
@@ -21,7 +21,7 @@ http_interactions:
|
|
21
21
|
Connection:
|
22
22
|
- close, Keep-Alive
|
23
23
|
Date:
|
24
|
-
-
|
24
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
25
25
|
Pragma:
|
26
26
|
- no-cache
|
27
27
|
Server:
|
@@ -31,10 +31,10 @@ http_interactions:
|
|
31
31
|
Content-Type:
|
32
32
|
- application/json;charset=UTF-8
|
33
33
|
Expires:
|
34
|
-
-
|
34
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
35
35
|
body:
|
36
36
|
encoding: ASCII-8BIT
|
37
|
-
string: '{"data":{"
|
37
|
+
string: '{"data":{"CSRFPreventionToken":"5DB7078B:Iqkw5So5MfwZXL6vugdNe9MDyHw","username":"root@pam","ticket":"PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==","cap":{"nodes":{"Sys.Modify":1,"Sys.Console":1,"Sys.Syslog":1,"Sys.PowerMgmt":1,"Permissions.Modify":1,"Sys.Audit":1},"vms":{"VM.Config.HWType":1,"VM.Migrate":1,"VM.PowerMgmt":1,"VM.Config.CPU":1,"VM.Snapshot.Rollback":1,"VM.Monitor":1,"Permissions.Modify":1,"VM.Config.Memory":1,"VM.Console":1,"VM.Snapshot":1,"VM.Config.CDROM":1,"VM.Config.Disk":1,"VM.Audit":1,"VM.Allocate":1,"VM.Config.Options":1,"VM.Backup":1,"VM.Config.Network":1,"VM.Clone":1},"storage":{"Datastore.Audit":1,"Permissions.Modify":1,"Datastore.AllocateTemplate":1,"Datastore.Allocate":1,"Datastore.AllocateSpace":1},"access":{"User.Modify":1,"Group.Allocate":1,"Permissions.Modify":1},"dc":{"Sys.Audit":1}}}}'
|
38
38
|
http_version:
|
39
|
-
recorded_at:
|
40
|
-
recorded_with: VCR
|
39
|
+
recorded_at: Mon, 28 Oct 2019 15:21:48 GMT
|
40
|
+
recorded_with: VCR 4.0.0
|
@@ -8,11 +8,11 @@ http_interactions:
|
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
User-Agent:
|
11
|
-
- fog-core/1.
|
11
|
+
- fog-core/2.1.2
|
12
12
|
Accept:
|
13
13
|
- application/json
|
14
14
|
Cookie:
|
15
|
-
- PVEAuthCookie=PVE:root@pam:
|
15
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
16
16
|
response:
|
17
17
|
status:
|
18
18
|
code: 200
|
@@ -23,22 +23,22 @@ http_interactions:
|
|
23
23
|
Connection:
|
24
24
|
- Keep-Alive
|
25
25
|
Date:
|
26
|
-
-
|
26
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
27
27
|
Pragma:
|
28
28
|
- no-cache
|
29
29
|
Server:
|
30
30
|
- pve-api-daemon/3.0
|
31
31
|
Content-Length:
|
32
|
-
- '
|
32
|
+
- '210'
|
33
33
|
Content-Type:
|
34
34
|
- application/json;charset=UTF-8
|
35
35
|
Expires:
|
36
|
-
-
|
36
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
37
37
|
body:
|
38
38
|
encoding: ASCII-8BIT
|
39
|
-
string: '{"data":[{"
|
39
|
+
string: '{"data":[{"maxdisk":3896197120,"cpu":0.00833804920862916,"level":"","id":"node/pve","status":"online","type":"node","maxmem":4136439808,"disk":1578881024,"maxcpu":2,"mem":853798912,"node":"pve","uptime":2592}]}'
|
40
40
|
http_version:
|
41
|
-
recorded_at:
|
41
|
+
recorded_at: Mon, 28 Oct 2019 15:21:48 GMT
|
42
42
|
- request:
|
43
43
|
method: post
|
44
44
|
uri: https://192.168.56.101:8006/api2/json/nodes/pve/network
|
@@ -47,13 +47,13 @@ http_interactions:
|
|
47
47
|
string: iface=enp0s10&type=eth
|
48
48
|
headers:
|
49
49
|
User-Agent:
|
50
|
-
- fog-core/1.
|
50
|
+
- fog-core/2.1.2
|
51
51
|
Accept:
|
52
52
|
- application/json
|
53
53
|
Csrfpreventiontoken:
|
54
|
-
-
|
54
|
+
- 5DB7078B:Iqkw5So5MfwZXL6vugdNe9MDyHw
|
55
55
|
Cookie:
|
56
|
-
- PVEAuthCookie=PVE:root@pam:
|
56
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
57
57
|
response:
|
58
58
|
status:
|
59
59
|
code: 200
|
@@ -64,7 +64,7 @@ http_interactions:
|
|
64
64
|
Connection:
|
65
65
|
- close, Keep-Alive
|
66
66
|
Date:
|
67
|
-
-
|
67
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
68
68
|
Pragma:
|
69
69
|
- no-cache
|
70
70
|
Server:
|
@@ -74,12 +74,12 @@ http_interactions:
|
|
74
74
|
Content-Type:
|
75
75
|
- application/json;charset=UTF-8
|
76
76
|
Expires:
|
77
|
-
-
|
77
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
78
78
|
body:
|
79
79
|
encoding: ASCII-8BIT
|
80
80
|
string: '{"data":null}'
|
81
81
|
http_version:
|
82
|
-
recorded_at:
|
82
|
+
recorded_at: Mon, 28 Oct 2019 15:21:48 GMT
|
83
83
|
- request:
|
84
84
|
method: get
|
85
85
|
uri: https://192.168.56.101:8006/api2/json/nodes/pve/network
|
@@ -88,11 +88,11 @@ http_interactions:
|
|
88
88
|
string: ''
|
89
89
|
headers:
|
90
90
|
User-Agent:
|
91
|
-
- fog-core/1.
|
91
|
+
- fog-core/2.1.2
|
92
92
|
Accept:
|
93
93
|
- application/json
|
94
94
|
Cookie:
|
95
|
-
- PVEAuthCookie=PVE:root@pam:
|
95
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
96
96
|
response:
|
97
97
|
status:
|
98
98
|
code: 200
|
@@ -103,25 +103,35 @@ http_interactions:
|
|
103
103
|
Connection:
|
104
104
|
- Keep-Alive
|
105
105
|
Date:
|
106
|
-
-
|
106
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
107
107
|
Pragma:
|
108
108
|
- no-cache
|
109
109
|
Server:
|
110
110
|
- pve-api-daemon/3.0
|
111
111
|
Content-Length:
|
112
|
-
- '
|
112
|
+
- '1650'
|
113
113
|
Content-Type:
|
114
114
|
- application/json;charset=UTF-8
|
115
115
|
Expires:
|
116
|
-
-
|
116
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
117
117
|
body:
|
118
118
|
encoding: ASCII-8BIT
|
119
|
-
string: '{"
|
120
|
-
/etc/network/interfaces\t2019-
|
121
|
-
|
122
|
-
|
119
|
+
string: '{"changes":"--- /etc/network/interfaces\t2019-04-27 13:50:36.744000000
|
120
|
+
+0200\n+++ /etc/network/interfaces.new\t2019-10-28 16:21:47.072000000 +0100\n@@
|
121
|
+
-1,15 +1,29 @@\n+# network interface settings; autogenerated\n+# Please do
|
122
|
+
NOT modify this file directly, unless you know what\n+# you''re doing.\n+#\n+#
|
123
|
+
If you want to manage parts of the network configuration manually,\n+# please
|
124
|
+
utilize the ''source'' or ''source-directory'' directives to do\n+# so.\n+#
|
125
|
+
PVE will preserve these directives, but will NOT read its network\n+# configuration
|
126
|
+
from sourced files, so do not attempt to move any of\n+# the PVE managed interfaces
|
127
|
+
into external files!\n+\n auto lo\n iface lo inet loopback\n \n iface enp0s3
|
128
|
+
inet manual\n \n+iface enp0s8 inet manual\n+\n+iface enp0s10 inet manual\n+\n
|
129
|
+
auto vmbr0\n iface vmbr0 inet static\n \taddress 192.168.56.101\n \tnetmask
|
130
|
+
255.255.255.0\n \tgateway 10.0.3.2\n-\tbridge_ports enp0s3\n-\tbridge_stp
|
131
|
+
off\n-\tbridge_fd 0\n+\tbridge-ports enp0s3\n+\tbridge-stp off\n+\tbridge-fd
|
132
|
+
0\n \n-iface enp0s8 inet manual\n","data":[{"method":"manual","families":["inet"],"priority":4,"type":"eth","method6":"manual","exists":1,"iface":"enp0s8"},{"method":"manual","families":["inet"],"type":"eth","priority":5,"iface":"enp0s10","method6":"manual"},{"type":"bridge","bridge_ports":"enp0s3","address":"192.168.56.101","method":"static","autostart":1,"active":1,"families":["inet"],"priority":6,"bridge_stp":"off","method6":"manual","bridge_fd":"0","iface":"vmbr0","gateway":"10.0.3.2","netmask":"255.255.255.0"},{"iface":"enp0s3","method6":"manual","exists":1,"priority":3,"families":["inet"],"active":1,"method":"manual","type":"eth"}]}'
|
123
133
|
http_version:
|
124
|
-
recorded_at:
|
134
|
+
recorded_at: Mon, 28 Oct 2019 15:21:48 GMT
|
125
135
|
- request:
|
126
136
|
method: post
|
127
137
|
uri: https://192.168.56.101:8006/api2/json/nodes/pve/network
|
@@ -130,13 +140,13 @@ http_interactions:
|
|
130
140
|
string: iface=enp0s10&type=eth
|
131
141
|
headers:
|
132
142
|
User-Agent:
|
133
|
-
- fog-core/1.
|
143
|
+
- fog-core/2.1.2
|
134
144
|
Accept:
|
135
145
|
- application/json
|
136
146
|
Csrfpreventiontoken:
|
137
|
-
-
|
147
|
+
- 5DB7078B:Iqkw5So5MfwZXL6vugdNe9MDyHw
|
138
148
|
Cookie:
|
139
|
-
- PVEAuthCookie=PVE:root@pam:
|
149
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
140
150
|
response:
|
141
151
|
status:
|
142
152
|
code: 400
|
@@ -147,7 +157,7 @@ http_interactions:
|
|
147
157
|
Connection:
|
148
158
|
- close
|
149
159
|
Date:
|
150
|
-
-
|
160
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
151
161
|
Pragma:
|
152
162
|
- no-cache
|
153
163
|
Server:
|
@@ -157,12 +167,12 @@ http_interactions:
|
|
157
167
|
Content-Type:
|
158
168
|
- application/json;charset=UTF-8
|
159
169
|
Expires:
|
160
|
-
-
|
170
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
161
171
|
body:
|
162
172
|
encoding: ASCII-8BIT
|
163
173
|
string: '{"errors":{"iface":"interface already exists"},"data":null}'
|
164
174
|
http_version:
|
165
|
-
recorded_at:
|
175
|
+
recorded_at: Mon, 28 Oct 2019 15:21:48 GMT
|
166
176
|
- request:
|
167
177
|
method: get
|
168
178
|
uri: https://192.168.56.101:8006/api2/json/nodes/pve/network
|
@@ -171,11 +181,11 @@ http_interactions:
|
|
171
181
|
string: ''
|
172
182
|
headers:
|
173
183
|
User-Agent:
|
174
|
-
- fog-core/1.
|
184
|
+
- fog-core/2.1.2
|
175
185
|
Accept:
|
176
186
|
- application/json
|
177
187
|
Cookie:
|
178
|
-
- PVEAuthCookie=PVE:root@pam:
|
188
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
179
189
|
response:
|
180
190
|
status:
|
181
191
|
code: 200
|
@@ -186,25 +196,35 @@ http_interactions:
|
|
186
196
|
Connection:
|
187
197
|
- Keep-Alive
|
188
198
|
Date:
|
189
|
-
-
|
199
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
190
200
|
Pragma:
|
191
201
|
- no-cache
|
192
202
|
Server:
|
193
203
|
- pve-api-daemon/3.0
|
194
204
|
Content-Length:
|
195
|
-
- '
|
205
|
+
- '1650'
|
196
206
|
Content-Type:
|
197
207
|
- application/json;charset=UTF-8
|
198
208
|
Expires:
|
199
|
-
-
|
209
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
200
210
|
body:
|
201
211
|
encoding: ASCII-8BIT
|
202
|
-
string: '{"changes":"--- /etc/network/interfaces\t2019-04-
|
203
|
-
+0200\n+++ /etc/network/interfaces.new\t2019-
|
204
|
-
-
|
205
|
-
|
212
|
+
string: '{"changes":"--- /etc/network/interfaces\t2019-04-27 13:50:36.744000000
|
213
|
+
+0200\n+++ /etc/network/interfaces.new\t2019-10-28 16:21:47.072000000 +0100\n@@
|
214
|
+
-1,15 +1,29 @@\n+# network interface settings; autogenerated\n+# Please do
|
215
|
+
NOT modify this file directly, unless you know what\n+# you''re doing.\n+#\n+#
|
216
|
+
If you want to manage parts of the network configuration manually,\n+# please
|
217
|
+
utilize the ''source'' or ''source-directory'' directives to do\n+# so.\n+#
|
218
|
+
PVE will preserve these directives, but will NOT read its network\n+# configuration
|
219
|
+
from sourced files, so do not attempt to move any of\n+# the PVE managed interfaces
|
220
|
+
into external files!\n+\n auto lo\n iface lo inet loopback\n \n iface enp0s3
|
221
|
+
inet manual\n \n+iface enp0s8 inet manual\n+\n+iface enp0s10 inet manual\n+\n
|
222
|
+
auto vmbr0\n iface vmbr0 inet static\n \taddress 192.168.56.101\n \tnetmask
|
223
|
+
255.255.255.0\n \tgateway 10.0.3.2\n-\tbridge_ports enp0s3\n-\tbridge_stp
|
224
|
+
off\n-\tbridge_fd 0\n+\tbridge-ports enp0s3\n+\tbridge-stp off\n+\tbridge-fd
|
225
|
+
0\n \n-iface enp0s8 inet manual\n","data":[{"method":"manual","families":["inet"],"priority":4,"type":"eth","method6":"manual","exists":1,"iface":"enp0s8"},{"method6":"manual","bridge_fd":"0","iface":"vmbr0","gateway":"10.0.3.2","priority":6,"bridge_stp":"off","netmask":"255.255.255.0","bridge_ports":"enp0s3","type":"bridge","active":1,"families":["inet"],"address":"192.168.56.101","method":"static","autostart":1},{"type":"eth","method":"manual","families":["inet"],"active":1,"priority":3,"iface":"enp0s3","exists":1,"method6":"manual"},{"families":["inet"],"method":"manual","iface":"enp0s10","method6":"manual","type":"eth","priority":5}]}'
|
206
226
|
http_version:
|
207
|
-
recorded_at:
|
227
|
+
recorded_at: Mon, 28 Oct 2019 15:21:48 GMT
|
208
228
|
- request:
|
209
229
|
method: put
|
210
230
|
uri: https://192.168.56.101:8006/api2/json/nodes/pve/network/enp0s10
|
@@ -213,13 +233,13 @@ http_interactions:
|
|
213
233
|
string: comments=test&type=eth
|
214
234
|
headers:
|
215
235
|
User-Agent:
|
216
|
-
- fog-core/1.
|
236
|
+
- fog-core/2.1.2
|
217
237
|
Accept:
|
218
238
|
- application/json
|
219
239
|
Csrfpreventiontoken:
|
220
|
-
-
|
240
|
+
- 5DB7078B:Iqkw5So5MfwZXL6vugdNe9MDyHw
|
221
241
|
Cookie:
|
222
|
-
- PVEAuthCookie=PVE:root@pam:
|
242
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
223
243
|
response:
|
224
244
|
status:
|
225
245
|
code: 200
|
@@ -230,7 +250,7 @@ http_interactions:
|
|
230
250
|
Connection:
|
231
251
|
- Keep-Alive, Keep-Alive
|
232
252
|
Date:
|
233
|
-
-
|
253
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
234
254
|
Pragma:
|
235
255
|
- no-cache
|
236
256
|
Server:
|
@@ -240,12 +260,12 @@ http_interactions:
|
|
240
260
|
Content-Type:
|
241
261
|
- application/json;charset=UTF-8
|
242
262
|
Expires:
|
243
|
-
-
|
263
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
244
264
|
body:
|
245
265
|
encoding: ASCII-8BIT
|
246
266
|
string: '{"data":null}'
|
247
267
|
http_version:
|
248
|
-
recorded_at:
|
268
|
+
recorded_at: Mon, 28 Oct 2019 15:21:48 GMT
|
249
269
|
- request:
|
250
270
|
method: post
|
251
271
|
uri: https://192.168.56.101:8006/api2/json/nodes/pve/status
|
@@ -254,13 +274,13 @@ http_interactions:
|
|
254
274
|
string: command=reboot
|
255
275
|
headers:
|
256
276
|
User-Agent:
|
257
|
-
- fog-core/1.
|
277
|
+
- fog-core/2.1.2
|
258
278
|
Accept:
|
259
279
|
- application/json
|
260
280
|
Csrfpreventiontoken:
|
261
|
-
-
|
281
|
+
- 5DB7078B:Iqkw5So5MfwZXL6vugdNe9MDyHw
|
262
282
|
Cookie:
|
263
|
-
- PVEAuthCookie=PVE:root@pam:
|
283
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
264
284
|
response:
|
265
285
|
status:
|
266
286
|
code: 200
|
@@ -271,7 +291,7 @@ http_interactions:
|
|
271
291
|
Connection:
|
272
292
|
- close, Keep-Alive
|
273
293
|
Date:
|
274
|
-
-
|
294
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
275
295
|
Pragma:
|
276
296
|
- no-cache
|
277
297
|
Server:
|
@@ -281,12 +301,12 @@ http_interactions:
|
|
281
301
|
Content-Type:
|
282
302
|
- application/json;charset=UTF-8
|
283
303
|
Expires:
|
284
|
-
-
|
304
|
+
- Mon, 28 Oct 2019 15:21:47 GMT
|
285
305
|
body:
|
286
306
|
encoding: ASCII-8BIT
|
287
307
|
string: '{"data":null}'
|
288
308
|
http_version:
|
289
|
-
recorded_at:
|
309
|
+
recorded_at: Mon, 28 Oct 2019 15:21:48 GMT
|
290
310
|
- request:
|
291
311
|
method: delete
|
292
312
|
uri: https://192.168.56.101:8006/api2/json/nodes/pve/network/enp0s10
|
@@ -295,13 +315,13 @@ http_interactions:
|
|
295
315
|
string: ''
|
296
316
|
headers:
|
297
317
|
User-Agent:
|
298
|
-
- fog-core/1.
|
318
|
+
- fog-core/2.1.2
|
299
319
|
Accept:
|
300
320
|
- application/json
|
301
321
|
Csrfpreventiontoken:
|
302
|
-
-
|
322
|
+
- 5DB7078B:Iqkw5So5MfwZXL6vugdNe9MDyHw
|
303
323
|
Cookie:
|
304
|
-
- PVEAuthCookie=PVE:root@pam:
|
324
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
305
325
|
response:
|
306
326
|
status:
|
307
327
|
code: 200
|
@@ -312,7 +332,7 @@ http_interactions:
|
|
312
332
|
Connection:
|
313
333
|
- Keep-Alive, Keep-Alive
|
314
334
|
Date:
|
315
|
-
-
|
335
|
+
- Mon, 28 Oct 2019 15:22:47 GMT
|
316
336
|
Pragma:
|
317
337
|
- no-cache
|
318
338
|
Server:
|
@@ -322,12 +342,12 @@ http_interactions:
|
|
322
342
|
Content-Type:
|
323
343
|
- application/json;charset=UTF-8
|
324
344
|
Expires:
|
325
|
-
-
|
345
|
+
- Mon, 28 Oct 2019 15:22:47 GMT
|
326
346
|
body:
|
327
347
|
encoding: ASCII-8BIT
|
328
348
|
string: '{"data":null}'
|
329
349
|
http_version:
|
330
|
-
recorded_at:
|
350
|
+
recorded_at: Mon, 28 Oct 2019 15:22:48 GMT
|
331
351
|
- request:
|
332
352
|
method: post
|
333
353
|
uri: https://192.168.56.101:8006/api2/json/nodes/pve/status
|
@@ -336,13 +356,13 @@ http_interactions:
|
|
336
356
|
string: command=reboot
|
337
357
|
headers:
|
338
358
|
User-Agent:
|
339
|
-
- fog-core/1.
|
359
|
+
- fog-core/2.1.2
|
340
360
|
Accept:
|
341
361
|
- application/json
|
342
362
|
Csrfpreventiontoken:
|
343
|
-
-
|
363
|
+
- 5DB7078B:Iqkw5So5MfwZXL6vugdNe9MDyHw
|
344
364
|
Cookie:
|
345
|
-
- PVEAuthCookie=PVE:root@pam:
|
365
|
+
- PVEAuthCookie=PVE:root@pam:5DB7078B::Lnb6mVS7yhpfE9xK+rFh5zr8S0gbTMeIJOh2Zrt2Dm0r+RCa93a9FTIiN1fbOon7/hr64xBf/oZyHxuWupeHk0Fq9XoWfpq+abjvgHUtfp7Pd8KMdp/kMTgjp7R93cmXaQNYqkZZQEO9pM6wM6sleBCfjJevUjxmWWZdFGtf1FNOh/d7pLi2UIHm1a1fAntVmNq3K0TZcQJT0GMdjbbWA6q4HQFQ7YQQ+32quh3AyjFKSDcTauy7XKlAH/MU9ocjphmxddlTkLX9Zfu7Q9PPoFV15Ypfv1+b0DwJbbTgsHno+OO39LU2IR97neV2w13G1lGQMBCGl9Fwh8mgru0/Ww==
|
346
366
|
response:
|
347
367
|
status:
|
348
368
|
code: 200
|
@@ -353,7 +373,7 @@ http_interactions:
|
|
353
373
|
Connection:
|
354
374
|
- close, Keep-Alive
|
355
375
|
Date:
|
356
|
-
-
|
376
|
+
- Mon, 28 Oct 2019 15:22:47 GMT
|
357
377
|
Pragma:
|
358
378
|
- no-cache
|
359
379
|
Server:
|
@@ -363,10 +383,10 @@ http_interactions:
|
|
363
383
|
Content-Type:
|
364
384
|
- application/json;charset=UTF-8
|
365
385
|
Expires:
|
366
|
-
-
|
386
|
+
- Mon, 28 Oct 2019 15:22:47 GMT
|
367
387
|
body:
|
368
388
|
encoding: ASCII-8BIT
|
369
389
|
string: '{"data":null}'
|
370
390
|
http_version:
|
371
|
-
recorded_at:
|
372
|
-
recorded_with: VCR
|
391
|
+
recorded_at: Mon, 28 Oct 2019 15:22:48 GMT
|
392
|
+
recorded_with: VCR 4.0.0
|
data/spec/identity_spec.rb
CHANGED
@@ -31,23 +31,45 @@ describe Fog::Proxmox::Identity do
|
|
31
31
|
@pve_url = @proxmox_vcr.url
|
32
32
|
@username = @proxmox_vcr.username
|
33
33
|
@password = @proxmox_vcr.password
|
34
|
+
Fog::Proxmox.ticket_lifetime = 2 * 60 * 60 # default 2 hours
|
34
35
|
end
|
35
36
|
|
36
|
-
it '
|
37
|
+
it 'checks ticket with path and privs' do
|
37
38
|
VCR.use_cassette('auth') do
|
38
39
|
principal = { username: @username, password: @password, privs: ['User.Modify'], path: 'access', otp: 'proxmox01' }
|
39
40
|
permissions = @service.check_permissions(principal)
|
40
|
-
permissions.wont_be_nil
|
41
|
-
permissions.wont_be_empty
|
42
|
-
permissions['username'].must_equal @username
|
43
|
-
permissions['cap'].wont_be_empty
|
41
|
+
_(permissions).wont_be_nil
|
42
|
+
_(permissions).wont_be_empty
|
43
|
+
_(permissions['username']).must_equal @username
|
44
|
+
_(permissions['cap']).wont_be_empty
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'renew expired ticket' do
|
49
|
+
VCR.use_cassette('auth') do
|
50
|
+
Fog::Proxmox.ticket_lifetime = 0 # ticket expired
|
51
|
+
@connection_options = {}
|
52
|
+
# ignore enterprise proxy
|
53
|
+
@connection_options[:disable_proxy] = true if ENV['DISABLE_PROXY'] == 'true'
|
54
|
+
# ignore dev certificates on servers
|
55
|
+
@connection_options[:ssl_verify_peer] = false if ENV['SSL_VERIFY_PEER'] == 'false'
|
56
|
+
connection_params = {
|
57
|
+
pve_url: @pve_url,
|
58
|
+
pve_username: @username,
|
59
|
+
pve_password: @password,
|
60
|
+
connection_options: @connection_options
|
61
|
+
}
|
62
|
+
_(Fog::Proxmox.credentials_has_expired?).must_equal true
|
63
|
+
Fog::Proxmox.authenticate(connection_params)
|
64
|
+
Fog::Proxmox.ticket_lifetime = 2 * 60 * 60
|
65
|
+
_(Fog::Proxmox.credentials_has_expired?).must_equal false
|
44
66
|
end
|
45
67
|
end
|
46
68
|
|
47
69
|
it 'reads server version' do
|
48
70
|
VCR.use_cassette('read_version') do
|
49
71
|
version = @service.read_version
|
50
|
-
version.wont_be_nil
|
72
|
+
_(version).wont_be_nil
|
51
73
|
version.include? 'version'
|
52
74
|
end
|
53
75
|
end
|
@@ -65,16 +87,16 @@ describe Fog::Proxmox::Identity do
|
|
65
87
|
@service.users.create(bob_hash)
|
66
88
|
# Find by id
|
67
89
|
bob = @service.users.get bob_hash[:userid]
|
68
|
-
bob.wont_be_nil
|
90
|
+
_(bob).wont_be_nil
|
69
91
|
# Create 2nd time must fails
|
70
|
-
proc do
|
92
|
+
_(proc do
|
71
93
|
@service.users.create(bob_hash)
|
72
|
-
end.must_raise Excon::Errors::InternalServerError
|
94
|
+
end).must_raise Excon::Errors::InternalServerError
|
73
95
|
# all users
|
74
96
|
users_all = @service.users.all
|
75
|
-
users_all.wont_be_nil
|
76
|
-
users_all.wont_be_empty
|
77
|
-
users_all.must_include bob
|
97
|
+
_(users_all).wont_be_nil
|
98
|
+
_(users_all).wont_be_empty
|
99
|
+
_(users_all).must_include bob
|
78
100
|
# Update
|
79
101
|
bob.comment = 'novelist'
|
80
102
|
bob.enable = 0
|
@@ -82,14 +104,14 @@ describe Fog::Proxmox::Identity do
|
|
82
104
|
@service.groups.create(groupid: 'group2')
|
83
105
|
bob.groups = %w[group1 group2]
|
84
106
|
bob.update
|
85
|
-
# change bob's password
|
86
|
-
bob.password = '
|
107
|
+
# change bob's password with special characters
|
108
|
+
bob.password = 'bobsinclar&!.-_2'
|
87
109
|
bob.change_password
|
88
110
|
# disabled users
|
89
111
|
users_disabled = @service.users.all('enabled' => 0)
|
90
|
-
users_disabled.wont_be_nil
|
91
|
-
users_disabled.wont_be_empty
|
92
|
-
users_disabled.must_include bob
|
112
|
+
_(users_disabled).wont_be_nil
|
113
|
+
_(users_disabled).wont_be_empty
|
114
|
+
_(users_disabled).must_include bob
|
93
115
|
# Delete
|
94
116
|
bob.destroy
|
95
117
|
group1 = @service.groups.get 'group1'
|
@@ -97,7 +119,7 @@ describe Fog::Proxmox::Identity do
|
|
97
119
|
group2 = @service.groups.get 'group2'
|
98
120
|
group2.destroy
|
99
121
|
bob = @service.users.get bob_hash[:userid]
|
100
|
-
bob.must_be_nil
|
122
|
+
_(bob).must_be_nil
|
101
123
|
end
|
102
124
|
end
|
103
125
|
|
@@ -108,23 +130,23 @@ describe Fog::Proxmox::Identity do
|
|
108
130
|
@service.groups.create(group_hash)
|
109
131
|
# Find by id
|
110
132
|
group = @service.groups.get group_hash[:groupid]
|
111
|
-
group.wont_be_nil
|
133
|
+
_(group).wont_be_nil
|
112
134
|
# Create 2nd time must fails
|
113
|
-
proc do
|
135
|
+
_(proc do
|
114
136
|
@service.groups.create(group_hash)
|
115
|
-
end.must_raise Excon::Errors::InternalServerError
|
137
|
+
end).must_raise Excon::Errors::InternalServerError
|
116
138
|
# Update
|
117
139
|
group.comment = 'Group 1'
|
118
140
|
group.update
|
119
141
|
# all groups
|
120
142
|
groups_all = @service.groups.all
|
121
|
-
groups_all.wont_be_nil
|
122
|
-
groups_all.wont_be_empty
|
123
|
-
groups_all.must_include group
|
143
|
+
_(groups_all).wont_be_nil
|
144
|
+
_(groups_all).wont_be_empty
|
145
|
+
_(groups_all).must_include group
|
124
146
|
# Delete
|
125
147
|
group.destroy
|
126
148
|
group1 = @service.groups.get group_hash[:groupid]
|
127
|
-
group1.must_be_nil
|
149
|
+
_(group1).must_be_nil
|
128
150
|
end
|
129
151
|
end
|
130
152
|
|
@@ -135,23 +157,23 @@ describe Fog::Proxmox::Identity do
|
|
135
157
|
@service.roles.create(role_hash)
|
136
158
|
# Find by id
|
137
159
|
role = @service.roles.get role_hash[:roleid]
|
138
|
-
role.wont_be_nil
|
160
|
+
_(role).wont_be_nil
|
139
161
|
# Create 2nd time must fails
|
140
|
-
proc do
|
162
|
+
_(proc do
|
141
163
|
@service.roles.create(role_hash)
|
142
|
-
end.must_raise Excon::Errors::InternalServerError
|
164
|
+
end).must_raise Excon::Errors::InternalServerError
|
143
165
|
# # Update
|
144
166
|
role.privs = 'Datastore.Audit Sys.Audit VM.Audit'
|
145
167
|
role.update
|
146
168
|
# # all groups
|
147
169
|
roles_all = @service.roles.all
|
148
|
-
roles_all.wont_be_nil
|
149
|
-
roles_all.wont_be_empty
|
150
|
-
roles_all.must_include role
|
170
|
+
_(roles_all).wont_be_nil
|
171
|
+
_(roles_all).wont_be_empty
|
172
|
+
_(roles_all).must_include role
|
151
173
|
# Delete
|
152
174
|
role.destroy
|
153
175
|
role = @service.roles.get role_hash[:roleid]
|
154
|
-
role.must_be_nil
|
176
|
+
_(role).must_be_nil
|
155
177
|
end
|
156
178
|
end
|
157
179
|
|
@@ -180,17 +202,17 @@ describe Fog::Proxmox::Identity do
|
|
180
202
|
@service.domains.create(ldap_hash)
|
181
203
|
# Find by id
|
182
204
|
ldap = @service.domains.get ldap_hash[:realm]
|
183
|
-
ldap.wont_be_nil
|
205
|
+
_(ldap).wont_be_nil
|
184
206
|
# Create 1st time
|
185
207
|
@service.domains.create(ad_hash)
|
186
208
|
# Create 2nd time must fails
|
187
|
-
proc do
|
209
|
+
_(proc do
|
188
210
|
@service.domains.create(ldap_hash)
|
189
|
-
end.must_raise Excon::Errors::InternalServerError
|
211
|
+
end).must_raise Excon::Errors::InternalServerError
|
190
212
|
# # Create 2nd time must fails
|
191
|
-
proc do
|
213
|
+
_(proc do
|
192
214
|
@service.domains.create(ad_hash)
|
193
|
-
end.must_raise Excon::Errors::InternalServerError
|
215
|
+
end).must_raise Excon::Errors::InternalServerError
|
194
216
|
# Update
|
195
217
|
ldap.type.comment = 'Test domain LDAP'
|
196
218
|
ldap.type.tfa = 'type=oath,step=30,digits=8'
|
@@ -202,17 +224,17 @@ describe Fog::Proxmox::Identity do
|
|
202
224
|
ad.update
|
203
225
|
# # all groups
|
204
226
|
domains_all = @service.domains.all
|
205
|
-
domains_all.wont_be_nil
|
206
|
-
domains_all.wont_be_empty
|
207
|
-
domains_all.must_include ldap
|
208
|
-
domains_all.must_include ad
|
227
|
+
_(domains_all).wont_be_nil
|
228
|
+
_(domains_all).wont_be_empty
|
229
|
+
_(domains_all).must_include ldap
|
230
|
+
_(domains_all).must_include ad
|
209
231
|
# Delete
|
210
232
|
ldap.destroy
|
211
233
|
ad.destroy
|
212
234
|
ldap = @service.domains.get ldap_hash[:realm]
|
213
|
-
ldap.must_be_nil
|
235
|
+
_(ldap).must_be_nil
|
214
236
|
ad = @service.domains.get ad_hash[:realm]
|
215
|
-
ad.must_be_nil
|
237
|
+
_(ad).must_be_nil
|
216
238
|
end
|
217
239
|
end
|
218
240
|
|
@@ -228,34 +250,34 @@ describe Fog::Proxmox::Identity do
|
|
228
250
|
}
|
229
251
|
@service.roles.create(roleid: 'PVETestAdmin', privs: 'User.Modify,Group.Allocate')
|
230
252
|
role = @service.roles.get('PVETestAdmin')
|
231
|
-
role.wont_be_nil
|
253
|
+
_(role).wont_be_nil
|
232
254
|
@service.users.create(bob_hash)
|
233
255
|
bob = @service.users.get bob_hash[:userid]
|
234
|
-
bob.wont_be_nil
|
256
|
+
_(bob).wont_be_nil
|
235
257
|
permission = @service.permissions.create(type: 'user', roleid: role.roleid, path: '/access', ugid: bob.userid)
|
236
|
-
permission.wont_be_nil
|
258
|
+
_(permission).wont_be_nil
|
237
259
|
# Read all permissions
|
238
260
|
permissions = @service.permissions.all
|
239
|
-
permissions.wont_be_empty
|
240
|
-
permissions.must_include permission
|
261
|
+
_(permissions).wont_be_empty
|
262
|
+
_(permissions).must_include permission
|
241
263
|
# Remove ACL to users
|
242
264
|
permissions.destroy(type: 'user', roleid: role.roleid, path: '/access', ugid: bob.userid)
|
243
265
|
permission = @service.permissions.get('user', role.roleid, '/access', bob.userid)
|
244
|
-
permission.must_be_nil
|
266
|
+
_(permission).must_be_nil
|
245
267
|
bob = @service.users.get bob_hash[:userid]
|
246
268
|
bob.destroy
|
247
269
|
# Add ACL to groups
|
248
270
|
group1 = @service.groups.create(groupid: 'group1', comment: 'Group 1')
|
249
271
|
permission = @service.permissions.create(type: 'group', roleid: role.roleid, path: '/access', ugid: group1.groupid)
|
250
|
-
permission.wont_be_nil
|
272
|
+
_(permission).wont_be_nil
|
251
273
|
# Read new permission
|
252
274
|
permissions = @service.permissions.all
|
253
|
-
permissions.wont_be_empty
|
254
|
-
permissions.must_include permission
|
275
|
+
_(permissions).wont_be_empty
|
276
|
+
_(permissions).must_include permission
|
255
277
|
# Remove ACL to groups
|
256
278
|
permissions.destroy(type: 'group', roleid: role.roleid, path: '/access', ugid: group1.groupid)
|
257
279
|
permissions = @service.permissions.all
|
258
|
-
permissions.must_be_empty
|
280
|
+
_(permissions).must_be_empty
|
259
281
|
group1.destroy
|
260
282
|
role.destroy
|
261
283
|
end
|
@@ -268,11 +290,11 @@ describe Fog::Proxmox::Identity do
|
|
268
290
|
@service.pools.create(pool_hash)
|
269
291
|
# Find by id
|
270
292
|
pool = @service.pools.get pool_hash[:poolid]
|
271
|
-
pool.wont_be_nil
|
293
|
+
_(pool).wont_be_nil
|
272
294
|
# Create 2nd time must fails
|
273
|
-
proc do
|
295
|
+
_(proc do
|
274
296
|
@service.pools.create(pool_hash)
|
275
|
-
end.must_raise Excon::Errors::InternalServerError
|
297
|
+
end).must_raise Excon::Errors::InternalServerError
|
276
298
|
# Update
|
277
299
|
# Add comment
|
278
300
|
pool.comment = 'Pool 1'
|
@@ -282,15 +304,15 @@ describe Fog::Proxmox::Identity do
|
|
282
304
|
pool.add_storage 'local-lvm'
|
283
305
|
# all pools
|
284
306
|
pools_all = @service.pools.all
|
285
|
-
pools_all.wont_be_nil
|
286
|
-
pools_all.wont_be_empty
|
287
|
-
pools_all.must_include pool
|
307
|
+
_(pools_all).wont_be_nil
|
308
|
+
_(pools_all).wont_be_empty
|
309
|
+
_(pools_all).must_include pool
|
288
310
|
# Delete
|
289
311
|
pool.remove_server 100
|
290
312
|
pool.remove_storage 'local-lvm'
|
291
313
|
pool.destroy
|
292
314
|
pool = @service.pools.get pool_hash[:poolid]
|
293
|
-
pool.must_be_nil
|
315
|
+
_(pool).must_be_nil
|
294
316
|
end
|
295
317
|
end
|
296
318
|
end
|