示例#1
0
 def Start(self):
     while True:
         try:
             self.pods = self.kube.GetPods()
             exists = self.CheckForPrimaryMongo()
             if exists == True:
                 print(
                     'Watcher.CheckForPrimaryMongo: PRIMARY ALREADY IN REPLICASET'
                 )
                 self.primary = False
             elif exists == False:
                 member = Member(_id=None, IP='127.0.0.1', priority=None)
                 alive = member.CheckIfAlive()
                 if alive == True:
                     primary = member.CheckIfPodIsPrimary()
                     if primary == True:
                         self.primary = True
                         print(
                             'Watcher.CheckForPrimaryMongo: POD IS PRIMARY')
                     elif primary == False:
                         print(
                             'Watcher.CheckForPrimaryMongo: NO PRIMARY IN REPLICASET'
                         )
                         self.mongo.HoldElection(self)
             if self.primary == True:
                 self.CheckCurrentMongoPods()
             time.sleep(5)
         except Exception as error:
             print('Watcher.Start: ERROR - {}'.format(error))
             time.sleep(5)
示例#2
0
 def _getCurrentMembers(self):
     try:
         conf = self.db.admin.command('replSetGetConfig', 1)
         for member in conf["conf"]['members']:
             newMember = Member(
                 member['_id'],
                 member['host'].split(':')[0],  # Get Host IP
                 member['priority'])
             state = newMember.CheckIfAlive()
             if state == True:
                 self.members.append(newMember)
         print('Members._getCurrentMembers: {}'.format(self.members))
     except Exception as error:
         print('Members._getCurrentMembers: WARN {}'.format(error))
示例#3
0
 def CheckForPrimaryMongo(self):
     try:
         exists = False
         for pod in self.pods.items:
             if pod.status.pod_ip != None:
                 if pod.status.phase.lower() == 'running':
                     if self.sidecarIP != pod.status.pod_ip:
                         member = Member(_id=None,
                                         IP=pod.status.pod_ip,
                                         priority=None)
                         alive = member.CheckIfAlive()
                         if alive == True:
                             primary = member.CheckIfPrimary()
                             if primary == True:
                                 return True
         return False
     except Exception as error:
         print('Watcher.CheckForPrimaryMongo: ERROR - {}'.format(error))
示例#4
0
 def AddMember(self, IP):
     try:
         print('Members.AddMember: ATTEMPTING TO ADD {}'.format(IP))
         memberIDs = []
         newID = 0
         for member in self.members:
             memberIDs.append(member._id)
         for i in range(0, 255):
             if i not in memberIDs:
                 newID = i
         newMember = Member(_id=newID, IP=IP, priority=0.5)
         state = newMember.CheckIfAlive()
         if state == True:
             self.members.append(newMember)
             print('Members.AddMember: ADD {}'.format(IP))
             return True
         else:
             print('Members.AddMember: FAILED TO ADD {}'.format(IP))
             return False
     except Exception as error:
         print('Members.AddMember: ERROR\t{}'.format(error))