def get_not_reviewed(url, username, password, alembic_config, ci_project, case=None): """Get not reviewed migrations. :args: command line arguments namespace object :raises: * Exception - PDT replied with an error * SystemExit(<number>) - found <number> of not reviewed migrations """ config = Config(alembic_config) migrations = frozenset(migration['attributes']['case_id'] for migration in get_migrations_data(config)) params = dict(reviewed=True, ci_project=ci_project) if case: params['case'] = case response = requests.get( '{0}/api/migrations/'.format(url), params=params, auth=(username, password), headers={'content-type': 'application/json'} ) try: response.raise_for_status() print('Got migration data') except Exception: pprint.pprint(response.json()) raise response_migrations = frozenset(migration['case']['id'] for migration in response.json()) diff = migrations - response_migrations if diff: print('Found not reviewed migrations for these cases: {0}'.format(sorted(diff))) sys.exit(len(diff)) else: print('No not reviewed migrations found so far')
def push_data(url, username, password, alembic_config, case=None, show=False): """Push migration data. :args: command line arguments namespace object :raises: Exception if PDT replied with an error """ config = Config(alembic_config) for migration in get_migrations_data(config): if case == migration['attributes']['case_id'] or not case: print( 'Got migration data for migration: {migration[revision]}, case: {migration[attributes][case_id]}' .format(migration=migration)) call_url = '{0}/api/migrations/'.format(url) data = { "uid": migration['revision'], "parent": migration['down_revision'], "case": { "id": str(migration['attributes']['case_id']) }, "pre_deploy_steps": list(get_phase_steps(migration, 'before-deploy')), "post_deploy_steps": list(get_phase_steps(migration, 'after-deploy')), "final_steps": list(get_phase_steps(migration, 'final')), } if show: print('URL: {call_url}, data: \n{data}'.format(call_url=call_url, data=pprint.pformat(data))) else: response = requests.post( call_url, auth=(username, password), data=json.dumps(data, sort_keys=True), headers={'content-type': 'application/json'}) try: response.raise_for_status() print( 'Pushed migration data for migration: {migration[revision]}, ' 'case: {migration[attributes][case_id]}' .format( migration=migration)) except Exception: pprint.pprint(response.json()) raise if case: break
for index, step in enumerate(migration['phases'].get(phase, dict(steps=[]))['steps']): kwargs = {} if 'path' in step: kwargs['path'] = step['path'] yield dict(position=index, code=step['script'], type=step['type'], **kwargs) def push_data(url, username, password, alembic_config, case=None, show=False): """Push migration data. :args: command line arguments namespace object :raises: Exception if PDT replied with an error """ config = Config(alembic_config) for migration in get_migrations_data(config): if case == migration['attributes']['case_id'] or not case: print( 'Got migration data for migration: {migration[revision]}, case: {migration[attributes][case_id]}' .format(migration=migration)) call_url = '{0}/api/migrations/'.format(url) data = { "uid": migration['revision'], "parent": migration['down_revision'], "case": { "id": str(migration['attributes']['case_id']) }, "pre_deploy_steps": list(get_phase_steps(migration, 'before-deploy')), "post_deploy_steps": list(get_phase_steps(migration, 'after-deploy')), "final_steps": list(get_phase_steps(migration, 'final')), }
kwargs['path'] = step['path'] yield dict(position=index, code=step['script'], type=step['type'], **kwargs) def push_data(url, username, password, alembic_config, case=None, show=False): """Push migration data. :args: command line arguments namespace object :raises: Exception if PDT replied with an error """ config = Config(alembic_config) for migration in get_migrations_data(config): if case == migration['attributes']['case_id'] or not case: print( 'Got migration data for migration: {migration[revision]}, case: {migration[attributes][case_id]}' .format(migration=migration)) call_url = '{0}/api/migrations/'.format(url) data = { "uid": migration['revision'], "parent": migration['down_revision'], "case": { "id": str(migration['attributes']['case_id']) }, "pre_deploy_steps": list(get_phase_steps(migration, 'before-deploy')),