Exemple #1
0
    def LoadJobs(self, environment_name=None):
        """
        Load list of rule sets
        Return None if OK
        """

        try:

            api_instance = MaskingJobApi(self.__engine.api_client)

            execapi = ExecutionApi(self.__engine.api_client)
            execList = paginator(
                        execapi,
                        "get_all_executions")

            if execList.response_list:
                for e in execList.response_list:
                    self.__executionList[e.job_id] = e

            if environment_name:
                environment_id = DxEnvironmentList.get_environmentId_by_name(
                                 environment_name)

                if environment_id:
                    jobs = paginator(
                            api_instance,
                            "get_all_masking_jobs",
                            environment_id=environment_id,
                            _request_timeout=self.__engine.get_timeout())
                else:
                    return 1
            else:

                jobs = paginator(
                    api_instance,
                    "get_all_masking_jobs",
                    _request_timeout=self.__engine.get_timeout())

            if jobs.response_list:
                for c in jobs.response_list:
                    if c.masking_job_id in self.__executionList:
                        lastExec = self.__executionList[c.masking_job_id]
                    else:
                        lastExec = None

                    job = DxJob(self.__engine, lastExec)
                    job.from_job(c)
                    self.__jobsList[c.masking_job_id] = job
            else:
                if environment_name is None:
                    print_error("No jobs found")
                    self.__logger.error("No jobs found")

            self.__logger.debug("All jobs loaded")

        except ApiException as e:
            print_error("Can't load job list %s" % e.body)
            return 1
    def LoadApplications(self):
        """
        Load a list of applications into memory
        return None if OK
        return 1 if not OK
        """

        self.__applicationList.clear()
        try:
            self.__api = ApplicationApi
            self.__apiexc = ApiException

            api_instance = self.__api(self.__engine.api_client)
            a = paginator(
                    api_instance,
                    "get_all_applications",
                    _request_timeout=self.__engine.get_timeout())

            if a.response_list:
                for c in a.response_list:
                    application = DxApplication(self.__engine)
                    application.from_obj(c)
                    if self.__engine.version_ge("6.0.0.0") and c.application_id is not None:
                        self.__applicationList[c.application_id] = application
                    else:
                        self.__applicationList[c.application_name] = application
            else:
                print_error("No applications found")
                return 1

        except self.__apiexc as e:
            print_error(e.body)
            self.__logger.error(e.body)
            return 1
    def LoadEnvironments(self):
        """
        Load environment list from Engine into global list
        return None if OK
        return 1 if error
        """

        self.__environmentList.clear()
        try:
            api_instance = EnvironmentApi(self.__engine.api_client)
            envlist = paginator(api_instance,
                                "get_all_environments",
                                _request_timeout=self.__engine.get_timeout())

            if envlist.response_list:
                for c in envlist.response_list:
                    environment = DxEnvironment(self.__engine)
                    environment.from_environment(c)
                    self.__environmentList[c.environment_id] = environment
            else:
                self.__logger.error("No environments found")
                print_error("No environments found")

        except ApiException as e:
            self.__logger.error("Can't load environment %s" % e.body)
            print_error("Can't load environment %s" % e.body)
            return 1
Exemple #4
0
    def LoadUsers(self):
        """
        Load users list from Engine into global list
        return None if OK
        return 1 if error
        """

        self.__api = UserApi
        self.__apiexc = ApiException

        self.__userList.clear()
        try:
            api_instance = self.__api(self.__engine.api_client)
            userlist = paginator(api_instance,
                                 "get_all_users",
                                 _request_timeout=self.__engine.get_timeout())

            if userlist.response_list:
                for c in userlist.response_list:
                    user = DxUser(self.__engine)
                    user.from_user(c)
                    self.__userList[c.user_id] = user
            else:
                self.__logger.error("No users found")
                print_error("No users found")

        except self.__apiexc as e:
            self.__logger.error("Can't load users %s" % e.body)
            print_error("Can't load users %s" % e.body)
            return 1
Exemple #5
0
    def LoadApplications(self):
        """
        Load a list of applications into memory
        return None if OK
        return 1 if not OK
        """

        self.__applicationList.clear()
        try:
            api_instance = ApplicationApi(self.__engine.api_client)
            a = paginator(api_instance,
                          "get_all_applications",
                          _request_timeout=self.__engine.get_timeout())

            if a.response_list:
                for c in a.response_list:
                    application = DxApplication(self.__engine)
                    application.application_name = c.application_name
                    self.__applicationList[c.application_name] = application
            else:
                print_error("No applications found")
                return 1

        except ApiException as e:
            print_error(e.body)
            self.__logger.error(e.body)
            return 1
Exemple #6
0
    def LoadProfileExt(self):
        """
        Load list of profiles expressions
        Return None if OK
        """

        try:

            api_instance = ProfileExpressionApi(self.__engine.api_client)
            profileexts = paginator(
                api_instance,
                "get_all_profile_expressions",
                _request_timeout=self.__engine.get_timeout())

            if profileexts.response_list:
                for pe in profileexts.response_list:
                    proext = DxProfileExt()
                    proext.from_profilesetext(pe)
                    self.__profileexp_list[pe.profile_expression_id] = proext
            else:
                print_error("No Profile expression found")
                self.__logger.error("No Profile expression found")

            self.__logger.debug("All Profile expression loaded")

        except ApiException as e:
            print_error("Can't load Profile expression list %s" % e.body)
            return 1
Exemple #7
0
    def LoadDrivers(self):
        """
        Load list of drivers
        Return None if OK
        """

        self.__api = JdbcDriverApi
        self.__apiexc = ApiException

        try:
            api_instance = self.__api(self.__engine.api_client)

            drivers = paginator(
                            api_instance,
                            "get_all_jdbc_drivers")

            if drivers.response_list:
                for c in drivers.response_list:
                    driver = DxJDBC(self.__engine)
                    driver.from_driver(c)
                    self.__driverList[c.jdbc_driver_id] = driver
            else:
                print_error("No JDBC drivers found")
                self.__logger.error("No JDBC drivers found")

        except self.__apiexc as e:
            print_error("Can't load JDBC drivers %s" % e.body)
            return None
Exemple #8
0
    def LoadDomains(self):
        """
        Load list of domains
        Return None if OK
        """

        self.__domainList.clear()
        try:
            api_instance = DomainApi(self.__engine.api_client)
            domain_list = paginator(api_instance, "get_all_domains")

            if domain_list.response_list:
                for c in domain_list.response_list:
                    dom = DxDomain(self.__engine)
                    dom.from_domain(c)
                    self.__domainList[c.domain_name] = dom
            else:
                print_error("No domain found")
                self.__logger.error("No domain found")
                return 1

            return None

        except ApiException as e:
            print_error(e.body)
            self.__logger.error(e.body)
            return 1
Exemple #9
0
    def LoadRoles(self):
        """
        Load roles list from Engine into global list
        return None if OK
        return 1 if error
        """

        self.__roleList.clear()
        try:
            api_instance = RoleApi(self.__engine.api_client)
            rolelist = paginator(api_instance,
                                 "get_all_roles",
                                 _request_timeout=self.__engine.get_timeout())

            if rolelist.response_list:
                for c in rolelist.response_list:
                    role = DxRole(self.__engine)
                    role.from_role(c)
                    self.__roleList[c.role_id] = role
            else:
                self.__logger.error("No roles found")
                print_error("No roles found")

        except ApiException as e:
            self.__logger.error("Can't load roles %s" % e.body)
            print_error("Can't load roles %s" % e.body)
            return 1
Exemple #10
0
    def LoadFileFormats(self):
        """
        Load list of rule sets
        Return None if OK
        """

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.file_format_api import FileFormatApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.file_format_api import FileFormatApi
            from masking_api_53.rest import ApiException

        self.__api = FileFormatApi
        self.__apiexc = ApiException

        try:
            api_instance = self.__api(self.__engine.api_client)

            fileformats = paginator(
                            api_instance,
                            "get_all_file_formats")

            if fileformats.response_list:
                for c in fileformats.response_list:
                    fileformat = DxFileFormat(self.__engine)
                    fileformat.from_filetype(c)
                    self.__filetypeList[c.file_format_id] = fileformat
            else:
                print_error("No file formats found")
                self.__logger.error("No file formats found")

        except self.__apiexc as e:
            print_error("Can't load file formats %s" % e.body)
            return None
Exemple #11
0
    def LoadAppSettings(self):
        """
        Load application settings list from Engine into global group list
        return None if OK
        return 1 if error
        """

        self.__appSettingGroupList.clear()
        try:
            api_instance = ApplicationSettingsApi(self.__engine.api_client)
            applist = paginator(api_instance,
                                "get_all_application_settings",
                                _request_timeout=self.__engine.get_timeout())

            if applist.response_list:
                for c in applist.response_list:
                    setting = DxAppSetting(self.__engine)
                    setting.from_role(c)
                    if c.setting_group not in self.__appSettingGroupList:
                        self.__appSettingGroupList[c.setting_group] = {}
                    self.__appSettingGroupList[c.setting_group][
                        c.setting_name] = setting
            else:
                self.__logger.error("No application settings found")
                print_error("No application settings found")

        except ApiException as e:
            self.__logger.error("Can't load application settings %s" % e.body)
            print_error("Can't load application settings %s" % e.body)
            return 1
Exemple #12
0
    def list_execution_component(self, execid):
        """
        List an execution detalis ( tables, rows, etc)
        :param1 execid: execution id to display
        return a None if non error
        return 1 in case of error
        """

        if (execid is None):
            print_error("Execution id is required")
            self.__logger.error("Execution id is required")
            return 1

        try:

            self.__logger.debug("execute component")
            api_instance = self.__apicomponent(self.__engine.api_client)
            execomponents = paginator(
                api_instance,
                "get_all_execution_components",
                execution_id=execid,
                _request_timeout=self.__engine.get_timeout())

            return execomponents.response_list

        except self.__apiexc as e:
            print_error(e.body)
            self.__logger.error(e)
            return None
    def LoadEnvironments(self):
        """
        Load environment list from Engine into global list
        return None if OK
        return 1 if error
        """


        if self.__loaded_engine is None:
            self.__loaded_engine = self.__engine.get_name()

        
        if self.__loaded_engine == self.__engine.get_name() and self.__environmentList != {}:
           return None
        else:
            # delete a list as we can have multi engines
            self.__environmentList.clear()
            self.__loaded_engine = self.__engine.get_name()

        appList = DxApplicationList()
        appList.LoadApplications()

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.environment_api import EnvironmentApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.environment_api import EnvironmentApi
            from masking_api_53.rest import ApiException

        self.__api = EnvironmentApi
        self.__apiexc = ApiException

        try:
            api_instance = self.__api(self.__engine.api_client)
            envlist = paginator(
                        api_instance,
                        "get_all_environments",
                        _request_timeout=self.__engine.get_timeout())

            if envlist.response_list:
                for c in envlist.response_list:
                    environment = DxEnvironment(self.__engine)
                    environment.from_environment(c)
                    if hasattr(c, "application_id"):
                        app = appList.get_by_ref(c.application_id)
                        environment.application_name = app.application_name
                    self.__environmentList[c.environment_id] = environment
            else:
                self.__logger.error("No environments found")
                print_error("No environments found")

        except self.__apiexc as e:
            self.__logger.error("Can't load environment %s" % e.body)
            print_error("Can't load environment %s" % e.body)
            return 1
Exemple #14
0
    def LoadProfiles(self):
        """
        Load list of profiles sets
        Return None if OK
        """

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.profile_set_api import ProfileSetApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.profile_set_api import ProfileSetApi
            from masking_api_53.rest import ApiException

        self.__api = ProfileSetApi
        self.__apiexc = ApiException

        try:

            api_instance = self.__api(self.__engine.api_client)

            # execapi = ExecutionApi(self.__engine.api_client)
            # execList = paginator(
            #             execapi,
            #             "get_all_executions")
            #
            # if execList.response_list:
            #     for e in execList.response_list:
            #         self.__executionList[e.job_id] = e

            profileset = paginator(
                            api_instance,
                            "get_all_profile_sets",
                            _request_timeout=self.__engine.get_timeout())

            if profileset.response_list:
                for ps in profileset.response_list:
                    profile = DxProfile()
                    profile.from_profileset(ps)
                    self.__profileset_list[ps.profile_set_id] = profile
            else:
                print_error("No Profile sets found")
                self.__logger.error("No Profile sets found")

            self.__logger.debug("All Profile sets loaded")

        except self.__apiexc as e:
            print_error("Can't load Profile sets list %s" % e.body)
            return 1
    def LoadProfileExt(self):
        """
        Load list of profiles expressions
        Return None if OK
        """

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.profile_expression_api import ProfileExpressionApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.profile_expression_api import ProfileExpressionApi
            from masking_api_53.rest import ApiException

        self.__api = ProfileExpressionApi
        self.__apiexc = ApiException

        try:

            api_instance = self.__api(self.__engine.api_client)
            profileexts = paginator(
                api_instance,
                "get_all_profile_expressions",
                _request_timeout=self.__engine.get_timeout())

            if profileexts.response_list:
                for pe in profileexts.response_list:
                    proext = DxProfileExt()
                    proext.from_profilesetext(pe)
                    self.__profileexp_list[pe.profile_expression_id] = proext
            else:
                print_error("No Profile expression found")
                self.__logger.error("No Profile expression found")

            self.__logger.debug("All Profile expression loaded")

        except self.__apiexc as e:
            print_error("Can't load Profile expression list %s" % e.body)
            return 1
Exemple #16
0
    def LoadDomains(self):
        """
        Load list of domains
        Return None if OK
        """

        self.__domainList.clear()

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.domain_api import DomainApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.domain_api import DomainApi
            from masking_api_53.rest import ApiException

        self.__api = DomainApi
        self.__apiexc = ApiException

        try:
            api_instance = self.__api(self.__engine.api_client)
            domain_list = paginator(api_instance, "get_all_domains")

            if domain_list.response_list:
                for c in domain_list.response_list:
                    dom = DxDomain(self.__engine)
                    dom.from_domain(c)
                    self.__domainList[c.domain_name] = dom
            else:
                print_error("No domain found")
                self.__logger.error("No domain found")
                return 1

            return None

        except self.__apiexc as e:
            print_error(e.body)
            self.__logger.error(e.body)
            return 1
Exemple #17
0
    def LoadFileFormats(self):
        """
        Load list of rule sets
        Return None if OK
        """

        try:
            api_instance = FileFormatApi(self.__engine.api_client)

            fileformats = paginator(api_instance, "get_all_file_formats")

            if fileformats.response_list:
                for c in fileformats.response_list:
                    fileformat = DxFileFormat(self.__engine)
                    fileformat.from_filetype(c)
                    self.__filetypeList[c.file_format_id] = fileformat
            else:
                print_error("No file formats found")
                self.__logger.error("No file formats found")

        except ApiException as e:
            print_error("Can't load file formats %s" % e.body)
            return None
Exemple #18
0
    def LoadRoles(self):
        """
        Load roles list from Engine into global list
        return None if OK
        return 1 if error
        """

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.role_api import RoleApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.role_api import RoleApi
            from masking_api_53.rest import ApiException

        self.__api = RoleApi
        self.__apiexc = ApiException

        self.__roleList.clear()
        try:
            api_instance = self.__api(self.__engine.api_client)
            rolelist = paginator(api_instance,
                                 "get_all_roles",
                                 _request_timeout=self.__engine.get_timeout())

            if rolelist.response_list:
                for c in rolelist.response_list:
                    role = DxRole(self.__engine)
                    role.from_role(c)
                    self.__roleList[c.role_id] = role
            else:
                self.__logger.error("No roles found")
                print_error("No roles found")

        except self.__apiexc as e:
            self.__logger.error("Can't load roles %s" % e.body)
            print_error("Can't load roles %s" % e.body)
            return 1
Exemple #19
0
    def LoadSync(self, objecttype=None):
        """
        Load list of syncable objects
        param1: type: load only particular type
        Return None if OK
        """

        self.__syncableList = {}

        try:
            api_sync = SyncApi(self.__engine.api_client)
            if objecttype:
                objecttype = objecttype.upper()
            if objecttype and self.__engine.version_ge("5.3"):
                if objecttype == "ALGORITHM":
                    api_sync_response = ExportObjectMetadataList()
                    for atype in [
                            "SEGMENT", "DATE_SHIFT", "LOOKUP", "TOKENIZATION"
                    ]:
                        partres = paginator(api_sync,
                                            "get_all_syncable_objects",
                                            object_type=atype)
                        if api_sync_response.response_list is None:
                            api_sync_response = partres
                        else:
                            api_sync_response.response_list = \
                                api_sync_response.response_list + \
                                partres.response_list
                else:
                    api_sync_response = paginator(api_sync,
                                                  "get_all_syncable_objects",
                                                  object_type=objecttype)
            else:
                if (objecttype is None) \
                   or (objecttype in
                   ["LOOKUP", "DATE_SHIFT", "SEGMENT",
                    "TOKENIZATION", "ALGORITHM"]):
                    api_sync_response = paginator(api_sync,
                                                  "get_all_syncable_objects")
                else:
                    print_error("This object type is not supported"
                                "in version 5.2.X")
                    sys.exit(1)

            if api_sync_response.response_list:
                for c in api_sync_response.response_list:
                    syncobj = DxSync(self.__engine)
                    syncobj.from_sync(c)
                    stype = syncobj.object_type

                    if stype in [
                            "LOOKUP", "DATE_SHIFT", "SEGMENT", "TOKENIZATION"
                    ]:
                        stype = "ALGORITHM"

                    sid = syncobj.object_identifier.values()[0]
                    if stype not in self.__syncableList:
                        self.__syncableList[stype] = {}
                    self.__syncableList[stype][sid] = syncobj
            else:
                print_error("No syncobject found")
                self.__logger.error("No syncobject found")
                return 1

            return None

        except ApiException as e:
            print_error(e.body)
            self.__logger.error(e.body)
            return 1
    def LoadJobs(self, environment_name=None):
        """
        Load list of rule sets
        Return None if OK
        """

        self.__api = ProfileJobApi
        self.__apiexec = ExecutionApi
        self.__apiexc = ApiException

        try:

            api_instance = self.__api(self.__engine.api_client)
            execapi = self.__apiexec(self.__engine.api_client)
            execList = paginator(execapi, "get_all_executions")

            # if execList.response_list:
            #     for e in execList.response_list:
            #         self.__executionList[e.job_id] = e

            if execList.response_list:
                for e in execList.response_list:
                    if e.job_id in self.__executionList:
                        self.__executionList[e.job_id].append(e)
                    else:
                        self.__executionList[e.job_id] = [e]

            if environment_name:
                environment_id = DxEnvironmentList.get_environmentId_by_name(
                    environment_name)

                if environment_id:
                    jobs = paginator(
                        api_instance,
                        "get_all_profile_jobs",
                        environment_id=environment_id,
                        _request_timeout=self.__engine.get_timeout())
                else:
                    return 1
            else:

                jobs = paginator(api_instance,
                                 "get_all_profile_jobs",
                                 _request_timeout=self.__engine.get_timeout())

            if jobs.response_list:
                for c in jobs.response_list:
                    if c.profile_job_id in self.__executionList:
                        execution_list = self.__executionList[c.profile_job_id]
                    else:
                        execution_list = None

                    job = DxProfileJob(self.__engine, execution_list)
                    job.from_job(c)
                    self.__jobsList[c.profile_job_id] = job
            else:
                if environment_name is None:
                    print_error("No jobs found")
                    self.__logger.error("No jobs found")

            self.__logger.debug("All jobs loaded")

        except ApiException as e:
            print_error("Can't load job list %s" % e.body)
            return 1
Exemple #21
0
    def LoadColumns(self, metadata_id=None, is_masked=None):
        """
        Load list of column metadata
        Return None if OK
        """

        notable = None
        nofile = None

        metaobj = DxMetaList.get_by_ref(metadata_id)

        self.__api = ColumnMetadataApi
        self.__fileapi = FileFieldMetadataApi
        self.__apiexc = ApiException

        if ((metadata_id is None) or (type(metaobj) == DxTable)):
            try:
                api_instance = self.__api(self.__engine.api_client)

                if is_masked:
                    if metadata_id:
                        columns = paginator(api_instance,
                                            "get_all_column_metadata",
                                            table_metadata_id=metadata_id,
                                            is_masked=is_masked)
                    else:
                        columns = paginator(api_instance,
                                            "get_all_column_metadata",
                                            is_masked=is_masked)
                else:
                    if metadata_id:
                        columns = paginator(api_instance,
                                            "get_all_column_metadata",
                                            table_metadata_id=metadata_id)
                    else:
                        columns = paginator(api_instance,
                                            "get_all_column_metadata")

                if columns.response_list:
                    for c in columns.response_list:
                        column = DxDBColumn(self.__engine)
                        column.from_column(c)
                        self.__columnList[column.cf_metadata_id] = column
                else:
                    # print_error("No column metadata found")
                    self.__logger.error("No column metadata found")

            except self.__apiexc as e:
                if (e.status == 404) and (metadata_id is not None):
                    notable = 1
                else:
                    print_error(e.body)
                    self.__logger.error(e.body)
                    return 1

        elif ((metadata_id is None) or (type(metaobj) == DxFile)):
            try:
                api_instance = self.__fileapi(self.__engine.api_client)

                if metadata_id and (metaobj.file_format_id is None):
                    # File doesn't have a file type set so there is no masking
                    return None

                if is_masked:
                    if metadata_id:
                        fields = paginator(
                            api_instance,
                            "get_all_file_field_metadata",
                            file_format_id=metaobj.file_format_id,
                            is_masked=is_masked)
                    else:
                        fields = paginator(api_instance,
                                           "get_all_file_field_metadata",
                                           is_masked=is_masked)
                else:
                    if metadata_id:
                        fields = paginator(
                            api_instance,
                            "get_all_file_field_metadata",
                            file_format_id=metaobj.file_format_id)
                    else:
                        fields = paginator(api_instance,
                                           "get_all_file_field_metadata")

                if fields.response_list:
                    for c in fields.response_list:
                        column = DxFileField(self.__engine)
                        column.from_file(c)
                        self.__columnList[column.cf_metadata_id] = column
                else:
                    print_error("No field metadata found")
                    self.__logger.error("No field metadata found")

            except self.__apiexc as e:
                if (e.status == 404) and (metadata_id is not None):
                    nofile = 1
                else:
                    print_error(e.body)
                    self.__logger.error(e.body)
                    return 1

        if nofile and notable:
            print_error("Columns for meta id not found")
            return 1
        else:
            return None
Exemple #22
0
    def LoadConnectors(self, environment_name):
        """
        Load all connectors
        :param1 environment_name: Limit load to particular environment name
        """

        # delete a list as we can have multi engines
        self.__connectorsList.clear()
        try:
            api_instance = DatabaseConnectorApi(self.__engine.api_client)

            if environment_name:
                environment_id = DxEnvironmentList.get_environmentId_by_name(
                    environment_name)
                if environment_id:
                    dbconnectors = paginator(
                        api_instance,
                        "get_all_database_connectors",
                        environment_id=environment_id,
                        _request_timeout=self.__engine.get_timeout())
                else:
                    return 1

            else:
                environment_id = None
                dbconnectors = paginator(
                    api_instance,
                    "get_all_database_connectors",
                    _request_timeout=self.__engine.get_timeout())

            if dbconnectors.response_list:
                for c in dbconnectors.response_list:
                    if (c.database_type == 'ORACLE'):
                        connector = OracleConnector(self.__engine)
                    elif (c.database_type == 'MSSQL'):
                        connector = MSSQLConnector(self.__engine)
                    elif (c.database_type == 'SYBASE'):
                        connector = SybaseConnector(self.__engine)
                    else:
                        connector = DxConnector(self.__engine)

                    connector.from_connector(c)
                    connector.is_database = True
                    self.__connectorsList['d' + str(c.database_connector_id)] \
                        = connector
            else:
                self.__logger.debug("No database connectors found")

            api_instance = FileConnectorApi(self.__engine.api_client)

            if environment_id:
                file_connectors = paginator(
                    api_instance,
                    "get_all_file_connectors",
                    environment_id=environment_id,
                    _request_timeout=self.__engine.get_timeout())
            else:
                file_connectors = paginator(
                    api_instance,
                    "get_all_file_connectors",
                    _request_timeout=self.__engine.get_timeout())

            if file_connectors.response_list:
                for f in file_connectors.response_list:
                    connector = DxFileConnector(self.__engine)
                    connector.from_connector(f)
                    connector.is_database = False
                    self.__connectorsList['f' + str(f.file_connector_id)] \
                        = connector
            else:
                self.__logger.debug("No file connectors found")

            if len(self.__connectorsList) < 1:
                print_error("No connectors found")
                self.__logger.error("No connectors found")
                return 1

            return None
        except ApiException as e:
            print_error(e.body)
            self.__logger.error(e.body)
            return 1
Exemple #23
0
    def LoadConnectors(self, environment_name):
        """
        Load all connectors
        :param1 environment_name: Limit load to particular environment name
        """

        self.__logger.debug("load connector !!!")

        if self.__loaded_engine is None:
            self.__loaded_engine = self.__engine.get_name()


        if self.__loaded_engine == self.__engine.get_name() and self.__connectorsList != {} \
           and self.__loaded_env == environment_name:
            return None
        else:
            # delete a list as we can have multi engines
            self.__connectorsList.clear()
            self.__loaded_engine = self.__engine.get_name()

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.database_connector_api import DatabaseConnectorApi
            from masking_api_60.api.file_connector_api import FileConnectorApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.database_connector_api import DatabaseConnectorApi
            from masking_api_53.api.file_connector_api import FileConnectorApi
            from masking_api_53.rest import ApiException

        self.__api = DatabaseConnectorApi
        self.__fileapi = FileConnectorApi
        self.__loaded_env = environment_name
        self.__apiexc = ApiException

        try:
            api_instance = self.__api(self.__engine.api_client)

            if environment_name:
                environment_id = DxEnvironmentList.get_environmentId_by_name(
                    environment_name)
                if environment_id:
                    dbconnectors = paginator(
                        api_instance,
                        "get_all_database_connectors",
                        environment_id=environment_id,
                        _request_timeout=self.__engine.get_timeout())
                else:
                    return 1

            else:
                environment_id = None
                dbconnectors = paginator(
                    api_instance,
                    "get_all_database_connectors",
                    _request_timeout=self.__engine.get_timeout())

            if dbconnectors.response_list:
                for c in dbconnectors.response_list:
                    if (c.database_type == 'ORACLE'):
                        connector = OracleConnector(self.__engine)
                    elif (c.database_type == 'MSSQL'):
                        connector = MSSQLConnector(self.__engine)
                    elif (c.database_type == 'SYBASE'):
                        connector = SybaseConnector(self.__engine)
                    else:
                        connector = DxConnector(self.__engine)

                    connector.from_connector(c)
                    connector.is_database = True
                    self.__connectorsList['d' + str(c.database_connector_id)] \
                        = connector
            else:
                self.__logger.debug("No database connectors found")

            api_instance = self.__fileapi(self.__engine.api_client)

            if environment_id:
                file_connectors = paginator(
                    api_instance,
                    "get_all_file_connectors",
                    environment_id=environment_id,
                    _request_timeout=self.__engine.get_timeout())
            else:
                file_connectors = paginator(
                    api_instance,
                    "get_all_file_connectors",
                    _request_timeout=self.__engine.get_timeout())

            if file_connectors.response_list:
                for f in file_connectors.response_list:
                    connector = DxFileConnector(self.__engine)
                    connector.from_connector(f)
                    connector.is_database = False
                    self.__connectorsList['f' + str(f.file_connector_id)] \
                        = connector
            else:
                self.__logger.debug("No file connectors found")

            if len(self.__connectorsList) < 1:
                print_error("No connectors found")
                self.__logger.error("No connectors found")
                return 1

            return None
        except self.__apiexc as e:
            print_error(e.body)
            self.__logger.error(e.body)
            return 1
Exemple #24
0
    def LoadJobs(self, environment_name=None):
        """
        Load list of rule sets
        Return None if OK
        """

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.profile_job_api import ProfileJobApi
            from masking_api_60.api.execution_api import ExecutionApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.profile_job_api import ProfileJobApi
            from masking_api_53.api.execution_api import ExecutionApi
            from masking_api_53.rest import ApiException

        self.__api = ProfileJobApi
        self.__apiexec = ExecutionApi
        self.__apiexc = ApiException

        try:

            api_instance = self.__api(self.__engine.api_client)
            execapi = self.__apiexec(self.__engine.api_client)
            execList = paginator(execapi, "get_all_executions")

            if execList.response_list:
                for e in execList.response_list:
                    self.__executionList[e.job_id] = e

            if environment_name:
                environment_id = DxEnvironmentList.get_environmentId_by_name(
                    environment_name)

                if environment_id:
                    jobs = paginator(
                        api_instance,
                        "get_all_profile_jobs",
                        environment_id=environment_id,
                        _request_timeout=self.__engine.get_timeout())
                else:
                    return 1
            else:

                jobs = paginator(api_instance,
                                 "get_all_profile_jobs",
                                 _request_timeout=self.__engine.get_timeout())

            if jobs.response_list:
                for c in jobs.response_list:
                    if c.profile_job_id in self.__executionList:
                        lastExec = self.__executionList[c.profile_job_id]
                    else:
                        lastExec = None

                    job = DxProfileJob(self.__engine, lastExec)
                    job.from_job(c)
                    self.__jobsList[c.profile_job_id] = job
            else:
                if environment_name is None:
                    print_error("No jobs found")
                    self.__logger.error("No jobs found")

            self.__logger.debug("All jobs loaded")

        except ApiException as e:
            print_error("Can't load job list %s" % e.body)
            return 1
Exemple #25
0
    def LoadMeta(self, ruleset_id=None):
        """
        Load list of rule sets
        Return None if OK
        """

        notable = None
        nofile = None

        self.__api = TableMetadataApi
        self.__fileapi = FileMetadataApi
        self.__apiexc = ApiException

        self.__tableList.clear()
        try:
            api_instance = self.__api(self.__engine.api_client)

            if ruleset_id:
                table_metadata = paginator(api_instance,
                                           "get_all_table_metadata",
                                           ruleset_id=ruleset_id)
            else:
                table_metadata = paginator(api_instance,
                                           "get_all_table_metadata")

            if table_metadata.response_list:
                for c in table_metadata.response_list:
                    table = DxTable(self.__engine)
                    table.from_table(c)
                    self.__tableList[c.table_metadata_id] = table
            else:
                self.__logger.error("No table metadata found")

        except self.__apiexc as e:
            if (e.status == 404) and (ruleset_id is not None):
                notable = 1
            else:
                print_error(e.body)
                self.__logger.error(e.body)
                return 1

        try:
            api_instance = self.__fileapi(self.__engine.api_client)

            if ruleset_id:
                file_metadata = paginator(api_instance,
                                          "get_all_file_metadata",
                                          ruleset_id=ruleset_id)
            else:
                file_metadata = paginator(api_instance,
                                          "get_all_file_metadata")

            if file_metadata.response_list:
                for c in file_metadata.response_list:
                    file = DxFile(self.__engine)
                    file.from_file(c)
                    self.__tableList[c.file_metadata_id] = file
            else:
                self.__logger.error("No file metadata found")

        except self.__apiexc as e:
            if (e.status == 404) and (ruleset_id is not None):
                nofile = 1
            else:
                print_error(e.body)
                self.__logger.error(e.body)
                return 1

        if nofile and notable:
            print_error("Ruleset not found")
            return 1
        else:
            return None
Exemple #26
0
    def LoadSync(self, objecttype=None):
        """
        Load list of syncable objects
        param1: type: load only particular type
        Return None if OK
        """

        self.__syncableList = {}

        self.__api = SyncApi
        self.__apiexc = ApiException

        api_sync_response = None

        if self.__engine.version_le("6.0.3"):  # to check
            alglist = supported_alg_list["5.3"]
        else:
            alglist = supported_alg_list["6.0.4"]

        try:
            api_sync = self.__api(self.__engine.api_client)
            if objecttype:
                objecttype = objecttype.upper()

            if objecttype and self.__engine.version_ge("5.3"):
                if objecttype == "ALGORITHM":
                    for atype in alglist:
                        print("trying to get {}".format(atype))
                        partres = paginator(api_sync,
                                            "get_all_syncable_objects",
                                            object_type=atype)
                        if api_sync_response is None:
                            api_sync_response = partres
                        else:
                            api_sync_response.response_list = \
                                api_sync_response.response_list + \
                                partres.response_list
                else:
                    api_sync_response = paginator(api_sync,
                                                  "get_all_syncable_objects",
                                                  object_type=objecttype)
            else:
                if (objecttype is None) \
                   or (objecttype in
                   ["LOOKUP", "DATE_SHIFT", "SEGMENT",
                    "TOKENIZATION", "ALGORITHM"]):
                    api_sync_response = paginator(api_sync,
                                                  "get_all_syncable_objects")
                else:
                    print_error("This object type is not supported"
                                "in version 5.2.X")
                    sys.exit(1)

            if api_sync_response.response_list:
                for c in api_sync_response.response_list:
                    syncobj = DxSync(self.__engine)
                    syncobj.from_sync(c)
                    stype = syncobj.object_type

                    if stype in alglist:
                        stype = "ALGORITHM"

                    # print(type(syncobj))
                    # print(type(syncobj.object_identifier))

                    sid = list(syncobj.object_identifier.to_dict().values())[0]
                    if stype not in self.__syncableList:
                        self.__syncableList[stype] = {}
                    self.__syncableList[stype][sid] = syncobj
            else:
                print_error("No syncobject found")
                self.__logger.error("No syncobject found")
                return 1

            return None

        except self.__apiexc as e:
            print_error(e.body)
            self.__logger.error(e.body)
            return 1
Exemple #27
0
    def LoadRulesets_worker(self, environment_name, env_id):
        """
        Load list of rule sets
        Return None if OK
        """

        if self.__loaded_engine is None:
            self.__loaded_engine = self.__engine.get_name()

        #if self.__loaded_engine == self.__engine.get_name() and self.__rulesetList != {}:
        #   return None
        #else:
        # delete a list as we can have multi engines
        self.__rulesetList.clear()
        self.__loaded_engine = self.__engine.get_name()

        DxConnectorsList(environment_name)

        if (self.__engine.version_ge('6.0.0')):
            from masking_api_60.api.database_ruleset_api import DatabaseRulesetApi
            from masking_api_60.api.file_ruleset_api import FileRulesetApi
            from masking_api_60.rest import ApiException
        else:
            from masking_api_53.api.database_ruleset_api import DatabaseRulesetApi
            from masking_api_53.api.file_ruleset_api import FileRulesetApi
            from masking_api_53.rest import ApiException

        self.__api = DatabaseRulesetApi
        self.__fileapi = FileRulesetApi
        self.__apiexc = ApiException

        try:
            api_instance = self.__api(self.__engine.api_client)

            if environment_name:
                environment_id = DxEnvironmentList.get_environmentId_by_name(
                    environment_name)

                if environment_id:
                    database_rulesets = paginator(
                        api_instance,
                        "get_all_database_rulesets",
                        environment_id=environment_id,
                        _request_timeout=self.__engine.get_timeout())
                else:
                    return 1

            else:
                if env_id:
                    environment_id = env_id
                    database_rulesets = paginator(
                        api_instance,
                        "get_all_database_rulesets",
                        environment_id=environment_id,
                        _request_timeout=self.__engine.get_timeout())
                else:
                    environment_id = None
                    database_rulesets = paginator(api_instance,
                                                  "get_all_database_rulesets")

            if database_rulesets.response_list:
                for c in database_rulesets.response_list:
                    ruleset = DxDatabaseRuleset(self.__engine)
                    ruleset.from_ruleset(c)
                    self.__rulesetList[c.database_ruleset_id] = ruleset
            else:
                if environment_id:
                    self.__logger.error("No database ruleset found for "
                                        "environment name %s" %
                                        environment_name)
                else:
                    self.__logger.error("No database ruleset found")

            api_instance = self.__fileapi(self.__engine.api_client)

            if environment_id:
                file_rulesets = paginator(api_instance,
                                          "get_all_file_rulesets",
                                          environment_id=environment_id)
            else:
                file_rulesets = paginator(api_instance,
                                          "get_all_file_rulesets")

            if file_rulesets.response_list:
                for c in file_rulesets.response_list:
                    ruleset = DxFileRuleset(self.__engine)
                    ruleset.from_ruleset(c)
                    self.__rulesetList[c.file_ruleset_id] = ruleset
            else:
                if environment_id:
                    self.__logger.error("No file ruleset found for "
                                        "environment name %s" %
                                        environment_name)
                else:
                    self.__logger.error("No file ruleset found")

        except self.__apiexc as e:
            print_error("Can't load ruleset %s" % e.body)
            return 1
Exemple #28
0
    def LoadRulesets_worker(self, environment_name, env_id):
        """
        Load list of rule sets
        Return None if OK
        """



        self.__rulesetList.clear()
        DxConnectorsList(environment_name)

        self.__api = DatabaseRulesetApi
        self.__fileapi = FileRulesetApi
        self.__apiexc = ApiException

        try:
            api_instance = self.__api(self.__engine.api_client)

            if environment_name:
                environment_id = DxEnvironmentList.get_environmentId_by_name(
                                 environment_name)

                if environment_id:
                    database_rulesets = paginator(
                            api_instance,
                            "get_all_database_rulesets",
                            environment_id=environment_id,
                            _request_timeout=self.__engine.get_timeout())
                else:
                    return 1

            else:
                if env_id:
                    environment_id = env_id
                    database_rulesets = paginator(
                            api_instance,
                            "get_all_database_rulesets",
                            environment_id=environment_id,
                            _request_timeout=self.__engine.get_timeout())
                else:
                    environment_id = None
                    database_rulesets = paginator(
                                            api_instance,
                                            "get_all_database_rulesets")

            if database_rulesets.response_list:
                for c in database_rulesets.response_list:
                    ruleset = DxDatabaseRuleset(self.__engine)
                    ruleset.from_ruleset(c)
                    self.__rulesetList[c.database_ruleset_id] = ruleset
            else:
                if environment_id:
                    self.__logger.error("No database ruleset found for "
                                        "environment name %s"
                                        % environment_name)
                else:
                    self.__logger.error("No database ruleset found")


            api_instance = self.__fileapi(self.__engine.api_client)

            if environment_id:
                file_rulesets = paginator(
                        api_instance,
                        "get_all_file_rulesets",
                        environment_id=environment_id)
            else:
                file_rulesets = paginator(
                        api_instance,
                        "get_all_file_rulesets")

            if file_rulesets.response_list:
                for c in file_rulesets.response_list:
                    ruleset = DxFileRuleset(self.__engine)
                    ruleset.from_ruleset(c)
                    self.__rulesetList[c.file_ruleset_id] = ruleset
            else:
                if environment_id:
                    self.__logger.error("No file ruleset found for "
                                        "environment name %s"
                                        % environment_name)
                else:
                    self.__logger.error("No file ruleset found")

        except self.__apiexc as e:
            print_error("Can't load ruleset %s" % e.body)
            return 1