Ejemplo n.º 1
0
def createmetafile(path, size_str):
    try:
        size = sd.sizeStr2Int(size_str)
        oop.getGlobalProcPool().createSparseFile(path, size)
    except Exception, e:
        raise se.StorageDomainMetadataCreationError(
            "create meta file failed: %s: %s" % (path, str(e)))
Ejemplo n.º 2
0
 def setMetadataPermissions(self):
     procPool = oop.getProcessPool(self.sdUUID)
     for metaFile in (sd.LEASES, sd.IDS, sd.INBOX, sd.OUTBOX):
         try:
             fpath = os.path.join(self.getMDPath(), metaFile)
             procPool.os.chmod(fpath, METADATA_PERMISSIONS)
         except Exception as e:
             raise se.StorageDomainMetadataCreationError(
                 "Lease permission change file '%s' failed: %s" %
                 (metaFile, e))
Ejemplo n.º 3
0
    def _prepareMetadata(cls, domPath, sdUUID, domainName, domClass,
                         remotePath, storageType, version):
        """
        Prepare all domain's special volumes and metadata
        """
        # create domain metadata folder
        metadataDir = os.path.join(domPath, sd.DOMAIN_META_DATA)

        procPool = oop.getProcessPool(sdUUID)
        procPool.fileUtils.createdir(metadataDir, 0o775)

        for metaFile, metaSize in FILE_SPECIAL_VOLUME_SIZES_MIB.iteritems():
            try:
                procPool.truncateFile(os.path.join(metadataDir, metaFile),
                                      metaSize * constants.MEGAB,
                                      METADATA_PERMISSIONS)
            except Exception as e:
                raise se.StorageDomainMetadataCreationError(
                    "create meta file '%s' failed: %s" % (metaFile, str(e)))

        metaFile = os.path.join(metadataDir, sd.METADATA)

        md = FileSDMetadata(metaFile)
        # initialize domain metadata content
        # FIXME : This is 99% like the metadata in block SD
        #         Do we really need to keep the EXPORT_PATH?
        #         no one uses it
        md.update({
            sd.DMDK_VERSION:
            version,
            sd.DMDK_SDUUID:
            sdUUID,
            sd.DMDK_TYPE:
            storageType,
            sd.DMDK_CLASS:
            domClass,
            sd.DMDK_DESCRIPTION:
            domainName,
            sd.DMDK_ROLE:
            sd.REGULAR_DOMAIN,
            sd.DMDK_POOLS: [],
            sd.DMDK_LOCK_POLICY:
            '',
            sd.DMDK_LOCK_RENEWAL_INTERVAL_SEC:
            sd.DEFAULT_LEASE_PARAMS[sd.DMDK_LOCK_RENEWAL_INTERVAL_SEC],
            sd.DMDK_LEASE_TIME_SEC:
            sd.DEFAULT_LEASE_PARAMS[sd.DMDK_LEASE_TIME_SEC],
            sd.DMDK_IO_OP_TIMEOUT_SEC:
            sd.DEFAULT_LEASE_PARAMS[sd.DMDK_IO_OP_TIMEOUT_SEC],
            sd.DMDK_LEASE_RETRIES:
            sd.DEFAULT_LEASE_PARAMS[sd.DMDK_LEASE_RETRIES],
            REMOTE_PATH:
            remotePath
        })