Commit 83bf7536 authored by Cédric Le Ninivin's avatar Cédric Le Ninivin Committed by Romain Courteaud

slapgrid: Update retrieve certificate to specific record

parent 8bb12e3e
...@@ -501,25 +501,15 @@ class Partition(object): ...@@ -501,25 +501,15 @@ class Partition(object):
available=bytes2human(available), available=bytes2human(available),
required=bytes2human(required))) required=bytes2human(required)))
def _updateCertificate(self): def _updateCertificate(self, partition_certificates):
if not self.key_file or not self.cert_file: if not self.key_file or not self.cert_file:
# Certificate files are unset, skip. # Certificate files are unset, skip.
return return
if self.api_backward_compatibility:
try:
partition_certificate = self.computer_partition["slap_partition"].getCertificate()
self.computer_partition["X509"] = {}
self.computer_partition["X509"]["certificate"] = partition_certificate["certificate"]
self.computer_partition["X509"]["key"] = partition_certificate["key"]
except NotFoundError:
raise NotFoundError('Partition %s is not known by SlapOS Master.' %
self.partition_id)
uid, gid = self.getUserGroupId() uid, gid = self.getUserGroupId()
for name, path in [('certificate', self.cert_file), ('key', self.key_file)]: for name, path in [('certificate', self.cert_file), ('key', self.key_file)]:
new_content = self.computer_partition["X509"][name] new_content = partition_certificates[name]
old_content = None old_content = None
if os.path.exists(path): if os.path.exists(path):
with open(path) as f: with open(path) as f:
......
...@@ -1175,6 +1175,19 @@ stderr_logfile_backups=1 ...@@ -1175,6 +1175,19 @@ stderr_logfile_backups=1
self._checkAddFirewallRules(computer_partition.get("compute_partition_id"), self._checkAddFirewallRules(computer_partition.get("compute_partition_id"),
cmd_list, add=add_rules) cmd_list, add=add_rules)
def retrieveCertificates(self, computer_partition):
if not self.api_backward_compatibility:
partition_certificates = self.slap.jio_api_connector.get({
"portal_type": "Software Instance Certificate Record",
"reference": computer_partition.get("reference"),
})
else:
try:
partition_certificates = computer_partition["slap_partition"].getCertificate()
except NotFoundError:
raise NotFoundError('Partition %s is not known by SlapOS Master.' % computer_partition.get("reference"))
return partition_certificates
def _checkPromiseAnomaly(self, local_partition, computer_partition): def _checkPromiseAnomaly(self, local_partition, computer_partition):
partition_access_status = computer_partition.get("access_status_message", "") partition_access_status = computer_partition.get("access_status_message", "")
status_error = False status_error = False
...@@ -1187,11 +1200,11 @@ stderr_logfile_backups=1 ...@@ -1187,11 +1200,11 @@ stderr_logfile_backups=1
except PromiseError as e: except PromiseError as e:
self.logger.error(e) self.logger.error(e)
if partition_access_status is None or not status_error: if partition_access_status is None or not status_error:
local_partition._updateCertificate() local_partition._updateCertificate(self.retrieveCertificates(computer_partition))
self.sendPartitionError(computer_partition, e, logger=self.logger) self.sendPartitionError(computer_partition, e, logger=self.logger)
else: else:
if partition_access_status is None or status_error: if partition_access_status is None or status_error:
local_partition._updateCertificate() local_partition._updateCertificate(self.retrieveCertificates(computer_partition))
if not self.api_backward_compatibility: if not self.api_backward_compatibility:
self.slap.jio_api_connector.put({ self.slap.jio_api_connector.put({
"portal_type": "Software Instance", "portal_type": "Software Instance",
...@@ -1408,7 +1421,7 @@ stderr_logfile_backups=1 ...@@ -1408,7 +1421,7 @@ stderr_logfile_backups=1
self.logger.info(' jIO API used: %s' % (not self.api_backward_compatibility)) self.logger.info(' jIO API used: %s' % (not self.api_backward_compatibility))
# Update certifcate at late as possible # Update certifcate at late as possible
local_partition._updateCertificate() local_partition._updateCertificate(self.retrieveCertificates(computer_partition))
# XXX this line breaks 37 tests # XXX this line breaks 37 tests
# self.logger.info(' Instance type: %s' % computer_partition.get("software_type")) # self.logger.info(' Instance type: %s' % computer_partition.get("software_type"))
...@@ -2085,7 +2098,7 @@ stderr_logfile_backups=1 ...@@ -2085,7 +2098,7 @@ stderr_logfile_backups=1
api_backward_compatibility=self.api_backward_compatibility, api_backward_compatibility=self.api_backward_compatibility,
) )
local_partition.stop() local_partition.stop()
local_partition._updateCertificate() local_partition._updateCertificate(self.retrieveCertificates(computer_partition))
try: try:
if not self.api_backward_compatibility: if not self.api_backward_compatibility:
self.slap.jio_api_connector.put({ self.slap.jio_api_connector.put({
......
This diff is collapsed.
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