[Pki-devel] [PATCH] 540 Fixed problem cloning Dogtag 10.1.x to 10.2.x.
Endi Sukma Dewata
edewata at redhat.com
Wed Jan 14 19:34:05 UTC 2015
The JSON format of security domain info has changed between Dogtag
10.1.x and 10.2.x, so the Python client library has been changed
to accommodate both formats.
https://fedorahosted.org/pki/ticket/1235
--
Endi S. Dewata
-------------- next part --------------
From fbebfd2aff27c1c255b907f556a7bb27afd65abc Mon Sep 17 00:00:00 2001
From: "Endi S. Dewata" <edewata at redhat.com>
Date: Wed, 14 Jan 2015 10:36:37 -0500
Subject: [PATCH] Fixed problem cloning Dogtag 10.1.x to 10.2.x.
The JSON format of security domain info has changed between Dogtag
10.1.x and 10.2.x, so the Python client library has been changed
to accommodate both formats.
https://fedorahosted.org/pki/ticket/1235
---
base/common/python/pki/system.py | 65 ++++++++++++++++++++++++++++++++--------
1 file changed, 53 insertions(+), 12 deletions(-)
diff --git a/base/common/python/pki/system.py b/base/common/python/pki/system.py
index a4b5c2feea265ebe49a6ba7ebacdb3c4d2e86405..d3ba44ce9bfdf06b3af9f7f3f4025975b8d8dd94 100644
--- a/base/common/python/pki/system.py
+++ b/base/common/python/pki/system.py
@@ -44,17 +44,27 @@ class SecurityDomainHost(object):
@classmethod
def from_json(cls, json_value):
+
host = cls()
+
+ try:
+ # 10.2.x
+ host.id = json_value['id']
+
+ except KeyError:
+ # 10.1.x
+ host.id = json_value['@id']
+
host.admin_port = json_value['SecureAdminPort']
host.agent_port = json_value['SecureAgentPort']
host.clone = json_value['Clone']
host.domain_manager = json_value['DomainManager']
host.ee_client_auth_port = json_value['SecureEEClientAuthPort']
host.hostname = json_value['Hostname']
- host.id = json_value['id']
host.secure_port = json_value['SecurePort']
host.subsystem_name = json_value['SubsystemName']
host.unsecure_port = json_value['Port']
+
return host
@@ -65,11 +75,26 @@ class SecurityDomainSubsystem(object):
@classmethod
def from_json(cls, json_value):
- ret = cls()
- ret.name = json_value['id']
- for host in json_value['Host']:
- ret.hosts[host['id']] = SecurityDomainHost.from_json(host)
- return ret
+
+ subsystem = cls()
+
+ try:
+ # 10.2.x
+ subsystem.name = json_value['id']
+
+ except KeyError:
+ # 10.1.x
+ subsystem.name = json_value['@id']
+
+ hosts = json_value['Host']
+ if type(hosts) is dict:
+ hosts = [ hosts ]
+
+ for h in hosts:
+ host = SecurityDomainHost.from_json(h)
+ subsystem.hosts[host.id] = host
+
+ return subsystem
class SecurityDomainInfo(object):
@@ -79,12 +104,28 @@ class SecurityDomainInfo(object):
@classmethod
def from_json(cls, json_value):
- ret = cls()
- ret.name = json_value['id']
- for slist in json_value['Subsystem']:
- subsystem = SecurityDomainSubsystem.from_json(slist)
- ret.systems[slist['id']] = subsystem
- return ret
+
+ security_domain = cls()
+
+ try:
+ # 10.2.x
+ security_domain.name = json_value['id']
+ subsystems = json_value['Subsystem']
+
+ except KeyError:
+ # 10.1.x
+ domain_info = json_value['DomainInfo']
+ security_domain.name = domain_info['@id']
+
+ subsystems = domain_info['Subsystem']
+ if type(subsystems) is dict:
+ subsystems = [ subsystems ]
+
+ for s in subsystems:
+ subsystem = SecurityDomainSubsystem.from_json(s)
+ security_domain.systems[subsystem.name] = subsystem
+
+ return security_domain
class SecurityDomainClient(object):
--
1.8.4.2
More information about the Pki-devel
mailing list