コード例 #1
0
ファイル: monitoring.py プロジェクト: qiyuanzhi/ceph
 def prepare_create(
         self,
         daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec:
     assert self.TYPE == daemon_spec.daemon_type
     daemon_spec.final_config, daemon_spec.deps = self.generate_config(
         daemon_spec)
     return daemon_spec
コード例 #2
0
ファイル: jaeger.py プロジェクト: drunkard/ceph
 def prepare_create(
         self,
         daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec:
     assert self.TYPE == daemon_spec.daemon_type
     elasticsearch_nodes = get_elasticsearch_nodes(self, daemon_spec)
     daemon_spec.final_config = {
         'elasticsearch_nodes': ",".join(elasticsearch_nodes)
     }
     return daemon_spec
コード例 #3
0
ファイル: jaeger.py プロジェクト: drunkard/ceph
 def prepare_create(
         self,
         daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec:
     assert self.TYPE == daemon_spec.daemon_type
     collectors = []
     for dd in self.mgr.cache.get_daemons_by_type(
             JaegerCollectorService.TYPE):
         # scrape jaeger-collector nodes
         assert dd.hostname is not None
         port = dd.ports[
             0] if dd.ports else JaegerCollectorService.DEFAULT_SERVICE_PORT
         url = build_url(host=dd.hostname, port=port).lstrip('/')
         collectors.append(url)
     daemon_spec.final_config = {'collector_nodes': ",".join(collectors)}
     return daemon_spec
コード例 #4
0
ファイル: ingress.py プロジェクト: zhangsw/ceph
    def haproxy_prepare_create(
        self,
        daemon_spec: CephadmDaemonDeploySpec,
    ) -> CephadmDaemonDeploySpec:
        assert daemon_spec.daemon_type == 'haproxy'

        daemon_id = daemon_spec.daemon_id
        host = daemon_spec.host
        spec = cast(IngressSpec,
                    self.mgr.spec_store[daemon_spec.service_name].spec)

        logger.debug('prepare_create haproxy.%s on host %s with spec %s' %
                     (daemon_id, host, spec))

        daemon_spec.final_config, daemon_spec.deps = self.haproxy_generate_config(
            daemon_spec)

        return daemon_spec
コード例 #5
0
ファイル: osd.py プロジェクト: ChrisMacNaughton/ceph
    def deploy_osd_daemons_for_existing_osds(
            self,
            host: str,
            service_name: str,
            replace_osd_ids: Optional[List[str]] = None) -> str:

        if replace_osd_ids is None:
            replace_osd_ids = OsdIdClaims(self.mgr).filtered_by_host(host)
            assert replace_osd_ids is not None

        # check result: lvm
        osds_elems: dict = CephadmServe(self.mgr)._run_cephadm_json(
            host, 'osd', 'ceph-volume', [
                '--',
                'lvm',
                'list',
                '--format',
                'json',
            ])
        before_osd_uuid_map = self.mgr.get_osd_uuid_map(only_up=True)
        fsid = self.mgr._cluster_fsid
        osd_uuid_map = self.mgr.get_osd_uuid_map()
        created = []
        for osd_id, osds in osds_elems.items():
            for osd in osds:
                if osd['type'] == 'db':
                    continue
                if osd['tags']['ceph.cluster_fsid'] != fsid:
                    logger.debug('mismatched fsid, skipping %s' % osd)
                    continue
                if osd_id in before_osd_uuid_map and osd_id not in replace_osd_ids:
                    # if it exists but is part of the replacement operation, don't skip
                    continue
                if osd_id not in osd_uuid_map:
                    logger.debug(
                        'osd id {} does not exist in cluster'.format(osd_id))
                    continue
                if osd_uuid_map.get(osd_id) != osd['tags']['ceph.osd_fsid']:
                    logger.debug('mismatched osd uuid (cluster has %s, osd '
                                 'has %s)' % (osd_uuid_map.get(osd_id),
                                              osd['tags']['ceph.osd_fsid']))
                    continue

                created.append(osd_id)
                daemon_spec: CephadmDaemonDeploySpec = CephadmDaemonDeploySpec(
                    service_name=service_name,
                    daemon_id=str(osd_id),
                    host=host,
                    daemon_type='osd',
                )
                daemon_spec.final_config, daemon_spec.deps = self.generate_config(
                    daemon_spec)
                CephadmServe(self.mgr)._create_daemon(
                    daemon_spec, osd_uuid_map=osd_uuid_map)

        # check result: raw
        raw_elems: dict = CephadmServe(self.mgr)._run_cephadm_json(
            host, 'osd', 'ceph-volume', [
                '--',
                'raw',
                'list',
                '--format',
                'json',
            ])
        for osd_uuid, osd in raw_elems.items():
            if osd.get('ceph_fsid') != fsid:
                continue
            osd_id = str(osd.get('osd_id', '-1'))
            if osd_id in before_osd_uuid_map and osd_id not in replace_osd_ids:
                # if it exists but is part of the replacement operation, don't skip
                continue
            if osd_id not in osd_uuid_map:
                logger.debug(
                    'osd id {} does not exist in cluster'.format(osd_id))
                continue
            if osd_uuid_map.get(osd_id) != osd_uuid:
                logger.debug('mismatched osd uuid (cluster has %s, osd '
                             'has %s)' % (osd_uuid_map.get(osd_id), osd_uuid))
                continue
            if osd_id in created:
                continue

            created.append(osd_id)
            daemon_spec = CephadmDaemonDeploySpec(
                service_name=service_name,
                daemon_id=osd_id,
                host=host,
                daemon_type='osd',
            )
            daemon_spec.final_config, daemon_spec.deps = self.generate_config(
                daemon_spec)
            CephadmServe(self.mgr)._create_daemon(daemon_spec,
                                                  osd_uuid_map=osd_uuid_map)

        if created:
            self.mgr.cache.invalidate_host_devices(host)
            self.mgr.cache.invalidate_autotune(host)
            return "Created osd(s) %s on host '%s'" % (','.join(created), host)
        else:
            return "Created no osd(s) on host %s; already created?" % host