Merge "Base launch instance wizard"
This commit is contained in:
commit
f003bc30cf
2
horizon/static/angular/wizard/wizard.js
vendored
2
horizon/static/angular/wizard/wizard.js
vendored
@ -1,7 +1,7 @@
|
|||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('hz.widget.wizard', [])
|
angular.module('hz.widget.wizard', ['ui.bootstrap'])
|
||||||
|
|
||||||
.constant('wizardLabels', {
|
.constant('wizardLabels', {
|
||||||
cancel: gettext('Cancel'),
|
cancel: gettext('Cancel'),
|
||||||
|
@ -1,3 +1,17 @@
|
|||||||
|
# Copyright 2015, Hewlett-Packard Development Company, L.P.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
# The slug of the dashboard to be added to HORIZON['dashboards']. Required.
|
# The slug of the dashboard to be added to HORIZON['dashboards']. Required.
|
||||||
DASHBOARD = 'project'
|
DASHBOARD = 'project'
|
||||||
# If set to True, this dashboard will be set as the default dashboard.
|
# If set to True, this dashboard will be set as the default dashboard.
|
||||||
@ -6,3 +20,27 @@ DEFAULT = True
|
|||||||
ADD_EXCEPTIONS = {}
|
ADD_EXCEPTIONS = {}
|
||||||
# A list of applications to be added to INSTALLED_APPS.
|
# A list of applications to be added to INSTALLED_APPS.
|
||||||
ADD_INSTALLED_APPS = ['openstack_dashboard.dashboards.project']
|
ADD_INSTALLED_APPS = ['openstack_dashboard.dashboards.project']
|
||||||
|
|
||||||
|
ADD_ANGULAR_MODULES = ['hz.dashboard']
|
||||||
|
|
||||||
|
LAUNCH_INST = 'dashboard/launch-instance/'
|
||||||
|
|
||||||
|
ADD_JS_FILES = [
|
||||||
|
'dashboard/dashboard.module.js',
|
||||||
|
LAUNCH_INST + 'launch-instance.js',
|
||||||
|
LAUNCH_INST + 'source/source.js',
|
||||||
|
LAUNCH_INST + 'flavor/flavor.js',
|
||||||
|
LAUNCH_INST + 'network/network.js',
|
||||||
|
LAUNCH_INST + 'access-and-security/access-and-security.js',
|
||||||
|
LAUNCH_INST + 'post-creation/post-creation.js',
|
||||||
|
]
|
||||||
|
|
||||||
|
ADD_JS_SPEC_FILES = [
|
||||||
|
'dashboard/dashboard.module.spec.js',
|
||||||
|
LAUNCH_INST + 'launch-instance.spec.js',
|
||||||
|
LAUNCH_INST + 'source/source.spec.js',
|
||||||
|
LAUNCH_INST + 'flavor/flavor.spec.js',
|
||||||
|
LAUNCH_INST + 'network/network.spec.js',
|
||||||
|
LAUNCH_INST + 'access-and-security/access-and-security.spec.js',
|
||||||
|
LAUNCH_INST + 'post-creation/post-creation.spec.js',
|
||||||
|
]
|
||||||
|
10
openstack_dashboard/static/dashboard/dashboard.module.js
Normal file
10
openstack_dashboard/static/dashboard/dashboard.module.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var module = angular.module('hz.dashboard', [
|
||||||
|
'hz.dashboard.launch-instance'
|
||||||
|
]);
|
||||||
|
|
||||||
|
module.constant('dashboardBasePath', '/static/dashboard/');
|
||||||
|
|
||||||
|
})();
|
@ -0,0 +1,2 @@
|
|||||||
|
/* jshint globalstrict: true */
|
||||||
|
'use strict';
|
2
openstack_dashboard/static/dashboard/dashboard.scss
Normal file
2
openstack_dashboard/static/dashboard/dashboard.scss
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
@import "./scss/variables";
|
||||||
|
@import "launch-instance/launch-instance";
|
@ -0,0 +1,4 @@
|
|||||||
|
<div ng-controller="LaunchInstanceAccessAndSecurityHelpCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
<p></p>
|
||||||
|
</div>
|
@ -0,0 +1,3 @@
|
|||||||
|
<div ng-controller="LaunchInstanceAccessAndSecurityCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var module = angular.module('hz.dashboard.launch-instance');
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceAccessAndSecurityCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstanceAccessAndSecurityCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceAccessAndSecurityHelpCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstanceAccessAndSecurityHelpCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
function LaunchInstanceAccessAndSecurityCtrl($scope) {
|
||||||
|
$scope.title = gettext('Access and Security');
|
||||||
|
}
|
||||||
|
|
||||||
|
function LaunchInstanceAccessAndSecurityHelpCtrl($scope) {
|
||||||
|
$scope.title = gettext('Access and Security Help');
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
@ -0,0 +1,2 @@
|
|||||||
|
/* jshint globalstrict: true */
|
||||||
|
'use strict';
|
@ -0,0 +1,4 @@
|
|||||||
|
<div ng-controller="LaunchInstanceFlavorHelpCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
<p></p>
|
||||||
|
</div>
|
@ -0,0 +1,3 @@
|
|||||||
|
<div ng-controller="LaunchInstanceFlavorCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var module = angular.module('hz.dashboard.launch-instance');
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceFlavorCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstanceFlavorCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceFlavorHelpCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstanceFlavorHelpCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
function LaunchInstanceFlavorCtrl($scope) {
|
||||||
|
$scope.title = gettext('Select a Flavor');
|
||||||
|
}
|
||||||
|
|
||||||
|
function LaunchInstanceFlavorHelpCtrl($scope) {
|
||||||
|
$scope.title = gettext('Flavor Help');
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
@ -0,0 +1,2 @@
|
|||||||
|
/* jshint globalstrict: true */
|
||||||
|
'use strict';
|
@ -0,0 +1,103 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var module = angular.module('hz.dashboard.launch-instance', []);
|
||||||
|
|
||||||
|
module.factory('launchInstanceWorkflow', ['dashboardBasePath', function (path) {
|
||||||
|
|
||||||
|
return {
|
||||||
|
title: gettext('Launch Instance'),
|
||||||
|
|
||||||
|
steps: [
|
||||||
|
{
|
||||||
|
title: gettext('Select Source'),
|
||||||
|
templateUrl: path + 'launch-instance/source/source.html',
|
||||||
|
helpUrl: path + 'launch-instance/source/source.help.html',
|
||||||
|
formName: 'launchInstanceSourceForm'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: gettext('Flavor'),
|
||||||
|
templateUrl: path + 'launch-instance/flavor/flavor.html',
|
||||||
|
helpUrl: path + 'launch-instance/flavor/flavor.help.html',
|
||||||
|
formName: 'launchInstanceFlavorForm'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: gettext('Network'),
|
||||||
|
templateUrl: path + 'launch-instance/network/network.html',
|
||||||
|
helpUrl: path + 'launch-instance/network/network.help.html',
|
||||||
|
formName: 'launchInstanceNetworkForm'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: gettext('Access and Security'),
|
||||||
|
templateUrl: path + 'launch-instance/access-and-security/access-and-security.html',
|
||||||
|
helpUrl: path + 'launch-instance/access-and-security/access-and-security.help.html',
|
||||||
|
formName: 'launchInstanceAccessAndSecurityForm'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: gettext('Post Creation'),
|
||||||
|
templateUrl: path + 'launch-instance/post-creation/post-creation.html',
|
||||||
|
helpUrl: path + 'launch-instance/post-creation/post-creation.help.html',
|
||||||
|
formName: 'launchInstancePostCreationForm'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
btnText: {
|
||||||
|
finish: gettext('Launch Instance')
|
||||||
|
},
|
||||||
|
|
||||||
|
btnIcon: {
|
||||||
|
finish: 'fa fa-cloud-download'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}]);
|
||||||
|
|
||||||
|
// Using bootstrap-ui modal widget
|
||||||
|
module.constant('launchInstanceWizardModalSpec', {
|
||||||
|
backdrop: 'static',
|
||||||
|
controller: 'ModalContainerCtrl',
|
||||||
|
template: '<wizard ng-controller="LaunchInstanceWizardCtrl"></wizard>',
|
||||||
|
windowClass: 'modal-dialog-wizard'
|
||||||
|
});
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceWizardCtrl', [
|
||||||
|
'$scope',
|
||||||
|
'$q', // temporary, should call api access services
|
||||||
|
'launchInstanceWorkflow',
|
||||||
|
LaunchInstanceWizardCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceModalCtrl', [
|
||||||
|
'$scope',
|
||||||
|
'$modal',
|
||||||
|
'launchInstanceWizardModalSpec',
|
||||||
|
LaunchInstanceModalCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
function LaunchInstanceWizardCtrl($scope, $q, launchInstanceWorkflow) {
|
||||||
|
$scope.workflow = launchInstanceWorkflow;
|
||||||
|
$scope.model = {
|
||||||
|
source: {},
|
||||||
|
flavor: {},
|
||||||
|
network: {},
|
||||||
|
accessAndSecurity: {},
|
||||||
|
postCreation: {}
|
||||||
|
};
|
||||||
|
$scope.submit = function () {
|
||||||
|
return $q(function (resolve) {
|
||||||
|
//
|
||||||
|
// emulating server side process
|
||||||
|
//
|
||||||
|
setTimeout(function () {
|
||||||
|
resolve();
|
||||||
|
}, 1000);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function LaunchInstanceModalCtrl($scope, $modal, modalSpec) {
|
||||||
|
$scope.openLaunchInstanceWizard = function () {
|
||||||
|
$modal.open(modalSpec);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
@ -0,0 +1,5 @@
|
|||||||
|
@import "source/source";
|
||||||
|
@import "flavor/flavor";
|
||||||
|
@import "network/network";
|
||||||
|
@import "access-and-security/access-and-security";
|
||||||
|
@import "post-creation/post-creation";
|
@ -0,0 +1,2 @@
|
|||||||
|
/* jshint globalstrict: true */
|
||||||
|
'use strict';
|
@ -0,0 +1,4 @@
|
|||||||
|
<div ng-controller="LaunchInstanceNetworkHelpCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
<p></p>
|
||||||
|
</div>
|
@ -0,0 +1,3 @@
|
|||||||
|
<div ng-controller="LaunchInstanceNetworkCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var module = angular.module('hz.dashboard.launch-instance');
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceNetworkCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstanceNetworkCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceNetworkHelpCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstanceNetworkHelpCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
function LaunchInstanceNetworkCtrl($scope) {
|
||||||
|
$scope.title = gettext('Network');
|
||||||
|
}
|
||||||
|
|
||||||
|
function LaunchInstanceNetworkHelpCtrl($scope) {
|
||||||
|
$scope.title = gettext('Network Help');
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
@ -0,0 +1,2 @@
|
|||||||
|
/* jshint globalstrict: true */
|
||||||
|
'use strict';
|
@ -0,0 +1,4 @@
|
|||||||
|
<div ng-controller="LaunchInstancePostCreationHelpCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
<p></p>
|
||||||
|
</div>
|
@ -0,0 +1,3 @@
|
|||||||
|
<div ng-controller="LaunchInstancePostCreationCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
</div>
|
@ -0,0 +1,23 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var module = angular.module('hz.dashboard.launch-instance');
|
||||||
|
|
||||||
|
module.controller('LaunchInstancePostCreationCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstancePostCreationCtrl
|
||||||
|
]);
|
||||||
|
module.controller('LaunchInstancePostCreationHelpCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstancePostCreationHelpCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
function LaunchInstancePostCreationCtrl($scope) {
|
||||||
|
$scope.title = gettext('Post Creation');
|
||||||
|
}
|
||||||
|
|
||||||
|
function LaunchInstancePostCreationHelpCtrl($scope) {
|
||||||
|
$scope.title = gettext('Post Creation Help');
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
@ -0,0 +1,2 @@
|
|||||||
|
/* jshint globalstrict: true */
|
||||||
|
'use strict';
|
@ -0,0 +1,4 @@
|
|||||||
|
<div ng-controller="LaunchInstanceSourceHelpCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
<p></p>
|
||||||
|
</div>
|
@ -0,0 +1,3 @@
|
|||||||
|
<div ng-controller="LaunchInstanceSourceCtrl">
|
||||||
|
<h1>{$ title $}</h1>
|
||||||
|
</div>
|
@ -0,0 +1,24 @@
|
|||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var module = angular.module('hz.dashboard.launch-instance');
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceSourceCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstanceSourceCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
module.controller('LaunchInstanceSourceHelpCtrl', [
|
||||||
|
'$scope',
|
||||||
|
LaunchInstanceSourceHelpCtrl
|
||||||
|
]);
|
||||||
|
|
||||||
|
function LaunchInstanceSourceCtrl($scope) {
|
||||||
|
$scope.title = gettext('Instance Details');
|
||||||
|
}
|
||||||
|
|
||||||
|
function LaunchInstanceSourceHelpCtrl($scope) {
|
||||||
|
$scope.title = gettext('Instance Details Help');
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
@ -0,0 +1,2 @@
|
|||||||
|
/* jshint globalstrict: true */
|
||||||
|
'use strict';
|
@ -1,7 +1,18 @@
|
|||||||
|
{% comment %}
|
||||||
|
We want to have separate compressed css files for horizon.scss and dashboard.scss.
|
||||||
|
The reason for it is based on the fact that IE9 has a limit on the number of css rules
|
||||||
|
that can be parsed in a single css file. The limit is 4095 = (4k - 1). This causes some
|
||||||
|
css rules getting cut off if one css file to get more than 4k rules inside.
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
{% load compress %}
|
{% load compress %}
|
||||||
|
|
||||||
{% compress css %}
|
{% compress css %}
|
||||||
<link href='{{ STATIC_URL }}dashboard/scss/horizon.scss' type='text/scss' media='screen' rel='stylesheet' />
|
<link href='{{ STATIC_URL }}dashboard/scss/horizon.scss' type='text/scss' media='screen' rel='stylesheet' />
|
||||||
{% endcompress %}
|
{% endcompress %}
|
||||||
|
|
||||||
|
{% compress css %}
|
||||||
|
<link href='{{ STATIC_URL }}dashboard/dashboard.scss' type='text/scss' media='screen' rel='stylesheet' />
|
||||||
|
{% endcompress %}
|
||||||
|
|
||||||
<link rel="shortcut icon" href="{{ STATIC_URL }}dashboard/img/favicon.ico"/>
|
<link rel="shortcut icon" href="{{ STATIC_URL }}dashboard/img/favicon.ico"/>
|
||||||
|
@ -158,6 +158,7 @@ function run_jshint {
|
|||||||
jshint horizon/static/horizon/js
|
jshint horizon/static/horizon/js
|
||||||
jshint horizon/static/horizon/tests
|
jshint horizon/static/horizon/tests
|
||||||
jshint horizon/static/angular/
|
jshint horizon/static/angular/
|
||||||
|
jshint openstack_dashboard/static/dashboard/
|
||||||
}
|
}
|
||||||
|
|
||||||
function warn_on_flake8_without_venv {
|
function warn_on_flake8_without_venv {
|
||||||
|
Loading…
Reference in New Issue
Block a user