Merge "Add config for default create volume option" into stable/ocata

This commit is contained in:
Jenkins 2017-06-20 07:57:49 +00:00 committed by Gerrit Code Review
commit f87d87a2fa
7 changed files with 43 additions and 3 deletions

View File

@ -670,6 +670,7 @@ Default::
"disable_instance_snapshot": False,
"disable_volume": False,
"disable_volume_snapshot": False,
"create_volume": True,
}
A dictionary of settings which can be used to provide the default values for
@ -681,6 +682,10 @@ Drive property.
The ``enable_scheduler_hints`` setting specifies whether or not Scheduler Hints
can be provided when launching an instance.
The ``create_volume`` setting allows you to specify the default value for the
option of creating a new volume in the workflow for image and instance snapshot
sources.
The ``disable_image`` setting disables Images as a valid boot source for launching
instances. Image sources won't show up in the Launch Instance modal.

View File

@ -195,6 +195,7 @@
// REQUIRED for JS logic (image | snapshot | volume | volume_snapshot)
source_type: null,
source: [],
create_volume_default: true,
// REQUIRED for JS logic
vol_create: false,
// May be null
@ -278,6 +279,10 @@
if ('config_drive' in defaults) {
model.newInstanceSpec.config_drive = defaults.config_drive;
}
if ('create_volume' in defaults) {
// Append "_default" to distinguish from the 'vol_create' item
model.newInstanceSpec.create_volume_default = defaults.create_volume;
}
}
/**

View File

@ -158,6 +158,7 @@
beforeEach(function () {
settings = {
LAUNCH_INSTANCE_DEFAULTS: {
create_volume: true,
config_drive: false,
disable_image: false,
disable_instance_snapshot: false,
@ -485,6 +486,22 @@
expect(model.newInstanceSpec.config_drive).toBe(true);
});
it('should default create_volume to true if setting not provided', function() {
delete settings.LAUNCH_INSTANCE_DEFAULTS.create_volume;
model.initialize(true);
scope.$apply();
expect(model.newInstanceSpec.create_volume_default).toBe(true);
});
it('should default create_volume to false based on setting', function() {
settings.LAUNCH_INSTANCE_DEFAULTS.create_volume = false;
model.initialize(true);
scope.$apply();
expect(model.newInstanceSpec.create_volume_default).toBe(false);
});
it('should not set availability zone if the zone list is empty', function () {
spyOn(novaApi, 'getAvailabilityZones').and.callFake(function () {
var deferred = $q.defer();
@ -583,6 +600,7 @@
});
it('should have proper allowedBootSources if specific settings missing', function() {
delete settings.LAUNCH_INSTANCE_DEFAULTS.create_volume;
delete settings.LAUNCH_INSTANCE_DEFAULTS.disable_image;
delete settings.LAUNCH_INSTANCE_DEFAULTS.disable_instance_snapshot;
delete settings.LAUNCH_INSTANCE_DEFAULTS.disable_volume;
@ -595,6 +613,7 @@
expect(model.allowedBootSources).toContain(INSTANCE_SNAPSHOT);
expect(model.allowedBootSources).toContain(VOLUME);
expect(model.allowedBootSources).toContain(VOLUME_SNAPSHOT);
expect(model.newInstanceSpec.create_volume_default).toBe(true);
});
it('should have no images if disable_image is set to true', function() {
@ -750,7 +769,7 @@
// This is here to ensure that as people add/change items, they
// don't forget to implement tests for them.
it('has the right number of properties', function() {
expect(Object.keys(model.newInstanceSpec).length).toBe(21);
expect(Object.keys(model.newInstanceSpec).length).toBe(22);
});
it('sets availability zone to null', function() {
@ -765,6 +784,10 @@
expect(model.newInstanceSpec.config_drive).toBe(false);
});
it('sets create volume to true', function() {
expect(model.newInstanceSpec.create_volume_default).toBe(true);
});
it('sets user data to an empty string', function() {
expect(model.newInstanceSpec.user_data).toBe('');
});

View File

@ -418,7 +418,8 @@
ctrl.currentBootSource = selectedSource;
if ((selectedSource === bootSourceTypes.IMAGE ||
selectedSource === bootSourceTypes.INSTANCE_SNAPSHOT) && $scope.model.volumeBootable) {
$scope.model.newInstanceSpec.vol_create = true;
$scope.model.newInstanceSpec.vol_create =
$scope.model.newInstanceSpec.create_volume_default;
} else {
$scope.model.newInstanceSpec.vol_create = false;
}

View File

@ -50,7 +50,7 @@
scope.model = {
allowedBootSources: [{type: 'image', label: 'Image'}],
newInstanceSpec: { source: [], source_type: '' },
newInstanceSpec: { source: [], source_type: '', create_volume_default: true },
images: [ { id: 'image-1' }, { id: 'image-2' } ],
imageSnapshots: [ { id: 'imageSnapshot-1' } ],
volumes: [ { id: 'volume-1' }, { id: 'volume-2' } ],

View File

@ -257,6 +257,7 @@ OPENSTACK_KEYSTONE_BACKEND = {
# 'disable_instance_snapshot': False,
# 'disable_volume': False,
# 'disable_volume_snapshot': False,
# 'create_volume': True,
#}
# The Xen Hypervisor has the ability to set the mount point for volumes

View File

@ -0,0 +1,5 @@
---
features:
- Added a new ``create_volume`` setting under the
``LAUNCH_INSTANCE_DEFAULTS`` dict. This allows you to set the default value
of "Create Volume", when Cinder is available.