Esempio n. 1
0
def credentials(mocker, now):
    gmd_mock = mocker.Mock(return_value='test')
    gmd_mock.range_keyname = 'test'
    mocker.patch(
        'confidant.scripts.restore.Credential._get_meta_data',
        return_value=gmd_mock,
    )
    mocker.patch(
        'confidant.scripts.restore.CredentialArchive._get_meta_data',
        return_value=gmd_mock,
    )
    archive_credential = CredentialArchive(
        id='1234',
        name='test',
        data_type='credential',
        revision=2,
        enabled=True,
        modified_date=now,
        modified_by='*****@*****.**',
    )
    credential = Credential.from_archive_credential(archive_credential)
    archive_revision1 = CredentialArchive(
        id='1234-1',
        name='test revision1',
        data_type='archive-credential',
        revision=1,
        enabled=True,
        modified_date=now,
        modified_by='*****@*****.**',
    )
    revision1 = Credential.from_archive_credential(archive_revision1)
    archive_revision2 = Credential(
        id='1234-2',
        name='test revision2',
        data_type='archive-credential',
        revision=2,
        enabled=True,
        modified_date=now,
        modified_by='*****@*****.**',
    )
    revision2 = Credential.from_archive_credential(archive_revision2)

    def from_archive_credential(archive_credential):
        if archive_credential.id == '1234':
            return credential
        elif archive_credential.id == '1234-1':
            return revision1
        elif archive_credential.id == '1234-2':
            return revision2

    mocker.patch.object(Credential, 'from_archive_credential',
                        from_archive_credential)
    return {
        'credentials': [credential],
        'archive_credentials': [archive_credential],
        'revisions': [revision1, revision2],
        'archive_revisions': [archive_revision1, archive_revision2],
    }
Esempio n. 2
0
 def restore(self, archive_credentials, force):
     for archive_credential in archive_credentials:
         saves = []
         # restore the current record
         credential = Credential.from_archive_credential(
             archive_credential, )
         saves.append(credential)
         # fetch and restore every revision
         _range = range(1, credential.revision + 1)
         ids = []
         for i in _range:
             ids.append("{0}-{1}".format(credential.id, i))
         archive_revisions = CredentialArchive.batch_get(ids)
         for archive_revision in archive_revisions:
             revision = Credential.from_archive_credential(
                 archive_revision, )
             saves.append(revision)
         try:
             self.save(saves, force=force)
         except Exception:
             logger.exception('Failed to batch save {}.'.format(
                 credential.id))
             stats.incr('restore.save.failure')
             continue