deployed_by: Optional[List[str]] = None,
rank: Optional[int] = None,
rank_generation: Optional[int] = None,
- extra_container_args: Optional[List[str]] = None,
- extra_entrypoint_args: Optional[List[str]] = None,
+ extra_container_args: Optional[List[Union[str, Dict[str, Any]]]] = None,
+ extra_entrypoint_args: Optional[List[Union[str, Dict[str, Any]]]] = None,
):
self.data = dict(init_data or {})
# set fields
from ceph.deployment import inventory
from ceph.deployment.drive_group import DriveGroupSpec
from ceph.deployment.service_spec import (
+ ArgumentList,
+ ArgumentSpec,
CustomContainerSpec,
PlacementSpec,
RGWSpec,
deployed_by=self.mgr.get_active_mgr_digests(),
rank=daemon_spec.rank,
rank_generation=daemon_spec.rank_generation,
- extra_container_args=extra_container_args,
- extra_entrypoint_args=extra_entrypoint_args,
+ extra_container_args=ArgumentSpec.map_json(
+ extra_container_args,
+ ),
+ extra_entrypoint_args=ArgumentSpec.map_json(
+ extra_entrypoint_args,
+ ),
),
config_blobs=daemon_spec.final_config,
).dump_json_str(),
self.mgr.cephadm_services[servict_type].post_remove(dd, is_failed_deploy=True)
raise
- def _setup_extra_deployment_args(self, daemon_spec: CephadmDaemonDeploySpec, params: Dict[str, Any]) -> Tuple[CephadmDaemonDeploySpec, Optional[List[str]], Optional[List[str]]]:
+ def _setup_extra_deployment_args(
+ self,
+ daemon_spec: CephadmDaemonDeploySpec,
+ params: Dict[str, Any],
+ ) -> Tuple[CephadmDaemonDeploySpec, Optional[ArgumentList], Optional[ArgumentList]]:
# this function is for handling any potential user specified
# (in the service spec) extra runtime or entrypoint args for a daemon
# we are going to deploy. Effectively just adds a set of extra args to
# pass to the cephadm binary to indicate the daemon being deployed
# needs extra runtime/entrypoint args. Returns the modified daemon spec
# as well as what args were added (as those are included in unit.meta file)
- def _to_args(lst: List[str]) -> List[str]:
+ def _to_args(lst: ArgumentList) -> List[str]:
out: List[str] = []
- for value in lst:
- for arg in value.split(' '):
- if arg:
- out.append(arg)
+ for argspec in lst:
+ out.extend(argspec.to_args())
return out
try:
from mgr_module import HandleCommandResult, MonCommandFailed
from ceph.deployment.service_spec import (
+ ArgumentList,
CephExporterSpec,
+ GeneralArgList,
MONSpec,
RGWSpec,
ServiceSpec,
ports: Optional[List[int]] = None,
rank: Optional[int] = None,
rank_generation: Optional[int] = None,
- extra_container_args: Optional[List[str]] = None,
- extra_entrypoint_args: Optional[List[str]] = None,
+ extra_container_args: Optional[ArgumentList] = None,
+ extra_entrypoint_args: Optional[ArgumentList] = None,
):
"""
A data struction to encapsulate `cephadm deploy ...
ports=self.ports,
rank=self.rank,
rank_generation=self.rank_generation,
- extra_container_args=self.extra_container_args,
- extra_entrypoint_args=self.extra_entrypoint_args,
+ extra_container_args=cast(GeneralArgList, self.extra_container_args),
+ extra_entrypoint_args=cast(GeneralArgList, self.extra_entrypoint_args),
)
@property
from ceph.deployment import inventory
from ceph.deployment.service_spec import (
+ ArgumentList,
+ ArgumentSpec,
+ GeneralArgList,
IngressSpec,
IscsiServiceSpec,
MDSSpec,
deployed_by: Optional[List[str]] = None,
rank: Optional[int] = None,
rank_generation: Optional[int] = None,
- extra_container_args: Optional[List[str]] = None,
- extra_entrypoint_args: Optional[List[str]] = None,
+ extra_container_args: Optional[GeneralArgList] = None,
+ extra_entrypoint_args: Optional[GeneralArgList] = None,
) -> None:
#: Host is at the same granularity as InventoryHost
self.is_active = is_active
- self.extra_container_args = extra_container_args
- self.extra_entrypoint_args = extra_entrypoint_args
+ self.extra_container_args: Optional[ArgumentList] = None
+ self.extra_entrypoint_args: Optional[ArgumentList] = None
+ if extra_container_args:
+ self.extra_container_args = ArgumentSpec.from_general_args(
+ extra_container_args)
+ if extra_entrypoint_args:
+ self.extra_entrypoint_args = ArgumentSpec.from_general_args(
+ extra_entrypoint_args)
@property
def status(self) -> Optional[DaemonDescriptionStatus]: