Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 12 additions & 57 deletions leapp/actors/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from leapp.models import DialogModel, Model
from leapp.models.error_severity import ErrorSeverity
from leapp.tags import Tag
from leapp.utils import get_api_models
from leapp.utils import get_api_models, path
from leapp.utils.i18n import install_translation_for_actor
from leapp.utils.meta import get_flattened_subclasses
from leapp.workflows.api import WorkflowAPI
Expand Down Expand Up @@ -109,6 +109,8 @@ def __init__(self, messaging=None, logger=None, config_model=None, skip_dialogs=
if config_model:
self._configuration = next(self.consume(config_model), None)

self._path = path

# Needed so produce allows to send messages for models specified also by workflow APIs
type(self).produces = get_api_models(type(self), 'produces')

Expand Down Expand Up @@ -181,21 +183,6 @@ def tools_paths(self):
""" Returns all actor tools paths related to the actor and common actors tools paths. """
return self.actor_tools_paths + self.common_tools_paths

@staticmethod
def _get_folder_path(directories, name):
"""
Finds the first matching folder path within directories.

:param name: Name of the folder
:type name: str
:return: Found folder path
:rtype: str or None
"""
for path in directories:
path = os.path.join(path, name)
if os.path.isdir(path):
return path
return None

def get_folder_path(self, name):
"""
Expand All @@ -206,7 +193,7 @@ def get_folder_path(self, name):
:return: Found folder path
:rtype: str or None
"""
return self._get_folder_path(self.files_paths, name)
return self._path.get_folder_path(self.files_paths, name)

def get_common_folder_path(self, name):
"""
Expand All @@ -217,7 +204,7 @@ def get_common_folder_path(self, name):
:return: Found folder path
:rtype: str or None
"""
return self._get_folder_path(self.common_files_paths, name)
return self._path.get_folder_path(self.common_files_paths, name)

def get_actor_folder_path(self, name):
"""
Expand All @@ -228,23 +215,7 @@ def get_actor_folder_path(self, name):
:return: Found folder path
:rtype: str or None
"""
return self._get_folder_path(self.actor_files_paths, name)

@staticmethod
def _get_file_path(directories, name):
"""
Finds the first matching file path within directories.

:param name: Name of the file
:type name: str
:return: Found file path
:rtype: str or None
"""
for path in directories:
path = os.path.join(path, name)
if os.path.isfile(path):
return path
return None
return self._path.get_folder_path(self.actor_files_paths, name)

def get_file_path(self, name):
"""
Expand All @@ -255,7 +226,7 @@ def get_file_path(self, name):
:return: Found file path
:rtype: str or None
"""
return self._get_file_path(self.files_paths, name)
return self._path.get_file_path(self.files_paths, name)

def get_common_file_path(self, name):
"""
Expand All @@ -266,7 +237,7 @@ def get_common_file_path(self, name):
:return: Found file path
:rtype: str or None
"""
return self._get_file_path(self.common_files_paths, name)
return self._path.get_file_path(self.common_files_paths, name)

def get_actor_file_path(self, name):
"""
Expand All @@ -277,23 +248,7 @@ def get_actor_file_path(self, name):
:return: Found file path
:rtype: str or None
"""
return self._get_file_path(self.actor_files_paths, name)

@staticmethod
def _get_tool_path(directories, name):
"""
Finds the first matching executable file within directories.

:param name: Name of the file
:type name: str
:return: Found file path
:rtype: str or None
"""
for path in directories:
path = os.path.join(path, name)
if os.path.isfile(path) and os.access(path, os.X_OK):
return path
return None
return self._path.get_file_path(self.actor_files_paths, name)

def get_tool_path(self, name):
"""
Expand All @@ -304,7 +259,7 @@ def get_tool_path(self, name):
:return: Found file path
:rtype: str or None
"""
return self._get_tool_path(self.tools_paths, name)
return self._path.get_tool_path(self.tools_paths, name)

def get_common_tool_path(self, name):
"""
Expand All @@ -315,7 +270,7 @@ def get_common_tool_path(self, name):
:return: Found file path
:rtype: str or None
"""
return self._get_tool_path(self.common_tools_paths, name)
return self._path.get_tool_path(self.common_tools_paths, name)

def get_actor_tool_path(self, name):
"""
Expand All @@ -326,7 +281,7 @@ def get_actor_tool_path(self, name):
:return: Found file path
:rtype: str or None
"""
return self._get_tool_path(self.actor_tools_paths, name)
return self._path.get_tool_path(self.actor_tools_paths, name)

def run(self, *args):
""" Runs the actor calling the method :py:func:`process`. """
Expand Down
60 changes: 60 additions & 0 deletions leapp/utils/path.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import os


def get_file_path(directories, name):
"""
Finds the first matching file path within directories.

:param name: Name of the file
:type name: str
:return: Found file path
:rtype: str or None
"""
for path in directories:
path = os.path.join(path, name)
if os.path.isfile(path):
return path


def get_folder_path(directories, name):
"""
Finds the first matching folder path within directories.

:param name: Name of the folder
:type name: str
:return: Found folder path
:rtype: str or None
"""
for path in directories:
path = os.path.join(path, name)
if os.path.isdir(path):
return path


def get_tool_path(directories, name):
"""
Finds the first matching executable file within directories.

:param name: Name of the file
:type name: str
:return: Found file path
:rtype: str or None
"""
for path in directories:
path = os.path.join(path, name)
if os.path.isfile(path) and os.access(path, os.X_OK):
return path


# NOTE(ivasilev) You can use the functions below standalone with
# repository = load_repositories_from('repo_path', '/etc/leapp/repo.d/', manager=None)
def get_common_file_path(repository, name):
return get_file_path(repository.files, name)


def get_common_folder_path(repository, name):
return get_folder_path(repository.files, name)


def get_common_tool_path(repository, name):
return get_tool_path(repository.files, name)