53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
"""
|
|
Copyright (c) 2013-2024 Wind River Systems, Inc.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
|
|
"""
|
|
|
|
|
|
import datetime
|
|
|
|
import wsme
|
|
from wsme import types as wtypes
|
|
|
|
|
|
class APIBase(wtypes.Base):
|
|
|
|
created_at = datetime.datetime
|
|
"The time in UTC at which the object is created"
|
|
|
|
updated_at = datetime.datetime
|
|
"The time in UTC at which the object is updated"
|
|
|
|
def as_dict(self):
|
|
"""Render this object as a dict of its fields."""
|
|
return dict((k, getattr(self, k))
|
|
for k in self.fields # pylint: disable=no-member
|
|
if hasattr(self, k) and
|
|
getattr(self, k) != wsme.Unset)
|
|
|
|
def unset_fields_except(self, except_list=None):
|
|
"""Unset fields so they don't appear in the message body.
|
|
|
|
:param except_list: A list of fields that won't be touched.
|
|
|
|
"""
|
|
if except_list is None:
|
|
except_list = []
|
|
|
|
for k in self.as_dict():
|
|
if k not in except_list:
|
|
setattr(self, k, wsme.Unset)
|
|
|
|
@classmethod
|
|
def from_rpc_object(cls, m, fields=None):
|
|
"""Convert a RPC object to an API object."""
|
|
obj_dict = m.as_dict()
|
|
# Unset non-required fields so they do not appear
|
|
# in the message body
|
|
obj_dict.update(dict((k, wsme.Unset)
|
|
for k in obj_dict.keys()
|
|
if fields and k not in fields))
|
|
return cls(**obj_dict)
|