Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions example/02-pki-management/service_call_metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
'SYSServiceID': 'generateCertCA',
'data': [
{
'SYSBackendMethod': { 'CertCA': 'gen_cert' },
'CertCA': {
'id': 'test-ca1',
'Smartcard': {
Expand All @@ -28,6 +29,7 @@
'SYSServiceID': 'generateCertServer',
'data': [
{
'SYSBackendMethod': { 'CertServer': 'gen_cert' },
'CertServer': {
'id': 'test-server1',
'CertCA': {
Expand Down Expand Up @@ -57,6 +59,7 @@
'SYSServiceID': 'generateCertClient',
'data': [
{
'SYSBackendMethod': { 'CertClient': 'gen_cert' },
'CertClient': {
'id': 'test-client1',
'CertCA': {
Expand Down
3 changes: 0 additions & 3 deletions example/02-pki-management/service_properties.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
service_properties = {
'SYSBackendMethods': [
('gen_cert', 'on_recursion_finish')
],
'Cert': {
'properties': {
'id': {
Expand Down
39 changes: 27 additions & 12 deletions src/microesb.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ def set_json_dict(self):
self.logger.debug('processing property:{}'.format(property_id))
self.json_dict[property_id] = getattr(self, property_id)

# Remove optional service method key if present; ignore if absent.
# remove optional service method key if present; ignore if absent.
self.json_dict.pop('SYSServiceMethod', None)

self.logger.debug('self._SYSProperties:{}'.format(self._SYSProperties))
Expand Down Expand Up @@ -482,6 +482,16 @@ def get_class_hierarchy(self):
"""
return self._class_hierarchy

def get_class_properties(self):
""" get_class_properties() method.

:return: self._class_properties
:rtype: dict

Get class properties dictionary.
"""
return self._class_properties

def _map(
self,
*,
Expand Down Expand Up @@ -550,6 +560,7 @@ def __init__(self, *, class_mapper, service_call_data):

self._class_mapper = class_mapper

sc_data_orig = copy.deepcopy(service_call_data)
class_references = self._class_mapper.get_references()

root_class = next(iter(class_references))
Expand All @@ -564,17 +575,21 @@ def __init__(self, *, class_mapper, service_call_data):

self._map(**call_dict)

try:
for class_ref, class_props in class_references.items():
for method_def in class_mapper._class_properties['SYSBackendMethods']:
if method_def[1] == 'on_recursion_finish':
self.logger.debug('SYSBackendMethod:{}'.format(method_def[0]))
try:
getattr(getattr(self._class_mapper, class_ref), method_def[0])()
except (TypeError, AttributeError) as e:
pass
except (KeyError, TypeError, AttributeError) as e:
self.logger.debug('SYSBackendMethods processing exception:{}'.format(e))
class_properties = self._class_mapper.get_class_properties()

if 'SYSBackendMethod' in sc_data_orig:

bm_root = sc_data_orig['SYSBackendMethod']
self.logger.debug('SYSBackendMethod:{}'.format(bm_root))
bm_class_id, bm_method = next(iter(bm_root.items()))

try:
bm_class_id = class_references[bm_class_id]['property_ref']
except KeyError as e:
self.logger.debug('SYSBackendMethod no class_ref class_id:{} exception:{}'.format(bm_class_id, e))

if bm_method in class_properties[bm_class_id]['methods']:
Comment thread
clauspruefer marked this conversation as resolved.
getattr(getattr(self._class_mapper, bm_class_id), bm_method)()
Comment thread
clauspruefer marked this conversation as resolved.
Outdated

def _map(
self,
Expand Down
Loading