]> git.proxmox.com Git - ceph.git/blob - ceph/src/common/ceph_releases.h
bump version to 18.2.2-pve1
[ceph.git] / ceph / src / common / ceph_releases.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #pragma once
5
6 #include <cstdint>
7 #include <iosfwd>
8 #include <string_view>
9
10 #include "common/ceph_strings.h"
11
12 // the C++ version of CEPH_RELEASE_* defined by include/rados.h
13 enum class ceph_release_t : std::uint8_t {
14 unknown = 0,
15 argonaut,
16 bobtail,
17 cuttlefish,
18 dumpling,
19 emperor,
20 firefly,
21 giant,
22 hammer,
23 infernalis,
24 jewel,
25 kraken,
26 luminous,
27 mimic,
28 nautilus,
29 octopus,
30 pacific,
31 quincy,
32 reef,
33 max,
34 };
35
36 std::ostream& operator<<(std::ostream& os, const ceph_release_t r);
37
38 inline bool operator!(ceph_release_t& r) {
39 return (r < ceph_release_t::unknown ||
40 r == ceph_release_t::unknown);
41 }
42
43 inline ceph_release_t& operator--(ceph_release_t& r) {
44 r = static_cast<ceph_release_t>(static_cast<uint8_t>(r) - 1);
45 return r;
46 }
47
48 inline ceph_release_t& operator++(ceph_release_t& r) {
49 r = static_cast<ceph_release_t>(static_cast<uint8_t>(r) + 1);
50 return r;
51 }
52
53 inline bool operator<(ceph_release_t lhs, ceph_release_t rhs) {
54 // we used to use -1 for invalid release
55 if (static_cast<int8_t>(lhs) < 0) {
56 return true;
57 } else if (static_cast<int8_t>(rhs) < 0) {
58 return false;
59 }
60 return static_cast<uint8_t>(lhs) < static_cast<uint8_t>(rhs);
61 }
62
63 inline bool operator>(ceph_release_t lhs, ceph_release_t rhs) {
64 // we used to use -1 for invalid release
65 if (static_cast<int8_t>(lhs) < 0) {
66 return false;
67 } else if (static_cast<int8_t>(rhs) < 0) {
68 return true;
69 }
70 return static_cast<uint8_t>(lhs) > static_cast<uint8_t>(rhs);
71 }
72
73 inline bool operator>=(ceph_release_t lhs, ceph_release_t rhs) {
74 return !(lhs < rhs);
75 }
76
77 bool can_upgrade_from(ceph_release_t from_release,
78 std::string_view from_release_name,
79 std::ostream& err);
80
81 ceph_release_t ceph_release_from_name(std::string_view sv);
82 ceph_release_t ceph_release();
83
84 inline std::string_view to_string(ceph_release_t r) {
85 return ceph_release_name(static_cast<int>(r));
86 }
87 template<typename IntType> IntType to_integer(ceph_release_t r) {
88 return static_cast<IntType>(r);
89 }