class Service(EtcdObj): """A table of the ceph services seen by ServerMonitor, usually each one is associated with a Server, lazily updated. """ __name__ = 'raw/ceph/%s/services/%s/%s/%s' fsid = fields.StrField("fsid") service_type = fields.StrField("service_type") # mon name or OSD id (as string) service_id = fields.StrField("service_id") # Whether the service process is running running = fields.StrField("running") # Any status metadata (mon_status) reported, as json string status = fields.StrField("status") # Server uuid server_uuid = fields.StrField("server_uuid") server_fqdn = fields.StrField("server_fqdn") def render(self): self.__name__ = self.__name__ % (self.fsid, self.server_fqdn, self.service_type, self.service_id) return super(Service, self).render()
class Example(EtcdObj): """ An example object with a few fields. Note that it must subclass EtcdObj. """ __name__ = 'example' # The parent key # Fields all take a name that will be used as their key anint = fields.IntField('anint') astr = fields.StrField('astr') adict = fields.DictField('adict')
class Event(EtcdObj): """Events generated by the ceph_bridge Eventer. """ __name__ = 'raw/ceph/%s/events/%s' id = fields.StrField("uuid") # Time at which event was synthesized by Eventer when = fields.DateTimeField("when", "%Y-%m-%dT%H:%M:%S%Z") severity = fields.IntField("severity") # Human readable message message = fields.StrField("message") # Optionally associated with a cluster fsid = fields.StrField("fsid") # Optionally associated with a server fqdn = fields.StrField("fqdn") # Optionally associated with a service type ('osd', 'mon', 'mds') (FSID # must be set) service_type = fields.StrField("service_type") # Optionally associate with a particular service (service_type must be set) service_id = fields.StrField("service_id") def render(self): self.__name__ = self.__name__ % (self.fsid, self.id) return super(Event, self).render()
class Server(EtcdObj): """A table of the servers seen by ServerMonitor, lazily updated """ __name__ = 'raw/ceph/%s/servers/%s' fsid = fields.StrField("fsid") # use fqdn as unique identifier fqdn = fields.StrField("fqdn") hostname = fields.StrField("hostname") managed = fields.StrField("managed") last_contact = fields.StrField("last_contact") boot_time = fields.StrField("boot_time") ceph_version = fields.StrField("ceph_version") def render(self): self.__name__ = self.__name__ % (self.fsid, self.fqdn) return super(Server, self).render()
class SyncObject(EtcdObj): """A table for storing a FIFO of ClusterMonitor 'sync objects', i.e. cluster maps. """ __name__ = 'raw/ceph/%s/maps/%s' fsid = fields.StrField("fsid") cluster_name = fields.StrField("cluster_name") sync_type = fields.StrField("sync_type") version = fields.StrField("version") when = fields.StrField("when") data = fields.StrField("data") updated = fields.StrField("updated") def render(self): self.__name__ = self.__name__ % (self.fsid, self.sync_type) return super(SyncObject, self).render()
def setUp(self): """ Executes before each test. """ self.instance = fields.StrField('test')