From: Juan Miguel Olmo Martínez Date: Wed, 27 May 2020 07:57:14 +0000 (+0200) Subject: cephadm: Make easy manager modules development X-Git-Tag: v16.1.0~2163^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f615591808a9ba2fc7b2f088016d33b72068e3e5;p=ceph.git cephadm: Make easy manager modules development A volume replaces content in folder in manager containers. The new argument sets the source folder for the volume Signed-off-by: Juan Miguel Olmo Martínez --- diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index e5253d5225c0..7855977592ad 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -87,6 +87,12 @@ cached_stdin = None DATEFMT = '%Y-%m-%dT%H:%M:%S.%f' + +class termcolor: + yellow = '\033[93m' + red = '\033[31m' + end = '\033[0m' + class Error(Exception): pass @@ -1111,14 +1117,12 @@ def infer_config(func): def _get_default_image(): if DEFAULT_IMAGE_IS_MASTER: - yellow = '\033[93m' - end = '\033[0m' warn = '''This is a development version of cephadm. For information regarding the latest stable release: https://docs.ceph.com/docs/{}/cephadm/install '''.format(LATEST_STABLE_RELEASE) for line in warn.splitlines(): - logger.warning('{}{}{}'.format(yellow, line, end)) + logger.warning('{}{}{}'.format(termcolor.yellow, line, termcolor.end)) return DEFAULT_IMAGE def infer_image(func): @@ -1620,6 +1624,22 @@ def get_container_mounts(fsid, daemon_type, daemon_id, mounts['/run/lvm'] = '/run/lvm' mounts['/run/lock/lvm'] = '/run/lock/lvm' + try: + if args.shared_ceph_folder: # make easy manager modules/ceph-volume development + ceph_folder = pathify(args.shared_ceph_folder) + if os.path.exists(ceph_folder): + mounts[ceph_folder + '/src/ceph-volume/ceph_volume'] = '/usr/lib/python3.6/site-packages/ceph_volume' + mounts[ceph_folder + '/src/pybind/mgr'] = '/usr/share/ceph/mgr' + mounts[ceph_folder + '/src/python-common/ceph'] = '/usr/lib/python3.6/site-packages/ceph' + mounts[ceph_folder + '/monitoring/grafana/dashboards'] = '/etc/grafana/dashboards/ceph-dashboard' + mounts[ceph_folder + '/monitoring/prometheus/alerts'] = '/etc/prometheus/ceph' + else: + logger.error('{}{}{}'.format(termcolor.red, + 'Ceph shared source folder does not exist.', + termcolor.end)) + except AttributeError: + pass + if daemon_type in Monitoring.components and daemon_id: data_dir = get_data_dir(fsid, daemon_type, daemon_id) if daemon_type == 'prometheus': @@ -4542,6 +4562,11 @@ def _get_parser(): action='store_true', help='Do not automatically provision monitoring stack (prometheus, grafana, alertmanager, node-exporter)') + parser_bootstrap.add_argument( + '--shared_ceph_folder', + metavar='CEPH_SOURCE_FOLDER', + help='Development mode. Several folders in containers are volumes mapped to different sub-folders in the ceph source folder') + parser_deploy = subparsers.add_parser( 'deploy', help='deploy a daemon') parser_deploy.set_defaults(func=command_deploy)