예제 #1
0
 def setUp(self):
     self.superuser = User.objects.create(username='******',
                                          is_superuser=True)
     self.user = User.objects.create(username='******')
     # 使用 travis.ci 时实例和测试service保持一致
     self.master = Instance(
         instance_name='test_instance',
         type='master',
         db_type='mysql',
         host=settings.DATABASES['default']['HOST'],
         port=settings.DATABASES['default']['PORT'],
         user=settings.DATABASES['default']['USER'],
         password=settings.DATABASES['default']['PASSWORD'])
     self.master.save()
     self.sys_config = SysConfig()
     self.client = Client()
     self.group = ResourceGroup.objects.create(group_id=1,
                                               group_name='group_name')
     self.wf1 = SqlWorkflow.objects.create(
         workflow_name='workflow_name',
         group_id=self.group.group_id,
         group_name=self.group.group_name,
         engineer=self.superuser.username,
         engineer_display=self.superuser.display,
         audit_auth_groups='audit_auth_groups',
         create_time=datetime.datetime.now(),
         status='workflow_review_pass',
         is_backup=True,
         instance=self.master,
         db_name='db_name',
         syntax_type=1,
     )
     self.wfc1 = SqlWorkflowContent.objects.create(workflow=self.wf1,
                                                   sql_content='some_sql',
                                                   execute_result='')
예제 #2
0
 def setUpClass(cls):
     cls.u1 = User(username='******', display='用户1')
     cls.u1.save()
     cls.ins1 = Instance(instance_name='some_ins', type='master', db_type='mssql', host='some_host',
                         port=1366, user='******', password='******')
     cls.ins1.save()
     cls.wf1 = SqlWorkflow.objects.create(
         workflow_name='some_name',
         group_id=1,
         group_name='g1',
         engineer=cls.u1.username,
         engineer_display=cls.u1.display,
         audit_auth_groups='some_group',
         create_time=datetime.now() - timedelta(days=1),
         status='workflow_finish',
         is_backup='是',
         instance=cls.ins1,
         db_name='some_db',
         syntax_type=1
     )
     cls.wfc1 = SqlWorkflowContent.objects.create(
         workflow=cls.wf1,
         sql_content='some_sql',
         execute_result=json.dumps([{
             'id': 1,
             'sql': 'some_content'
         }]))
     cls.wf1.save()
예제 #3
0
 def setUp(self):
     self.superuser1 = User(username='******', display='中文显示', is_active=True, is_superuser=True,
                            email='*****@*****.**')
     self.superuser1.save()
     self.slave1 = Instance(instance_name='some_name', host='some_host', type='slave', db_type='mysql',
                            user='******', port=1234, password='******')
     self.slave1.save()
예제 #4
0
 def setUpClass(cls):
     cls.ins = Instance(instance_name='some_ins',
                        type='slave',
                        db_type='pgsql',
                        host='some_host',
                        port=1366,
                        user='******',
                        password='******')
     cls.ins.save()
예제 #5
0
 def setUpClass(cls):
     cls.ins1 = Instance(instance_name='some_ins',
                         type='slave',
                         db_type='mssql',
                         host='some_host',
                         port=1366,
                         user='******',
                         password='******')
     cls.ins1.save()
     cls.engine = MssqlEngine(instance=cls.ins1)
예제 #6
0
파일: tests.py 프로젝트: ragty/archery
 def setUp(self):
     self.slave1 = Instance(instance_name='test_slave_instance', type='slave', db_type='mysql',
                            host='testhost', port=3306, user='******', password='******')
     self.slave1.save()
     User = get_user_model()
     self.u1 = User(username='******', display='中文显示', is_active=True)
     self.u1.save()
     self.u2 = User(username='******', display='中文显示', is_active=True)
     self.u2.save()
     sql_query_perm = Permission.objects.get(codename='query_submit')
     self.u2.user_permissions.add(sql_query_perm)
예제 #7
0
 def setUpClass(cls):
     cls.u1 = User(username='******', display='用户1')
     cls.u1.save()
     cls.u2 = User(username='******', display='用户2')
     cls.u2.save()
     cls.superuser1 = User(username='******', is_superuser=True)
     cls.superuser1.save()
     cls.now = datetime.datetime.now()
     cls.slave1 = Instance(instance_name='test_slave_instance', type='slave', db_type='mysql',
                           host='testhost', port=3306, user='******', password='******')
     cls.slave1.save()
     # 批量创建数据 ddl ,u1 ,g1, yesterday 组, 2 个数据
     ddl_workflow = [SqlWorkflow(
         workflow_name='ddl %s' % i,
         group_id=1,
         group_name='g1',
         engineer=cls.u1.username,
         engineer_display=cls.u1.display,
         audit_auth_groups='some_group',
         create_time=cls.now - datetime.timedelta(days=1),
         status='workflow_finish',
         is_backup=True,
         instance=cls.slave1,
         db_name='some_db',
         syntax_type=1
     ) for i in range(2)]
     # 批量创建数据 dml ,u1 ,g2, the day before yesterday 组, 3 个数据
     dml_workflow = [SqlWorkflow(
         workflow_name='Test %s' % i,
         group_id=2,
         group_name='g2',
         engineer=cls.u2.username,
         engineer_display=cls.u2.display,
         audit_auth_groups='some_group',
         create_time=cls.now - datetime.timedelta(days=2),
         status='workflow_finish',
         is_backup=True,
         instance=cls.slave1,
         db_name='some_db',
         syntax_type=2
     ) for i in range(3)]
     SqlWorkflow.objects.bulk_create(ddl_workflow + dml_workflow)
     # 保存内容数据
     ddl_workflow_content = [SqlWorkflowContent(
         workflow=SqlWorkflow.objects.get(workflow_name='ddl %s' % i),
         sql_content='some_sql',
     ) for i in range(2)]
     dml_workflow_content = [SqlWorkflowContent(
         workflow=SqlWorkflow.objects.get(workflow_name='Test %s' % i),
         sql_content='some_sql',
     ) for i in range(3)]
     SqlWorkflowContent.objects.bulk_create(ddl_workflow_content + dml_workflow_content)
예제 #8
0
 def setUp(self):
     self.superuser = User(username='******', is_superuser=True)
     self.superuser.save()
     # 使用 travis.ci 时实例和测试service保持一致
     self.master = Instance(instance_name='test_instance', type='master', db_type='mysql',
                            host=settings.DATABASES['default']['HOST'],
                            port=settings.DATABASES['default']['PORT'],
                            user=settings.DATABASES['default']['USER'],
                            password=settings.DATABASES['default']['PASSWORD'])
     self.master.save()
     self.sys_config = SysConfig()
     self.client = Client()
     self.client.force_login(self.superuser)
예제 #9
0
 def setUpClass(cls):
     """
     初始化补全引擎
     :return:
     """
     # 使用 travis.ci 时实例和测试service保持一致
     cls.master = Instance(instance_name='test_instance', type='master', db_type='mysql',
                           host=settings.DATABASES['default']['HOST'],
                           port=settings.DATABASES['default']['PORT'],
                           user=settings.DATABASES['default']['USER'],
                           password=settings.DATABASES['default']['PASSWORD'])
     cls.master.save()
     cls.comp_engine = get_comp_engine(instance=cls.master, db_name=settings.DATABASES['default']['TEST']['NAME'])
     # 等待completion_refresher刷新完成
     while cls.comp_engine.completion_refresher.is_refreshing():
         import time
         time.sleep(1)
예제 #10
0
파일: tests.py 프로젝트: August2016/archery
 def setUp(self):
     self.slave1 = Instance(instance_name='test_slave_instance',
                            type='slave',
                            db_type='mysql',
                            host='testhost',
                            port=3306,
                            user='******',
                            password='******')
     self.slave1.save()
     User = get_user_model()
     self.u1 = User(username='******', display='中文显示', is_active=True)
     self.u1.save()
     self.u2 = User(username='******', display='中文显示', is_active=True)
     self.u2.save()
     sql_query_perm = Permission.objects.get(codename='query_submit')
     self.u2.user_permissions.add(sql_query_perm)
     tomorrow = datetime.now() + timedelta(days=1)
     self.query_apply_1 = QueryPrivilegesApply(
         group_id=1,
         group_name='some_group',
         title='some_title',
         user_name='some_user',
         instance_name='some_ins',
         db_list='some_db,some_db2',
         limit_num=100,
         valid_date=tomorrow,
         priv_type=1,
         status=0,
         audit_auth_groups='some_audit_group')
     self.query_apply_1.save()
     self.query_apply_2 = QueryPrivilegesApply(
         group_id=1,
         group_name='some_group',
         title='some_title',
         user_name='some_user',
         instance_name='some_ins',
         db_list='some_db',
         table_list='some_table,some_tb2',
         limit_num=100,
         valid_date=tomorrow,
         priv_type=2,
         status=0,
         audit_auth_groups='some_audit_group')
     self.query_apply_2.save()
예제 #11
0
파일: views.py 프로젝트: wmenjoy/Archery
def mirage(request):
    """迁移加密的Instance数据,保留一定版本后删除"""
    try:
        pc = Prpcrypt()
        mg_user = Migrator(app="sql", model="Instance", field="user")
        mg_password = Migrator(app="sql", model="Instance", field="password")
        # 还原密码
        for ins in Instance.objects.all():
            # 忽略解密错误的数据(本身为异常数据)
            try:
                Instance(pk=ins.pk, password=pc.decrypt(ins.password)).save(update_fields=['password'])
            except:
                pass
        # 使用django-mirage-field重新加密
        mg_user.encrypt()
        mg_password.encrypt()
        return JsonResponse({"msg": "ok"})
    except Exception as msg:
        return JsonResponse({"msg": f"{msg}"})
예제 #12
0
 def setUp(self):
     self.ins1 = Instance(instance_name='some_ins', type='slave', db_type='mysql', host='some_host',
                          port=1366, user='******', password='******')
     self.ins1.save()
     self.sys_config = SysConfig()
     self.wf = SqlWorkflow.objects.create(
         workflow_name='some_name',
         group_id=1,
         group_name='g1',
         engineer_display='',
         audit_auth_groups='some_group',
         create_time=datetime.now() - timedelta(days=1),
         status='workflow_finish',
         is_backup=True,
         instance=self.ins1,
         db_name='some_db',
         syntax_type=1
     )
     SqlWorkflowContent.objects.create(workflow=self.wf)
예제 #13
0
 def setUp(self):
     self.now = datetime.now()
     self.u1 = User(username='******', display='用户1')
     self.u1.save()
     self.master1 = Instance(instance_name='test_master_instance',
                             type='master',
                             db_type='mysql',
                             host='testhost',
                             port=3306,
                             user='******',
                             password='******')
     self.master1.save()
     self.wf1 = SqlWorkflow.objects.create(
         workflow_name='some_name2',
         group_id=1,
         group_name='g1',
         engineer=self.u1.username,
         engineer_display=self.u1.display,
         audit_auth_groups='some_group',
         create_time=self.now - timedelta(days=1),
         status='workflow_executing',
         is_backup='是',
         instance=self.master1,
         db_name='some_db',
         syntax_type=1,
     )
     self.wfc1 = SqlWorkflowContent.objects.create(workflow=self.wf1,
                                                   sql_content='some_sql',
                                                   execute_result='')
     # 初始化工单执行返回对象
     self.task_result = MagicMock()
     self.task_result.args = [self.wf1.id]
     self.task_result.success = True
     self.task_result.stopped = self.now
     self.task_result.result.json.return_value = json.dumps([{
         'id':
         1,
         'sql':
         'some_content'
     }])
     self.task_result.result.warning = ''
     self.task_result.result.error = ''
예제 #14
0
 def setUp(self):
     self.slave1 = Instance(instance_name='test_slave_instance', type='slave', db_type='mysql',
                            host='testhost', port=3306, user='******', password='******')
     self.slave2 = Instance(instance_name='test_instance_non_mysql', type='slave', db_type='mssql',
                            host='some_host2', port=3306, user='******', password='******')
     self.slave1.save()
     self.slave2.save()
     archer_user = get_user_model()
     self.superuser1 = archer_user(username='******', is_superuser=True)
     self.superuser1.save()
     self.u1 = archer_user(username='******', display='中文显示', is_active=True)
     self.u1.save()
     self.u2 = archer_user(username='******', display='中文显示', is_active=True)
     self.u2.save()
     self.u3 = archer_user(username='******', display='中文显示', is_active=True)
     self.u3.save()
     sql_query_perm = Permission.objects.get(codename='query_submit')
     self.u2.user_permissions.add(sql_query_perm)
     self.u3.user_permissions.add(sql_query_perm)
     tomorrow = datetime.now() + timedelta(days=1)
     self.query_apply_1 = QueryPrivilegesApply(
         group_id=1,
         group_name='some_group',
         title='some_title',
         user_name='some_user',
         instance_name='some_ins',
         db_list='some_db,some_db2',
         limit_num=100,
         valid_date=tomorrow,
         priv_type=1,
         status=0,
         audit_auth_groups='some_audit_group'
     )
     self.query_apply_1.save()
     self.query_apply_2 = QueryPrivilegesApply(
         group_id=1,
         group_name='some_group',
         title='some_title',
         user_name='some_user',
         instance_name='some_ins',
         db_list='some_db',
         table_list='some_table,some_tb2',
         limit_num=100,
         valid_date=tomorrow,
         priv_type=2,
         status=0,
         audit_auth_groups='some_audit_group'
     )
     self.query_apply_2.save()
     self.db_priv_for_user3 = QueryPrivileges(
         user_name=self.u3.username,
         user_display=self.u3.display,
         instance_name=self.slave1.instance_name,
         db_name='some_db',
         table_name='',
         valid_date=tomorrow,
         limit_num=70,
         priv_type=1)
     self.db_priv_for_user3.save()
     self.table_priv_for_user3 = QueryPrivileges(
         user_name=self.u3.username,
         user_display=self.u3.display,
         instance_name=self.slave1.instance_name,
         db_name='another_db',
         table_name='some_table',
         valid_date=tomorrow,
         limit_num=60,
         priv_type=2)
     self.table_priv_for_user3.save()
     self.db_priv_for_user3_another_instance = QueryPrivileges(
         user_name=self.u3.username,
         user_display=self.u3.display,
         instance_name=self.slave2.instance_name,
         db_name='some_db_another_instance',
         table_name='',
         valid_date=tomorrow,
         limit_num=50,
         priv_type=1)
     self.db_priv_for_user3_another_instance.save()
예제 #15
0
 def setUp(self):
     self.now = datetime.now()
     can_view_permission = Permission.objects.get(
         codename='menu_sqlworkflow')
     self.u1 = User(username='******', display='用户1')
     self.u1.save()
     self.u1.user_permissions.add(can_view_permission)
     self.u2 = User(username='******', display='用户2')
     self.u2.save()
     self.u2.user_permissions.add(can_view_permission)
     self.u3 = User(username='******', display='用户3')
     self.u3.save()
     self.u3.user_permissions.add(can_view_permission)
     self.superuser1 = User(username='******', is_superuser=True)
     self.superuser1.save()
     self.master1 = Instance(instance_name='test_master_instance',
                             type='master',
                             db_type='mysql',
                             host='testhost',
                             port=3306,
                             user='******',
                             password='******')
     self.master1.save()
     self.wf1 = SqlWorkflow.objects.create(
         workflow_name='some_name',
         group_id=1,
         group_name='g1',
         engineer=self.u1.username,
         engineer_display=self.u1.display,
         audit_auth_groups='some_group',
         create_time=self.now - timedelta(days=1),
         status='workflow_finish',
         is_backup='是',
         instance=self.master1,
         db_name='some_db',
         syntax_type=1,
     )
     self.wfc1 = SqlWorkflowContent.objects.create(
         workflow=self.wf1,
         sql_content='some_sql',
         execute_result=json.dumps([{
             'id': 1,
             'sql': 'some_content'
         }]))
     self.wf2 = SqlWorkflow.objects.create(workflow_name='some_name2',
                                           group_id=1,
                                           group_name='g1',
                                           engineer=self.u2.username,
                                           engineer_display=self.u2.display,
                                           audit_auth_groups='some_group',
                                           create_time=self.now -
                                           timedelta(days=1),
                                           status='workflow_manreviewing',
                                           is_backup='是',
                                           instance=self.master1,
                                           db_name='some_db',
                                           syntax_type=1)
     self.wfc2 = SqlWorkflowContent.objects.create(
         workflow=self.wf2,
         sql_content='some_sql',
         execute_result=json.dumps([{
             'id': 1,
             'sql': 'some_content'
         }]))
     self.resource_group1 = ResourceGroup(group_name='some_group')
     self.resource_group1.save()