def __generateMirrorsToBuild(self, gpEnv, gpArray): toBuild = [] maxPrimariesPerHost = 0 segments = [ seg for seg in gpArray.getDbList() if seg.isSegmentPrimary(False) ] for hostName, hostSegments in GpArray.getSegmentsByHostName( segments).items(): if len(hostSegments) > maxPrimariesPerHost: maxPrimariesPerHost = len(hostSegments) dataDirs = self.__getDataDirectoriesForMirrors(maxPrimariesPerHost, gpArray) calc = GpMirrorBuildCalculator(gpArray, dataDirs, self.__options) if self.__options.spreadMirroring: toBuild = calc.getSpreadMirrors() else: toBuild = calc.getGroupMirrors() gpPrefix = gp_utils.get_gp_prefix(gpEnv.getMasterDataDir()) if not gpPrefix: gpPrefix = 'gp' for mirToBuild in toBuild: # mirToBuild is a GpMirrorToBuild object mir = mirToBuild.getFailoverSegment() dataDir = utils.createSegmentSpecificPath( mir.getSegmentDataDirectory(), gpPrefix, mir) mir.setSegmentDataDirectory(dataDir) return GpMirrorListToBuild(toBuild, self.__pool, self.__options.quiet, self.__options.parallelDegree)
def __generateMirrorsToBuild(self, gpEnv, gpArray): toBuild = [] maxPrimariesPerHost = 0 segments = [seg for seg in gpArray.getDbList() if seg.isSegmentPrimary(False)] for hostName, hostSegments in GpArray.getSegmentsByHostName(segments).iteritems(): if len(hostSegments) > maxPrimariesPerHost: maxPrimariesPerHost = len(hostSegments) (dataDirs, filespaceOidToPathMaps) = self.__getDataDirectoriesForMirrors(maxPrimariesPerHost, gpArray) calc = GpMirrorBuildCalculator(gpArray, self.__options.mirrorOffset, dataDirs, filespaceOidToPathMaps) if self.__options.spreadMirroring: toBuild = calc.getSpreadMirrors() else: toBuild = calc.getGroupMirrors() gpPrefix = gp_utils.get_gp_prefix(gpEnv.getMasterDataDir()) if not gpPrefix: gpPrefix = "gp" for mirToBuild in toBuild: # mirToBuild is a GpMirrorToBuild object mir = mirToBuild.getFailoverSegment() dataDir = utils.createSegmentSpecificPath(mir.getSegmentDataDirectory(), gpPrefix, mir) mir.setSegmentDataDirectory(dataDir) fsMap = mir.getSegmentFilespaces() for oid, path in copy.copy(fsMap).iteritems(): fsMap[oid] = utils.createSegmentSpecificPath(path, gpPrefix, mir) fsMap[gparray.SYSTEM_FILESPACE] = dataDir return GpMirrorListToBuild(toBuild, self.__pool, self.__options.quiet, self.__options.parallelDegree)
def __generateMirrorsToBuild(self, gpEnv, gpArray): toBuild = [] maxPrimariesPerHost = 0 segments = [seg for seg in gpArray.getDbList() if seg.isSegmentPrimary(False)] for hostName, hostSegments in GpArray.getSegmentsByHostName(segments).iteritems(): if len(hostSegments) > maxPrimariesPerHost: maxPrimariesPerHost = len(hostSegments) dataDirs = self.__getDataDirectoriesForMirrors(maxPrimariesPerHost, gpArray) calc = GpMirrorBuildCalculator(gpArray, dataDirs, self.__options) if self.__options.spreadMirroring: toBuild = calc.getSpreadMirrors() else: toBuild = calc.getGroupMirrors() gpPrefix = gp_utils.get_gp_prefix(gpEnv.getMasterDataDir()) if not gpPrefix: gpPrefix = 'gp' for mirToBuild in toBuild: # mirToBuild is a GpMirrorToBuild object mir = mirToBuild.getFailoverSegment() dataDir = utils.createSegmentSpecificPath(mir.getSegmentDataDirectory(), gpPrefix, mir) mir.setSegmentDataDirectory(dataDir) return GpMirrorListToBuild(toBuild, self.__pool, self.__options.quiet, self.__options.parallelDegree)
def __generateMirrorsToBuild(self, gpEnv, gpArray): toBuild = [] maxPrimariesPerHost = 0 segments = [seg for seg in gpArray.getDbList() if seg.isSegmentPrimary(False)] for hostName, hostSegments in GpArray.getSegmentsByHostName(segments).iteritems(): if len(hostSegments) > maxPrimariesPerHost: maxPrimariesPerHost = len(hostSegments) (dataDirs, filespaceOidToPathMaps) = self.__getDataDirectoriesForMirrors(maxPrimariesPerHost, gpArray) calc = GpMirrorBuildCalculator(gpArray, self.__options.mirrorOffset, dataDirs, filespaceOidToPathMaps) if self.__options.spreadMirroring: toBuild = calc.getSpreadMirrors() else: toBuild = calc.getGroupMirrors() gpPrefix = gp_utils.get_gp_prefix(gpEnv.getMasterDataDir()) if not gpPrefix: gpPrefix = 'gp' for mirToBuild in toBuild: # mirToBuild is a GpMirrorToBuild object mir = mirToBuild.getFailoverSegment() dataDir = utils.createSegmentSpecificPath(mir.getSegmentDataDirectory(), gpPrefix, mir) mir.setSegmentDataDirectory(dataDir) fsMap = mir.getSegmentFilespaces() for oid, path in copy.copy(fsMap).iteritems(): fsMap[oid] = utils.createSegmentSpecificPath(path, gpPrefix, mir) fsMap[gparray.SYSTEM_FILESPACE] = dataDir return GpMirrorListToBuild(toBuild, self.__pool, self.__options.quiet, self.__options.parallelDegree)