def get_config()

in provisioning_lambda/lambda_function.py [0:0]


def get_config():
    with open('config.json') as f:
        config = json.load(f)
    if set(config.keys()) != set(['certificate', 'iot']):
        raise ConfigError('Invalid config')
    # check certificate config
    if set(config.get('certificate', {}).keys()) != set(['subject', 'validity']):
        raise ConfigError('Invalid certificate config')
    subject = config['certificate']['subject']
    if subject.keys() != set(['CN', 'O', 'OU', 'L', 'ST', 'C']):
        raise ConfigError('Invalid certificate subject')
    for subject_key, subject_value in subject.items():
        if not type(subject_value) is str:
            raise ConfigError('Invalid certificate subject: %s' % subject_key)
    validity = config['certificate'].get('validity')
    if not type(validity) is int:
        raise ConfigError('Invalid certificate validity')
    # check iot config
    if set(config.get('iot', {}).keys()) != set(['certValidity', 'thingPrefix', 'thingGroup']):
        raise ConfigError('Invalid iot config')
    for key, value in config['iot'].items():
        if key == 'certValidity':
            if not type(value) is int:
                raise ConfigError('Invalid iot certValidity')
        elif not type(value) is str:
            raise ConfigError('Invalid iot config: %s' % key)
    return config