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)))
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))
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 })