Files
distcloud/distributedcloud/dcmanager/common/serializer.py
Hugo Brito 591956c86a Apply black formatter to dcmanager/common
This commit applies the Black format to the `dcmanager/common`
files to ensure that it adheres to the Black code style guidelines.

Test Plan:
PASS: Success in stx-distcloud-tox-black

Story: 2011149
Task: 50444

Change-Id: I5b53966ef9a4fe505ef6fef8a9a7440b3831f495
Signed-off-by: Hugo Brito <hugo.brito@windriver.com>
2024-07-29 21:19:37 -03:00

88 lines
2.7 KiB
Python

# Copyright 2015 Huawei Technologies Co., Ltd.
# Copyright (c) 2017, 2019, 2021, 2022, 2024 Wind River Systems, Inc.
# All Rights Reserved.
#
# 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 oslo_messaging
ATTR_NOT_SPECIFIED = object()
class Mapping(object):
def __init__(self, mapping):
self.direct_mapping = mapping
self.reverse_mapping = {}
for key, value in mapping.items():
self.reverse_mapping[value] = key
_SINGLETON_MAPPING = Mapping(
{
ATTR_NOT_SPECIFIED: "@@**ATTR_NOT_SPECIFIED**@@",
}
)
class DCManagerSerializer(oslo_messaging.Serializer):
def __init__(self, base=None):
super(DCManagerSerializer, self).__init__()
self._base = base
def serialize_entity(self, ctxt, entity):
if isinstance(entity, dict):
for key, value in entity.items():
entity[key] = self.serialize_entity(ctxt, value)
elif isinstance(entity, list):
for i, item in enumerate(entity):
entity[i] = self.serialize_entity(ctxt, item)
elif entity in _SINGLETON_MAPPING.direct_mapping:
entity = _SINGLETON_MAPPING.direct_mapping[entity]
if self._base is not None:
entity = self._base.serialize_entity(ctxt, entity)
return entity
def deserialize_entity(self, ctxt, entity):
if isinstance(entity, dict):
for key, value in entity.items():
entity[key] = self.deserialize_entity(ctxt, value)
elif isinstance(entity, list):
for i, item in enumerate(entity):
entity[i] = self.deserialize_entity(ctxt, item)
elif entity in _SINGLETON_MAPPING.reverse_mapping:
entity = _SINGLETON_MAPPING.reverse_mapping[entity]
if self._base is not None:
entity = self._base.deserialize_entity(ctxt, entity)
return entity
def serialize_context(self, ctxt):
if self._base is not None:
context = self._base.serialize_context(ctxt)
return context
def deserialize_context(self, ctxt):
if self._base is not None:
context = self._base.deserialize_context(ctxt)
return context