Code Duplication    Length = 31-32 lines in 2 locations

plumd/plugins/readers/memcache.py 1 location

@@ 152-183 (lines=32) @@
149
        """Request and read stats from memcache socket."""
150
        stats = {}
151
152
        if not self.socket and not self.connect():
153
            return {}
154
155
        try:
156
            if PY3:
157
                self.socket.sendall(bytes(Memcache.STAT_CMD, 'utf8'))
158
            else:
159
                self.socket.sendall(Memcache.STAT_CMD)
160
161
            st_str = self.socket.recv(Memcache.RECV_SIZE)
162
            self.log.debug("Memcached: read: {0}".format(st_str))
163
164
            for line in st_str.split("\n"):
165
                vals = line.split()
166
                if len(vals) != 3:
167
                    continue
168
                stype, sname, sval = vals
169
                if stype == "STAT":
170
                    msg = "Memcached: {0} = {1}"
171
                    self.log.debug(msg.format(sname, sval))
172
                    stats[sname] = sval
173
174
        except Exception as e:
175
            msg = "Memcached: {0}: poll: exception: {1}"
176
            self.log.error(msg.format(self.addr, e))
177
            self.disconnect()
178
179
        return stats
180
181
182
    def connect(self):
183
        """Connect to memcached, returns True if sucessful, False otherwise.
184
185
        :rtype: bool
186
        """

plumd/plugins/readers/redis.py 1 location

@@ 212-242 (lines=31) @@
209
            sname = slave_str.format(i)
210
            if sname not in stats:
211
                break
212
            try:
213
                vals = stats[sname].split(",")
214
                smetrics = dict((k,v) for k,v in (v.split('=') for v in vals))
215
                sip = smetrics['ip'].replace(".", "_")
216
                smname = "{0}_{1}".format(sip, smetrics['port'])
217
218
                # record offset and lag
219
                mname = "{0}.slave.{1}.offset".format(name, sname)
220
                soffset = moffset - int(smetrics['offset'])
221
                result.add(plumd.Int(mname, soffset))
222
                mname = "{0}.slave.{1}.lag".format(name, sname)
223
                result.add(plumd.Int(mname, smetrics['lag']))
224
225
                # if slave is online set online = 1, otherwise 0
226
                sonline = 1 if smetrics['state'] == "online" else 0
227
                mname = "{0}.slave.{1}.online".format(name, sname)
228
                result.add(plumd.Int(mname, sonline))
229
            except(TypeError, KeyError, ValueError) as e:
230
                self.log.error("Redis: invalid slave entry: {0}".format(sname))
231
232
233
    def get_metrics(self):
234
        """Request and read stats from Redis socket."""
235
        stats = {}
236
237
        if not self.socket and not self.connect():
238
            return {}
239
240
        try:
241
            if PY3:
242
                self.socket.sendall(bytes(Redis.INFO_CMD, 'utf8'))
243
            else:
244
                self.socket.sendall(Redis.INFO_CMD)
245