]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Adding support for extra args by using the field tgt_cmd_extra_args
authorRedouane Kachach <rkachach@redhat.com>
Tue, 11 Jul 2023 08:19:11 +0000 (10:19 +0200)
committerAdam King <adking@redhat.com>
Thu, 31 Aug 2023 17:36:14 +0000 (13:36 -0400)
Signed-off-by: Redouane Kachach <rkachach@redhat.com>
(cherry picked from commit 050c0f9b1445deacec3825406fe2e70a20d0c1fc)

src/cephadm/cephadm.py
src/pybind/mgr/cephadm/services/nvmeof.py
src/pybind/mgr/cephadm/templates/services/nvmeof/ceph-nvmeof.conf.j2
src/pybind/mgr/cephadm/tests/test_services.py
src/python-common/ceph/deployment/service_spec.py

index 433979893976c8bc8124db1f5a18a6278c944125..c08d926252c9ae7aa19956277b08e8366188486b 100755 (executable)
@@ -1024,8 +1024,8 @@ class CephNvmeof(object):
         mounts['/etc/ceph/ceph.client.admin.keyring'] = '/etc/ceph/keyring:z'  # TODO: FIXME
         mounts[os.path.join(data_dir, 'ceph-nvmeof.conf')] = '/src/ceph-nvmeof.conf:z'
         mounts[os.path.join(data_dir, 'configfs')] = '/sys/kernel/config'
-        # mounts[log_dir] = '/var/log:z' # TODO: would we need a logdir?
-        mounts['/dev'] = '/dev'
+        mounts['/dev/hugepages'] = '/dev/hugepages'
+        mounts['/dev/vfio/vfio'] = '/dev/vfio/vfio'
         return mounts
 
     @staticmethod
@@ -1104,7 +1104,7 @@ class CephNvmeof(object):
     @staticmethod
     def get_sysctl_settings() -> List[str]:
         return [
-            'vm.nr_hugepages = 2048',
+            'vm.nr_hugepages = 4096',
         ]
 
 
@@ -6587,7 +6587,7 @@ def _dispatch_deploy(
                       ports=daemon_ports)
     elif daemon_type == CephNvmeof.daemon_type:
         config, keyring = get_config_and_keyring(ctx)
-        uid, gid = 65534, 65534  # TODO: check this
+        uid, gid = 167, 167  # TODO: need to get properly the uid/gid
         c = get_deployment_container(ctx, ctx.fsid, daemon_type, daemon_id)
         deploy_daemon(ctx, ctx.fsid, daemon_type, daemon_id, c, uid, gid,
                       config=config, keyring=keyring,
index e3b684a225a9388dd3c89da2f5d9f257c6bd8af1..62fcbd3d55f932345585f864fd546b19b0500311 100644 (file)
@@ -1,5 +1,6 @@
 import errno
 import logging
+import json
 from typing import List, cast, Optional
 
 from mgr_module import HandleCommandResult
@@ -32,14 +33,17 @@ class NvmeofService(CephService):
                                               'mds', 'allow *',
                                               'mgr', 'allow *',
                                               'osd', 'allow *'])
+
+        # TODO: check if we can force jinja2 to generate dicts with double quotes instead of using json.dumps
+        transport_tcp_options = json.dumps(spec.transport_tcp_options) if spec.transport_tcp_options else None
         context = {
             'spec': spec,
             'name': '{}.{}'.format(utils.name_to_config_section('nvmeof'), igw_id),
             'addr': self.mgr.get_mgr_ip(),
             'port': spec.port,
-            'tgt_cmd_extra_args': None,
             'log_level': 'WARN',
             'rpc_socket': '/var/tmp/spdk.sock',
+            'transport_tcp_options': transport_tcp_options
         }
         gw_conf = self.mgr.template.render('services/nvmeof/ceph-nvmeof.conf.j2', context)
 
index 2b27e9627edd8e70e17aa2584924aeb77d1dc424..86cc9eba79c1cece7fcaecef6945185c77e6a5f4 100644 (file)
@@ -25,6 +25,9 @@ timeout = {{ spec.timeout }}
 log_level = {{ log_level }}
 conn_retries = {{ spec.conn_retries }}
 transports = {{ spec.transports }}
-{% if tgt_cmd_extra_args %}
-tgt_cmd_extra_args = {{ tgt_cmd_extra_args }}
+{% if transport_tcp_options %}
+transport_tcp_options = {{ transport_tcp_options }}
+{% endif %}
+{% if spec.tgt_cmd_extra_args %}
+tgt_cmd_extra_args = {{ spec.tgt_cmd_extra_args | tojson }}
 {% endif %}
index 9322c53d64d0c2ebec72323e4f8c63fea445009b..26f5095db2305d120ea177c64547fe5be9d24ccb 100644 (file)
@@ -392,7 +392,8 @@ rpc_socket = /var/tmp/spdk.sock
 timeout = 60
 log_level = WARN
 conn_retries = 10
-transports = tcp\n"""
+transports = tcp
+transport_tcp_options = {{"in_capsule_data_size": 8192, "max_io_qpairs_per_ctrlr": 7}}\n"""
 
         with with_host(cephadm_module, 'test'):
             with with_service(cephadm_module, NvmeofServiceSpec(service_id=pool,
index ef528b0b8324dbd2a7ae0d8588c3ceeb7509f3d2..5977ee3236de45fea7f9450176fb1703697bd9fe 100644 (file)
@@ -1113,14 +1113,17 @@ class NvmeofServiceSpec(ServiceSpec):
                  tgt_path: Optional[str] = None,
                  timeout: Optional[int] = 60,
                  conn_retries: Optional[int] = 10,
-                 transports: Optional[str] = "tcp",
+                 transports: Optional[str] = 'tcp',
+                 transport_tcp_options: Optional[Dict[str, int]] =
+                 {"in_capsule_data_size": 8192, "max_io_qpairs_per_ctrlr": 7},
+                 tgt_cmd_extra_args: Optional[str] = None,
                  placement: Optional[PlacementSpec] = None,
                  unmanaged: bool = False,
                  preview_only: bool = False,
                  config: Optional[Dict[str, str]] = None,
                  networks: Optional[List[str]] = 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,
                  custom_configs: Optional[List[CustomConfig]] = None,
                  ):
         assert service_type == 'nvmeof'
@@ -1158,8 +1161,12 @@ class NvmeofServiceSpec(ServiceSpec):
         self.timeout = timeout
         #: ``conn_retries`` ceph connection retries number
         self.conn_retries = conn_retries
-        #: ``transports`` TODO
+        #: ``transports`` tcp
         self.transports = transports
+        #: List of extra arguments for transports in the form opt=value
+        self.transport_tcp_options: Optional[Dict[str, int]] = transport_tcp_options
+        #: ``tgt_cmd_extra_args`` extra arguments for the nvmf_tgt process
+        self.tgt_cmd_extra_args = tgt_cmd_extra_args
 
     def get_port_start(self) -> List[int]:
         return [5500, 4420, 8009]