# monmap must have not all k l m persistent
# features set.
- jqfilter='.monmap.features.persistent | length == 5'
+ jqfilter='.monmap.features.persistent | length == 6'
jq_success "$jqinput" "$jqfilter" || return 1
jqfilter='.monmap.features.persistent[]|select(. == "kraken")'
jq_success "$jqinput" "$jqfilter" "kraken" || return 1
jq_success "$jqinput" "$jqfilter" "osdmap-prune" || return 1
jqfilter='.monmap.features.persistent[]|select(. == "nautilus")'
jq_success "$jqinput" "$jqfilter" "nautilus" || return 1
+ jqfilter='.monmap.features.persistent[]|select(. == "octopus")'
+ jq_success "$jqinput" "$jqfilter" "octopus" || return 1
CEPH_ARGS=$CEPH_ARGS_orig
# that's all folks. thank you for tuning in.
constexpr mon_feature_t FEATURE_MIMIC( (1ULL << 2));
constexpr mon_feature_t FEATURE_OSDMAP_PRUNE (1ULL << 3);
constexpr mon_feature_t FEATURE_NAUTILUS( (1ULL << 4));
+ constexpr mon_feature_t FEATURE_OCTOPUS( (1ULL << 5));
constexpr mon_feature_t FEATURE_RESERVED( (1ULL << 63));
constexpr mon_feature_t FEATURE_NONE( (0ULL));
FEATURE_MIMIC |
FEATURE_OSDMAP_PRUNE |
FEATURE_NAUTILUS |
+ FEATURE_OCTOPUS |
FEATURE_NONE
);
}
FEATURE_MIMIC |
FEATURE_NAUTILUS |
FEATURE_OSDMAP_PRUNE |
+ FEATURE_OCTOPUS |
FEATURE_NONE
);
}
static inline int infer_ceph_release_from_mon_features(mon_feature_t f)
{
+ if (f.contains_all(ceph::features::mon::FEATURE_OCTOPUS)) {
+ return CEPH_RELEASE_OCTOPUS;
+ }
if (f.contains_all(ceph::features::mon::FEATURE_NAUTILUS)) {
return CEPH_RELEASE_NAUTILUS;
}
return "osdmap-prune";
} else if (f == FEATURE_NAUTILUS) {
return "nautilus";
+ } else if (f == FEATURE_OCTOPUS) {
+ return "octopus";
} else if (f == FEATURE_RESERVED) {
return "reserved";
}
return FEATURE_OSDMAP_PRUNE;
} else if (n == "nautilus") {
return FEATURE_NAUTILUS;
+ } else if (n == "octopus") {
+ return FEATURE_OCTOPUS;
} else if (n == "reserved") {
return FEATURE_RESERVED;
}