Merge ~mpontillo/maas:dns-ui--add-record into maas:master
- Git
- lp:~mpontillo/maas
- dns-ui--add-record
- Merge into master
Proposed by
Mike Pontillo
Status: | Merged |
---|---|
Approved by: | Björn Tillenius |
Approved revision: | dfcf3ba6d53d329625805bff5c6734dcb7f16ec1 |
Merge reported by: | MAAS Lander |
Merged at revision: | not available |
Proposed branch: | ~mpontillo/maas:dns-ui--add-record |
Merge into: | maas:master |
Diff against target: |
830 lines (+266/-86) 20 files modified
Makefile (+7/-1) debian/rules (+1/-1) package.json (+3/-2) setup.py (+1/-1) src/maasserver/static/js/angular/controllers/domain_details.js (+20/-4) src/maasserver/static/js/angular/controllers/tests/test_domain_details.js (+4/-4) src/maasserver/static/js/angular/directives/maas_obj_form.js (+17/-3) src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js (+25/-0) src/maasserver/static/js/angular/factories/domains.js (+12/-0) src/maasserver/static/js/angular/factories/tests/test_domains.js (+47/-0) src/maasserver/static/js/yui/io.js (+0/-0) src/maasserver/static/js/yui/os_distro_select.js (+0/-0) src/maasserver/static/js/yui/prefs.js (+0/-0) src/maasserver/static/js/yui/reveal.js (+0/-0) src/maasserver/static/js/yui/shortpoll.js (+0/-0) src/maasserver/static/partials/domain-details.html (+48/-6) src/maasserver/templates/maasserver/js-conf.html (+3/-0) src/maastesting/karma.conf.js (+6/-5) webpack.config.js (+4/-2) yarn.lock (+68/-57) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mike Pontillo (community) | Approve | ||
Andres Rodriguez | Pending | ||
MAAS Lander | Pending | ||
Review via email: mp+341140@code.launchpad.net |
This proposal supersedes a proposal from 2018-03-08.
Commit message
Add form to create new DNS records.
* Change karma configuration to use built JavaScript.
* Reorganize YUI code into a specific directory.
* Remove react and react-dom from vendor bundle.
Description of the change
To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote : Posted in a previous version of this proposal | # |
review:
Needs Fixing
Revision history for this message
Andres Rodriguez (andreserl) wrote : Posted in a previous version of this proposal | # |
Just one thing in line I think it needs fixing.
review:
Needs Fixing
Revision history for this message
Andres Rodriguez (andreserl) wrote : Posted in a previous version of this proposal | # |
lgtm!
review:
Approve
Revision history for this message
Mike Pontillo (mpontillo) : Posted in a previous version of this proposal | # |
Revision history for this message
Mike Pontillo (mpontillo) wrote : Posted in a previous version of this proposal | # |
Combining this branch with the branch it depends on.
review:
Approve
Revision history for this message
Mike Pontillo (mpontillo) wrote : | # |
And again, this time without the prerequisite (so it'll land).
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/Makefile b/Makefile |
2 | index 533934d..b5ba5ea 100644 |
3 | --- a/Makefile |
4 | +++ b/Makefile |
5 | @@ -23,7 +23,7 @@ endif |
6 | # Python enum modules. |
7 | py_enums := $(wildcard src/*/enum.py) |
8 | # JavaScript enum module (not modules). |
9 | -js_enums := src/maasserver/static/js/enums.js |
10 | +js_enums := src/maasserver/static/js/yui/enums.js |
11 | |
12 | # MAAS SASS stylesheets. The first input file (maas-styles.css) imports |
13 | # the others, so is treated specially in the target definitions. |
14 | @@ -40,6 +40,8 @@ javascript_deps := \ |
15 | javascript_output := \ |
16 | src/maasserver/static/js/bundle/maas-min.js \ |
17 | src/maasserver/static/js/bundle/maas-min.js.map \ |
18 | + src/maasserver/static/js/bundle/maas-yui-min.js \ |
19 | + src/maasserver/static/js/bundle/maas-yui-min.js.map \ |
20 | src/maasserver/static/js/bundle/vendor-min.js \ |
21 | src/maasserver/static/js/bundle/vendor-min.js.map |
22 | |
23 | @@ -249,6 +251,7 @@ define node_packages |
24 | karma-ng-html2js-preprocessor |
25 | karma-opera-launcher |
26 | karma-phantomjs-launcher |
27 | + karma-sourcemap-loader |
28 | node-sass |
29 | phantomjs-prebuilt |
30 | prop-types |
31 | @@ -286,6 +289,9 @@ test: bin/test.parallel bin/coverage |
32 | @bin/test.parallel --with-coverage --subprocess-per-core |
33 | @bin/coverage combine |
34 | |
35 | +test-js: bin/test.js javascript |
36 | + @bin/test.js |
37 | + |
38 | test-serial: $(strip $(test-scripts)) |
39 | @bin/maas-region makemigrations --dry-run --exit && exit 1 ||: |
40 | @$(RM) .coverage .coverage.* .failed |
41 | diff --git a/debian/rules b/debian/rules |
42 | index 36c7be7..2f83647 100755 |
43 | --- a/debian/rules |
44 | +++ b/debian/rules |
45 | @@ -53,7 +53,7 @@ override_dh_auto_install: |
46 | rm -rf $(CURDIR)/debian/tmp/usr/share/maas/web/scss |
47 | |
48 | # Install built enums.js file. |
49 | - cp $(BUILDHOME)/enums.js $(CURDIR)/debian/tmp/usr/share/maas/web/static/js/ |
50 | + cp $(BUILDHOME)/enums.js $(CURDIR)/debian/tmp/usr/share/maas/web/static/js/yui |
51 | |
52 | # install the apparmor profile |
53 | install -d -m 755 $(CURDIR)/debian/tmp/etc/apparmor.d/dhcpd.d |
54 | diff --git a/package.json b/package.json |
55 | index dd52b6d..2398e05 100644 |
56 | --- a/package.json |
57 | +++ b/package.json |
58 | @@ -5,7 +5,7 @@ |
59 | "@babel/preset-react": "^7.0.0-beta.40", |
60 | "@types/prop-types": "^15.5.2", |
61 | "@types/react": "^16.0.40", |
62 | - "@types/react-dom": "^16.0.4", |
63 | + "@types/react-dom": "^15.5.7", |
64 | "babel-loader": "^8.0.0-beta.0", |
65 | "glob": "^7.1.2", |
66 | "jasmine-core": "=2.99.1", |
67 | @@ -17,6 +17,7 @@ |
68 | "karma-ng-html2js-preprocessor": "^1.0.0", |
69 | "karma-opera-launcher": "^1.0.0", |
70 | "karma-phantomjs-launcher": "^1.0.4", |
71 | + "karma-sourcemap-loader": "^0.3.7", |
72 | "node-sass": "^4.7.2", |
73 | "phantomjs-prebuilt": "^2.1.16", |
74 | "prop-types": "^15.6.1", |
75 | @@ -27,7 +28,7 @@ |
76 | "uglifyjs-webpack-plugin": "^1.2.2", |
77 | "vanilla-framework": "^1.6.6", |
78 | "vanilla-framework-react": "^0.1.2", |
79 | - "webpack": "^4.0.1", |
80 | + "webpack": "^4.1.1", |
81 | "webpack-cli": "^2.0.10", |
82 | "webpack-merge": "^4.1.2" |
83 | } |
84 | diff --git a/setup.py b/setup.py |
85 | index cd6ad7a..8e35adb 100644 |
86 | --- a/setup.py |
87 | +++ b/setup.py |
88 | @@ -56,7 +56,7 @@ class EnumJSCommand(Command): |
89 | py_files = glob('src/*/enum.py') |
90 | jsenums = import_jsenums() |
91 | js_content = jsenums.dump(py_files) |
92 | - with open('src/maasserver/static/js/enums.js', 'w') as fp: |
93 | + with open('src/maasserver/static/js/yui/enums.js', 'w') as fp: |
94 | fp.write(js_content) |
95 | |
96 | |
97 | diff --git a/src/maasserver/static/js/angular/controllers/domain_details.js b/src/maasserver/static/js/angular/controllers/domain_details.js |
98 | index d8e50e5..fb0c4a2 100644 |
99 | --- a/src/maasserver/static/js/angular/controllers/domain_details.js |
100 | +++ b/src/maasserver/static/js/angular/controllers/domain_details.js |
101 | @@ -23,6 +23,14 @@ angular.module('MAAS').controller('DomainDetailsController', [ |
102 | $scope.domain = null; |
103 | $scope.predicate = "name"; |
104 | $scope.reverse = false; |
105 | + $scope.action = null; |
106 | + |
107 | + $scope.domainsManager = DomainsManager; |
108 | + $scope.newObject = {}; |
109 | + |
110 | + $scope.supportedRecordTypes = [ |
111 | + 'A', 'AAAA', 'CNAME', 'MX', 'NS', 'SRV', 'SSHFP', 'TXT' |
112 | + ]; |
113 | |
114 | // Updates the page title. |
115 | function updateTitle() { |
116 | @@ -61,18 +69,26 @@ angular.module('MAAS').controller('DomainDetailsController', [ |
117 | // Called when the delete domain button is pressed. |
118 | $scope.deleteButton = function() { |
119 | $scope.error = null; |
120 | - $scope.confirmingDelete = true; |
121 | + $scope.actionInProgress = true; |
122 | + $scope.action = 'delete'; |
123 | + }; |
124 | + |
125 | + // Called when the add record button is pressed. |
126 | + $scope.addRecordButton = function() { |
127 | + $scope.error = null; |
128 | + $scope.actionInProgress = true; |
129 | + $scope.action = 'add_record'; |
130 | }; |
131 | |
132 | // Called when the cancel delete domain button is pressed. |
133 | - $scope.cancelDeleteButton = function() { |
134 | - $scope.confirmingDelete = false; |
135 | + $scope.cancelAction = function() { |
136 | + $scope.actionInProgress = false; |
137 | }; |
138 | |
139 | // Called when the confirm delete domain button is pressed. |
140 | $scope.deleteConfirmButton = function() { |
141 | DomainsManager.deleteDomain($scope.domain).then(function() { |
142 | - $scope.confirmingDelete = false; |
143 | + $scope.actionInProgress = false; |
144 | $location.path("/domains"); |
145 | }, function(error) { |
146 | $scope.error = |
147 | diff --git a/src/maasserver/static/js/angular/controllers/tests/test_domain_details.js b/src/maasserver/static/js/angular/controllers/tests/test_domain_details.js |
148 | index d1cfcb1..391efea 100644 |
149 | --- a/src/maasserver/static/js/angular/controllers/tests/test_domain_details.js |
150 | +++ b/src/maasserver/static/js/angular/controllers/tests/test_domain_details.js |
151 | @@ -186,7 +186,7 @@ describe("DomainDetailsController", function() { |
152 | it("confirms delete", function() { |
153 | var controller = makeControllerResolveSetActiveItem(); |
154 | $scope.deleteButton(); |
155 | - expect($scope.confirmingDelete).toBe(true); |
156 | + expect($scope.actionInProgress).toBe(true); |
157 | }); |
158 | |
159 | it("clears error", function() { |
160 | @@ -197,13 +197,13 @@ describe("DomainDetailsController", function() { |
161 | }); |
162 | }); |
163 | |
164 | - describe("cancelDeleteButton", function() { |
165 | + describe("cancelAction", function() { |
166 | |
167 | it("cancels delete", function() { |
168 | var controller = makeControllerResolveSetActiveItem(); |
169 | $scope.deleteButton(); |
170 | - $scope.cancelDeleteButton(); |
171 | - expect($scope.confirmingDelete).toBe(false); |
172 | + $scope.cancelAction(); |
173 | + expect($scope.actionInProgress).toBe(false); |
174 | }); |
175 | }); |
176 | |
177 | diff --git a/src/maasserver/static/js/angular/directives/maas_obj_form.js b/src/maasserver/static/js/angular/directives/maas_obj_form.js |
178 | index da907f9..7de2337 100644 |
179 | --- a/src/maasserver/static/js/angular/directives/maas_obj_form.js |
180 | +++ b/src/maasserver/static/js/angular/directives/maas_obj_form.js |
181 | @@ -543,10 +543,10 @@ angular.module('MAAS').directive('maasObjField', ['$compile', |
182 | |
183 | // type and key required. |
184 | var missingAttrs = []; |
185 | - if(!angular.isString(attrs.type) && attrs.type.length === 0) { |
186 | + if(!angular.isString(attrs.type) || attrs.type.length === 0) { |
187 | missingAttrs.push("type"); |
188 | } |
189 | - if(!angular.isString(attrs.key) && attrs.key.length === 0) { |
190 | + if(!angular.isString(attrs.key) || attrs.key.length === 0) { |
191 | missingAttrs.push("key"); |
192 | } |
193 | if(missingAttrs.length > 0) { |
194 | @@ -561,7 +561,8 @@ angular.module('MAAS').directive('maasObjField', ['$compile', |
195 | // Render the label. |
196 | var label = attrs.label || attrs.key; |
197 | |
198 | - if(attrs.disableLabel !== "true") { |
199 | + if(attrs.disableLabel !== "true" && |
200 | + !(attrs.type === "hidden")) { |
201 | var labelElement = angular.element('<label/>'); |
202 | labelElement.attr('for', attrs.key); |
203 | labelElement.text(label); |
204 | @@ -830,6 +831,19 @@ angular.module('MAAS').directive('maasObjField', ['$compile', |
205 | return val.text; |
206 | }); |
207 | }; |
208 | + } else if(attrs.type === "hidden") { |
209 | + var hiddenScope = scope.$new(); |
210 | + hiddenScope._toggle = controller.registerField( |
211 | + attrs.key, scope); |
212 | + inputElement = angular.element([ |
213 | + '<input type="hidden" name="' + attrs.key + '" ', |
214 | + 'id="' + attrs.key + '" ', |
215 | + 'value="' + attrs.value + '">', |
216 | + '</input>' |
217 | + ].join('')); |
218 | + inputElement = $compile(inputElement)(hiddenScope); |
219 | + scope.getValue = () => attrs.value; |
220 | + scope.updateValue = () => null; |
221 | } else if(attrs.type === "onoffswitch") { |
222 | var switchScope = scope.$new(); |
223 | switchScope._toggle = controller.registerField( |
224 | diff --git a/src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js b/src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js |
225 | index d37b891..031c881 100644 |
226 | --- a/src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js |
227 | +++ b/src/maasserver/static/js/angular/directives/tests/test_maas_obj_form.js |
228 | @@ -442,6 +442,31 @@ describe("maasObjForm", function() { |
229 | }); |
230 | }); |
231 | |
232 | + describe("hidden", function() { |
233 | + |
234 | + var directive, options; |
235 | + beforeEach(function() { |
236 | + $scope.obj = { |
237 | + key: false |
238 | + }; |
239 | + $scope.manager = {}; |
240 | + var html = [ |
241 | + '<maas-obj-form obj="obj" manager="manager">', |
242 | + '<maas-obj-field type="hidden" key="key" label="Key" ', |
243 | + 'value="value">', |
244 | + '</maas-obj-field>', |
245 | + '</maas-obj-form>' |
246 | + ].join(''); |
247 | + directive = compileDirective(html); |
248 | + }); |
249 | + |
250 | + it("creates hidden input field", function() { |
251 | + var onoff = angular.element(directive.find("input")); |
252 | + expect(onoff.length).toBe(1); |
253 | + }); |
254 | + }); |
255 | + |
256 | + |
257 | describe("single field", function() { |
258 | |
259 | var directive, updateItemMethod, saveDefer; |
260 | diff --git a/src/maasserver/static/js/angular/factories/domains.js b/src/maasserver/static/js/angular/factories/domains.js |
261 | index 0d3fdf2..2662db8 100644 |
262 | --- a/src/maasserver/static/js/angular/factories/domains.js |
263 | +++ b/src/maasserver/static/js/angular/factories/domains.js |
264 | @@ -42,6 +42,18 @@ angular.module('MAAS').factory( |
265 | return RegionConnection.callMethod("domain.delete", domain); |
266 | }; |
267 | |
268 | + // Create a DNS record. |
269 | + DomainsManager.prototype.createDNSRecord = function(record) { |
270 | + if(record.rrtype === 'A' || record.rrtype === 'AAAA') { |
271 | + record.ip_addresses = record.rrdata.split(/[ ,]+/); |
272 | + return RegionConnection.callMethod( |
273 | + "domain.create_dnsresource", record); |
274 | + } else { |
275 | + return RegionConnection.callMethod( |
276 | + "domain.create_dnsdata", record); |
277 | + } |
278 | + }; |
279 | + |
280 | DomainsManager.prototype.getDefaultDomain = function() { |
281 | if(this._items.length === 0) { |
282 | return null; |
283 | diff --git a/src/maasserver/static/js/angular/factories/tests/test_domains.js b/src/maasserver/static/js/angular/factories/tests/test_domains.js |
284 | index b740939..7988f01 100644 |
285 | --- a/src/maasserver/static/js/angular/factories/tests/test_domains.js |
286 | +++ b/src/maasserver/static/js/angular/factories/tests/test_domains.js |
287 | @@ -14,6 +14,7 @@ describe("DomainsManager", function() { |
288 | var DomainsManager; |
289 | beforeEach(inject(function($injector) { |
290 | DomainsManager = $injector.get("DomainsManager"); |
291 | + RegionConnection = $injector.get("RegionConnection"); |
292 | })); |
293 | |
294 | // Make a random domain. |
295 | @@ -60,6 +61,52 @@ describe("DomainsManager", function() { |
296 | }); |
297 | }); |
298 | |
299 | + describe("createDNSRecord", function() { |
300 | + it("calls create_dnsresource for A record", function() { |
301 | + spyOn(RegionConnection, "callMethod"); |
302 | + var record = { |
303 | + 'rrtype': 'A', |
304 | + 'rrdata': '192.168.0.1' |
305 | + }; |
306 | + DomainsManager.createDNSRecord(record); |
307 | + expect(RegionConnection.callMethod).toHaveBeenCalledWith( |
308 | + "domain.create_dnsresource", record); |
309 | + }); |
310 | + |
311 | + it("calls create_dnsresource for AAAA record", function() { |
312 | + spyOn(RegionConnection, "callMethod"); |
313 | + var record = { |
314 | + 'rrtype': 'AAAA', |
315 | + 'rrdata': '2001:db8:1' |
316 | + }; |
317 | + DomainsManager.createDNSRecord(record); |
318 | + expect(RegionConnection.callMethod).toHaveBeenCalledWith( |
319 | + "domain.create_dnsresource", record); |
320 | + }); |
321 | + |
322 | + it("converts rrdata into list for A and AAAA", function() { |
323 | + spyOn(RegionConnection, "callMethod"); |
324 | + var record = { |
325 | + 'rrtype': 'AAAA', |
326 | + 'rrdata': '2001:db8::1, 10.0.0.1 127.0.0.1' |
327 | + }; |
328 | + DomainsManager.createDNSRecord(record); |
329 | + expect(record.ip_addresses).toEqual([ |
330 | + '2001:db8::1', '10.0.0.1', '127.0.0.1' |
331 | + ]); |
332 | + }); |
333 | + |
334 | + it("calls create_dnsdata for other types", function() { |
335 | + spyOn(RegionConnection, "callMethod"); |
336 | + var record = { |
337 | + 'rrtype': 'SRV' |
338 | + }; |
339 | + DomainsManager.createDNSRecord(record); |
340 | + expect(RegionConnection.callMethod).toHaveBeenCalledWith( |
341 | + "domain.create_dnsdata", record); |
342 | + }); |
343 | + }); |
344 | + |
345 | describe("getDomainByName", function() { |
346 | it("returns null when no domains", function() { |
347 | expect(DomainsManager.getDomainByName('meh')).toBe(null); |
348 | diff --git a/src/maasserver/static/js/io.js b/src/maasserver/static/js/yui/io.js |
349 | index 86b15ef..86b15ef 100644 |
350 | --- a/src/maasserver/static/js/io.js |
351 | +++ b/src/maasserver/static/js/yui/io.js |
352 | diff --git a/src/maasserver/static/js/os_distro_select.js b/src/maasserver/static/js/yui/os_distro_select.js |
353 | index 2fe0958..2fe0958 100644 |
354 | --- a/src/maasserver/static/js/os_distro_select.js |
355 | +++ b/src/maasserver/static/js/yui/os_distro_select.js |
356 | diff --git a/src/maasserver/static/js/prefs.js b/src/maasserver/static/js/yui/prefs.js |
357 | index cff5636..cff5636 100644 |
358 | --- a/src/maasserver/static/js/prefs.js |
359 | +++ b/src/maasserver/static/js/yui/prefs.js |
360 | diff --git a/src/maasserver/static/js/reveal.js b/src/maasserver/static/js/yui/reveal.js |
361 | index 7ab922a..7ab922a 100644 |
362 | --- a/src/maasserver/static/js/reveal.js |
363 | +++ b/src/maasserver/static/js/yui/reveal.js |
364 | diff --git a/src/maasserver/static/js/shortpoll.js b/src/maasserver/static/js/yui/shortpoll.js |
365 | index 886ba93..886ba93 100644 |
366 | --- a/src/maasserver/static/js/shortpoll.js |
367 | +++ b/src/maasserver/static/js/yui/shortpoll.js |
368 | diff --git a/src/maasserver/static/partials/domain-details.html b/src/maasserver/static/partials/domain-details.html |
369 | index 451a203..31343c0 100644 |
370 | --- a/src/maasserver/static/partials/domain-details.html |
371 | +++ b/src/maasserver/static/partials/domain-details.html |
372 | @@ -13,14 +13,17 @@ |
373 | </p> |
374 | </div> |
375 | <div class="col-4"> |
376 | - <div class="page-header__controls ng-hide" data-ng-show="isSuperUser() && !isDefaultDomain() && !loading"> |
377 | + <div class="page-header__controls ng-hide" data-ng-show="isSuperUser() && !loading"> |
378 | <button class="p-button--negative" |
379 | data-ng-click="deleteButton()" |
380 | - data-ng-hide="confirmingDelete">Delete domain</button> |
381 | + data-ng-hide="actionInProgress || isDefaultDomain()">Delete domain</button> |
382 | + <button class="p-button" |
383 | + data-ng-click="addRecordButton()" |
384 | + data-ng-hide="actionInProgress">Add record</button> |
385 | </div> |
386 | </div> |
387 | </div> |
388 | - <div data-ng-if="confirmingDelete"> |
389 | + <div data-ng-if="actionInProgress && action === 'delete'"> |
390 | <div class="row u-no-margin--top ng-hide" data-ng-hide="canBeDeleted()"> |
391 | <hr /> |
392 | <div class="row"> |
393 | @@ -30,7 +33,7 @@ |
394 | </p> |
395 | </div> |
396 | <div class="col-4 u-align--right"> |
397 | - <button class="p-button--base" type="button" data-ng-click="cancelDeleteButton()">Cancel</button> |
398 | + <button class="p-button--base" type="button" data-ng-click="cancelAction()">Cancel</button> |
399 | </div> |
400 | </div> |
401 | </div> |
402 | @@ -43,7 +46,7 @@ |
403 | </p> |
404 | </div> |
405 | <div class="col-4 u-align--right"> |
406 | - <button class="p-button--base" type="button" data-ng-click="cancelDeleteButton()">Cancel</button> |
407 | + <button class="p-button--base" type="button" data-ng-click="cancelAction()">Cancel</button> |
408 | <button class="p-button--negative" data-ng-click="deleteConfirmButton()">Delete domain</button> |
409 | </div> |
410 | </div> |
411 | @@ -57,12 +60,51 @@ |
412 | </p> |
413 | </div> |
414 | <div class="col-4 u-align--right"> |
415 | - <button class="p-button--base" type="button" data-ng-click="cancelDeleteButton()">Cancel</button> |
416 | + <button class="p-button--base" type="button" data-ng-click="cancelAction()">Cancel</button> |
417 | <button class="p-button--neutral" data-ng-click="deleteConfirmButton()">Retry</button> |
418 | </div> |
419 | </div> |
420 | </div> |
421 | </div> |
422 | + <div data-ng-if="actionInProgress && action === 'add_record'"> |
423 | + <maas-obj-form obj="newObject" manager="domainsManager" manager-method="createDNSRecord" class="p-form--stacked" |
424 | + table-form="true" save-on-blur="false" after-save="cancelAction"> |
425 | + <!-- pre-process="actionDNSRecordPreSave" --> |
426 | + <section class="row"> |
427 | + <div class="col-6"> |
428 | + <maas-obj-field |
429 | + subtle="false" type="text" key="name" label="Name" placeholder="Name" |
430 | + label-width="two" input-width="three"></maas-obj-field> |
431 | + <maas-obj-field |
432 | + subtle="false" type="options" key="rrtype" label="Type" |
433 | + options="type as type for type in supportedRecordTypes" |
434 | + label-width="two" input-width="three"></maas-obj-field> |
435 | + </div> |
436 | + <div class="col-6"> |
437 | + <maas-obj-field |
438 | + subtle="false" type="text" key="rrdata" label="Data" |
439 | + placeholder="Data" |
440 | + label-width="two" input-width="three"></maas-obj-field> |
441 | + <maas-obj-field |
442 | + subtle="false" type="text" key="ttl" label="TTL" |
443 | + placeholder="TTL in seconds (optional)" |
444 | + label-width="two" input-width="three"></maas-obj-field> |
445 | + <maas-obj-field type="hidden" key="domain" value="{$ domain.id $}" /> |
446 | + </div> |
447 | + </section> |
448 | + <section class="row"> |
449 | + <div class="col-8"> |
450 | + <maas-obj-errors class="page-header__message page-header__message--error"></maas-obj-errors> |
451 | + </div> |
452 | + <div class="col-4"> |
453 | + <div class="u-align--right"> |
454 | + <button class="p-button" data-ng-click="cancelAction()">Cancel</button> |
455 | + <button class="p-button--positive" maas-obj-save>Add record</button> |
456 | + </div> |
457 | + </div> |
458 | + </div> |
459 | + </maas-obj-form> |
460 | + </div> |
461 | </header> |
462 | <div class="p-strip" data-ng-show="!loading"> |
463 | <section class="row"> |
464 | diff --git a/src/maasserver/templates/maasserver/js-conf.html b/src/maasserver/templates/maasserver/js-conf.html |
465 | index 9999281..cae0420 100644 |
466 | --- a/src/maasserver/templates/maasserver/js-conf.html |
467 | +++ b/src/maasserver/templates/maasserver/js-conf.html |
468 | @@ -47,6 +47,9 @@ var MAAS_config = { |
469 | <script type="text/javascript" |
470 | src="{{STATIC_URL}}/js/bundle/maas-min.js?v={{files_version}}"> |
471 | </script> |
472 | +<script type="text/javascript" |
473 | + src="{{STATIC_URL}}/js/bundle/maas-yui-min.js?v={{files_version}}"> |
474 | +</script> |
475 | |
476 | {% if global_options.enable_analytics %} |
477 | <script async src='https://www.google-analytics.com/analytics.js'></script> |
478 | diff --git a/src/maastesting/karma.conf.js b/src/maastesting/karma.conf.js |
479 | index 79a25a0..abc1026 100644 |
480 | --- a/src/maastesting/karma.conf.js |
481 | +++ b/src/maastesting/karma.conf.js |
482 | @@ -21,10 +21,9 @@ module.exports = function(config) { |
483 | '/usr/share/javascript/angular.js/angular-mocks.js', |
484 | '/usr/share/javascript/angular.js/angular-cookies.js', |
485 | '/usr/share/javascript/angular.js/angular-sanitize.js', |
486 | - '../../src/maasserver/static/js/ui/maas-ui.js', |
487 | - '../../src/maasserver/static/js/angular/maas.js', |
488 | + '../../src/maasserver/static/js/bundle/vendor-min.js', |
489 | + '../../src/maasserver/static/js/bundle/maas-min.js', |
490 | '../../src/maasserver/static/js/angular/testing/*.js', |
491 | - '../../src/maasserver/static/js/angular/*/*.js', |
492 | '../../src/maasserver/static/js/angular/*/tests/test_*.js', |
493 | '../../src/maasserver/static/partials/*.html' |
494 | ], |
495 | @@ -38,7 +37,8 @@ module.exports = function(config) { |
496 | // preprocess matching files before serving them to the browser |
497 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor |
498 | preprocessors: { |
499 | - '../../src/maasserver/static/partials/*.html': ['ng-html2js'] |
500 | + '../../src/maasserver/static/partials/*.html': ['ng-html2js'], |
501 | + '**/*.js': ['sourcemap'] |
502 | }, |
503 | |
504 | ngHtml2JsPreprocessor: { |
505 | @@ -91,7 +91,8 @@ module.exports = function(config) { |
506 | 'karma-opera-launcher', |
507 | 'karma-phantomjs-launcher', |
508 | 'karma-failed-reporter', |
509 | - 'karma-ng-html2js-preprocessor' |
510 | + 'karma-ng-html2js-preprocessor', |
511 | + 'karma-sourcemap-loader' |
512 | ] |
513 | }); |
514 | }; |
515 | diff --git a/webpack.config.js b/webpack.config.js |
516 | index e8613b5..549f1f9 100644 |
517 | --- a/webpack.config.js |
518 | +++ b/webpack.config.js |
519 | @@ -5,8 +5,10 @@ const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); |
520 | module.exports = { |
521 | entry: { |
522 | vendor: [].concat( |
523 | - glob.sync('./src/maasserver/static/js/angular/3rdparty/*.js'), |
524 | - ['react', 'react-dom'] |
525 | + glob.sync('./src/maasserver/static/js/angular/3rdparty/*.js') |
526 | + ), |
527 | + 'maas-yui': [].concat( |
528 | + glob.sync('./src/maasserver/static/js/yui/*.js') |
529 | ), |
530 | maas: [].concat( |
531 | glob.sync('./src/maasserver/static/js/*.js'), |
532 | diff --git a/yarn.lock b/yarn.lock |
533 | index 90c4cea..3804cfb 100644 |
534 | --- a/yarn.lock |
535 | +++ b/yarn.lock |
536 | @@ -393,10 +393,6 @@ |
537 | version "4.14.104" |
538 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.104.tgz#53ee2357fa2e6e68379341d92eb2ecea4b11bb80" |
539 | |
540 | -"@types/node@*": |
541 | - version "9.4.6" |
542 | - resolved "https://registry.yarnpkg.com/@types/node/-/node-9.4.6.tgz#d8176d864ee48753d053783e4e463aec86b8d82e" |
543 | - |
544 | "@types/node@^6.0.46": |
545 | version "6.0.101" |
546 | resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.101.tgz#0c5911cfb434af4a51c0a499931fe6423207d921" |
547 | @@ -409,14 +405,17 @@ |
548 | version "0.0.32" |
549 | resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" |
550 | |
551 | -"@types/react-dom@^16.0.4": |
552 | - version "16.0.4" |
553 | - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.4.tgz#2e8fd45f5443780ed49bf2cdd9809e6091177a7d" |
554 | +"@types/react-dom@^15.5.7": |
555 | + version "15.5.7" |
556 | + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-15.5.7.tgz#a5c1c8b315e925d84d59db5ee88ca7e31c5030f9" |
557 | dependencies: |
558 | - "@types/node" "*" |
559 | - "@types/react" "*" |
560 | + "@types/react" "^15" |
561 | + |
562 | +"@types/react@^15": |
563 | + version "15.6.14" |
564 | + resolved "https://registry.yarnpkg.com/@types/react/-/react-15.6.14.tgz#fe176209b9de3514f9782fa41a239bffd26a3b56" |
565 | |
566 | -"@types/react@*", "@types/react@^16.0.40": |
567 | +"@types/react@^16.0.40": |
568 | version "16.0.40" |
569 | resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.40.tgz#caabc2296886f40b67f6fc80f0f3464476461df9" |
570 | |
571 | @@ -460,8 +459,8 @@ acorn@^4.0.3: |
572 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" |
573 | |
574 | acorn@^5.0.0, acorn@^5.2.1, acorn@^5.4.1: |
575 | - version "5.5.0" |
576 | - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.0.tgz#1abb587fbf051f94e3de20e6b26ef910b1828298" |
577 | + version "5.5.1" |
578 | + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.1.tgz#84e05a9ea0acbe131227da50301e62464dc9c1d8" |
579 | |
580 | addressparser@1.0.1: |
581 | version "1.0.1" |
582 | @@ -507,8 +506,8 @@ ajv@^5.1.0: |
583 | json-schema-traverse "^0.3.0" |
584 | |
585 | ajv@^6.1.0: |
586 | - version "6.2.0" |
587 | - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.0.tgz#afac295bbaa0152449e522742e4547c1ae9328d2" |
588 | + version "6.2.1" |
589 | + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.2.1.tgz#28a6abc493a2abe0fb4c8507acaedb43fa550671" |
590 | dependencies: |
591 | fast-deep-equal "^1.0.0" |
592 | fast-json-stable-stringify "^2.0.0" |
593 | @@ -552,9 +551,9 @@ ansi-styles@^2.2.1: |
594 | version "2.2.1" |
595 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" |
596 | |
597 | -ansi-styles@^3.2.0: |
598 | - version "3.2.0" |
599 | - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" |
600 | +ansi-styles@^3.2.1: |
601 | + version "3.2.1" |
602 | + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" |
603 | dependencies: |
604 | color-convert "^1.9.0" |
605 | |
606 | @@ -1786,12 +1785,12 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: |
607 | supports-color "^2.0.0" |
608 | |
609 | chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1: |
610 | - version "2.3.1" |
611 | - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" |
612 | + version "2.3.2" |
613 | + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" |
614 | dependencies: |
615 | - ansi-styles "^3.2.0" |
616 | + ansi-styles "^3.2.1" |
617 | escape-string-regexp "^1.0.5" |
618 | - supports-color "^5.2.0" |
619 | + supports-color "^5.3.0" |
620 | |
621 | chalk@~0.4.0: |
622 | version "0.4.0" |
623 | @@ -1934,12 +1933,12 @@ clone@^2.1.1: |
624 | resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" |
625 | |
626 | cloneable-readable@^1.0.0: |
627 | - version "1.0.0" |
628 | - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117" |
629 | + version "1.1.1" |
630 | + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.1.tgz#c27a4f3a943ca37bed9b01c7d572ee61b1302b15" |
631 | dependencies: |
632 | inherits "^2.0.1" |
633 | - process-nextick-args "^1.0.6" |
634 | - through2 "^2.0.1" |
635 | + process-nextick-args "^2.0.0" |
636 | + readable-stream "^2.3.5" |
637 | |
638 | co@^4.6.0: |
639 | version "4.6.0" |
640 | @@ -2021,8 +2020,8 @@ combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: |
641 | delayed-stream "~1.0.0" |
642 | |
643 | commander@^2.9.0: |
644 | - version "2.14.1" |
645 | - resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" |
646 | + version "2.15.0" |
647 | + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" |
648 | |
649 | commander@~2.13.0: |
650 | version "2.13.0" |
651 | @@ -2200,8 +2199,8 @@ cross-spawn@^5.0.1: |
652 | which "^1.2.9" |
653 | |
654 | cross-spawn@^6.0.4: |
655 | - version "6.0.4" |
656 | - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.4.tgz#bbf44ccb30fb8314a08f178b62290c669c36d808" |
657 | + version "6.0.5" |
658 | + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" |
659 | dependencies: |
660 | nice-try "^1.0.4" |
661 | path-key "^2.0.1" |
662 | @@ -2430,8 +2429,8 @@ diff@^2.1.2: |
663 | resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" |
664 | |
665 | diff@^3.3.0, diff@^3.3.1: |
666 | - version "3.4.0" |
667 | - resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" |
668 | + version "3.5.0" |
669 | + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" |
670 | |
671 | diffie-hellman@^5.0.0: |
672 | version "5.0.2" |
673 | @@ -2477,8 +2476,8 @@ duplexer3@^0.1.4: |
674 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" |
675 | |
676 | duplexify@^3.4.2, duplexify@^3.5.3: |
677 | - version "3.5.3" |
678 | - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.3.tgz#8b5818800df92fd0125b27ab896491912858243e" |
679 | + version "3.5.4" |
680 | + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" |
681 | dependencies: |
682 | end-of-stream "^1.0.0" |
683 | inherits "^2.0.1" |
684 | @@ -2934,8 +2933,8 @@ first-chunk-stream@^2.0.0: |
685 | readable-stream "^2.0.2" |
686 | |
687 | flow-parser@^0.*: |
688 | - version "0.66.0" |
689 | - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.66.0.tgz#be583fefb01192aa5164415d31a6241b35718983" |
690 | + version "0.67.1" |
691 | + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.67.1.tgz#191fed56ccfd8d097dc9d487f2da3b0dae745849" |
692 | |
693 | flush-write-stream@^1.0.0: |
694 | version "1.0.2" |
695 | @@ -3494,8 +3493,8 @@ homedir-polyfill@^1.0.1: |
696 | parse-passwd "^1.0.0" |
697 | |
698 | hosted-git-info@^2.1.4: |
699 | - version "2.5.0" |
700 | - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" |
701 | + version "2.6.0" |
702 | + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" |
703 | |
704 | htmlescape@^1.1.0: |
705 | version "1.1.1" |
706 | @@ -4219,6 +4218,12 @@ karma-phantomjs-launcher@^1.0.4: |
707 | lodash "^4.0.1" |
708 | phantomjs-prebuilt "^2.1.7" |
709 | |
710 | +karma-sourcemap-loader@^0.3.7: |
711 | + version "0.3.7" |
712 | + resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8" |
713 | + dependencies: |
714 | + graceful-fs "^4.1.2" |
715 | + |
716 | karma@^2.0.0: |
717 | version "2.0.0" |
718 | resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.0.tgz#a02698dd7f0f05ff5eb66ab8f65582490b512e58" |
719 | @@ -5529,14 +5534,14 @@ private@^0.1.6, private@^0.1.7, private@~0.1.5: |
720 | version "0.1.8" |
721 | resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" |
722 | |
723 | -process-nextick-args@^1.0.6, process-nextick-args@~1.0.6: |
724 | - version "1.0.7" |
725 | - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" |
726 | - |
727 | -process-nextick-args@~2.0.0: |
728 | +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: |
729 | version "2.0.0" |
730 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" |
731 | |
732 | +process-nextick-args@~1.0.6: |
733 | + version "1.0.7" |
734 | + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" |
735 | + |
736 | process@^0.11.10, process@~0.11.0: |
737 | version "0.11.10" |
738 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" |
739 | @@ -5802,9 +5807,9 @@ read-pkg@^2.0.0: |
740 | normalize-package-data "^2.3.2" |
741 | path-type "^2.0.0" |
742 | |
743 | -"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3: |
744 | - version "2.3.4" |
745 | - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" |
746 | +"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5: |
747 | + version "2.3.5" |
748 | + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" |
749 | dependencies: |
750 | core-util-is "~1.0.0" |
751 | inherits "~2.0.3" |
752 | @@ -6743,9 +6748,9 @@ string-width@^2.0.0, string-width@^2.1.0: |
753 | is-fullwidth-code-point "^2.0.0" |
754 | strip-ansi "^4.0.0" |
755 | |
756 | -string_decoder@^1.0.0, string_decoder@~1.0.0, string_decoder@~1.0.3: |
757 | - version "1.0.3" |
758 | - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" |
759 | +string_decoder@^1.0.0: |
760 | + version "1.1.0" |
761 | + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.0.tgz#384f322ee8a848e500effde99901bba849c5d403" |
762 | dependencies: |
763 | safe-buffer "~5.1.0" |
764 | |
765 | @@ -6753,6 +6758,12 @@ string_decoder@~0.10.x: |
766 | version "0.10.31" |
767 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" |
768 | |
769 | +string_decoder@~1.0.0, string_decoder@~1.0.3: |
770 | + version "1.0.3" |
771 | + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" |
772 | + dependencies: |
773 | + safe-buffer "~5.1.0" |
774 | + |
775 | stringstream@~0.0.4, stringstream@~0.0.5: |
776 | version "0.0.5" |
777 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" |
778 | @@ -6814,9 +6825,9 @@ supports-color@^2.0.0: |
779 | version "2.0.0" |
780 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" |
781 | |
782 | -supports-color@^5.2.0: |
783 | - version "5.2.0" |
784 | - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a" |
785 | +supports-color@^5.2.0, supports-color@^5.3.0: |
786 | + version "5.3.0" |
787 | + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" |
788 | dependencies: |
789 | has-flag "^3.0.0" |
790 | |
791 | @@ -6878,7 +6889,7 @@ throttleit@^1.0.0: |
792 | version "1.0.0" |
793 | resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" |
794 | |
795 | -through2@^2.0.0, through2@^2.0.1: |
796 | +through2@^2.0.0: |
797 | version "2.0.3" |
798 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" |
799 | dependencies: |
800 | @@ -7292,7 +7303,7 @@ void-elements@^2.0.0: |
801 | version "2.0.1" |
802 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" |
803 | |
804 | -watchpack@^1.4.0: |
805 | +watchpack@^1.5.0: |
806 | version "1.5.0" |
807 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.5.0.tgz#231e783af830a22f8966f65c4c4bacc814072eed" |
808 | dependencies: |
809 | @@ -7376,9 +7387,9 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: |
810 | source-list-map "^2.0.0" |
811 | source-map "~0.6.1" |
812 | |
813 | -webpack@^4.0.1: |
814 | - version "4.0.1" |
815 | - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.0.1.tgz#768d708beeca4c5f77f6c2d38a240fb6ff50ba5d" |
816 | +webpack@^4.1.1: |
817 | + version "4.1.1" |
818 | + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.1.1.tgz#44e4d6a869dd36fdfc0b227f9bd865a4bccfd81c" |
819 | dependencies: |
820 | acorn "^5.0.0" |
821 | acorn-dynamic-import "^3.0.0" |
822 | @@ -7397,7 +7408,7 @@ webpack@^4.0.1: |
823 | schema-utils "^0.4.2" |
824 | tapable "^1.0.0" |
825 | uglifyjs-webpack-plugin "^1.1.1" |
826 | - watchpack "^1.4.0" |
827 | + watchpack "^1.5.0" |
828 | webpack-sources "^1.0.1" |
829 | |
830 | whatwg-fetch@>=0.10.0: |
UNIT TESTS
-b dns-ui--add-record lp:~mpontillo/maas/+git/maas into -b master lp:~maas-committers/maas
STATUS: FAILED maas-ci- jenkins. internal: 8080/job/ maas/job/ branch- tester/ 1876/console a403c6918718914 ac07fe94ae
LOG: http://
COMMIT: 0bc51c7dacfb0c0