summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2015-01-14 10:36:37 -0500
committerEndi S. Dewata <edewata@redhat.com>2015-02-06 13:10:02 -0500
commit2d33053b87a225dc9887a735108bb62269eafe60 (patch)
tree7bd9717743c1a08ca0757dcc258fe9d0dba2e063
parentdfe55982eb50750fc1e65bce312d884b1604f0b4 (diff)
downloadpki-2d33053b87a225dc9887a735108bb62269eafe60.tar.gz
pki-2d33053b87a225dc9887a735108bb62269eafe60.tar.xz
pki-2d33053b87a225dc9887a735108bb62269eafe60.zip
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
-rw-r--r--base/common/python/pki/system.py65
1 files changed, 53 insertions, 12 deletions
diff --git a/base/common/python/pki/system.py b/base/common/python/pki/system.py
index 1cc2a7a5a..24deefca4 100644
--- a/base/common/python/pki/system.py
+++ b/base/common/python/pki/system.py
@@ -55,17 +55,27 @@ class SecurityDomainHost(object):
:type json_value: str
:returns: SecurityDomainHost
"""
+
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
@@ -89,11 +99,26 @@ class SecurityDomainSubsystem(object):
:type json_value: str
:returns: SecurityDomainSubsystem
"""
- 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):
@@ -115,12 +140,28 @@ class SecurityDomainInfo(object):
:type json_value: str
:returns: SecurityDomainInfo
"""
- 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):