Exemplo n.º 1
0
    def test_start(self, mock_saveset, mock_inject, mock_calc, mock_verify,
                   mock_subprocess):
        mock_subprocess.return_value = 0
        mock_saveset.return_value = dict(id=555, saveset='test')
        mock_inject.return_value = dict(inject=dict(
            status='ok', saveset='test', file_count=444, skipped=0))
        mock_calc.return_value = dict(calc_sums=dict(
            status='ok', saveset='test', size=150505, processed=4040))
        mock_verify.return_value = dict(verify=dict(status='ok',
                                                    saveset='test',
                                                    count=444,
                                                    errors=0,
                                                    missing=0,
                                                    skipped=0))
        expected = dict(start=dict(status='ok',
                                   results=[
                                       mock_inject.return_value, mock_calc.
                                       return_value, mock_verify.return_value
                                   ]))

        self.config.db_set('autoverify', 'true')
        obj = Actions(self.cli, db_engine=self.engine, db_session=self.session)
        ret = obj.start([self.testhost], self.volume)
        self.assertEqual(ret, expected)
        mock_saveset.assert_called_once_with(self.testhost, self.volume)
        mock_inject.assert_called_once_with(
            self.testhost, self.volume,
            '%s/%s' % (self.snapshot_root, Constants.SYNC_PATH), 555)
        mock_verify.assert_called_once_with(['test'])
        mock_subprocess.assert_called_once_with(
            ['rsnapshot', '-c', self.rsnapshot_conf, 'sync', self.testhost])
Exemplo n.º 2
0
def main():
    opts = Config().docopt_convert(docopt.docopt(__doc__))
    Syslog.logger = Syslog(opts)
    obj = Actions(opts)

    result = {}
    status = 'ok'

    if (opts['list-hosts']):
        result = obj.list_hosts()
    elif (opts['list-savesets']):
        result = obj.list_savesets()
    elif (opts['list-volumes']):
        result = obj.list_volumes()
    elif (opts['verify']):
        result = obj.verify(opts['verify'])
    elif (opts['version']):
        result = dict(version=[dict(name='secondshot %s' % __version__)])
    elif (opts['action'] == 'start'):
        result = obj.start(obj.hosts, obj.volume)
        status = result['start']['status']
    elif (opts['action'] == 'rotate'):
        result = obj.rotate(opts['interval'])
    elif (opts['action'] == 'schema-update'):
        result = obj.schema_update()
        status = result['status']
    else:
        sys.exit('Unknown action: %s' % opts['action'])

    if (opts['format'] == 'json'):
        sys.stdout.write(json.dumps(result) + '\n')
    elif (opts['format'] == 'text' and result and next(iter(result.keys())) in
          ['hosts', 'savesets', 'schema-update', 'version', 'volumes']):
        for item in result[next(iter(result.keys()))]:
            sys.stdout.write(item['name'] + '\n')
    if (status != 'ok'):
        exit(1)