Esempio n. 1
0
    def test_encode_decode_are_inverse(self):
        tag = 'volume'
        volume = {'volume': True}
        # regular volume
        self.assertEquals(encode_tag(**decode_tag(tag)), tag)
        self.assertEquals(decode_tag(encode_tag(**volume)), volume)

        # backup volume
        tag = 'backup.1.backup1'
        volume = {
            'timestamp': 1.0,
            'backup_id': 'backup1'
        }
        self.assertEquals(encode_tag(**decode_tag(tag)), tag)
        self.assertEquals(decode_tag(encode_tag(**volume)), volume)
        # restore volume
        tag = 'restore.vol1.backup1'
        volume = {
            'backup_source_volume_id': 'vol1',
            'backup_id': 'backup1'
        }
        self.assertEquals(encode_tag(**decode_tag(tag)), tag)
        self.assertEquals(decode_tag(encode_tag(**volume)), volume)
        # zero volume
        tag = 'zero'
        volume = {'zero': True}
        self.assertEquals(encode_tag(**decode_tag(tag)), tag)
        self.assertEquals(decode_tag(encode_tag(**volume)), volume)
Esempio n. 2
0
    def test_encode_decode_are_inverse(self):
        tag = 'volume'
        volume = {'volume': True}
        # regular volume
        self.assertEquals(encode_tag(**decode_tag(tag)), tag)
        self.assertEquals(decode_tag(encode_tag(**volume)), volume)

        # backup volume
        tag = 'backup.1.backup1'
        volume = {
            'timestamp': 1.0,
            'backup_id': 'backup1'
        }
        self.assertEquals(encode_tag(**decode_tag(tag)), tag)
        self.assertEquals(decode_tag(encode_tag(**volume)), volume)
        # restore volume
        tag = 'restore.vol1.backup1'
        volume = {
            'backup_source_volume_id': 'vol1',
            'backup_id': 'backup1'
        }
        self.assertEquals(encode_tag(**decode_tag(tag)), tag)
        self.assertEquals(decode_tag(encode_tag(**volume)), volume)
        # zero volume
        tag = 'zero'
        volume = {'zero': True}
        self.assertEquals(encode_tag(**decode_tag(tag)), tag)
        self.assertEquals(decode_tag(encode_tag(**volume)), volume)
Esempio n. 3
0
    def clone(self, id=None, src=None, backup=None, size=None):
        """
        This runs a clone job outside of the storage api,
        which is useful for performance testing backup restores
        (Example: storage tools clone volume-clone
          --backup volume-backup --src volume-original)
        """
        # Set basic Logging
        logging.basicConfig()
        # Get the lunr logger
        log = logger.get_logger()
        # Output Debug level info
        log.logger.setLevel(logging.DEBUG)
        # Load the local storage configuration
        conf = LunrConfig.from_storage_conf()
        # Init the volume helper
        volume = VolumeHelper(conf)

        # Attempt to figure out the original volume size
        size = size or str(volume.get(src)['size'] / 1073741824)
        # Size is in gigs
        if not re.match('G', size):
            size = size + 'G'
        # Create a tag to apply to the lvm volume
        tag = encode_tag(source_volume_id=src, backup_id=backup)
        # Create the volume
        execute('lvcreate', volume.volume_group,
                name=id, size=size, addtag=tag)
        # Get info for the newly created volume
        new = volume.get(id)

        with self.timeit():
            print("Starting Backup")
            # Restore volume from the backup
            volume.clone(new, src, backup)
Esempio n. 4
0
 def test_encode_tag(self):
     # normal volume
     self.assertEquals(encode_tag(), 'volume')
     # backup volume
     result = encode_tag(timestamp=1, backup_id='backup1')
     self.assertEquals(result, 'backup.1.backup1')
     # restore volume
     result = encode_tag(backup_source_volume_id='vol1',
                         backup_id='backup1')
     self.assertEquals(result, 'restore.vol1.backup1')
     # scrub volume
     result = encode_tag(zero=True)
     self.assertEquals(result, 'zero')
     # image conversion
     result = encode_tag(image_id='someimageid')
     self.assertEquals(result, 'convert.someimageid')
Esempio n. 5
0
 def test_encode_tag(self):
     # normal volume
     self.assertEquals(encode_tag(), 'volume')
     # backup volume
     result = encode_tag(timestamp=1, backup_id='backup1')
     self.assertEquals(result, 'backup.1.backup1')
     # restore volume
     result = encode_tag(backup_source_volume_id='vol1',
                         backup_id='backup1')
     self.assertEquals(result, 'restore.vol1.backup1')
     # scrub volume
     result = encode_tag(zero=True)
     self.assertEquals(result, 'zero')
     # image conversion
     result = encode_tag(image_id='someimageid')
     self.assertEquals(result, 'convert.someimageid')
Esempio n. 6
0
    def clone(self, id=None, src=None, backup=None, size=None):
        """
        This runs a clone job outside of the storage api,
        which is useful for performance testing backup restores
        (Example: storage tools clone volume-clone
          --backup volume-backup --src volume-original)
        """
        # Set basic Logging
        logging.basicConfig()
        # Get the lunr logger
        log = logger.get_logger()
        # Output Debug level info
        log.logger.setLevel(logging.DEBUG)
        # Load the local storage configuration
        conf = LunrConfig.from_storage_conf()
        # Init the volume helper
        volume = VolumeHelper(conf)

        # Attempt to figure out the original volume size
        size = size or str(volume.get(src)['size'] / 1073741824)
        # Size is in gigs
        if not re.match('G', size):
            size = size + 'G'
        # Create a tag to apply to the lvm volume
        tag = encode_tag(source_volume_id=src, backup_id=backup)
        # Create the volume
        execute('lvcreate',
                volume.volume_group,
                name=id,
                size=size,
                addtag=tag)
        # Get info for the newly created volume
        new = volume.get(id)

        with self.timeit():
            print("Starting Backup")
            # Restore volume from the backup
            volume.clone(new, src, backup)