diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.controller.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.controller.js index 824cb9d31b..f1c23a83e8 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.controller.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.controller.js @@ -60,6 +60,7 @@ ctrl.createKeyPair = createKeyPair; ctrl.importKeyPair = importKeyPair; ctrl.setKeypairRequired = setKeypairRequired; + ctrl.setAdminPasswordChange = setAdminPasswordChange; ctrl.tableData = { available: launchInstanceModel.keypairs, @@ -105,6 +106,10 @@ 'OPENSTACK_HYPERVISOR_FEATURES.requires_keypair' ).then(setKeypairRequired); + ctrl.setAdminPassword = false; + + ctrl.adminPassConfError = gettext('Passwords do not match.'); + ////////// /** @@ -200,6 +205,11 @@ function setKeypairRequired(setting) { ctrl.isKeypairRequired = setting ? 1 : 0; } + + function setAdminPasswordChange() { + ctrl.confirmedAdminPassword = null; + launchInstanceModel.newInstanceSpec.admin_pass = null; + } } })(); diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.controller.spec.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.controller.spec.js index 6e2e06244f..c277f14703 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.controller.spec.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.controller.spec.js @@ -19,7 +19,7 @@ describe('Launch Instance Keypair Step', function() { describe('LaunchInstanceKeypairController', function() { - var ctrl, q, settings; + var ctrl, q, settings, model; var $uibModal = { open: angular.noop }; var toastServiceMock = {add: angular.noop}; @@ -28,6 +28,7 @@ beforeEach(function() { settings = { OPENSTACK_HYPERVISOR_FEATURES: { + can_set_password: true, requires_keypair: false } }; @@ -48,7 +49,7 @@ beforeEach(inject(function($controller, $q) { q = $q; - var model = { + model = { newInstanceSpec: { key_pair: ['key1'] }, @@ -189,6 +190,17 @@ ctrl.setKeypairRequired(false); expect(ctrl.isKeypairRequired).toBe(0); }); + + it('defines setAdminPassword', function() { + expect(ctrl.setAdminPassword).toBeDefined(); + expect(ctrl.setAdminPassword).toBe(false); + }); + + it('clears password fields when setAdminPassword is changed', function() { + ctrl.setAdminPasswordChange(); + expect(ctrl.confirmedAdminPassword).toBe(null); + expect(model.newInstanceSpec.admin_pass).toBe(null); + }); }); }); diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.html b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.html index 4271bcaace..040fa408e8 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.html +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/keypair/keypair.html @@ -25,4 +25,56 @@ table="ctrl"> + + +
+
+ + +
+ +
+
+ +
+
+
+ + +
+
+ +
+
+ + + + {$ ctrl.adminPassConfError $} + +
+
+
+
+
+
+
diff --git a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js index 8e33169d8b..21f34cd606 100644 --- a/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js +++ b/openstack_dashboard/dashboards/project/static/dashboard/project/workflow/launch-instance/launch-instance-model.service.spec.js @@ -1041,7 +1041,7 @@ expect(finalSpec.key_pair).toBeUndefined(); }); - it('stips null properties', function() { + it('strips null properties', function() { model.newInstanceSpec.useless = null; var finalSpec = model.createInstance(); diff --git a/releasenotes/notes/launch-instance-admin-password-68e7e4b7af239bae.yaml b/releasenotes/notes/launch-instance-admin-password-68e7e4b7af239bae.yaml new file mode 100644 index 0000000000..c144be1be3 --- /dev/null +++ b/releasenotes/notes/launch-instance-admin-password-68e7e4b7af239bae.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Setting 'can_set_password' to True in OPENSTACK_HYPERVISOR_FEATURES adds + the option to set admin password from AngularJS Launch Instance dialog. \ No newline at end of file