Ejemplo n.º 1
0
 def copy(self, direction, local_path, remote_path, **kwargs):
     all_files = None
     if direction is 'to':
         msg = ('Copying file %s to %s:%s' % (local_path, self.node.name,
                                              remote_path))
         if self.node.is_dir(remote_path):
             pass
         elif remote_path[-1:] == '/':
             self.node.create_path_if_not_exsist(remote_path)
         else:
             # Remove the file
             self.execute('rm -f %s' % remote_path, as_root=True)
             self.node.create_path_if_not_exsist(
                 os.path.dirname(remote_path))
         if '*' in local_path:
             all_files = glob.glob(local_path)
     else:
         if local_path[-1:] == '/':
             execute('mkdir -p %s' % local_path)
         msg = ('Copying file from %s:%s to %s' % (self.node.name,
                                                   remote_path,
                                                   local_path))
     LOG.info(msg)
     if all_files:
         for one_file in all_files:
             return self._copy(direction, one_file, remote_path, **kwargs)
     else:
         return self._copy(direction, local_path, remote_path, **kwargs)
Ejemplo n.º 2
0
 def read_config(self, sys_args):
     if not hasattr(sys_args, 'config'):
         return None
     if not sys_args.config:
         config_path = './etc/config.yaml'
     else:
         config_path = sys_args.config
     try:
         with open(config_path) as f:
             return yaml.load(f)
     except yaml.scanner.ScannerError as ex:
         LOG.error("Yaml file corrupt. Try putting spaces after the "
                   "colons.")
         raise ex
Ejemplo n.º 3
0
 def execute(self, cmd, **kwargs):
     if 'log_true' in kwargs:
         if kwargs['log_true']:
             LOG.info('Node: %s Executing: %s' % (self.node.name, cmd))
         kwargs.pop('log_true')
     NodeManager.gen_ssh_config(self.node)
     if not isinstance(cmd, str):
         cmd = ' '.join(cmd)
     cmd_addition = ['ssh', '-i', SshUtil.get_id_rsa(), '-F',
                     SshUtil.get_config_file_path(),
                     self.node.name]
     if self.node.password:
         cmd_addition = ['sshpass', '-p', self.node.password] + cmd_addition
     if 'as_root' in kwargs:
         kwargs.pop('as_root')
         cmd = 'sudo ' + cmd
     cmd_addition.append(cmd)
     return execute(cmd_addition, **kwargs)
Ejemplo n.º 4
0
 def start(self):
     try:
         self._run()
     except Exception as ex:
         LOG.error(ex.message)
         LOG.error(traceback.format_exc())
         LOG.error("For more logs check: %(log_path)s" %
                   {'log_path': LOG_PATH})
         sys.exit(1)