def create_segment(**kwargs): """ Takes the same arguments as gparray.Segment's constructor, but with friendly defaults to minimize typing. """ content = kwargs.get('content', 0) role = kwargs.get('role', gparray.ROLE_PRIMARY) preferred_role = kwargs.get('preferred_role', role) dbid = kwargs.get('dbid', 0) mode = kwargs.get('mode', gparray.MODE_SYNCHRONIZED) status = kwargs.get('status', gparray.STATUS_UP) hostname = kwargs.get('hostname', 'localhost') address = kwargs.get('address', 'localhost') port = kwargs.get('port', 15432) datadir = kwargs.get('datadir', '/tmp/') return gparray.Segment(content, preferred_role, dbid, role, mode, status, hostname, address, port, datadir)
def addMirror(self, resultOut, primary, targetHost, address, port, mirrorDataDir): """ Add a mirror to the gpArray backing this calculator, also update resultOut and do some other checking Unlike __addMirrorForTargetHost, this does not require that the segments be added to a host that already has a primary """ if targetHost not in self.__mirrorsAddedByHost: self.__mirrorsAddedByHost[targetHost] = 0 self.__primaryPortBaseByHost[ targetHost] = self.__minPrimaryPortOverall self.__primariesUpdatedToHaveMirrorsByHost[targetHost] = 0 mirrorIndexOnTargetHost = self.__mirrorsAddedByHost[targetHost] assert mirrorIndexOnTargetHost is not None mirror = gparray.Segment(content=primary.getSegmentContentId(), preferred_role=gparray.ROLE_MIRROR, dbid=self.__nextDbId, role=gparray.ROLE_MIRROR, mode=gparray.MODE_NOT_SYNC, status=gparray.STATUS_UP, hostname=targetHost, address=address, port=port, datadir=mirrorDataDir) self.__gpArray.addSegmentDb(mirror) primary.setSegmentMode(gparray.MODE_NOT_SYNC) resultOut.append(GpMirrorToBuild(None, primary, mirror, True)) self.__primariesUpdatedToHaveMirrorsByHost[ primary.getSegmentHostName()] += 1 self.__mirrorsAddedByHost[targetHost] = mirrorIndexOnTargetHost + 1 self.__nextDbId += 1