gui/cgcs_dashboard/api/rest/dc_manager.py

91 lines
2.7 KiB
Python
Executable File

#
# Copyright (c) 2017 Wind River Systems, Inc.
#
# The right to copy, distribute, modify, or otherwise make use
# of this software may be licensed only pursuant to the terms
# of an applicable Wind River license agreement.
#
import logging
from django.views import generic
from openstack_dashboard.api import dc_manager
from openstack_dashboard.api.rest import urls
from openstack_dashboard.api.rest import utils as rest_utils
LOG = logging.getLogger(__name__)
@urls.register
class Subcloud(generic.View):
"""API for manipulating a single subcloud"""
url_regex = r'dc_manager/subclouds/(?P<subcloud_id>[^/]+|default)/$'
@rest_utils.ajax(data_required=True)
def patch(self, request, subcloud_id):
"""Update a specific subcloud
PATCH http://localhost/api/dc_manager/subclouds/2
"""
dc_manager.subcloud_update(request, subcloud_id, request.DATA)
@rest_utils.ajax()
def delete(self, request, subcloud_id):
"""Delete a specific subcloud
DELETE http://localhost/api/dc_manager/subclouds/3
"""
dc_manager.subcloud_delete(request, subcloud_id)
@urls.register
class SubcloudConfig(generic.View):
"""API for Subcloud configurations."""
url_regex = \
r'dc_manager/subclouds/(?P<subcloud_id>[^/]+)/generate-config/$'
@rest_utils.ajax()
def get(self, request, subcloud_id):
"""Generate a config for a specific subcloud."""
response = dc_manager.subcloud_generate_config(request, subcloud_id,
request.GET.dict())
response = {'config': response}
return rest_utils.CreatedResponse('/api/dc_manager/subclouds/',
response)
@urls.register
class SubClouds(generic.View):
"""API for Distributed Cloud Subclouds"""
url_regex = r'dc_manager/subclouds/$'
@rest_utils.ajax()
def get(self, request):
"""Get a list of subclouds"""
result = dc_manager.subcloud_list(request)
return {'items': [sc.to_dict() for sc in result]}
@rest_utils.ajax(data_required=True)
def put(self, request):
"""Create a Subcloud.
Create a subcloud using the parameters supplied in the POST
application/json object.
"""
dc_manager.subcloud_create(request, request.DATA)
@urls.register
class Summaries(generic.View):
"""API for Distributed Cloud Alarm Summaries"""
url_regex = r'dc_manager/alarm_summaries/$'
@rest_utils.ajax()
def get(self, request):
"""Get a list of summaries"""
result = dc_manager.alarm_summary_list(request)
return {'items': [s.to_dict() for s in result]}