gui/cgcs_dashboard/api/dc_manager.py

74 lines
2.3 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 dcmanagerclient.api.v1 import client
from horizon.utils.memoized import memoized # noqa
from openstack_dashboard.api import base
LOG = logging.getLogger(__name__)
@memoized
def dcmanagerclient(request):
endpoint = base.url_for(request, 'dcmanager', 'adminURL')
c = client.Client(project_id=request.user.project_id,
user_id=request.user.id,
auth_token=request.user.token.id,
dcmanager_url=endpoint)
return c
class Summary(base.APIResourceWrapper):
_attrs = ['name', 'critical', 'major', 'minor', 'warnings', 'status']
def alarm_summary_list(request):
summaries = dcmanagerclient(request).alarm_manager.list_alarms()
return [Summary(summary) for summary in summaries]
class Subcloud(base.APIResourceWrapper):
_attrs = ['subcloud_id', 'name', 'description', 'location',
'software_version', 'management_subnet', 'management_state',
'availability_status', 'management_start_ip',
'management_end_ip', 'management_gateway_ip',
'systemcontroller_gateway_ip', 'created_at', 'updated_at',
'sync_status', 'endpoint_sync_status', ]
def subcloud_list(request):
subclouds = dcmanagerclient(request).subcloud_manager.list_subclouds()
return [Subcloud(subcloud) for subcloud in subclouds]
def subcloud_create(request, data):
return dcmanagerclient(request).subcloud_manager.add_subcloud(
**data.get('data'))
def subcloud_update(request, subcloud_id, changes):
response = dcmanagerclient(request).subcloud_manager.update_subcloud(
subcloud_id, **changes.get('updated'))
# Updating returns a list of subclouds for some reason
return [Subcloud(subcloud) for subcloud in response]
def subcloud_delete(request, subcloud_id):
return dcmanagerclient(request).subcloud_manager.delete_subcloud(
subcloud_id)
def subcloud_generate_config(request, subcloud_id, data):
return dcmanagerclient(request).subcloud_manager.generate_config_subcloud(
subcloud_id, **data)