Esempio n. 1
0
            True),

        # https://tracker.ceph.com/issues/45399
        (
            # daemon_id only contains hostname
            ServiceSpec(
                service_type='mds',
                service_id="a",
            ),
            DaemonDescription(
                daemon_type='mds',
                daemon_id="a.host1.abc123",
                hostname="host1.site",
            ),
            True),
        (NFSServiceSpec(service_id="a", ),
         DaemonDescription(
             daemon_type='nfs',
             daemon_id="a.host1",
             hostname="host1.site",
         ), True),

        # https://tracker.ceph.com/issues/45293
        (NFSServiceSpec(service_id="a", ),
         DaemonDescription(
             daemon_type='nfs',
             daemon_id="a.host1",
             hostname="host1",
         ), True),
        (
            # service_id contains a '.' char
Esempio n. 2
0
    def _mock_orchestrator(self, enable: bool) -> Iterator:
        self.io_mock = MagicMock()
        self.io_mock.set_namespace.side_effect = self._ioctx_set_namespace_mock
        self.io_mock.read = self._ioctl_read_mock
        self.io_mock.stat = self._ioctl_stat_mock
        self.io_mock.list_objects.side_effect = self._ioctx_list_objects_mock
        self.io_mock.write_full.side_effect = self._ioctx_write_full_mock
        self.io_mock.remove_object.side_effect = self._ioctx_remove_mock

        # mock nfs services
        orch_nfs_services = [
            ServiceDescription(spec=NFSServiceSpec(service_id=self.cluster_id))
        ] if enable else []

        orch_nfs_daemons = [
            DaemonDescription('nfs', 'foo.mydaemon', 'myhostname')
        ] if enable else []

        def mock_exec(cls, args):
            if args[1:3] == ['bucket', 'stats']:
                bucket_info = {
                    "owner": "bucket_owner_user",
                }
                return 0, json.dumps(bucket_info), ''
            u = {
                "user_id":
                "abc",
                "display_name":
                "foo",
                "email":
                "",
                "suspended":
                0,
                "max_buckets":
                1000,
                "subusers": [],
                "keys": [{
                    "user": "******",
                    "access_key": "the_access_key",
                    "secret_key": "the_secret_key"
                }],
                "swift_keys": [],
                "caps": [],
                "op_mask":
                "read, write, delete",
                "default_placement":
                "",
                "default_storage_class":
                "",
                "placement_tags": [],
                "bucket_quota": {
                    "enabled": False,
                    "check_on_raw": False,
                    "max_size": -1,
                    "max_size_kb": 0,
                    "max_objects": -1
                },
                "user_quota": {
                    "enabled": False,
                    "check_on_raw": False,
                    "max_size": -1,
                    "max_size_kb": 0,
                    "max_objects": -1
                },
                "temp_url_keys": [],
                "type":
                "rgw",
                "mfa_ids": []
            }
            if args[2] == 'list':
                return 0, json.dumps([u]), ''
            return 0, json.dumps(u), ''

        def mock_describe_service(cls, *args, **kwargs):
            if kwargs['service_type'] == 'nfs':
                return OrchResult(orch_nfs_services)
            return OrchResult([])

        def mock_list_daemons(cls, *args, **kwargs):
            if kwargs['daemon_type'] == 'nfs':
                return OrchResult(orch_nfs_daemons)
            return OrchResult([])

        with mock.patch('nfs.module.Module.describe_service', mock_describe_service) as describe_service, \
             mock.patch('nfs.module.Module.list_daemons', mock_list_daemons) as list_daemons, \
                mock.patch('nfs.module.Module.rados') as rados, \
                mock.patch('nfs.export.available_clusters',
                           return_value=[self.cluster_id]), \
                mock.patch('nfs.export.restart_nfs_service'), \
                mock.patch('nfs.cluster.restart_nfs_service'), \
                mock.patch.object(MgrModule, 'tool_exec', mock_exec), \
                mock.patch('nfs.export.check_fs', return_value=True), \
                mock.patch('nfs.ganesha_conf.check_fs', return_value=True), \
                mock.patch('nfs.export.ExportMgr._create_user_key',
                           return_value='thekeyforclientabc'):

            rados.open_ioctx.return_value.__enter__.return_value = self.io_mock
            rados.open_ioctx.return_value.__exit__ = mock.Mock(
                return_value=None)

            self._reset_temp_store()

            yield