Ejemplo n.º 1
0
    def remove(self):
        try: return self.REMOVE
        except (AttributeError, KeyError, ValueError) as e:
            err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
            log.info(err)
#             raise ValueError(err)
            return False
Ejemplo n.º 2
0
    def main(self):
        """"""
        if self.directory:      log.info("directory = '{D}'".format(D = self.DIRECTORY))
        if self.director_path:  log.info("director_path = '{D}'".format(D = self.DIRECTORPATH))
        if self.remove:         log.info("remove = '{D}'".format(D = self.REMOVE))
        if self.generate:       log.info("generate = '{D}'".format(D = self.GENERATE))
        log.info("test = '{D}'".format(D = self.test))

        if self.generate:
            self.dir_list = self.get_dir_list()
            self.gen_jobdefs()
            self.gen_filesets()
            self.gen_jobs()

        elif self.remove: 
            self.rem_jobdefs()
            self.rem_filesets()
            self.rem_jobs()
            
        else:
            err = ''.join(["No main command action called. \n", 
                           "Please use '--generate' to create the job files. \n",
                           "or         '--remove' to delete the job files. \n",
                           ])
            log.error(err)
            raise RuntimeError(err)
Ejemplo n.º 3
0
 def _cleanup(self):
     try:
         log.info(self.app_name + " complete.")
         self.FH.close()
         os.chmod(self.outfile, S_IREAD | S_IRGRP | S_IROTH)
     except:
         pass
Ejemplo n.º 4
0
 def someflag(self):
     try:
         return self.SOMEFLAG
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A=str(stack()[0][3]))
         log.info(err)
         #             raise ValueError(err)
         return False
Ejemplo n.º 5
0
    def main(self):
        """"""
        conn = Connect(*self.args, **self.kwargs)
        paths = conn.meta.tables['path']
        log.info("Writing to: '{F}'".format(F=str(self.outfile)))
        FH = open(self.outfile, "w")
        #         FH.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "\n")

        nullnames = 0
        for file in conn.ENGINE.execute(
                "SELECT jobid, pathid, name FROM file"):
            pathid = file[1]
            jobid = file[0]
            name = file[2]

            if len(name) < 1:
                nullnames += 1
                continue
            else:
                if nullnames > 0:
                    log.info(
                        "Skipped {N} null filenames.".format(N=str(nullnames)))
                nullnames = 0

            path = conn.ENGINE.execute(
                "SELECT path FROM path WHERE pathid = {P}".format(
                    P=str(pathid))).fetchone()[0]
            _startend = conn.ENGINE.execute(
                "SELECT starttime, realendtime FROM job WHERE jobid = {J}".
                format(J=str(jobid))).fetchone()
            _start = _startend[0].strftime('%Y-%m-%d')
            #             _end   = _startend[1].strftime('%Y-%m-%d')
            #             startend = ''.join([_start, "-", _end])
            line = ''.join(
                [str(jobid), ":", _start, ":",
                 str(path) + str(name)])
            #             print(line) #333
            try:
                FH.write(line + "\n")
            except UnicodeEncodeError as e:
                line = line.encode('utf-8')
                FH.write(str(line) + "\n")

        FH.close()
Ejemplo n.º 6
0
 def storage(self):
     try: return self.STORAGE
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
         log.info(err)
         raise ValueError(err)
Ejemplo n.º 7
0
 def priority(self):
     try: return self.PRIORITY
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
         log.info(err)
         raise ValueError(err)
Ejemplo n.º 8
0
 def messages(self):
     try: return self.MESSAGES
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
         log.info(err)
         raise ValueError(err)
Ejemplo n.º 9
0
 def level(self):
     try: return self.LEVEL
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
         log.info(err)
         raise ValueError(err)
Ejemplo n.º 10
0
 def incbackuppool(self):
     try: return self.INCBACKUPPOOL
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
         log.info(err)
         raise ValueError(err)
Ejemplo n.º 11
0
 def excdircontaining(self):
     try: return self.EXCDIRCONTAINING 
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
         log.info(err)
         raise ValueError(err)
Ejemplo n.º 12
0
 def bootstrap(self):
     try: return self.BOOTSTRAP
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
         log.info(err)
         raise ValueError(err)
Ejemplo n.º 13
0
 def backup_type(self):
     try: return self.TYPE
     except (AttributeError, KeyError, ValueError) as e:
         err = "Attribute {A} is not set. ".format(A = str(stack()[0][3]))
         log.info(err)
         raise ValueError(err)
Ejemplo n.º 14
0
 def close(self):
     log.info('DBHandler closed.')
Ejemplo n.º 15
0
    def __init__(self, parser={}, *args, **kwargs):
        self.app_name = self.__class__.__name__
        if isinstance(parser, ArgumentParser):
            ### SET ALL ARGPARSE OPTIONS HERE #################################
            ### ALWAYS SET DEFAULTS THROUGH AN @property ######################
            parser.add_argument(
                '--logfile',
                '-L',
                action="store",
                dest="logfile",
                type=str,
                help='Logfile file name or full path.\nDEFAULT: ./classname.log'
            )
            parser.add_argument('--loglevel',
                                '-E',
                                action="store",
                                dest="loglevel",
                                type=str,
                                help='Logging level.\nDEFAULT: 10.')
            parser.add_argument(
                '--screendump',
                '-S',
                action="store",
                dest="screendump",
                type=str,
                help=
                'For logging only. If "True" all logging info will also be dumped to the terminal.\nDEFAULT: True.'
            )
            parser.add_argument(
                '--createpaths',
                '-C',
                action="store",
                dest="createpaths",
                type=str,
                help=
                'For logging only. If "True" will create all paths and files (example create a non-existent logfile.\nDEFAULT: True'
            )
            parser.add_argument(
                '--user',
                '-U',
                action="store",
                dest="user",
                type=str,
                default=None,
                help=
                "Database User for accessing the Bareos Postgres database. (DEFAULT: 'bareospostgresro')"
            )
            parser.add_argument(
                '--password',
                '-W',
                action="store",
                dest="password",
                type=str,
                default=None,
                help=
                "Database User's Password for accessing the Bareos Postgres database. (DEFAULT: 'None')"
            )
            parser.add_argument(
                '--host',
                '-H',
                action="store",
                dest="host",
                type=str,
                default=None,
                help=
                "Host for accessing the Bareos Postgres database. (DEFAULT: 'localhost')"
            )
            parser.add_argument(
                '--port',
                '-P',
                action="store",
                dest="port",
                type=str,
                default=None,
                help=
                "Port for accessing the Bareos Postgres database. (DEFAULT: '5432')"
            )
            parser.add_argument(
                '--database',
                '-D',
                action="store",
                dest="database",
                type=str,
                default=None,
                help=
                "Bareos Postgres database name to which to connect. (DEFAULT: 'bareos')"
            )
            parser.add_argument('--outfile',
                                '-o',
                                action="store",
                                dest="outfile",
                                type=str,
                                help='FULL PATH to outfile filename')

            parser_kwargs = parser.parse_args()
            kwargs.update(vars(parser_kwargs))

        elif isinstance(parser, dict):
            kwargs.update(parser)

        else:
            err = "{C}.{M}: Parameter 'parser' ({P}) must be either an Argparse parser object or a dictionary. ".format(
                C=self.app_name, M=inspect.stack()[0][3], P=str(parser))
            raise ValueError(err)

        # Set classwide here
        self.parser = parser
        self.args = args
        self.kwargs = kwargs

        # # Here we parse out any args and kwargs that are not needed within the self or self.CONF objects
        # # if "flag" in args: self.flag = something
        ### ALWAYS SET DEFAULTS IN @property #################################
        # # Logging
        self.logfile = kwargs.get("logfile",
                                  ''.join(["./", self.app_name, ".log"]))
        self.log_level = kwargs.get("loglevel", 10)
        self.screendump = kwargs.get("screendump", True)
        self.create_paths = kwargs.get("createpaths", True)
        #=== loghandler bugfix in Jessie access to self.socket.send(msg)
        # Only use actual filesystem file for log for now
        # Log something
        log.info(
            "Starting  {C}...".format(C=self.app_name),
            app_name=self.app_name,
            logfile=self.logfile,
            log_level=self.log_level,
            screendump=self.screendump,
            create_paths=self.create_paths,
        )
        # Start params here
        ### ALWAYS SET DEFAULTS THROUGH AN @property ######################
        self.user = kwargs.get("user", None)
        self.password = kwargs.get("password", None)
        self.host = kwargs.get("host", None)
        self.port = kwargs.get("port", None)
        self.database = kwargs.get("database", None)
        self.outfile = kwargs.get("outfile", None)