| 1558 | } |
| 1559 | |
| 1560 | void md_config_t::diff( |
| 1561 | const ConfigValues& values, |
| 1562 | Formatter *f, |
| 1563 | string name) const |
| 1564 | { |
| 1565 | values.for_each([this, f, &values] (auto& name, auto& configs) { |
| 1566 | if (configs.empty()) { |
| 1567 | return; |
| 1568 | } |
| 1569 | f->open_object_section(std::string{name}.c_str()); |
| 1570 | const Option *o = find_option(name); |
| 1571 | if (configs.size() && |
| 1572 | configs.begin()->first != CONF_DEFAULT) { |
| 1573 | // show compiled-in default only if an override default wasn't provided |
| 1574 | dump(f, CONF_DEFAULT, _get_val_default(*o)); |
| 1575 | } |
| 1576 | for (auto& j : configs) { |
| 1577 | dump(f, j.first, j.second); |
| 1578 | } |
| 1579 | dump(f, CONF_FINAL, _get_val(values, *o)); |
| 1580 | f->close_section(); |
| 1581 | }); |
| 1582 | } |
| 1583 | |
| 1584 | void md_config_t::complain_about_parse_error(CephContext *cct) |
| 1585 | { |