Exemplo n.º 1
0
            diff_dict = directory_diff(source, target, difference={})
            if 'event' in diff_dict or 'type' in diff_dict:
                delete_sql = self.get_sql_from_diff(gid=1,
                                                    sid=tgt_params['sid'],
                                                    did=tgt_params['did'],
                                                    scid=tgt_params['scid'],
                                                    tid=tgt_params['tid'],
                                                    plid=target['oid'],
                                                    drop_req=True)

                diff = self.get_sql_from_diff(gid=src_params['gid'],
                                              sid=src_params['sid'],
                                              did=src_params['did'],
                                              scid=src_params['scid'],
                                              tid=src_params['tid'],
                                              plid=source['oid'])
                return delete_sql + diff

            diff = self.get_sql_from_diff(gid=tgt_params['gid'],
                                          sid=tgt_params['sid'],
                                          did=tgt_params['did'],
                                          scid=tgt_params['scid'],
                                          tid=tgt_params['tid'],
                                          plid=target['oid'],
                                          data=diff_dict)
        return '\n' + diff


SchemaDiffRegistry(blueprint.node_type, RowSecurityView, 'table')
RowSecurityView.register_node_view(blueprint)
Exemplo n.º 2
0
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            if 'pub' in data and type(data['pub']) == str:
                # Convert publication details to list
                data['pub'] = data['pub'].split(',,')
            sql, name = self.get_sql(data=data, subid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  subid=oid,
                                  only_sql=True)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               subid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, SubscriptionView, 'Database')
SubscriptionView.register_node_view(blueprint)
Exemplo n.º 3
0
                                     doid=oid,
                                     is_schema_diff=True)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  scid=scid,
                                  doid=oid,
                                  only_sql=True)
            elif target_schema:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               doid=oid,
                               target_schema=target_schema,
                               json_resp=False)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               doid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, DomainView)
DomainView.register_node_view(blueprint)
Exemplo n.º 4
0
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            sql, name = self.get_sql(gid=gid,
                                     sid=sid,
                                     did=did,
                                     data=data,
                                     cid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  cid=oid,
                                  only_sql=True)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               cid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, CastView, 'Database')
CastView.register_node_view(blueprint)
Exemplo n.º 5
0
        :return:
        """
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        scid = kwargs.get('scid')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)
        target_schema = kwargs.get('target_schema', None)

        if data:
            if target_schema:
                data['schema'] = target_schema
            sql, name = self.get_SQL(gid, sid, did, data, scid, oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid, sid=sid, did=did,
                                  scid=scid, seid=oid, only_sql=True)
            elif target_schema:
                sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, seid=oid,
                               target_schema=target_schema, json_resp=False)
            else:
                sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, seid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, SequenceView)
SequenceView.register_node_view(blueprint)
Exemplo n.º 6
0
                         and len(diff_dict[key]['added']) > 0) or
                        ('changed' in diff_dict[key]
                         and len(diff_dict[key]['changed']) > 0) or
                        ('deleted' in diff_dict[key]
                         and len(diff_dict[key]['deleted']) > 0)):
                        create_req = True
                    elif key != 'columns':
                        create_req = True

            if create_req:
                diff = self.get_sql_from_index_diff(sid=tgt_params['sid'],
                                                    did=tgt_params['did'],
                                                    scid=tgt_params['scid'],
                                                    tid=tgt_params['tid'],
                                                    idx=target['oid'],
                                                    diff_schema=target_schema,
                                                    drop_req=True)
            else:
                diff = self.get_sql_from_index_diff(sid=tgt_params['sid'],
                                                    did=tgt_params['did'],
                                                    scid=tgt_params['scid'],
                                                    tid=tgt_params['tid'],
                                                    idx=target['oid'],
                                                    data=diff_dict)

        return diff


SchemaDiffRegistry(blueprint.node_type, IndexesView, 'table')
IndexesView.register_node_view(blueprint)
Exemplo n.º 7
0
    def get_sql_from_diff(self, **kwargs):
        """
        This function is used to get the DDL/DML statements.
        :param kwargs
        :return:
        """
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        fdw_id = kwargs.get('fdwid')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            sql, name = self.get_sql(gid=gid, sid=sid, did=did, data=data,
                                     fid=fdw_id, fsid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid, sid=sid, did=did, fid=fdw_id,
                                  fsid=oid, only_sql=True)
            else:
                sql = self.sql(gid=gid, sid=sid, did=did, fid=fdw_id,
                               fsid=oid, json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, ForeignServerView, 'Database')
ForeignServerView.register_node_view(blueprint)
Exemplo n.º 8
0
                    'scid': scid
                })
        except Exception as e:
            return internal_server_error(errormsg=str(e))

    def ddl_compare(self, **kwargs):
        """
        This function returns the DDL/DML statements based on the
        comparison status.

        :param kwargs:
        :return:
        """

        tgt_params = kwargs.get('target_params')
        parent_source_data = kwargs.get('parent_source_data')
        parent_target_data = kwargs.get('parent_target_data')

        diff = self.get_sql_from_diff(sid=tgt_params['sid'],
                                      did=tgt_params['did'],
                                      scid=tgt_params['scid'],
                                      tid=tgt_params['tid'],
                                      source_data=parent_source_data,
                                      target_data=parent_target_data)

        return diff + '\n'


SchemaDiffRegistry(blueprint.node_type, PartitionsView, 'table')
PartitionsView.register_node_view(blueprint)
Exemplo n.º 9
0
        """
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        scid = kwargs.get('scid')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        diff_schema = kwargs.get('diff_schema', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            if diff_schema:
                data['schema'] = diff_schema
            sql, name = self.get_sql(gid=gid, sid=sid, did=did, scid=scid,
                                     data=data, cfgid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid, sid=sid, did=did,
                                  scid=scid, cfgid=oid, only_sql=True)
            elif diff_schema:
                sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, cfgid=oid,
                               diff_schema=diff_schema, json_resp=False)
            else:
                sql = self.sql(gid=gid, sid=sid, did=did, scid=scid, cfgid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, FtsConfigurationView)
FtsConfigurationView.register_node_view(blueprint)
Exemplo n.º 10
0
                                     scid=scid,
                                     coid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  scid=scid,
                                  coid=oid,
                                  only_sql=True)
            elif target_schema:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               coid=oid,
                               target_schema=target_schema,
                               json_resp=False)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               coid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, CollationView)
CollationView.register_node_view(blueprint)
Exemplo n.º 11
0
            data['columns'] = tmp_columns

        tmp_constraints = []
        if 'constraints' in data:
            if 'added' in data['constraints']:
                for item in data['constraints']['added']:
                    tmp_constraints.append(item)
            if 'changed' in data['constraints']:
                for item in data['constraints']['changed']:
                    tmp_constraints.append(item)
            data['constraints'] = tmp_constraints

        tmp_ftoptions = []
        if 'ftoptions' in old_data:
            tmp_ftoptions = old_data['ftoptions']
        if 'ftoptions' in data:
            if 'added' in data['ftoptions']:
                for item in data['ftoptions']['added']:
                    tmp_ftoptions.append(item)
            if 'changed' in data['ftoptions']:
                for item in data['ftoptions']['changed']:
                    tmp_ftoptions.append(item)
            if 'deleted' in data['ftoptions']:
                for item in data['ftoptions']['deleted']:
                    tmp_ftoptions.remove(item)
            data['ftoptions'] = tmp_ftoptions


SchemaDiffRegistry(blueprint.node_type, ForeignTableView)
ForeignTableView.register_node_view(blueprint)
Exemplo n.º 12
0
        :param kwargs:
        :return:
        """
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            sql = self.get_sql(data=data, etid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  etid=oid,
                                  only_sql=True)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               etid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, EventTriggerView, 'Database')
EventTriggerView.register_node_view(blueprint)
Exemplo n.º 13
0
        :param kwargs:
        :return:
        """
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            sql, name = self.get_sql(data=data, pbid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  pbid=oid,
                                  only_sql=True)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               pbid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, PublicationView, 'Database')
PublicationView.register_node_view(blueprint)
Exemplo n.º 14
0
    def get_sql_from_diff(self, **kwargs):
        """
        This function is used to get the DDL/DML statements.
        :param kwargs
        :return:
        """
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            sql, name = self.getSQL(gid=gid, sid=sid, did=did, data=data,
                                    eid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid, sid=sid, did=did,
                                  eid=oid, only_sql=True)
            else:
                sql = self.sql(gid=gid, sid=sid, did=did, eid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, ExtensionView, 'Database')
# Register and add ExtensionView as blueprint
ExtensionView.register_node_view(blueprint)
Exemplo n.º 15
0
            did: Database ID
        """
        dependents_result = self.get_dependents(self.conn, did) if \
            self.conn.connected() else []
        return ajax_response(
            response=dependents_result,
            status=200
        )

    @check_precondition()
    def dependencies(self, gid, sid, did):
        """
        This function gets the dependencies and returns an ajax response
        for the database.

        Args:
            gid: Server Group ID
            sid: Server ID
            did: Database ID
        """
        dependencies_result = self.get_dependencies(self.conn, did) if \
            self.conn.connected() else []
        return ajax_response(
            response=dependencies_result,
            status=200
        )


SchemaDiffRegistry(blueprint.node_type, DatabaseView)
DatabaseView.register_node_view(blueprint)
Exemplo n.º 16
0
        :param kwargs:
        :return:
        """
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            sql, name = self.get_sql(data=data, lid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  lid=oid,
                                  only_sql=True)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               lid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, LanguageView, 'Database')
LanguageView.register_node_view(blueprint)
Exemplo n.º 17
0
                                     data=data,
                                     tid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  scid=scid,
                                  tid=oid,
                                  only_sql=True)
            elif diff_schema:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               tid=oid,
                               diff_schema=diff_schema,
                               json_resp=False)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               tid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, FtsTemplateView)
FtsTemplateView.register_node_view(blueprint)
Exemplo n.º 18
0
                data['schema'] = diff_schema
            sql, name = self.getSQL(gid, sid, did, data, scid, oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  scid=scid,
                                  pkgid=oid,
                                  only_sql=True)
            elif diff_schema:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               pkgid=oid,
                               diff_schema=diff_schema,
                               json_resp=False)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               pkgid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, PackageView)
PackageView.register_node_view(blueprint)
Exemplo n.º 19
0
"""))

        old_data = res['rows'][0]
        old_data = self._formatter(old_data, scid)

        # Privileges
        self.format_request_acls(old_data, specific=['nspacl'])

        # Render sql from create & alter sql using properties & acl data
        SQL = ''
        SQL = render_template(
            "/".join([self.template_path, 'sql/create.sql']),
            _=gettext, data=old_data, conn=self.conn
        )

        sql_header = u"""
-- CATALOG: {0}

-- DROP SCHEMA {0};(

""".format(old_data['name'])

        SQL = sql_header + SQL

        return ajax_response(response=SQL.strip("\n"))


SchemaDiffRegistry(schema_blueprint.node_type, SchemaView)
SchemaView.register_node_view(schema_blueprint)
CatalogView.register_node_view(catalog_blueprint)
Exemplo n.º 20
0
        elif comp_status == 'target_only':
            diff = self.get_sql_from_diff(gid=tgt_params['gid'],
                                          sid=tgt_params['sid'],
                                          did=tgt_params['did'],
                                          scid=tgt_params['scid'],
                                          tid=tgt_params['tid'],
                                          oid=target['oid'],
                                          drop_sql=True)
        elif comp_status == 'different':
            diff_dict = directory_diff(source,
                                       target,
                                       ignore_keys=self.keys_to_ignore,
                                       difference={})
            parse_acl(source, target, diff_dict)

            diff = self.get_sql_from_diff(gid=tgt_params['gid'],
                                          sid=tgt_params['sid'],
                                          did=tgt_params['did'],
                                          scid=tgt_params['scid'],
                                          tid=tgt_params['tid'],
                                          oid=target['oid'],
                                          source_schema=source['schema'],
                                          diff_schema=target_schema,
                                          data=diff_dict)

        return diff


SchemaDiffRegistry(blueprint.node_type, RuleView, 'table')
RuleView.register_node_view(blueprint)
Exemplo n.º 21
0
            sql, name = self.get_sql(gid, sid, data, scid, oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  scid=scid,
                                  syid=oid,
                                  only_sql=True)

            elif diff_schema:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               syid=oid,
                               diff_schema=diff_schema,
                               json_resp=False)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               syid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, SynonymView)
SynonymView.register_node_view(blueprint)
Exemplo n.º 22
0
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            sql, name = self.get_sql(gid=gid,
                                     sid=sid,
                                     did=did,
                                     scid=scid,
                                     data=data,
                                     pid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  scid=scid,
                                  pid=oid,
                                  only_sql=True)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               pid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, FtsParserView)
FtsParserView.register_node_view(blueprint)
Exemplo n.º 23
0
                                          tid=src_params['tid'],
                                          oid=source['oid'])
        elif comp_status == 'target_only':
            diff = self.get_sql_from_diff(gid=tgt_params['gid'],
                                          sid=tgt_params['sid'],
                                          did=tgt_params['did'],
                                          scid=tgt_params['scid'],
                                          tid=tgt_params['tid'],
                                          oid=target['oid'],
                                          drop_sql=True)
        elif comp_status == 'different':
            diff_dict = directory_diff(source,
                                       target,
                                       ignore_keys=self.keys_to_ignore,
                                       difference={})
            parse_acl(source, target, diff_dict)

            diff = self.get_sql_from_diff(gid=tgt_params['gid'],
                                          sid=tgt_params['sid'],
                                          did=tgt_params['did'],
                                          scid=tgt_params['scid'],
                                          tid=tgt_params['tid'],
                                          oid=target['oid'],
                                          data=diff_dict)

        return diff


SchemaDiffRegistry(blueprint.node_type, CompoundTriggerView, 'table')
CompoundTriggerView.register_node_view(blueprint)
Exemplo n.º 24
0
                                     data=data,
                                     dcid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid,
                                  sid=sid,
                                  did=did,
                                  scid=scid,
                                  dcid=oid,
                                  only_sql=True)
            elif target_schema:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               dcid=oid,
                               target_schema=target_schema,
                               json_resp=False)
            else:
                sql = self.sql(gid=gid,
                               sid=sid,
                               did=did,
                               scid=scid,
                               dcid=oid,
                               json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, FtsDictionaryView)
FtsDictionaryView.register_node_view(blueprint)
Exemplo n.º 25
0
    def get_sql_from_diff(self, **kwargs):
        """
        This function is used to get the DDL/DML statements.
        :param kwargs:
        :return:
        """
        gid = kwargs.get('gid')
        sid = kwargs.get('sid')
        did = kwargs.get('did')
        fid = kwargs.get('fdwid')
        fsid = kwargs.get('fsid')
        oid = kwargs.get('oid')
        data = kwargs.get('data', None)
        drop_sql = kwargs.get('drop_sql', False)

        if data:
            sql, name = self.get_sql(data=data, fsid=fsid, umid=oid)
        else:
            if drop_sql:
                sql = self.delete(gid=gid, sid=sid, did=did, fid=fid,
                                  fsid=fsid, umid=oid, only_sql=True)
            else:
                sql = self.sql(gid=gid, sid=sid, did=did, fid=fid, fsid=fsid,
                               umid=oid, json_resp=False)
        return sql


SchemaDiffRegistry(blueprint.node_type, UserMappingView, 'Database')
UserMappingView.register_node_view(blueprint)