Пример #1
0
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)
Пример #2
0
    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