From f615591808a9ba2fc7b2f088016d33b72068e3e5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Juan=20Miguel=20Olmo=20Mart=C3=ADnez?= Date: Wed, 27 May 2020 09:57:14 +0200 Subject: [PATCH] cephadm: Make easy manager modules development MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/cephadm/cephadm | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index e5253d5225c0e..7855977592ad8 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) -- 2.39.5