|
24 | 24 | from ceph.utils import str_to_datetime, datetime_to_str, datetime_now |
25 | 25 | from orchestrator import OrchestratorError, HostSpec, OrchestratorEvent, service_to_daemon_types |
26 | 26 | from cephadm.services.cephadmservice import CephadmDaemonDeploySpec |
| 27 | +from mgr_util import parse_combined_pem_file |
27 | 28 |
|
28 | 29 | from .utils import resolve_ip, SpecialHostLabels |
29 | | -from .migrations import queue_migrate_nfs_spec, queue_migrate_rgw_spec |
| 30 | +from .migrations import queue_migrate_nfs_spec, queue_migrate_rgw_spec, queue_migrate_rgw_ssl_spec |
30 | 31 |
|
31 | 32 | if TYPE_CHECKING: |
32 | 33 | from .module import CephadmOrchestrator |
@@ -308,6 +309,12 @@ def load(self): |
308 | 309 | ): |
309 | 310 | queue_migrate_rgw_spec(self.mgr, j) |
310 | 311 |
|
| 312 | + if ( |
| 313 | + (self.mgr.migration_current or 0) < 8 |
| 314 | + and j['spec'].get('service_type') == 'rgw' |
| 315 | + ): |
| 316 | + queue_migrate_rgw_ssl_spec(self.mgr, j) |
| 317 | + |
311 | 318 | spec = ServiceSpec.from_json(j['spec']) |
312 | 319 | created = str_to_datetime(cast(str, j['created'])) |
313 | 320 | self._specs[service_name] = spec |
@@ -361,7 +368,6 @@ def save( |
361 | 368 | if update_create: |
362 | 369 | self.spec_created[name] = datetime_now() |
363 | 370 | self._save(name) |
364 | | - self._save_certs_and_keys(spec) |
365 | 371 |
|
366 | 372 | def save_rank_map(self, |
367 | 373 | name: str, |
@@ -400,11 +406,20 @@ def _save_certs_and_keys(self, spec: ServiceSpec) -> None: |
400 | 406 | else: |
401 | 407 | cert_str = rgw_cert |
402 | 408 | assert isinstance(cert_str, str) |
403 | | - self.mgr.cert_mgr.save_cert( |
404 | | - 'rgw_frontend_ssl_cert', |
405 | | - cert_str, |
406 | | - service_name=rgw_spec.service_name(), |
407 | | - user_made=True) |
| 409 | + cert, key = parse_combined_pem_file(cert_str) |
| 410 | + if cert and key: |
| 411 | + self.mgr.cert_mgr.save_cert( |
| 412 | + 'rgw_ssl_cert', |
| 413 | + cert, |
| 414 | + service_name=rgw_spec.service_name(), |
| 415 | + user_made=True) |
| 416 | + self.mgr.cert_mgr.save_key( |
| 417 | + 'rgw_ssl_key', |
| 418 | + key, |
| 419 | + service_name=rgw_spec.service_name(), |
| 420 | + user_made=True) |
| 421 | + else: |
| 422 | + logger.error(f'Cannot parse the rgw certificate {cert_str}.') |
408 | 423 | elif spec.service_type == 'iscsi': |
409 | 424 | iscsi_spec = cast(IscsiServiceSpec, spec) |
410 | 425 | if iscsi_spec.ssl_cert: |
@@ -476,7 +491,6 @@ def finally_rm(self, service_name): |
476 | 491 | # type: (str) -> bool |
477 | 492 | found = service_name in self._specs |
478 | 493 | if found: |
479 | | - self._rm_certs_and_keys(self._specs[service_name]) |
480 | 494 | del self._specs[service_name] |
481 | 495 | if service_name in self._rank_maps: |
482 | 496 | del self._rank_maps[service_name] |
|
0 commit comments