Commit b032f05e authored by Gianluca Marotta's avatar Gianluca Marotta
Browse files

CT-220 First implementation of manage json class

parent 58229c0e
Loading
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
import json
from ska_telmodel.csp.schema import validate_csp_config

class ManageJson:
    def __init__(self, json_config:str, logger):
        self.major_version=None
        self.minor_version=None
        self.config = json.loads(json_config)
        self.logger = logger

    def detect_version(self):
        #ADR-22
        if 'interface' in self.config.keys():
            interface = self.config['interface']
            version_str = interface.split('/')[-1]
            self.major_version = int(version_str.split('.')[0])
            self.minor_version = int(version_str.split('.')[1])
        #ADR-18
        elif 'common' in config.keys():
            self.major_version = 0
            self.minor_version = 2
        #pre ADR-18
        else: 
            self.major_version = 0
            self.minor_version = 1
        self.version = [self.major_version, self.minor_version]
        self.logger.info(f'Version is{major_version}{minor_version}')

    def get_section(self, name:str):
        try:
            return self.config[name]
        except KeyError as e:
            self.logger.warning(e)
            raise ValueError(e) from e

    def conversion_02_01(self):
        common_dict = self.get_section('common')
        cbf_dict = self.get_section('cbf')
        config_converted = {**common_dict, **cbf_dict}
        validate_csp_config(0, config_converted)
        self.config = config_converted
            
    def build_json(self):
        if self.version == [0, 1]:
            pass
        elif self.version == [0,2]:
            self.conversion_02_01()
        else:
            raise ValueError(f'version{self.version}is not supported')
        return json.dumps(self.config)
+1 −0
Original line number Diff line number Diff line
@@ -3,3 +3,4 @@ pytango >= 9.3.2
jsonschema >= 3.2.0
lmcbaseclasses >= 0.7.2
ska-log-transactions
ska-telescope-model