def test_explore_default_provider2(self): Storage.explore_provider(self.MyPvd, default_for_snap=True) self.assertEqual(Storage.default_snap_provider, self.MyPvd.type) self.assertFalse(Storage.default_vol_provider) self.assertTrue(isinstance(Storage.lookup_provider(self.MyPvd.type), self.MyPvd)) self.assertTrue(isinstance(Storage.lookup_provider(None, True), self.MyPvd))
def test_with_ignores(self): class VolConfig(VolumeConfig): vg = None base64_whatever = None only_in_volume_config = None only_in_snapshot_config = None class Vol(VolConfig, Volume): _ignores = ('only_in_snapshot_config') class Snap(VolConfig, Snapshot): _ignores = ('only_in_volume_config', ) class VolPvd(VolumeProvider): type = 'mimimi' vol_class = Vol snap_class = Snap Storage.explore_provider(VolPvd) vol = Storage.create(type='mimimi', device='/dev/sdo', vg='vg0', only_in_volume_config='4u', only_in_snapshot_config='4s') snap = vol.snapshot() snap_cnf = snap.config() vol_cnf = vol.config() self.assertFalse('only_in_volume_config' in snap_cnf) self.assertEqual(snap_cnf['vg'], 'vg0') self.assertFalse('only_in_snapshot_config' in vol_cnf) self.assertTrue(vol_cnf['base64_whatever'] is None)
def test_with_ignores(self): class VolConfig(VolumeConfig): vg = None base64_whatever = None only_in_volume_config = None only_in_snapshot_config = None class Vol(VolConfig, Volume): _ignores = ('only_in_snapshot_config') class Snap(VolConfig, Snapshot): _ignores = ('only_in_volume_config',) class VolPvd(VolumeProvider): type = 'mimimi' vol_class = Vol snap_class = Snap Storage.explore_provider(VolPvd) vol = Storage.create( type='mimimi', device='/dev/sdo', vg='vg0', only_in_volume_config='4u', only_in_snapshot_config='4s' ) snap = vol.snapshot() snap_cnf = snap.config() vol_cnf = vol.config() self.assertFalse('only_in_volume_config' in snap_cnf) self.assertEqual(snap_cnf['vg'], 'vg0') self.assertFalse('only_in_snapshot_config' in vol_cnf) self.assertTrue(vol_cnf['base64_whatever'] is None)
def blank_config(self, cnf): cnf.pop('snapshot_id', None) def destroy(self, vol, force=False, **kwargs): ''' @type vol: CSVolume ''' super(CSVolumeProvider, self).destroy(vol) conn = self._new_conn() if conn: voltool.detach_volume(conn, vol.id, LOG) voltool.delete_volume(conn, vol.id, LOG) vol.device = None def destroy_snapshot(self, snap): conn = self._new_conn() if conn: LOG.debug('Deleting EBS snapshot %s', snap.id) conn.deleteSnapshot(id=snap.id) @devname_not_empty def detach(self, vol, force=False): super(CSVolumeProvider, self).detach(vol) conn = self._new_conn() if conn: voltool.detach_volume(conn, vol.id, LOG) vol.device = None Storage.explore_provider(CSVolumeProvider)
def detach(self, vol, force=False): super(EbsVolumeProvider, self).detach(vol) try: pl = bus.platform conn = pl.new_ec2_conn() vol.detached = True except AttributeError: pass else: ebstool.detach_volume(conn, vol.id, self._logger) finally: vol.device = None Storage.explore_provider(EbsVolumeProvider, default_for_snap=True) class S3TransferProvider(TransferProvider): schema = 's3' urlparse.uses_netloc.append(schema) acl = None _logger = None _bucket = None def __init__(self, acl='aws-exec-read'): self._logger = logging.getLogger(__name__) self.acl = acl
def blank_config(self, cnf): cnf.pop('snapshot_id', None) def destroy(self, vol, force=False, **kwargs): ''' @type vol: CSVolume ''' super(CSVolumeProvider, self).destroy(vol) conn = self._new_conn() if conn: voltool.detach_volume(conn, vol.id, LOG) voltool.delete_volume(conn, vol.id, LOG) vol.device = None def destroy_snapshot(self, snap): conn = self._new_conn() if conn: LOG.debug('Deleting EBS snapshot %s', snap.id) conn.deleteSnapshot(id=snap.id) @devname_not_empty def detach(self, vol, force=False): super(CSVolumeProvider, self).detach(vol) conn = self._new_conn() if conn: voltool.detach_volume(conn, vol.id, LOG) vol.device = None Storage.explore_provider(CSVolumeProvider)
super(EbsVolumeProvider, self).detach(vol) try: pl = bus.platform conn = pl.new_ec2_conn() vol.detached = True except AttributeError: pass else: ebstool.detach_volume(conn, vol.id, self._logger) finally: vol.device = None Storage.explore_provider(EbsVolumeProvider, default_for_snap=True) class S3TransferProvider(TransferProvider): schema = 's3' urlparse.uses_netloc.append(schema) acl = None _logger = None _bucket = None def __init__(self, acl='aws-exec-read'): self._logger = logging.getLogger(__name__) self.acl = acl def configure(self, remote_path):
def setUp(self): self.VolPvd.vol_class = self.Vol Storage.explore_provider(self.VolPvd)
def test_explore_provider(self): Storage.explore_provider(self.MyPvd) self.assertFalse(Storage.default_snap_provider) self.assertFalse(Storage.default_vol_provider) self.assertTrue(isinstance(Storage.lookup_provider(self.MyPvd.type), self.MyPvd))