diff --git a/src/app/frontend/deploy/deploy.html b/src/app/frontend/deploy/deploy.html index 20895dde3f1130d0037ac05e816b405fcac29998..f35efee885ea18abc1d6b152e076fa1f42bae55f 100644 --- a/src/app/frontend/deploy/deploy.html +++ b/src/app/frontend/deploy/deploy.html @@ -17,12 +17,15 @@ limitations under the License.

Deploy a Containerized App

-
+ - + + + Application name is required. + An 'app' label with this value will be added to the Replica Set and Service that get deployed. @@ -41,7 +44,8 @@ limitations under the License.
- + diff --git a/src/app/frontend/deploy/deploy_controller.js b/src/app/frontend/deploy/deploy_controller.js index 4eb936fdbc0e1b9db9d8393d33e32c145c16a656..b8e8247563ac5444e0d1eb098bd246e4307f815b 100644 --- a/src/app/frontend/deploy/deploy_controller.js +++ b/src/app/frontend/deploy/deploy_controller.js @@ -75,8 +75,10 @@ export default class DeployController { * @export */ deployBySelection() { - this.isDeployInProgress_ = true; - this.detail.deploy().finally(() => { this.isDeployInProgress_ = false; }); + if (this.deployForm.$valid) { + this.isDeployInProgress_ = true; + this.detail.deploy().finally(() => { this.isDeployInProgress_ = false; }); + } } /** @@ -84,9 +86,7 @@ export default class DeployController { * @return {boolean} * @export */ - isDeployDisabled() { - return this.isDeployInProgress_ || this.deployForm.$invalid || !this.detail; - } + isDeployDisabled() { return this.isDeployInProgress_ || !this.detail; } /** * Cancels the deployment form. diff --git a/src/app/frontend/deploy/deployfromsettings.html b/src/app/frontend/deploy/deployfromsettings.html index 3d5ed7429a0471b3d6a18cb74ab567de476be771..addd715466ccc34dd45ca004f40d147ac141fc75 100644 --- a/src/app/frontend/deploy/deployfromsettings.html +++ b/src/app/frontend/deploy/deployfromsettings.html @@ -17,7 +17,10 @@ limitations under the License. - + + + Container image is required. + Enter the URL of a public image on any registry, or a private image hosted on Docker Hub or Google Container Registry. diff --git a/src/app/frontend/deploy/deployfromsettings_controller.js b/src/app/frontend/deploy/deployfromsettings_controller.js index 7d97ef354d379a72b3446997ba0f5ad50d887cd2..9a28e5209972f25f110565c1487b2f8a29a230ca 100644 --- a/src/app/frontend/deploy/deployfromsettings_controller.js +++ b/src/app/frontend/deploy/deployfromsettings_controller.js @@ -42,6 +42,12 @@ export default class DeployFromSettingsController { */ this.detail = this; + /** + * Initialized from the scope. + * @export {!angular.FormController} + */ + this.form; + /** @private {boolean} */ this.showMoreOptions_ = false; diff --git a/src/app/frontend/deploy/deployfromsettings_directive.js b/src/app/frontend/deploy/deployfromsettings_directive.js index 40e4abdbff97b5f0763d2a9bac816a5cef94d511..0c9a85ce5493f8c88b78198408e96abc4c338d0e 100644 --- a/src/app/frontend/deploy/deployfromsettings_directive.js +++ b/src/app/frontend/deploy/deployfromsettings_directive.js @@ -25,6 +25,7 @@ export default function deployFromSettingsDirective() { 'name': '=', 'namespaces': '=', 'detail': '=', + 'form': '=', }, controller: DeployFromSettingsController, controllerAs: 'ctrl', diff --git a/src/test/frontend/deploy/deploy_controller_test.js b/src/test/frontend/deploy/deploy_controller_test.js index 42d43d72d1f4fbd1e9eb4197c982d20ed5dca238..30db3c57e822db40bff059a06fc3fe7bd5adb1ef 100644 --- a/src/test/frontend/deploy/deploy_controller_test.js +++ b/src/test/frontend/deploy/deploy_controller_test.js @@ -28,16 +28,13 @@ describe('Deploy controller', () => { beforeEach(() => { angular.mock.module(deployModule.name); - angular.mock.inject(($controller, $state) => { + angular.mock.inject(($controller, $state, $q) => { state = $state; - ctrl = $controller(DeployController, {namespaces: []}); - settingsCtrl = $controller(DeployFromSettingController, {}, {namespaces: []}); + settingsCtrl = $controller( + DeployFromSettingController, {}, {namespaces: [], deploy: () => $q.defer().promise}); + ctrl = $controller( + DeployController, {namespaces: []}, {detail: settingsCtrl, deployForm: {$valid: true}}); }); - - // prepare and mock - ctrl.detail = settingsCtrl; - ctrl.deployForm = {$invalid: false}; - settingsCtrl.deploy = () => { return settingsCtrl.q_.defer().promise; }; }); it('should return true when deploy in progress', () => { @@ -46,7 +43,7 @@ describe('Deploy controller', () => { let result = ctrl.isDeployDisabled(); // then - expect(result).toBeTruthy(); + expect(result).toBe(true); }); it('should return false when deploy not in progress', () => { @@ -54,7 +51,7 @@ describe('Deploy controller', () => { let result = ctrl.isDeployDisabled(); // then - expect(result).toBeFalsy(); + expect(result).toBe(false); }); it('should change state to replica set list view on cancel', () => {