Source code for CIME.Servers.gftp

"""
GridFTP Server class.  Interact with a server using GridFTP protocol
"""
# pylint: disable=super-init-not-called
from CIME.XML.standard_module_setup import *
from CIME.Servers.generic_server import GenericServer
from CIME.utils import run_cmd

logger = logging.getLogger(__name__)

[docs]class GridFTP(GenericServer): def __init__(self, address, user='', passwd=''): self._root_address = address
[docs] def fileexists(self, rel_path): stat,out,err = run_cmd("globus-url-copy -list {}".format(os.path.join(self._root_address, os.path.dirname(rel_path))+os.sep)) if stat or os.path.basename(rel_path) not in out: logging.warning("FAIL: File {} not found.\nstat={} error={}".format(rel_path, stat, err)) return False return True
[docs] def getfile(self, rel_path, full_path): stat, _,err = run_cmd("globus-url-copy -v {} file://{}".format(os.path.join(self._root_address, rel_path), full_path)) if (stat != 0): logging.warning("FAIL: GridFTP repo '{}' does not have file '{}' error={}\n". format(self._root_address,rel_path, err)) return False return True
[docs] def getdirectory(self, rel_path, full_path): stat, _,err = run_cmd("globus-url-copy -v -r {}{} file://{}{}".format(os.path.join(self._root_address, rel_path), os.sep, full_path, os.sep)) if (stat != 0): logging.warning("FAIL: GridFTP repo '{}' does not have directory '{}' error={}\n". format(self._root_address,rel_path, err)) return False return True