Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / mgr / ServiceMap.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 "mgr/ServiceMap.h"
5
6 #include "common/Formatter.h"
7
8 // Daemon
9
10 void ServiceMap::Daemon::encode(bufferlist& bl, uint64_t features) const
11 {
12   ENCODE_START(1, 1, bl);
13   ::encode(gid, bl);
14   ::encode(addr, bl, features);
15   ::encode(start_epoch, bl);
16   ::encode(start_stamp, bl);
17   ::encode(metadata, bl);
18   ENCODE_FINISH(bl);
19 }
20
21 void ServiceMap::Daemon::decode(bufferlist::iterator& p)
22 {
23   DECODE_START(1, p);
24   ::decode(gid, p);
25   ::decode(addr, p);
26   ::decode(start_epoch, p);
27   ::decode(start_stamp, p);
28   ::decode(metadata, p);
29   DECODE_FINISH(p);
30 }
31
32 void ServiceMap::Daemon::dump(Formatter *f) const
33 {
34   f->dump_unsigned("start_epoch", start_epoch);
35   f->dump_stream("start_stamp") << start_stamp;
36   f->dump_unsigned("gid", gid);
37   f->dump_stream("addr") << addr;
38   f->open_object_section("metadata");
39   for (auto& p : metadata) {
40     f->dump_string(p.first.c_str(), p.second);
41   }
42   f->close_section();
43 }
44
45 void ServiceMap::Daemon::generate_test_instances(std::list<Daemon*>& ls)
46 {
47   ls.push_back(new Daemon);
48   ls.push_back(new Daemon);
49   ls.back()->gid = 222;
50   ls.back()->metadata["this"] = "that";
51 }
52
53 // Service
54
55 void ServiceMap::Service::encode(bufferlist& bl, uint64_t features) const
56 {
57   ENCODE_START(1, 1, bl);
58   ::encode(daemons, bl, features);
59   ::encode(summary, bl);
60   ENCODE_FINISH(bl);
61 }
62
63 void ServiceMap::Service::decode(bufferlist::iterator& p)
64 {
65   DECODE_START(1, p);
66   ::decode(daemons, p);
67   ::decode(summary, p);
68   DECODE_FINISH(p);
69 }
70
71 void ServiceMap::Service::dump(Formatter *f) const
72 {
73   f->open_object_section("daemons");
74   f->dump_string("summary", summary);
75   for (auto& p : daemons) {
76     f->dump_object(p.first.c_str(), p.second);
77   }
78   f->close_section();
79 }
80
81 void ServiceMap::Service::generate_test_instances(std::list<Service*>& ls)
82 {
83   ls.push_back(new Service);
84   ls.push_back(new Service);
85   ls.back()->daemons["one"].gid = 1;
86   ls.back()->daemons["two"].gid = 2;
87 }
88
89 // ServiceMap
90
91 void ServiceMap::encode(bufferlist& bl, uint64_t features) const
92 {
93   ENCODE_START(1, 1, bl);
94   ::encode(epoch, bl);
95   ::encode(modified, bl);
96   ::encode(services, bl, features);
97   ENCODE_FINISH(bl);
98 }
99
100 void ServiceMap::decode(bufferlist::iterator& p)
101 {
102   DECODE_START(1, p);
103   ::decode(epoch, p);
104   ::decode(modified, p);
105   ::decode(services, p);
106   DECODE_FINISH(p);
107 }
108
109 void ServiceMap::dump(Formatter *f) const
110 {
111   f->dump_unsigned("epoch", epoch);
112   f->dump_stream("modified") << modified;
113   f->open_object_section("services");
114   for (auto& p : services) {
115     f->dump_object(p.first.c_str(), p.second);
116   }
117   f->close_section();
118 }
119
120 void ServiceMap::generate_test_instances(std::list<ServiceMap*>& ls)
121 {
122   ls.push_back(new ServiceMap);
123   ls.push_back(new ServiceMap);
124   ls.back()->epoch = 123;
125   ls.back()->services["rgw"].daemons["one"].gid = 123;
126   ls.back()->services["rgw"].daemons["two"].gid = 344;
127   ls.back()->services["iscsi"].daemons["foo"].gid = 3222;
128 }