Merge ~blr/maas:add-machine-maas-objform into maas: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)
Reviewer Review Type Date Requested Status
MAAS Maintainers Pending
Review via email: mp+348505@code.launchpad.net
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
1diff --git a/src/maasserver/static/js/angular/controllers/add_hardware.js b/src/maasserver/static/js/angular/controllers/add_hardware.js
2index 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 parentScope.addHardwareScope = $scope;
7
8 // Set initial values.
9+ $scope.machineManager = MachinesManager;
10 $scope.viewable = false;
11 $scope.model = 'machine';
12 $scope.zones = ZonesManager.getItems();
13@@ -367,7 +368,7 @@ angular.module('MAAS').controller('AddHardwareController', [
14 var pxe_mac = macs.shift().mac;
15 var extra_macs = macs.map(function(mac) { return mac.mac; });
16
17- // Return the new object.
18+ // Return the new object.
19 return {
20 hostname: machine.name,
21 domain: machine.domain,
22diff --git a/src/maasserver/static/js/angular/directives/nodelist/add_machine.js b/src/maasserver/static/js/angular/directives/nodelist/add_machine.js
23new file mode 100644
24index 0000000..67f89f5
25--- /dev/null
26+++ b/src/maasserver/static/js/angular/directives/nodelist/add_machine.js
27@@ -0,0 +1,5 @@
28+angular.module('MAAS').directive('addMachine', function() {
29+ return {
30+ templateUrl: 'static/partials/nodelist/add-machine.html'
31+ };
32+});
33diff --git a/src/maasserver/static/js/angular/services/manager.js b/src/maasserver/static/js/angular/services/manager.js
34index 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 };
39
40 // Send the create information to the region.
41- Manager.prototype.createItem = function(item) {
42+ Manager.prototype.createItem = function(item) {
43+ console.log(item)
44 var self = this;
45 var method = this._handler + ".create";
46 item = angular.copy(item);
47diff --git a/src/maasserver/static/partials/nodelist/add-machine.html b/src/maasserver/static/partials/nodelist/add-machine.html
48new file mode 100644
49index 0000000..f458416
50--- /dev/null
51+++ b/src/maasserver/static/partials/nodelist/add-machine.html
52@@ -0,0 +1,150 @@
53+<maas-obj-form obj="machine" manager="machineManager" manager-method="createItem"
54+ inline="false" save-on-blur="false" after-save="cancel">
55+
56+ <section class="page-header__section row">
57+ <div class="p-form p-form--stacked ng-scope">
58+ <div class="col-6">
59+ <maas-obj-field
60+ type="text" key="name" label="Machine name" subtle="false"
61+ placeholder="Choose a machine name (optional)"
62+ label-width="2" input-width="3">
63+ </maas-obj-field>
64+ <maas-obj-field
65+ type="options" key="domain" label="Domain"
66+ options="domain as domain.name for domain in domains"
67+ label-width="2" input-width="3">
68+ </maas-obj-field>
69+ <maas-obj-field
70+ type="options" key="architecture" label="Architecture"
71+ options="arch for arch in architectures"
72+ label-width="2" input-width="3">
73+ </maas-obj-field>
74+ <maas-obj-field
75+ type="options" key="hwe_kernel" label="Minimum Kernel"
76+ options="hwe_kernel[0] as hwe_kernel[1] for hwe_kernel in hwe_kernels"
77+ label-width="2" input-width="3">
78+ </maas-obj-field>
79+ <maas-obj-field
80+ type="options" key="zone" label="Zone"
81+ options="zone as zone.name for zone in zones"
82+ label-width="2" input-width="3">
83+ </maas-obj-field>
84+ <maas-obj-field
85+ type="options" key="pool" label="Resource Pool"
86+ options="pool as pool.name for pool in pools"
87+ label-width="2" input-width="3">
88+ </maas-obj-field>
89+ <div class="p-form__group" data-ng-repeat="mac in machine.macs">
90+ <maas-obj-field
91+ type="text" key="mac_addresses" label="MAC Address"
92+ placeholder="00:00:00:00:00:00">
93+ </maas-obj-field>
94+ </div>
95+ <div class="p-form__group">
96+ <div class="col-3">&nbsp;</div>
97+ <div class="col-3">
98+ <button class="p-button--neutral u-float--right"
99+ data-ng-click="addMac()">+ Add MAC Address</button>
100+ </div>
101+ </div>
102+ </div>
103+ <div class="col-6"
104+ data-maas-power-parameters="power_types"
105+ data-ng-model="machine.power">
106+ </div>
107+ </div>
108+ </section>
109+
110+ <section class="page-header_section row">
111+ <div class="page-header__controls p-strip u-align--right u-no-padding--bottom">
112+ <hr>
113+ <button class="p-button--base" type="button" data-ng-click="cancel()">Cancel</button>
114+ <button class="p-button--neutral"
115+ data-ng-disabled="machineHasError()"
116+ data-ng-click="saveMachine(true)">Save and add another</button>
117+ <button class="p-button--positive u-no-margin--top" maas-obj-save>Save Machine</button>
118+ </div>
119+ </section>
120+</maas-obj-form>
121+
122+<!--
123+<h3 class="page-header__dropdown-title">Add machine</h3>
124+<form class="p-form p-form--stacked">
125+ <div class="col-6">
126+ <div class="p-form__group">
127+ <label for="machine-name" class="p-form__label col-2">Machine name</label>
128+ <div class="p-form__group-input col-3">
129+ <input type="text" id="machine-name" placeholder="Choose a machine name (optional)"
130+ data-ng-model="machine.name">
131+ </div>
132+ </div>
133+ <div class="p-form__group">
134+ <label for="domain" class="p-form__label col-2">Domain</label>
135+ <div class="p-form__group-input col-3">
136+ <select name="domain" id="domain"
137+ data-ng-model="machine.domain"
138+ data-ng-options="domain as domain.name for domain in domains">
139+ <option value="" disabled>Choose a domain</option>
140+ </select>
141+ </div>
142+ </div>
143+ <div class="p-form__group">
144+ <label for="architecture" class="p-form__label col-2">Architecture</label>
145+ <div class="p-form__group-input col-3">
146+ <select name="architecture" id="architecture"
147+ data-ng-model="machine.architecture"
148+ data-ng-options="arch for arch in architectures">
149+ <option value="" disabled>Choose an architecture</option>
150+ </select>
151+ </div>
152+ </div>
153+ <div class="p-form__group">
154+ <label for="min_hwe_kernel" class="p-form__label col-2">Minimum Kernel</label>
155+ <div class="p-form__group-input col-3">
156+ <select name="min_hwe_kernel" id="min_hwe_kernel"
157+ data-ng-model="machine.min_hwe_kernel"
158+ data-ng-options="hwe_kernel[0] as hwe_kernel[1] for hwe_kernel in hwe_kernels">
159+ <option value="">No minimum kernel</option>
160+ </select>
161+ </div>
162+ </div>
163+ <div class="p-form__group">
164+ <label for="zone4" class="p-form__label col-2">Zone</label>
165+ <select name="zone" id="zone4" class="col-3"
166+ data-ng-model="machine.zone"
167+ data-ng-options="zone as zone.name for zone in zones">
168+ </select>
169+ </div>
170+ <div class="p-form__group">
171+ <label for="pool-select" class="p-form__label col-2">Resource pool</label>
172+ <select name="pool" id="pool-select" class="col-3"
173+ data-ng-model="machine.pool"
174+ data-ng-options="pool as pool.name for pool in pools">
175+ </select>
176+ </div>
177+ <div class="p-form__group" data-ng-repeat="mac in machine.macs">
178+ <label for="mac-address" class="p-form__label col-2"><span data-ng-hide="mac !== machine.macs[0]">MAC Address</span>&nbsp;</label>
179+ <div class="p-form__group-input col-3 p-search-box">
180+ <input type="text" id="mac-address" placeholder="00:00:00:00:00:00" class="p-search-box__input"
181+ maxlength="17"
182+ data-ng-class="{ 'has-error': mac.error }"
183+ data-ng-model="mac.mac"
184+ data-ng-pattern="macAddressRegex"
185+ data-ng-change="validateMac(mac)"
186+ mac-address>
187+ <button type="reset" title="Delete MAC" class="p-search-box__button"
188+ data-ng-hide="mac === machine.macs[0]" data-ng-click="removeMac(mac)"><i class="p-icon--close"></i></button>
189+ </div>
190+ </div>
191+ <div class="p-form__group">
192+ <div class="col-5">
193+ <button class="p-button--neutral u-float--right" data-ng-click="addMac()">+ Add MAC Address</a>
194+ </div>
195+ </div>
196+ </div>
197+ <div class="col-6"
198+ data-maas-power-parameters="power_types"
199+ data-ng-model="machine.power">
200+ </div>
201+</form>
202+-->
203diff --git a/src/maasserver/static/partials/nodes-list.html b/src/maasserver/static/partials/nodes-list.html
204index 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 <hr />
209 <!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
210 <section class="page-header__section ng-hide" data-ng-show="showMachine()">
211- <h3 class="page-header__dropdown-title">Add machine</h3>
212- <form class="p-form p-form--stacked">
213- <div class="col-6">
214- <div class="p-form__group">
215- <label for="machine-name" class="p-form__label col-2">Machine name</label>
216- <div class="p-form__group-input col-3">
217- <input type="text" id="machine-name" placeholder="Choose a machine name (optional)"
218- data-ng-model="machine.name">
219- </div>
220- </div>
221- <div class="p-form__group">
222- <label for="domain" class="p-form__label col-2">Domain</label>
223- <div class="p-form__group-input col-3">
224- <select name="domain" id="domain"
225- data-ng-model="machine.domain"
226- data-ng-options="domain as domain.name for domain in domains">
227- <option value="" disabled>Choose a domain</option>
228- </select>
229- </div>
230- </div>
231- <div class="p-form__group">
232- <label for="architecture" class="p-form__label col-2">Architecture</label>
233- <div class="p-form__group-input col-3">
234- <select name="architecture" id="architecture"
235- data-ng-model="machine.architecture"
236- data-ng-options="arch for arch in architectures">
237- <option value="" disabled>Choose an architecture</option>
238- </select>
239- </div>
240- </div>
241- <div class="p-form__group">
242- <label for="min_hwe_kernel" class="p-form__label col-2">Minimum Kernel</label>
243- <div class="p-form__group-input col-3">
244- <select name="min_hwe_kernel" id="min_hwe_kernel"
245- data-ng-model="machine.min_hwe_kernel"
246- data-ng-options="hwe_kernel[0] as hwe_kernel[1] for hwe_kernel in hwe_kernels">
247- <option value="">No minimum kernel</option>
248- </select>
249- </div>
250- </div>
251- <div class="p-form__group">
252- <label for="zone4" class="p-form__label col-2">Zone</label>
253- <select name="zone" id="zone4" class="col-3"
254- data-ng-model="machine.zone"
255- data-ng-options="zone as zone.name for zone in zones">
256- </select>
257- </div>
258- <div class="p-form__group">
259- <label for="pool-select" class="p-form__label col-2">Resource pool</label>
260- <select name="pool" id="pool-select" class="col-3"
261- data-ng-model="machine.pool"
262- data-ng-options="pool as pool.name for pool in pools">
263- </select>
264- </div>
265- <div class="p-form__group" data-ng-repeat="mac in machine.macs">
266- <label for="mac-address" class="p-form__label col-2"><span data-ng-hide="mac !== machine.macs[0]">MAC Address</span>&nbsp;</label>
267- <div class="p-form__group-input col-3 p-search-box">
268- <input type="text" id="mac-address" placeholder="00:00:00:00:00:00" class="p-search-box__input"
269- maxlength="17"
270- data-ng-class="{ 'has-error': mac.error }"
271- data-ng-model="mac.mac"
272- data-ng-pattern="macAddressRegex"
273- data-ng-change="validateMac(mac)"
274- mac-address>
275- <button type="reset" title="Delete MAC" class="p-search-box__button"
276- data-ng-hide="mac === machine.macs[0]" data-ng-click="removeMac(mac)"><i class="p-icon--close"></i></button>
277- </div>
278- </div>
279- <div class="p-form__group">
280- <div class="col-5">
281- <button class="p-button--neutral u-float--right" data-ng-click="addMac()">+ Add MAC Address</a>
282- </div>
283- </div>
284- </div>
285- <div class="col-6"
286- data-maas-power-parameters="power_types"
287- data-ng-model="machine.power">
288- </div>
289- </form>
290+ <add-machine></add-machine>
291 </section>
292+
293 <section class="page-header__section col-12 ng-hide" data-ng-show="showChassis()">
294 <h3 class="page-header__dropdown-title">Add chassis</h3>
295 <form action="post" class="p-form p-form--stacked">
296@@ -458,21 +381,6 @@
297 </section>
298
299 <!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
300- <section class="page-header__section col-12" data-ng-show="showMachine()">
301- <p class="page-header__message page-header__message--error ng-hide" data-ng-show="error">{$ error $}</p>
302- <div class="page-header__controls p-strip u-align--right u-no-padding--bottom">
303- <hr />
304- <button class="p-button--base" type="button" data-ng-click="cancel()">Cancel</button>
305- <button class="p-button--neutral"
306- data-ng-disabled="machineHasError()"
307- data-ng-click="saveMachine(true)">Save and add another</button>
308- <button class="p-button--positive"
309- data-ng-disabled="machineHasError()"
310- data-ng-click="saveMachine(false)">Save machine</button>
311- </div>
312- </section>
313-
314- <!-- XXX ricgard 2016-06-16 - Need to add e2e test. -->
315 <section class="page-header__section col-12 ng-hide" data-ng-show="showChassis()">
316 <p class="page-header__message page-header__message--error ng-hide" data-ng-show="error">{$ error $}</p>
317 <div class="page-header__controls p-strip u-align--right u-no-padding--bottom">
318diff --git a/webpack.config.js b/webpack.config.js
319index 00dadcb..34da078 100644
320--- a/webpack.config.js
321+++ b/webpack.config.js
322@@ -13,6 +13,7 @@ module.exports = {
323 glob.sync('./src/maasserver/static/js/angular/*.js'),
324 glob.sync('./src/maasserver/static/js/angular/controllers/*.js'),
325 glob.sync('./src/maasserver/static/js/angular/directives/*.js'),
326+ glob.sync('./src/maasserver/static/js/angular/directives/nodelist/*.js'),
327 glob.sync('./src/maasserver/static/js/angular/filters/*.js'),
328 glob.sync('./src/maasserver/static/js/angular/services/*.js'),
329 glob.sync('./src/maasserver/static/js/angular/factories/*.js')

Subscribers

People subscribed via source and target branches