]> git.proxmox.com Git - ceph.git/blob - ceph/src/common/options/build_options.cc
import quincy beta 17.1.0
[ceph.git] / ceph / src / common / options / build_options.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #include "build_options.h"
5
6 #include <algorithm>
7 #include <cstring>
8
9 std::vector<Option> get_global_options();
10 std::vector<Option> get_mgr_options();
11 std::vector<Option> get_mon_options();
12 std::vector<Option> get_crimson_options();
13 std::vector<Option> get_osd_options();
14 std::vector<Option> get_rgw_options();
15 std::vector<Option> get_rbd_options();
16 std::vector<Option> get_rbd_mirror_options();
17 std::vector<Option> get_immutable_object_cache_options();
18 std::vector<Option> get_mds_options();
19 std::vector<Option> get_mds_client_options();
20 std::vector<Option> get_cephfs_mirror_options();
21
22 std::vector<Option> build_options()
23 {
24 std::vector<Option> result = get_global_options();
25
26 auto ingest = [&result](std::vector<Option>&& options, const char* svc) {
27 for (auto &o : options) {
28 if (std::none_of(o.services.begin(), o.services.end(),
29 [svc](const char* known_svc) {
30 return std::strcmp(known_svc, svc) == 0;
31 })) {
32 o.add_service(svc);
33 }
34 result.push_back(std::move(o));
35 }
36 };
37
38 ingest(get_crimson_options(), "osd");
39 ingest(get_mgr_options(), "mgr");
40 ingest(get_mon_options(), "mon");
41 ingest(get_osd_options(), "osd");
42 ingest(get_rgw_options(), "rgw");
43 ingest(get_rbd_options(), "rbd");
44 ingest(get_rbd_mirror_options(), "rbd-mirror");
45 ingest(get_immutable_object_cache_options(), "immutable-object-cache");
46 ingest(get_mds_options(), "mds");
47 ingest(get_mds_client_options(), "mds_client");
48 ingest(get_cephfs_mirror_options(), "cephfs-mirror");
49
50 return result;
51 }