Commit e3b387ec authored by Romain Courteaud's avatar Romain Courteaud

slap/slap.py: _fetchComputerPartitionInformation

parent 0cd57184
...@@ -692,9 +692,7 @@ class ComputerPartition(SlapRequester): ...@@ -692,9 +692,7 @@ class ComputerPartition(SlapRequester):
return self._instance_guid return self._instance_guid
def getState(self): def getState(self):
"""return _requested_state. Raise ResourceNotReady if it doesn't exist.""" """return _requested_state."""
if not getattr(self, '_requested_state', None):
raise ResourceNotReady()
return self._requested_state return self._requested_state
def getAccessStatus(self): def getAccessStatus(self):
...@@ -713,29 +711,46 @@ class ComputerPartition(SlapRequester): ...@@ -713,29 +711,46 @@ class ComputerPartition(SlapRequester):
raise ResourceNotReady() raise ResourceNotReady()
return software_type return software_type
def _fetchComputerPartitionInformation(self):
result = self._connection_helper.callJsonRpcAPI(
'slapos.get.software_instance',
{
"portal_type": "Software Instance",
'reference': self._instance_guid
}
)
computer_partition = self
computer_partition._parameter_dict = result['parameters']
if result['processing_timestamp'] is not None:
computer_partition._parameter_dict['timestamp'] = result['processing_timestamp']
computer_partition._filter_dict = result['sla_parameters']
computer_partition._connection_parameter_dict = result['connection_parameters']
computer_partition._parameter_dict['ip_list'] = result['ip_list']
computer_partition._parameter_dict['full_ip_list'] = result['full_ip_list']
def getInstanceParameterDict(self): def getInstanceParameterDict(self):
# type: (...) -> Mapping[str, object] # type: (...) -> Mapping[str, object]
return getattr(self, '_parameter_dict', None) or {} if getattr(self, '_parameter_dict', None) is None:
self._fetchComputerPartitionInformation()
return self._parameter_dict
def getConnectionParameterDict(self): def getConnectionParameterDict(self):
# type: (...) -> Mapping[str, str] # type: (...) -> Mapping[str, str]
connection_dict = getattr(self, '_connection_dict', None) if getattr(self, '_connection_dict', None) is None:
if connection_dict is None: self._fetchComputerPartitionInformation()
# XXX Backward compatibility for older slapproxy (<= 1.0.0) return self._connection_dict
connection_dict = xml2dict(getattr(self, 'connection_xml', ''))
return connection_dict or {}
def getSoftwareRelease(self): def getSoftwareRelease(self):
# type: (...) -> SoftwareRelease # type: (...) -> SoftwareRelease
""" """
Returns the software release associate to the computer partition. Returns the software release associate to the computer partition.
""" """
"""
if not getattr(self, '_software_release_document', None): if not getattr(self, '_software_release_document', None):
raise NotFoundError("No software release information for partition %s" % raise NotFoundError("No software release information for partition %s" %
self.getId()) self.getId())
else: else:"""
return self._software_release_document return self._software_release_document
def setConnectionDict(self, connection_dict, slave_reference=None): def setConnectionDict(self, connection_dict, slave_reference=None):
# recreate and stabilise connection_dict that it would became the same as on server # recreate and stabilise connection_dict that it would became the same as on server
...@@ -767,7 +782,7 @@ class ComputerPartition(SlapRequester): ...@@ -767,7 +782,7 @@ class ComputerPartition(SlapRequester):
'slave_reference': slave_reference}) 'slave_reference': slave_reference})
def getInstanceParameter(self, key): def getInstanceParameter(self, key):
parameter_dict = getattr(self, '_parameter_dict', None) or {} parameter_dict = self.getInstanceParameterDict()
try: try:
return parameter_dict[key] return parameter_dict[key]
except KeyError: except KeyError:
...@@ -797,6 +812,11 @@ class ComputerPartition(SlapRequester): ...@@ -797,6 +812,11 @@ class ComputerPartition(SlapRequester):
return self.getAccessStatus() return self.getAccessStatus()
def getFullHostingIpAddressList(self): def getFullHostingIpAddressList(self):
raise NotImplementedError('getFullHostingIpAddressList')
"""
if getattr(self, '_connection_dict', None) is None:
self._fetchComputerPartitionInformation()
return self._parameter_dict['full_ip_list']
xml = self._connection_helper.GET('getHostingSubscriptionIpList', xml = self._connection_helper.GET('getHostingSubscriptionIpList',
params={ params={
'computer_id': self._computer_id, 'computer_id': self._computer_id,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment