Merge ~blr/maas:add-machine-maas-objform into maas:master
- Git
- lp:~blr/maas
- add-machine-maas-objform
- Merge into master
Proposed by
Kit Randel
Status: | Rejected |
---|---|
Rejected by: | Adam Collard |
Proposed branch: | ~blr/maas:add-machine-maas-objform |
Merge into: | maas:master |
Diff against target: |
329 lines (+162/-96) 6 files modified
src/maasserver/static/js/angular/controllers/add_hardware.js (+2/-1) src/maasserver/static/js/angular/directives/nodelist/add_machine.js (+5/-0) src/maasserver/static/js/angular/services/manager.js (+2/-1) src/maasserver/static/partials/nodelist/add-machine.html (+150/-0) src/maasserver/static/partials/nodes-list.html (+2/-94) webpack.config.js (+1/-0) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
MAAS Maintainers | Pending | ||
Review via email: mp+348505@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
Unmerged commits
- 2849879... by Kit Randel
-
Initial form
- b39b04e... by Kit Randel
-
Add partial
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/src/maasserver/static/js/angular/controllers/add_hardware.js b/src/maasserver/static/js/angular/controllers/add_hardware.js | |||
2 | index 5e1b0d8..9d9e612 100644 | |||
3 | --- a/src/maasserver/static/js/angular/controllers/add_hardware.js | |||
4 | +++ b/src/maasserver/static/js/angular/controllers/add_hardware.js | |||
5 | @@ -19,6 +19,7 @@ angular.module('MAAS').controller('AddHardwareController', [ | |||
6 | 19 | parentScope.addHardwareScope = $scope; | 19 | parentScope.addHardwareScope = $scope; |
7 | 20 | 20 | ||
8 | 21 | // Set initial values. | 21 | // Set initial values. |
9 | 22 | $scope.machineManager = MachinesManager; | ||
10 | 22 | $scope.viewable = false; | 23 | $scope.viewable = false; |
11 | 23 | $scope.model = 'machine'; | 24 | $scope.model = 'machine'; |
12 | 24 | $scope.zones = ZonesManager.getItems(); | 25 | $scope.zones = ZonesManager.getItems(); |
13 | @@ -367,7 +368,7 @@ angular.module('MAAS').controller('AddHardwareController', [ | |||
14 | 367 | var pxe_mac = macs.shift().mac; | 368 | var pxe_mac = macs.shift().mac; |
15 | 368 | var extra_macs = macs.map(function(mac) { return mac.mac; }); | 369 | var extra_macs = macs.map(function(mac) { return mac.mac; }); |
16 | 369 | 370 | ||
18 | 370 | // Return the new object. | 371 | // Return the new object. |
19 | 371 | return { | 372 | return { |
20 | 372 | hostname: machine.name, | 373 | hostname: machine.name, |
21 | 373 | domain: machine.domain, | 374 | domain: machine.domain, |
22 | diff --git a/src/maasserver/static/js/angular/directives/nodelist/add_machine.js b/src/maasserver/static/js/angular/directives/nodelist/add_machine.js | |||
23 | 374 | new file mode 100644 | 375 | new file mode 100644 |
24 | index 0000000..67f89f5 | |||
25 | --- /dev/null | |||
26 | +++ b/src/maasserver/static/js/angular/directives/nodelist/add_machine.js | |||
27 | @@ -0,0 +1,5 @@ | |||
28 | 1 | angular.module('MAAS').directive('addMachine', function() { | ||
29 | 2 | return { | ||
30 | 3 | templateUrl: 'static/partials/nodelist/add-machine.html' | ||
31 | 4 | }; | ||
32 | 5 | }); | ||
33 | diff --git a/src/maasserver/static/js/angular/services/manager.js b/src/maasserver/static/js/angular/services/manager.js | |||
34 | index 6703b52..2815f9d 100644 | |||
35 | --- a/src/maasserver/static/js/angular/services/manager.js | |||
36 | +++ b/src/maasserver/static/js/angular/services/manager.js | |||
37 | @@ -389,7 +389,8 @@ angular.module('MAAS').service( | |||
38 | 389 | }; | 389 | }; |
39 | 390 | 390 | ||
40 | 391 | // Send the create information to the region. | 391 | // Send the create information to the region. |
42 | 392 | Manager.prototype.createItem = function(item) { | 392 | Manager.prototype.createItem = function(item) { |
43 | 393 | console.log(item) | ||
44 | 393 | var self = this; | 394 | var self = this; |
45 | 394 | var method = this._handler + ".create"; | 395 | var method = this._handler + ".create"; |
46 | 395 | item = angular.copy(item); | 396 | item = angular.copy(item); |
47 | diff --git a/src/maasserver/static/partials/nodelist/add-machine.html b/src/maasserver/static/partials/nodelist/add-machine.html | |||
48 | 396 | new file mode 100644 | 397 | new file mode 100644 |
49 | index 0000000..f458416 | |||
50 | --- /dev/null | |||
51 | +++ b/src/maasserver/static/partials/nodelist/add-machine.html | |||
52 | @@ -0,0 +1,150 @@ | |||
53 | 1 | <maas-obj-form obj="machine" manager="machineManager" manager-method="createItem" | ||
54 | 2 | inline="false" save-on-blur="false" after-save="cancel"> | ||
55 | 3 | |||
56 | 4 | <section class="page-header__section row"> | ||
57 | 5 | <div class="p-form p-form--stacked ng-scope"> | ||
58 | 6 | <div class="col-6"> | ||
59 | 7 | <maas-obj-field | ||
60 | 8 | type="text" key="name" label="Machine name" subtle="false" | ||
61 | 9 | placeholder="Choose a machine name (optional)" | ||
62 | 10 | label-width="2" input-width="3"> | ||
63 | 11 | </maas-obj-field> | ||
64 | 12 | <maas-obj-field | ||
65 | 13 | type="options" key="domain" label="Domain" | ||
66 | 14 | options="domain as domain.name for domain in domains" | ||
67 | 15 | label-width="2" input-width="3"> | ||
68 | 16 | </maas-obj-field> | ||
69 | 17 | <maas-obj-field | ||
70 | 18 | type="options" key="architecture" label="Architecture" | ||
71 | 19 | options="arch for arch in architectures" | ||
72 | 20 | label-width="2" input-width="3"> | ||
73 | 21 | </maas-obj-field> | ||
74 | 22 | <maas-obj-field | ||
75 | 23 | type="options" key="hwe_kernel" label="Minimum Kernel" | ||
76 | 24 | options="hwe_kernel[0] as hwe_kernel[1] for hwe_kernel in hwe_kernels" | ||
77 | 25 | label-width="2" input-width="3"> | ||
78 | 26 | </maas-obj-field> | ||
79 | 27 | <maas-obj-field | ||
80 | 28 | type="options" key="zone" label="Zone" | ||
81 | 29 | options="zone as zone.name for zone in zones" | ||
82 | 30 | label-width="2" input-width="3"> | ||
83 | 31 | </maas-obj-field> | ||
84 | 32 | <maas-obj-field | ||
85 | 33 | type="options" key="pool" label="Resource Pool" | ||
86 | 34 | options="pool as pool.name for pool in pools" | ||
87 | 35 | label-width="2" input-width="3"> | ||
88 | 36 | </maas-obj-field> | ||
89 | 37 | <div class="p-form__group" data-ng-repeat="mac in machine.macs"> | ||
90 | 38 | <maas-obj-field | ||
91 | 39 | type="text" key="mac_addresses" label="MAC Address" | ||
92 | 40 | placeholder="00:00:00:00:00:00"> | ||
93 | 41 | </maas-obj-field> | ||
94 | 42 | </div> | ||
95 | 43 | <div class="p-form__group"> | ||
96 | 44 | <div class="col-3"> </div> | ||
97 | 45 | <div class="col-3"> | ||
98 | 46 | <button class="p-button--neutral u-float--right" | ||
99 | 47 | data-ng-click="addMac()">+ Add MAC Address</button> | ||
100 | 48 | </div> | ||
101 | 49 | </div> | ||
102 | 50 | </div> | ||
103 | 51 | <div class="col-6" | ||
104 | 52 | data-maas-power-parameters="power_types" | ||
105 | 53 | data-ng-model="machine.power"> | ||
106 | 54 | </div> | ||
107 | 55 | </div> | ||
108 | 56 | </section> | ||
109 | 57 | |||
110 | 58 | <section class="page-header_section row"> | ||
111 | 59 | <div class="page-header__controls p-strip u-align--right u-no-padding--bottom"> | ||
112 | 60 | <hr> | ||
113 | 61 | <button class="p-button--base" type="button" data-ng-click="cancel()">Cancel</button> | ||
114 | 62 | <button class="p-button--neutral" | ||
115 | 63 | data-ng-disabled="machineHasError()" | ||
116 | 64 | data-ng-click="saveMachine(true)">Save and add another</button> | ||
117 | 65 | <button class="p-button--positive u-no-margin--top" maas-obj-save>Save Machine</button> | ||
118 | 66 | </div> | ||
119 | 67 | </section> | ||
120 | 68 | </maas-obj-form> | ||
121 | 69 | |||
122 | 70 | <!-- | ||
123 | 71 | <h3 class="page-header__dropdown-title">Add machine</h3> | ||
124 | 72 | <form class="p-form p-form--stacked"> | ||
125 | 73 | <div class="col-6"> | ||
126 | 74 | <div class="p-form__group"> | ||
127 | 75 | <label for="machine-name" class="p-form__label col-2">Machine name</label> | ||
128 | 76 | <div class="p-form__group-input col-3"> | ||
129 | 77 | <input type="text" id="machine-name" placeholder="Choose a machine name (optional)" | ||
130 | 78 | data-ng-model="machine.name"> | ||
131 | 79 | </div> | ||
132 | 80 | </div> | ||
133 | 81 | <div class="p-form__group"> | ||
134 | 82 | <label for="domain" class="p-form__label col-2">Domain</label> | ||
135 | 83 | <div class="p-form__group-input col-3"> | ||
136 | 84 | <select name="domain" id="domain" | ||
137 | 85 | data-ng-model="machine.domain" | ||
138 | 86 | data-ng-options="domain as domain.name for domain in domains"> | ||
139 | 87 | <option value="" disabled>Choose a domain</option> | ||
140 | 88 | </select> | ||
141 | 89 | </div> | ||
142 | 90 | </div> | ||
143 | 91 | <div class="p-form__group"> | ||
144 | 92 | <label for="architecture" class="p-form__label col-2">Architecture</label> | ||
145 | 93 | <div class="p-form__group-input col-3"> | ||
146 | 94 | <select name="architecture" id="architecture" | ||
147 | 95 | data-ng-model="machine.architecture" | ||
148 | 96 | data-ng-options="arch for arch in architectures"> | ||
149 | 97 | <option value="" disabled>Choose an architecture</option> | ||
150 | 98 | </select> | ||
151 | 99 | </div> | ||
152 | 100 | </div> | ||
153 | 101 | <div class="p-form__group"> | ||
154 | 102 | <label for="min_hwe_kernel" class="p-form__label col-2">Minimum Kernel</label> | ||
155 | 103 | <div class="p-form__group-input col-3"> | ||
156 | 104 | <select name="min_hwe_kernel" id="min_hwe_kernel" | ||
157 | 105 | data-ng-model="machine.min_hwe_kernel" | ||
158 | 106 | data-ng-options="hwe_kernel[0] as hwe_kernel[1] for hwe_kernel in hwe_kernels"> | ||
159 | 107 | <option value="">No minimum kernel</option> | ||
160 | 108 | </select> | ||
161 | 109 | </div> | ||
162 | 110 | </div> | ||
163 | 111 | <div class="p-form__group"> | ||
164 | 112 | <label for="zone4" class="p-form__label col-2">Zone</label> | ||
165 | 113 | <select name="zone" id="zone4" class="col-3" | ||
166 | 114 | data-ng-model="machine.zone" | ||
167 | 115 | data-ng-options="zone as zone.name for zone in zones"> | ||
168 | 116 | </select> | ||
169 | 117 | </div> | ||
170 | 118 | <div class="p-form__group"> | ||
171 | 119 | <label for="pool-select" class="p-form__label col-2">Resource pool</label> | ||
172 | 120 | <select name="pool" id="pool-select" class="col-3" | ||
173 | 121 | data-ng-model="machine.pool" | ||
174 | 122 | data-ng-options="pool as pool.name for pool in pools"> | ||
175 | 123 | </select> | ||
176 | 124 | </div> | ||
177 | 125 | <div class="p-form__group" data-ng-repeat="mac in machine.macs"> | ||
178 | 126 | <label for="mac-address" class="p-form__label col-2"><span data-ng-hide="mac !== machine.macs[0]">MAC Address</span> </label> | ||
179 | 127 | <div class="p-form__group-input col-3 p-search-box"> | ||
180 | 128 | <input type="text" id="mac-address" placeholder="00:00:00:00:00:00" class="p-search-box__input" | ||
181 | 129 | maxlength="17" | ||
182 | 130 | data-ng-class="{ 'has-error': mac.error }" | ||
183 | 131 | data-ng-model="mac.mac" | ||
184 | 132 | data-ng-pattern="macAddressRegex" | ||
185 | 133 | data-ng-change="validateMac(mac)" | ||
186 | 134 | mac-address> | ||
187 | 135 | <button type="reset" title="Delete MAC" class="p-search-box__button" | ||
188 | 136 | data-ng-hide="mac === machine.macs[0]" data-ng-click="removeMac(mac)"><i class="p-icon--close"></i></button> | ||
189 | 137 | </div> | ||
190 | 138 | </div> | ||
191 | 139 | <div class="p-form__group"> | ||
192 | 140 | <div class="col-5"> | ||
193 | 141 | <button class="p-button--neutral u-float--right" data-ng-click="addMac()">+ Add MAC Address</a> | ||
194 | 142 | </div> | ||
195 | 143 | </div> | ||
196 | 144 | </div> | ||
197 | 145 | <div class="col-6" | ||
198 | 146 | data-maas-power-parameters="power_types" | ||
199 | 147 | data-ng-model="machine.power"> | ||
200 | 148 | </div> | ||
201 | 149 | </form> | ||
202 | 150 | --> | ||
203 | diff --git a/src/maasserver/static/partials/nodes-list.html b/src/maasserver/static/partials/nodes-list.html | |||
204 | index 8310b39..1da0666 100644 | |||
205 | --- a/src/maasserver/static/partials/nodes-list.html | |||
206 | +++ b/src/maasserver/static/partials/nodes-list.html | |||
207 | @@ -356,86 +356,9 @@ | |||
208 | 356 | <hr /> | 356 | <hr /> |
209 | 357 | <!-- XXX ricgard 2016-06-16 - Need to add e2e test. --> | 357 | <!-- XXX ricgard 2016-06-16 - Need to add e2e test. --> |
210 | 358 | <section class="page-header__section ng-hide" data-ng-show="showMachine()"> | 358 | <section class="page-header__section ng-hide" data-ng-show="showMachine()"> |
290 | 359 | <h3 class="page-header__dropdown-title">Add machine</h3> | 359 | <add-machine></add-machine> |
212 | 360 | <form class="p-form p-form--stacked"> | ||
213 | 361 | <div class="col-6"> | ||
214 | 362 | <div class="p-form__group"> | ||
215 | 363 | <label for="machine-name" class="p-form__label col-2">Machine name</label> | ||
216 | 364 | <div class="p-form__group-input col-3"> | ||
217 | 365 | <input type="text" id="machine-name" placeholder="Choose a machine name (optional)" | ||
218 | 366 | data-ng-model="machine.name"> | ||
219 | 367 | </div> | ||
220 | 368 | </div> | ||
221 | 369 | <div class="p-form__group"> | ||
222 | 370 | <label for="domain" class="p-form__label col-2">Domain</label> | ||
223 | 371 | <div class="p-form__group-input col-3"> | ||
224 | 372 | <select name="domain" id="domain" | ||
225 | 373 | data-ng-model="machine.domain" | ||
226 | 374 | data-ng-options="domain as domain.name for domain in domains"> | ||
227 | 375 | <option value="" disabled>Choose a domain</option> | ||
228 | 376 | </select> | ||
229 | 377 | </div> | ||
230 | 378 | </div> | ||
231 | 379 | <div class="p-form__group"> | ||
232 | 380 | <label for="architecture" class="p-form__label col-2">Architecture</label> | ||
233 | 381 | <div class="p-form__group-input col-3"> | ||
234 | 382 | <select name="architecture" id="architecture" | ||
235 | 383 | data-ng-model="machine.architecture" | ||
236 | 384 | data-ng-options="arch for arch in architectures"> | ||
237 | 385 | <option value="" disabled>Choose an architecture</option> | ||
238 | 386 | </select> | ||
239 | 387 | </div> | ||
240 | 388 | </div> | ||
241 | 389 | <div class="p-form__group"> | ||
242 | 390 | <label for="min_hwe_kernel" class="p-form__label col-2">Minimum Kernel</label> | ||
243 | 391 | <div class="p-form__group-input col-3"> | ||
244 | 392 | <select name="min_hwe_kernel" id="min_hwe_kernel" | ||
245 | 393 | data-ng-model="machine.min_hwe_kernel" | ||
246 | 394 | data-ng-options="hwe_kernel[0] as hwe_kernel[1] for hwe_kernel in hwe_kernels"> | ||
247 | 395 | <option value="">No minimum kernel</option> | ||
248 | 396 | </select> | ||
249 | 397 | </div> | ||
250 | 398 | </div> | ||
251 | 399 | <div class="p-form__group"> | ||
252 | 400 | <label for="zone4" class="p-form__label col-2">Zone</label> | ||
253 | 401 | <select name="zone" id="zone4" class="col-3" | ||
254 | 402 | data-ng-model="machine.zone" | ||
255 | 403 | data-ng-options="zone as zone.name for zone in zones"> | ||
256 | 404 | </select> | ||
257 | 405 | </div> | ||
258 | 406 | <div class="p-form__group"> | ||
259 | 407 | <label for="pool-select" class="p-form__label col-2">Resource pool</label> | ||
260 | 408 | <select name="pool" id="pool-select" class="col-3" | ||
261 | 409 | data-ng-model="machine.pool" | ||
262 | 410 | data-ng-options="pool as pool.name for pool in pools"> | ||
263 | 411 | </select> | ||
264 | 412 | </div> | ||
265 | 413 | <div class="p-form__group" data-ng-repeat="mac in machine.macs"> | ||
266 | 414 | <label for="mac-address" class="p-form__label col-2"><span data-ng-hide="mac !== machine.macs[0]">MAC Address</span> </label> | ||
267 | 415 | <div class="p-form__group-input col-3 p-search-box"> | ||
268 | 416 | <input type="text" id="mac-address" placeholder="00:00:00:00:00:00" class="p-search-box__input" | ||
269 | 417 | maxlength="17" | ||
270 | 418 | data-ng-class="{ 'has-error': mac.error }" | ||
271 | 419 | data-ng-model="mac.mac" | ||
272 | 420 | data-ng-pattern="macAddressRegex" | ||
273 | 421 | data-ng-change="validateMac(mac)" | ||
274 | 422 | mac-address> | ||
275 | 423 | <button type="reset" title="Delete MAC" class="p-search-box__button" | ||
276 | 424 | data-ng-hide="mac === machine.macs[0]" data-ng-click="removeMac(mac)"><i class="p-icon--close"></i></button> | ||
277 | 425 | </div> | ||
278 | 426 | </div> | ||
279 | 427 | <div class="p-form__group"> | ||
280 | 428 | <div class="col-5"> | ||
281 | 429 | <button class="p-button--neutral u-float--right" data-ng-click="addMac()">+ Add MAC Address</a> | ||
282 | 430 | </div> | ||
283 | 431 | </div> | ||
284 | 432 | </div> | ||
285 | 433 | <div class="col-6" | ||
286 | 434 | data-maas-power-parameters="power_types" | ||
287 | 435 | data-ng-model="machine.power"> | ||
288 | 436 | </div> | ||
289 | 437 | </form> | ||
291 | 438 | </section> | 360 | </section> |
292 | 361 | |||
293 | 439 | <section class="page-header__section col-12 ng-hide" data-ng-show="showChassis()"> | 362 | <section class="page-header__section col-12 ng-hide" data-ng-show="showChassis()"> |
294 | 440 | <h3 class="page-header__dropdown-title">Add chassis</h3> | 363 | <h3 class="page-header__dropdown-title">Add chassis</h3> |
295 | 441 | <form action="post" class="p-form p-form--stacked"> | 364 | <form action="post" class="p-form p-form--stacked"> |
296 | @@ -458,21 +381,6 @@ | |||
297 | 458 | </section> | 381 | </section> |
298 | 459 | 382 | ||
299 | 460 | <!-- XXX ricgard 2016-06-16 - Need to add e2e test. --> | 383 | <!-- XXX ricgard 2016-06-16 - Need to add e2e test. --> |
300 | 461 | <section class="page-header__section col-12" data-ng-show="showMachine()"> | ||
301 | 462 | <p class="page-header__message page-header__message--error ng-hide" data-ng-show="error">{$ error $}</p> | ||
302 | 463 | <div class="page-header__controls p-strip u-align--right u-no-padding--bottom"> | ||
303 | 464 | <hr /> | ||
304 | 465 | <button class="p-button--base" type="button" data-ng-click="cancel()">Cancel</button> | ||
305 | 466 | <button class="p-button--neutral" | ||
306 | 467 | data-ng-disabled="machineHasError()" | ||
307 | 468 | data-ng-click="saveMachine(true)">Save and add another</button> | ||
308 | 469 | <button class="p-button--positive" | ||
309 | 470 | data-ng-disabled="machineHasError()" | ||
310 | 471 | data-ng-click="saveMachine(false)">Save machine</button> | ||
311 | 472 | </div> | ||
312 | 473 | </section> | ||
313 | 474 | |||
314 | 475 | <!-- XXX ricgard 2016-06-16 - Need to add e2e test. --> | ||
315 | 476 | <section class="page-header__section col-12 ng-hide" data-ng-show="showChassis()"> | 384 | <section class="page-header__section col-12 ng-hide" data-ng-show="showChassis()"> |
316 | 477 | <p class="page-header__message page-header__message--error ng-hide" data-ng-show="error">{$ error $}</p> | 385 | <p class="page-header__message page-header__message--error ng-hide" data-ng-show="error">{$ error $}</p> |
317 | 478 | <div class="page-header__controls p-strip u-align--right u-no-padding--bottom"> | 386 | <div class="page-header__controls p-strip u-align--right u-no-padding--bottom"> |
318 | diff --git a/webpack.config.js b/webpack.config.js | |||
319 | index 00dadcb..34da078 100644 | |||
320 | --- a/webpack.config.js | |||
321 | +++ b/webpack.config.js | |||
322 | @@ -13,6 +13,7 @@ module.exports = { | |||
323 | 13 | glob.sync('./src/maasserver/static/js/angular/*.js'), | 13 | glob.sync('./src/maasserver/static/js/angular/*.js'), |
324 | 14 | glob.sync('./src/maasserver/static/js/angular/controllers/*.js'), | 14 | glob.sync('./src/maasserver/static/js/angular/controllers/*.js'), |
325 | 15 | glob.sync('./src/maasserver/static/js/angular/directives/*.js'), | 15 | glob.sync('./src/maasserver/static/js/angular/directives/*.js'), |
326 | 16 | glob.sync('./src/maasserver/static/js/angular/directives/nodelist/*.js'), | ||
327 | 16 | glob.sync('./src/maasserver/static/js/angular/filters/*.js'), | 17 | glob.sync('./src/maasserver/static/js/angular/filters/*.js'), |
328 | 17 | glob.sync('./src/maasserver/static/js/angular/services/*.js'), | 18 | glob.sync('./src/maasserver/static/js/angular/services/*.js'), |
329 | 18 | glob.sync('./src/maasserver/static/js/angular/factories/*.js') | 19 | glob.sync('./src/maasserver/static/js/angular/factories/*.js') |