예제 #1
0
    def run(self, cmdline, db) -> None:
        if not cmdline.SOLUTION_ID:
            db_solutions = get_sf_prefilter_sols(db)
        else:
            db_solutions = []
            for solution_id in cmdline.SOLUTION_ID:
                db_solution = get_sf_prefilter_sol(db, solution_id)

                if db_solution is None:
                    self.log_warn(
                        "Solution '{0}' not found".format(solution_id))
                    continue

                db_solutions.append(db_solution)

        first = True
        for db_solution in db_solutions:
            if first:
                first = False
            else:
                print("----------")

            print("Solution #{0}: {1}".format(db_solution.id,
                                              db_solution.cause))

            db_btpaths = get_sf_prefilter_btpaths_by_solution(db, db_solution)
            for db_btpath in db_btpaths:
                if db_btpath.opsys is not None:
                    opsys_str = (
                        " (only valid for '{0}' operating system)".format(
                            db_btpath.opsys.name))
                else:
                    opsys_str = ""

                print("Stacktrace path pattern: {0}{1}".format(
                    db_btpath.pattern, opsys_str))

            db_pkgnames = get_sf_prefilter_pkgnames_by_solution(
                db, db_solution)
            for db_pkgname in db_pkgnames:
                if db_pkgname.opsys is not None:
                    opsys_str = (
                        " (only valid for '{0}' operating system)".format(
                            db_pkgname.opsys.name))
                else:
                    opsys_str = ""

                print("Package name pattern: {0}{1}".format(
                    db_pkgname.pattern, opsys_str))
예제 #2
0
    def run(self, cmdline, db):
        if len(cmdline.SOLUTION_ID) < 1:
            db_solutions = get_sf_prefilter_sols(db)
        else:
            db_solutions = []
            for solution_id in cmdline.SOLUTION_ID:
                db_solution = get_sf_prefilter_sol(db, solution_id)

                if db_solution is None:
                    self.log_warn("Solution '{0}' not found"
                                  .format(solution_id))
                    continue

                db_solutions.append(db_solution)

        first = True
        for db_solution in db_solutions:
            if first:
                first = False
            else:
                print "----------"

            print "Solution #{0}: {1}".format(db_solution.id, db_solution.cause)

            db_btpaths = get_sf_prefilter_btpaths_by_solution(db, db_solution)
            for db_btpath in db_btpaths:
                if db_btpath.opsys is not None:
                    opsys_str = (" (only valid for '{0}' operating system)"
                                 .format(db_btpath.opsys.name))
                else:
                    opsys_str = ""

                print ("Stacktrace path pattern: {0}{1}"
                       .format(db_btpath.pattern, opsys_str))

            db_pkgnames = get_sf_prefilter_pkgnames_by_solution(db, db_solution)
            for db_pkgname in db_pkgnames:
                if db_pkgname.opsys is not None:
                    opsys_str = (" (only valid for '{0}' operating system)"
                                 .format(db_pkgname.opsys.name))
                else:
                    opsys_str = ""

                print ("Package name pattern: {0}{1}"
                       .format(db_pkgname.pattern, opsys_str))
예제 #3
0
    def run(self, cmdline, db):
        if len(cmdline.ID) < 1:
            db_solutions = get_sf_prefilter_sols(db)
        else:
            db_solutions = []
            for solution_id in cmdline.ID:
                db_solution = get_sf_prefilter_sol(db, solution_id)

                if db_solution is None:
                    self.log_warn(
                        "Solution '{0}' not found".format(solution_id))
                    continue

                db_solutions.append(db_solution)

        first = True
        for db_solution in db_solutions:
            if first:
                first = False
            else:
                print("----------")

            print("Solution #{0}".format(db_solution.id))

            print("Cause: {0}".format(db_solution.cause))

            if db_solution.url is not None:
                print("URL: {0}".format(db_solution.url))

            if "\n" in db_solution.note_text:
                print("Note:\n{0}".format(db_solution.note_text))
            else:
                print("Note: {0}".format(db_solution.note_text))

            if db_solution.note_html is not None:
                if "\n" in db_solution.note_text:
                    print("HTML Note:\n{0}".format(db_solution.note_html))
                else:
                    print("HTML Note: {0}".format(db_solution.note_html))
예제 #4
0
    def run(self, cmdline, db):
        if not cmdline.ID:
            db_solutions = get_sf_prefilter_sols(db)
        else:
            db_solutions = []
            for solution_id in cmdline.ID:
                db_solution = get_sf_prefilter_sol(db, solution_id)

                if db_solution is None:
                    self.log_warn("Solution '{0}' not found"
                                  .format(solution_id))
                    continue

                db_solutions.append(db_solution)

        first = True
        for db_solution in db_solutions:
            if first:
                first = False
            else:
                print("----------")

            print("Solution #{0}".format(db_solution.id))

            print("Cause: {0}".format(db_solution.cause))

            if db_solution.url is not None:
                print("URL: {0}".format(db_solution.url))

            if "\n" in db_solution.note_text:
                print("Note:\n{0}".format(db_solution.note_text))
            else:
                print("Note: {0}".format(db_solution.note_text))

            if db_solution.note_html is not None:
                if "\n" in db_solution.note_text:
                    print("HTML Note:\n{0}".format(db_solution.note_html))
                else:
                    print("HTML Note: {0}".format(db_solution.note_html))
예제 #5
0
    def run(self, cmdline, db):
        db_solution = get_sf_prefilter_sol(db, cmdline.SOLUTION)

        if db_solution is None:
            self.log_error("Unable to find solution '{0}'"
                           .format(cmdline.SOLUTION))
            return 1

        if cmdline.opsys is not None:
            if cmdline.opsys not in systems:
                self.log_error("Operating system '{0}' is not supported"
                               .format(cmdline.opsys))
                return 1

            osplugin = systems[cmdline.opsys]
            db_opsys = get_opsys_by_name(db, osplugin.nice_name)

            if db_opsys is None:
                self.log_error("Operating system '{0}' is not installed "
                               "in storage".format(osplugin.nice_name))
                return 1
        else:
            db_opsys = None

        self.log_info("Adding patterns for '{0}'".format(db_solution.cause))
        if db_opsys is not None:
            self.log_info("Limitting patterns to operating system '{0}'"
                          .format(db_opsys.name))

        for btpath in cmdline.btpath:
            self.log_debug("Processing stacktrace path pattern: {0}"
                           .format(btpath))
            db_btpath = get_sf_prefilter_btpath_by_pattern(db, btpath)
            if db_btpath is not None:
                self.log_debug("Stacktrace path pattern {0} already exists"
                               .format(btpath))
                continue

            try:
                re.compile(btpath)
            except re.error as ex:
                self.log_warn("Stacktrace path pattern {0} can not be "
                              "compiled: {1}".format(btpath, str(ex)))
                continue

            self.log_info("Adding new stacktrace path pattern: {0}"
                          .format(btpath))

            db_btpath = SfPrefilterBacktracePath()
            db_btpath.solution = db_solution
            db_btpath.opsys = db_opsys
            db_btpath.pattern = btpath
            db.session.add(db_btpath)

        for pkgname in cmdline.pkgname:
            self.log_debug("Processing package name pattern: {0}"
                           .format(pkgname))
            db_btpath = get_sf_prefilter_pkgname_by_pattern(db, pkgname)
            if db_btpath is not None:
                self.log_debug("Package name pattern {0} already exists"
                               .format(pkgname))
                continue

            try:
                re.compile(pkgname)
            except re.error as ex:
                self.log_warn("Package name pattern {0} can not be "
                              "compiled: {1}".format(pkgname, str(ex)))
                continue

            self.log_info("Adding new package name pattern: {0}"
                          .format(pkgname))

            db_pkgname = SfPrefilterPackageName()
            db_pkgname.solution = db_solution
            db_pkgname.opsys = db_opsys
            db_pkgname.pattern = pkgname
            db.session.add(db_pkgname)

        db.session.flush()
        return 0
예제 #6
0
    def run(self, cmdline, db):
        db_solution = get_sf_prefilter_sol(db, cmdline.SOLUTION)

        if db_solution is None:
            self.log_error("Unable to find solution '{0}'".format(
                cmdline.SOLUTION))
            return 1

        if cmdline.opsys is not None:
            if cmdline.opsys not in systems:
                self.log_error(
                    "Operating system '{0}' is not supported".format(
                        cmdline.opsys))
                return 1

            osplugin = systems[cmdline.opsys]
            db_opsys = get_opsys_by_name(db, osplugin.nice_name)

            if db_opsys is None:
                self.log_error("Operating system '{0}' is not installed "
                               "in storage".format(osplugin.nice_name))
                return 1
        else:
            db_opsys = None

        self.log_info("Adding patterns for '{0}'".format(db_solution.cause))
        if db_opsys is not None:
            self.log_info(
                "Limitting patterns to operating system '{0}'".format(
                    db_opsys.name))

        for btpath in cmdline.btpath:
            self.log_debug(
                "Processing stacktrace path pattern: {0}".format(btpath))
            db_btpath = get_sf_prefilter_btpath_by_pattern(db, btpath)
            if db_btpath is not None:
                self.log_debug(
                    "Stacktrace path pattern {0} already exists".format(
                        btpath))
                continue

            try:
                re.compile(btpath)
            except re.error as ex:
                self.log_warn("Stacktrace path pattern {0} can not be "
                              "compiled: {1}".format(btpath, str(ex)))
                continue

            self.log_info(
                "Adding new stacktrace path pattern: {0}".format(btpath))

            db_btpath = SfPrefilterBacktracePath()
            db_btpath.solution = db_solution
            db_btpath.opsys = db_opsys
            db_btpath.pattern = btpath
            db.session.add(db_btpath)

        for pkgname in cmdline.pkgname:
            self.log_debug(
                "Processing package name pattern: {0}".format(pkgname))
            db_btpath = get_sf_prefilter_pkgname_by_pattern(db, pkgname)
            if db_btpath is not None:
                self.log_debug(
                    "Package name pattern {0} already exists".format(pkgname))
                continue

            try:
                re.compile(pkgname)
            except re.error as ex:
                self.log_warn("Package name pattern {0} can not be "
                              "compiled: {1}".format(pkgname, str(ex)))
                continue

            self.log_info(
                "Adding new package name pattern: {0}".format(pkgname))

            db_pkgname = SfPrefilterPackageName()
            db_pkgname.solution = db_solution
            db_pkgname.opsys = db_opsys
            db_pkgname.pattern = pkgname
            db.session.add(db_pkgname)

        db.session.flush()
        return 0