def _ls(task, path, all_, long_, completed): """ List files in a task's sandbox. :param task: task pattern to match :type task: str :param path: file path to read :type path: str :param long_: whether to use a long listing format :type long_: bool :param all_: If True, include all tasks :type all_: bool :param completed: If True, include completed tasks :type completed: bool :returns: process return code :rtype: int """ if path is None: path = '.' if path.startswith('/'): path = path[1:] dcos_client = mesos.DCOSClient() task_objects = mesos.get_master(dcos_client).tasks( fltr=task, completed=completed, all_=all_) if len(task_objects) == 0: if task is None: raise DCOSException("No tasks found") else: raise DCOSException( 'Cannot find a task with ID containing "{}"'.format(task)) try: all_files = [] for task_obj in task_objects: dir_ = posixpath.join(task_obj.directory(), path) all_files += [ (task_obj['id'], dcos_client.browse(task_obj.slave(), dir_))] except DCOSHTTPException as e: if e.response.status_code == 404: raise DCOSException( 'Cannot access [{}]: No such file or directory'.format(path)) else: raise add_header = len(all_files) > 1 for (task_id, files) in all_files: if add_header: emitter.publish('===> {} <==='.format(task_id)) if long_: emitter.publish(tables.ls_long_table(files)) else: emitter.publish( ' '.join(posixpath.basename(file_['path']) for file_ in files))
def _ls(task, path, long_, completed): """ List files in a task's sandbox. :param task: task pattern to match :type task: str :param path: file path to read :type path: str :param long_: whether to use a long listing format :type long_: bool :param completed: If True, include completed tasks :type completed: bool :returns: process return code :rtype: int """ if path is None: path = '.' if path.startswith('/'): path = path[1:] dcos_client = mesos.DCOSClient() task_obj = mesos.get_master(dcos_client).task( fltr=task, completed=completed) dir_ = posixpath.join(task_obj.directory(), path) try: files = dcos_client.browse(task_obj.slave(), dir_) except DCOSHTTPException as e: if e.response.status_code == 404: raise DCOSException( 'Cannot access [{}]: No such file or directory'.format(path)) else: raise if files: if long_: emitter.publish(tables.ls_long_table(files)) else: emitter.publish( ' '.join(posixpath.basename(file_['path']) for file_ in files))
def _ls(task, path, long_, completed): """ List files in a task's sandbox. :param task: task pattern to match :type task: str :param path: file path to read :type path: str :param long_: whether to use a long listing format :type long_: bool :param completed: If True, include completed tasks :type completed: bool :returns: process return code :rtype: int """ if path is None: path = '.' if path.startswith('/'): path = path[1:] dcos_client = mesos.DCOSClient() task_obj = mesos.get_master(dcos_client).task(fltr=task, completed=completed) dir_ = posixpath.join(task_obj.directory(), path) try: files = dcos_client.browse(task_obj.slave(), dir_) except DCOSHTTPException as e: if e.response.status_code == 404: raise DCOSException( 'Cannot access [{}]: No such file or directory'.format(path)) else: raise if files: if long_: emitter.publish(tables.ls_long_table(files)) else: emitter.publish(' '.join( posixpath.basename(file_['path']) for file_ in files))