REST API for Murano Dashboard.
This patch adds the start of a horizon rest api module so that javascript can wrap it. It also provides an AngularJS wrapper. Change-Id: I53ee3bf1c9d447e0619689e8f649146a6357207b
This commit is contained in:
parent
8a6d83e737
commit
f5578ac224
14
muranodashboard/api/rest/__init__.py
Normal file
14
muranodashboard/api/rest/__init__.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
# import REST API modules here
|
||||||
|
from . import packages # noqa
|
67
muranodashboard/api/rest/packages.py
Normal file
67
muranodashboard/api/rest/packages.py
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
# 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.
|
||||||
|
"""API for the murano packages service.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.views import generic
|
||||||
|
from openstack_dashboard.api.rest import utils as rest_utils
|
||||||
|
|
||||||
|
from muranodashboard import api
|
||||||
|
from openstack_dashboard.api.rest import urls
|
||||||
|
|
||||||
|
|
||||||
|
CLIENT_KEYWORDS = {'marker', 'sort_dir', 'paginate'}
|
||||||
|
|
||||||
|
|
||||||
|
@urls.register
|
||||||
|
class Packages(generic.View):
|
||||||
|
"""API for Murano packages.
|
||||||
|
"""
|
||||||
|
url_regex = r'murano/packages/$'
|
||||||
|
|
||||||
|
@rest_utils.ajax()
|
||||||
|
def get(self, request):
|
||||||
|
"""Get a list of packages.
|
||||||
|
|
||||||
|
The listing result is an object with property "packages".
|
||||||
|
|
||||||
|
Example GET:
|
||||||
|
http://localhost/api/murano/packages?sort_dir=desc #flake8: noqa
|
||||||
|
|
||||||
|
The following get parameters may be passed in the GET
|
||||||
|
request:
|
||||||
|
|
||||||
|
:param paginate: If true will perform pagination based on settings.
|
||||||
|
:param marker: Specifies the namespace of the last-seen package.
|
||||||
|
The typical pattern of limit and marker is to make an
|
||||||
|
initial limited request and then to use the last
|
||||||
|
namespace from the response as the marker parameter
|
||||||
|
in a subsequent limited request. With paginate, limit
|
||||||
|
is automatically set.
|
||||||
|
:param sort_dir: The sort direction ('asc' or 'desc').
|
||||||
|
|
||||||
|
Any additional request parameters will be passed through the API as
|
||||||
|
filters.
|
||||||
|
"""
|
||||||
|
|
||||||
|
filters, kwargs = rest_utils.parse_filters_kwargs(request,
|
||||||
|
CLIENT_KEYWORDS)
|
||||||
|
|
||||||
|
packages, has_more_data = api.packages.package_list(
|
||||||
|
request, filters=filters, **kwargs)
|
||||||
|
|
||||||
|
return {
|
||||||
|
'packages': [p.to_dict() for p in packages],
|
||||||
|
'has_more_data': has_more_data,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -16,6 +16,8 @@ from django.conf import settings
|
|||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
import horizon
|
import horizon
|
||||||
|
|
||||||
|
# Load the api rest services into Horizon
|
||||||
|
import muranodashboard.api.rest # noqa
|
||||||
from muranodashboard import exceptions
|
from muranodashboard import exceptions
|
||||||
# prevent pyflakes from fail
|
# prevent pyflakes from fail
|
||||||
assert exceptions
|
assert exceptions
|
||||||
|
@ -15,3 +15,9 @@ ADD_EXCEPTIONS = {
|
|||||||
'not_found': exceptions.NOT_FOUND,
|
'not_found': exceptions.NOT_FOUND,
|
||||||
'unauthorized': exceptions.UNAUTHORIZED,
|
'unauthorized': exceptions.UNAUTHORIZED,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ADD_JS_FILES = [
|
||||||
|
'muranodashboard/js/murano.service.js'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
73
muranodashboard/static/muranodashboard/js/murano.service.js
Normal file
73
muranodashboard/static/muranodashboard/js/murano.service.js
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/**
|
||||||
|
* 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.app.core.openstack-service-api')
|
||||||
|
.factory('horizon.app.core.openstack-service-api.murano', muranoAPI);
|
||||||
|
|
||||||
|
muranoAPI.$inject = [
|
||||||
|
'horizon.framework.util.http.service',
|
||||||
|
'horizon.framework.widgets.toast.service'
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc service
|
||||||
|
* @name horizon.app.core.openstack-service-api.murano
|
||||||
|
* @description Provides direct pass through to Murano with NO abstraction.
|
||||||
|
*/
|
||||||
|
function muranoAPI(apiService, toastService) {
|
||||||
|
var service = {
|
||||||
|
getPackages: getPackages
|
||||||
|
};
|
||||||
|
|
||||||
|
return service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name horizon.app.core.openstack-service-api.murano.getPackages
|
||||||
|
* @description
|
||||||
|
* Get a list of packages.
|
||||||
|
*
|
||||||
|
* The listing result is an object with property "packages". Each item is
|
||||||
|
* an packages.
|
||||||
|
*
|
||||||
|
* @param {Object} params
|
||||||
|
* Query parameters. Optional.
|
||||||
|
*
|
||||||
|
* @param {boolean} params.paginate
|
||||||
|
* True to paginate automatically.
|
||||||
|
*
|
||||||
|
* @param {string} params.marker
|
||||||
|
* Specifies the image of the last-seen image.
|
||||||
|
*
|
||||||
|
* The typical pattern of limit and marker is to make an
|
||||||
|
* initial limited request and then to use the last
|
||||||
|
* image from the response as the marker parameter
|
||||||
|
* in a subsequent limited request. With paginate, limit
|
||||||
|
* is automatically set.
|
||||||
|
*
|
||||||
|
* @param {string} params.sort_dir
|
||||||
|
* The sort direction ('asc' or 'desc').
|
||||||
|
*/
|
||||||
|
function getPackages(params) {
|
||||||
|
var config = (params) ? { 'params' : params} : {};
|
||||||
|
return apiService.get('/api/murano/packages/', config)
|
||||||
|
.error(function () {
|
||||||
|
toastService.add('error', gettext('Unable to retrieve the packages.'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}());
|
Loading…
Reference in New Issue
Block a user