示例#1
0
    def create(self, dbg, sr_uuid, configuration, name, description):
        log.debug('{}: SR.create: config={}, sr_uuid={}'.format(
            dbg, configuration, sr_uuid))

        uri = configuration['file-uri']
        sr = urlparse.urlparse(uri).path
        log.debug('{}: SR.create: sr={}'.format(dbg, sr))

        # Create the metadata database
        filebased.Callbacks().create_database(sr)

        read_caching = True
        if 'read_caching' in configuration:
            if configuration['read_caching'] not in [
                    'true', 't', 'on', '1', 'yes'
            ]:
                read_caching = False

        meta = {
            'name': name,
            'description': description,
            'uri': uri,
            'unique_id': sr_uuid,
            'read_caching': read_caching,
            'keys': {}
        }
        util.update_sr_metadata(dbg, 'file://' + sr, meta)

        return configuration
示例#2
0
    def create(self, dbg, sr_uuid, configuration, name, description):
        log.debug('{}: SR.create: config={}, sr_uuid={}'.format(
            dbg, configuration, sr_uuid))

        uri = configuration['uri']
        nfs_uri = urlparse.urlsplit(uri)
        if nfs_uri.scheme != 'nfs':
            raise ValueError('Incorrect URI scheme')

        nfs_server = '{0}:{1}'.format(nfs_uri.netloc, nfs_uri.path)

        # Temporarily mount the filesystem so we can write the SR metadata
        mnt_path = self._mount(dbg, nfs_server, sr_uuid)

        sr = os.path.join(mnt_path, str(sr_uuid))

        # Create SR folder based on name
        try:
            os.makedirs(sr)
        except OSError as exc:
            if exc.errno == errno.EEXIST:
                # Need a specifc error here, SR_already_exists.
                # raise ValueError('SR already exists'):
                raise
            else:
                raise

        # Create the metadata database
        importlib.import_module('nfs-ng').Callbacks().create_database(sr)

        read_caching = True
        if 'read_caching' in configuration:
            if configuration['read_caching'] not in [
                    'true', 't', 'on', '1', 'yes'
            ]:
                read_caching = False

        meta = {
            'name': name,
            'description': description,
            'uri': uri,
            'unique_id': sr_uuid,
            'read_caching': read_caching,
            'keys': {}
        }
        util.update_sr_metadata(dbg, 'file://' + sr, meta)

        self._unmount(dbg, mnt_path)

        configuration['sr_uuid'] = sr_uuid
        return configuration
示例#3
0
    def create(self, dbg, sr_uuid, configuration, name, description):
        log.debug('{}: SR.create: config={}, sr_uuid={}'.format(
            dbg, configuration, sr_uuid))

        uri = configuration['device']
        dev_path = urlparse.urlparse(uri).path
        log.debug('{}: SR.create: dev_path={}'.format(dbg, dev_path))

        # Make the filesystem
        cmd = ['/usr/sbin/mkfs.ext4', dev_path]
        call(dbg, cmd)

        # Temporarily mount the filesystem so we can write the SR metadata
        sr = self._mount_path(sr_uuid)
        util.mkdir_p(sr)
        ext4_mount(dbg, dev_path, sr)

        # Create the metadata database
        importlib.import_module('ext4-ng').Callbacks().create_database(sr)

        read_caching = True
        if 'read_caching' in configuration:
            if configuration['read_caching'] not in [
                    'true', 't', 'on', '1', 'yes']:
                read_caching = False

        meta = {
            'name': name,
            'description': description,
            'uri': uri,
            'unique_id': sr_uuid,
            'read_caching': read_caching,
            'keys': {}
        }
        util.update_sr_metadata(dbg, 'file://' + sr, meta)

        ext4_unmount(dbg, sr)

        configuration['sr_uuid'] = sr_uuid
        return configuration
示例#4
0
 def set_name(self, dbg, sr, new_name):
     util.update_sr_metadata(dbg, 'file://' + sr, {'name': new_name})
示例#5
0
 def set_description(self, dbg, sr, new_description):
     util.update_sr_metadata(
         dbg, 'file://' + sr, {'description': new_description})