9b95aa0a35
Signed-off-by: Dean Troyer <dtroyer@gmail.com>
78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
#
|
|
# Copyright (c) 2013-2016 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
# this file is used for service group requests. Keeping naming consistent with sm client
|
|
|
|
from pecan import rest
|
|
import wsme
|
|
from wsme import types as wtypes
|
|
import wsmeext.pecan as wsme_pecan
|
|
|
|
from sysinv.api.controllers.v1 import base
|
|
from sysinv.api.controllers.v1 import sm_api
|
|
from sysinv.openstack.common.gettextutils import _
|
|
from sysinv.openstack.common import log
|
|
|
|
LOG = log.getLogger(__name__)
|
|
|
|
|
|
class SMServiceGroup(base.APIBase):
|
|
|
|
status = wtypes.text
|
|
state = wtypes.text
|
|
desired_state = wtypes.text
|
|
name = wtypes.text
|
|
service_group_name = wtypes.text
|
|
node_name = wtypes.text
|
|
condition = wtypes.text
|
|
uuid = wtypes.text
|
|
|
|
def __init__(self, **kwargs):
|
|
self.fields = ['status', 'state', 'desired_state', 'name',
|
|
'service_group_name', 'node_name', 'condition', 'uuid']
|
|
for k in self.fields:
|
|
setattr(self, k, kwargs.get(k))
|
|
|
|
|
|
class SMServiceGroupCollection(base.APIBase):
|
|
"""API representation of a collection of SM service group."""
|
|
|
|
sm_servicegroup = [SMServiceGroup]
|
|
"A list containing SmServiceGroup objects"
|
|
|
|
def __init__(self, **kwargs):
|
|
self._type = 'SmService'
|
|
|
|
@classmethod
|
|
def convert(cls, smservicegroups):
|
|
collection = SMServiceGroupCollection()
|
|
collection.sm_servicegroup = [SMServiceGroup(**n) for n in smservicegroups]
|
|
return collection
|
|
|
|
|
|
class SMServiceGroupController(rest.RestController):
|
|
|
|
@wsme_pecan.wsexpose(SMServiceGroup, unicode)
|
|
def get_one(self, uuid):
|
|
sm_servicegroup = sm_api.sm_servicegroup_show(uuid)
|
|
if sm_servicegroup is None:
|
|
raise wsme.exc.ClientSideError(_(
|
|
"Service group %s could not be found") % uuid)
|
|
return SMServiceGroup(**sm_servicegroup)
|
|
|
|
@wsme_pecan.wsexpose(SMServiceGroupCollection)
|
|
def get(self):
|
|
sm_servicegroups = sm_api.sm_servicegroup_list()
|
|
|
|
# sm_api returns {'sm_servicegroup':[list of sm_servicegroups]}
|
|
if isinstance(sm_servicegroups, dict):
|
|
if 'sm_servicegroup' in sm_servicegroups:
|
|
sm_servicegroups = sm_servicegroups['sm_servicegroup']
|
|
return SMServiceGroupCollection.convert(sm_servicegroups)
|
|
LOG.error("Bad response from SM API")
|
|
raise wsme.exc.ClientSideError(_(
|
|
"Bad response from SM API"))
|