44import os
55import subprocess
66import tempfile
7- from typing import Dict , Tuple , Any , List , cast , Optional
7+ from typing import Dict , Tuple , Any , List , cast , Optional , TYPE_CHECKING
88from configparser import ConfigParser
99from io import StringIO
1010
1717from orchestrator import DaemonDescription , OrchestratorError
1818
1919from cephadm .services .cephadmservice import AuthEntity , CephadmDaemonDeploySpec , CephService
20+ if TYPE_CHECKING :
21+ from ..module import CephadmOrchestrator
2022
2123logger = logging .getLogger (__name__ )
2224
@@ -72,6 +74,25 @@ def get_daemon_nodeid(self, service_name: str, rank: Optional[int]) -> str:
7274 return f'{ service_name } .{ rank } '
7375 return str (rank )
7476
77+ @classmethod
78+ def get_dependencies (
79+ cls ,
80+ mgr : "CephadmOrchestrator" ,
81+ spec : Optional [ServiceSpec ] = None ,
82+ daemon_type : Optional [str ] = None
83+ ) -> List [str ]:
84+ deps : List [str ] = []
85+ if not spec :
86+ return deps
87+ nfs_spec = cast (NFSServiceSpec , spec )
88+ if (nfs_spec .kmip_cert and nfs_spec .kmip_key and nfs_spec .kmip_ca_cert and nfs_spec .kmip_host_list ):
89+ # add dependency of kmip fields
90+ deps .append (f'kmip_cert: { nfs_spec .kmip_cert } ' )
91+ deps .append (f'kmip_key: { nfs_spec .kmip_key } ' )
92+ deps .append (f'kmip_ca_cert: { nfs_spec .kmip_ca_cert } ' )
93+ deps .append (f'kmip_host_list: { nfs_spec .kmip_host_list } ' )
94+ return deps
95+
7596 def generate_config (self , daemon_spec : CephadmDaemonDeploySpec ) -> Tuple [Dict [str , Any ], List [str ]]:
7697 assert self .TYPE == daemon_spec .daemon_type
7798
@@ -80,8 +101,6 @@ def generate_config(self, daemon_spec: CephadmDaemonDeploySpec) -> Tuple[Dict[st
80101 host = daemon_spec .host
81102 spec = cast (NFSServiceSpec , self .mgr .spec_store [daemon_spec .service_name ].spec )
82103
83- deps : List [str ] = []
84-
85104 nodeid = self .get_daemon_nodeid (spec .service_name (), daemon_spec .rank )
86105
87106 nfs_idmap_conf = '/etc/ganesha/idmap.conf'
@@ -199,7 +218,7 @@ def get_cephadm_config() -> Dict[str, Any]:
199218 logger .debug ('Generated cephadm config-json: %s' % config )
200219 return config
201220
202- return get_cephadm_config (), deps
221+ return get_cephadm_config (), sorted ( self . get_dependencies ( self . mgr , spec ))
203222
204223 def create_rados_config_obj (self ,
205224 spec : NFSServiceSpec ,
0 commit comments