From 43c93dcc853b8bbacfa770a84b89d98cf44de0ea Mon Sep 17 00:00:00 2001 From: Shu Muto Date: Wed, 14 Dec 2016 17:50:19 +0900 Subject: [PATCH] Add pool flavors panel into admin dashboard This patch adds pool flavors panel into admin dashboard. This provides only list view. Actions will be provided in the next patches. Change-Id: Iaf0e1e2f08b2bc7f06d6888943ed3304513394f7 Partial-Implement: blueprint support-pool-flavor --- zaqar_ui/content/pool-flavors/__init__.py | 0 zaqar_ui/content/pool-flavors/panel.py | 22 ++++ zaqar_ui/content/pool-flavors/urls.py | 19 ++++ zaqar_ui/enabled/_2530_admin_pool_flavors.py | 22 ++++ .../dashboard/admin/pool-flavors/drawer.html | 5 + .../dashboard/admin/pool-flavors/panel.html | 4 + .../admin/pool-flavors/pool-flavors.module.js | 100 ++++++++++++++++++ .../pool-flavors/pool-flavors.service.js | 49 +++++++++ 8 files changed, 221 insertions(+) create mode 100644 zaqar_ui/content/pool-flavors/__init__.py create mode 100644 zaqar_ui/content/pool-flavors/panel.py create mode 100644 zaqar_ui/content/pool-flavors/urls.py create mode 100644 zaqar_ui/enabled/_2530_admin_pool_flavors.py create mode 100644 zaqar_ui/static/dashboard/admin/pool-flavors/drawer.html create mode 100644 zaqar_ui/static/dashboard/admin/pool-flavors/panel.html create mode 100644 zaqar_ui/static/dashboard/admin/pool-flavors/pool-flavors.module.js create mode 100644 zaqar_ui/static/dashboard/admin/pool-flavors/pool-flavors.service.js diff --git a/zaqar_ui/content/pool-flavors/__init__.py b/zaqar_ui/content/pool-flavors/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/zaqar_ui/content/pool-flavors/panel.py b/zaqar_ui/content/pool-flavors/panel.py new file mode 100644 index 0000000..d15e9f5 --- /dev/null +++ b/zaqar_ui/content/pool-flavors/panel.py @@ -0,0 +1,22 @@ +# Copyright 2015 IBM Corp. +# +# 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. + +from django.utils.translation import ugettext_lazy as _ + +import horizon + + +class PoolFlavors(horizon.Panel): + name = _("Pool Flavors") + slug = "pool-flavors" diff --git a/zaqar_ui/content/pool-flavors/urls.py b/zaqar_ui/content/pool-flavors/urls.py new file mode 100644 index 0000000..7c99e65 --- /dev/null +++ b/zaqar_ui/content/pool-flavors/urls.py @@ -0,0 +1,19 @@ +# 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. + +from django.conf import urls +from horizon.browsers import views + + +urlpatterns = [ + urls.url(r'^$', views.AngularIndexView.as_view(), name='index'), +] diff --git a/zaqar_ui/enabled/_2530_admin_pool_flavors.py b/zaqar_ui/enabled/_2530_admin_pool_flavors.py new file mode 100644 index 0000000..9754d45 --- /dev/null +++ b/zaqar_ui/enabled/_2530_admin_pool_flavors.py @@ -0,0 +1,22 @@ +# Copyright 2015 IBM Corp. +# +# 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. + +PANEL = 'pool-flavors' +PANEL_GROUP = 'messaging' +PANEL_DASHBOARD = 'admin' + +ADD_PANEL = ('zaqar_ui.content.pool-flavors.panel.PoolFlavors') +ADD_ANGULAR_MODULES = ['horizon.dashboard.admin.pool-flavors'] + +AUTO_DISCOVER_STATIC_FILES = True diff --git a/zaqar_ui/static/dashboard/admin/pool-flavors/drawer.html b/zaqar_ui/static/dashboard/admin/pool-flavors/drawer.html new file mode 100644 index 0000000..fa5a89d --- /dev/null +++ b/zaqar_ui/static/dashboard/admin/pool-flavors/drawer.html @@ -0,0 +1,5 @@ + + diff --git a/zaqar_ui/static/dashboard/admin/pool-flavors/panel.html b/zaqar_ui/static/dashboard/admin/pool-flavors/panel.html new file mode 100644 index 0000000..a742faa --- /dev/null +++ b/zaqar_ui/static/dashboard/admin/pool-flavors/panel.html @@ -0,0 +1,4 @@ + + + + diff --git a/zaqar_ui/static/dashboard/admin/pool-flavors/pool-flavors.module.js b/zaqar_ui/static/dashboard/admin/pool-flavors/pool-flavors.module.js new file mode 100644 index 0000000..472215e --- /dev/null +++ b/zaqar_ui/static/dashboard/admin/pool-flavors/pool-flavors.module.js @@ -0,0 +1,100 @@ +/* + * 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. + */ +(function () { + 'use strict'; + + /** + * @ngdoc overview + * @name horizon.dashboard.admin.pool-flavors + * @description Flavors module for messaging pool. + */ + + angular + .module('horizon.dashboard.admin.pool-flavors', [ + 'ngRoute' + ]) + .constant('horizon.dashboard.admin.pool-flavors.resourceType', 'OS::Zaqar::Flavors') + .run(run) + .config(config); + + run.$inject = [ + 'horizon.app.core.openstack-service-api.zaqar', + 'horizon.dashboard.admin.pool-flavors.basePath', + 'horizon.dashboard.admin.pool-flavors.resourceType', + 'horizon.dashboard.admin.pool-flavors.service', + 'horizon.framework.conf.resource-type-registry.service' + ]; + + function run(zaqar, basePath, resourceType, flavorsService, registry) { + registry.getResourceType(resourceType) + .setNames(gettext('Pool Flavor'), gettext('Pool Flavors')) + .setSummaryTemplateUrl(basePath + 'drawer.html') + .setProperties(flavorProperties()) + .setListFunction(flavorsService.getFlavorsPromise) + .tableColumns + .append({ + id: 'name', + priority: 1, + sortDefault: true + }) + .append({ + id: 'pool_group', + priority: 1 + }); + // for magic-search + registry.getResourceType(resourceType).filterFacets + .append({ + label: gettext('Name'), + name: 'name', + singleton: true + }) + .append({ + label: gettext('Pool Group'), + name: 'pool_group', + singleton: true + }); + } + + function flavorProperties() { + return { + name: { label: gettext('Name'), filters: [] }, + pool_group: { label: gettext('Pool Group'), filters: ['noName'] }, + capabilities: { label: gettext('Capabilities'), filters: ['noValue'] } + }; + } + + config.$inject = [ + '$provide', + '$windowProvider', + '$routeProvider' + ]; + + /** + * @ndoc config + * @name horizon.dashboard.admin.pool-flavors.basePath + * @param {Object} $provide + * @param {Object} $windowProvider + * @param {Object} $routeProvider + * @returns {undefined} Returns nothing + * @description Base path for the pool-flavors panel + */ + function config($provide, $windowProvider, $routeProvider) { + var path = $windowProvider.$get().STATIC_URL + 'dashboard/admin/pool-flavors/'; + $provide.constant('horizon.dashboard.admin.pool-flavors.basePath', path); + + $routeProvider.when('/admin/pool-flavors', { + templateUrl: path + 'panel.html' + }); + } +}()); diff --git a/zaqar_ui/static/dashboard/admin/pool-flavors/pool-flavors.service.js b/zaqar_ui/static/dashboard/admin/pool-flavors/pool-flavors.service.js new file mode 100644 index 0000000..0450e33 --- /dev/null +++ b/zaqar_ui/static/dashboard/admin/pool-flavors/pool-flavors.service.js @@ -0,0 +1,49 @@ +/* + * 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. + */ +(function() { + "use strict"; + + angular + .module('horizon.dashboard.admin.pool-flavors') + .factory('horizon.dashboard.admin.pool-flavors.service', flavorsService); + + flavorsService.$inject = [ + 'horizon.app.core.openstack-service-api.zaqar' + ]; + + /* + * @ngdoc factory + * @name horizon.dashboard.admin.pool-flavors.service + * + * @description + * This service provides functions that are used through + * the Pool Flavors features. + */ + function flavorsService(zaqar) { + return { + getFlavorsPromise: getFlavorsPromise + }; + + /* + * @ngdoc function + * @name getFlavorsPromise + * @description + * Given filter/query parameters, returns a promise for the matching + * flavors. This is used in displaying lists of Pool Flavors. + */ + function getFlavorsPromise(params) { + return zaqar.getFlavors(params); + } + } +})();