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
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
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
def set_name(self, dbg, sr, new_name): util.update_sr_metadata(dbg, 'file://' + sr, {'name': new_name})
def set_description(self, dbg, sr, new_description): util.update_sr_metadata( dbg, 'file://' + sr, {'description': new_description})