diff options
author | Endi S. Dewata <edewata@redhat.com> | 2015-01-14 10:36:37 -0500 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2015-02-06 13:10:02 -0500 |
commit | 2d33053b87a225dc9887a735108bb62269eafe60 (patch) | |
tree | 7bd9717743c1a08ca0757dcc258fe9d0dba2e063 /base | |
parent | dfe55982eb50750fc1e65bce312d884b1604f0b4 (diff) | |
download | pki-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
Diffstat (limited to 'base')
-rw-r--r-- | base/common/python/pki/system.py | 65 |
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): |