Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / common / entity_name.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3 /*
4  * Ceph - scalable distributed file system
5  *
6  * Copyright (C) 2011 New Dream Network
7  *
8  * This is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License version 2.1, as published by the Free Software
11  * Foundation.  See file COPYING.
12  *
13  */
14
15 #ifndef CEPH_COMMON_ENTITY_NAME_H
16 #define CEPH_COMMON_ENTITY_NAME_H
17
18 #include <ifaddrs.h>
19
20 #include "msg/msg_types.h"
21
22 /* Represents a Ceph entity name.
23  *
24  * For example, mds.0 is the name of the first metadata server.
25  * client
26  */
27 struct EntityName
28 {
29   EntityName();
30
31   void encode(bufferlist& bl) const {
32     ::encode(type, bl);
33     ::encode(id, bl);
34   }
35   void decode(bufferlist::iterator& bl) {
36     uint32_t type_;
37     std::string id_;
38     ::decode(type_, bl);
39     ::decode(id_, bl);
40     set(type_, id_);
41   }
42
43   const std::string& to_str() const;
44   const char *to_cstr() const;
45   bool from_str(const std::string& s);
46   void set(uint32_t type_, const std::string &id_);
47   int set(const std::string &type_, const std::string &id_);
48   void set_type(uint32_t type_);
49   int set_type(const char *type);
50   void set_id(const std::string &id_);
51   void set_name(entity_name_t n);
52
53   const char* get_type_str() const;
54
55   uint32_t get_type() const { return type; }
56   bool is_osd() const { return get_type() == CEPH_ENTITY_TYPE_OSD; }
57   bool is_mgr() const { return get_type() == CEPH_ENTITY_TYPE_MGR; }
58   bool is_mds() const { return get_type() == CEPH_ENTITY_TYPE_MDS; }
59   bool is_client() const { return get_type() == CEPH_ENTITY_TYPE_CLIENT; }
60   bool is_mon() const { return get_type() == CEPH_ENTITY_TYPE_MON; }
61
62   const char * get_type_name() const;
63   const std::string &get_id() const;
64   bool has_default_id() const;
65
66   static std::string get_valid_types_as_str();
67
68   friend bool operator<(const EntityName& a, const EntityName& b);
69   friend std::ostream& operator<<(std::ostream& out, const EntityName& n);
70   friend bool operator==(const EntityName& a, const EntityName& b);
71   friend bool operator!=(const EntityName& a, const EntityName& b);
72
73 private:
74   uint32_t type;
75   std::string id;
76   std::string type_id;
77 };
78
79 uint32_t str_to_ceph_entity_type(const char * str);
80
81 WRITE_CLASS_ENCODER(EntityName)
82
83 WRITE_EQ_OPERATORS_2(EntityName, type, id)
84
85 #endif