Skip to content

refactor Resource namespace #577

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
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
2 changes: 1 addition & 1 deletion ioc/get.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ def _lookup_config_value(


def _lookup_jail_value(
resource: 'iocage.LaunchableResource.LaunchableResource',
resource: 'iocage.Resource.Launchable.LaunchableResource',
key: str
) -> str:

Expand Down
8 changes: 4 additions & 4 deletions ioc/list.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
import iocage.Host
import iocage.Datasets
import iocage.Resource
import iocage.ListableResource
import iocage.Resource.Listable
import iocage.Jails
import iocage.Releases

Expand Down Expand Up @@ -162,7 +162,7 @@ def cli(
def _print_table(
resources: typing.Generator[
typing.Union[
iocage.ListableResource.ListableResource,
iocage.Resource.Listable.ListableResource,
typing.List[typing.Dict[str, str]]
],
None,
Expand All @@ -183,7 +183,7 @@ def _print_table(
def _print_list(
resources: typing.Generator[
typing.Union[
iocage.ListableResource.ListableResource,
iocage.Resource.Listable.ListableResource,
typing.List[typing.Dict[str, str]]
],
None,
Expand All @@ -204,7 +204,7 @@ def _print_list(
def _print_json(
resources: typing.Generator[
typing.Union[
iocage.ListableResource.ListableResource,
iocage.Resource.Listable.ListableResource,
typing.List[typing.Dict[str, str]]
],
None,
Expand Down
2 changes: 1 addition & 1 deletion ioc/shared/jail.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def get_jail(

def set_properties(
properties: typing.Iterable[str],
target: 'iocage.LaunchableResource.LaunchableResource'
target: 'iocage.Resource.Launchable.LaunchableResource'
) -> set:
"""Set a bunch of jail properties from a Click option tuple."""
updated_properties = set()
Expand Down
8 changes: 4 additions & 4 deletions iocage/Config/Jail/File/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

import iocage.helpers
import iocage.helpers_object
import iocage.LaunchableResource
import iocage.Resource.Launchable


class ResourceConfig:
Expand All @@ -37,7 +37,7 @@ class ResourceConfig:
def _require_path_relative_to_resource(
self,
filepath: str,
resource: 'iocage.LaunchableResource.LaunchableResource'
resource: 'iocage.Resource.Launchable.LaunchableResource'
) -> None:

if self._is_path_relative_to_resource(filepath, resource) is False:
Expand All @@ -48,7 +48,7 @@ def _require_path_relative_to_resource(
def _is_path_relative_to_resource(
self,
filepath: str,
resource: 'iocage.LaunchableResource.LaunchableResource'
resource: 'iocage.Resource.Launchable.LaunchableResource'
) -> bool:

real_resource_path = self._resolve_path(resource.dataset.mountpoint)
Expand Down Expand Up @@ -226,7 +226,7 @@ class ResourceConfigFile(ConfigFile, ResourceConfig):

def __init__(
self,
resource: 'iocage.LaunchableResource.LaunchableResource',
resource: 'iocage.Resource.Launchable.LaunchableResource',
file: typing.Optional[str]=None,
logger: typing.Optional['iocage.Logger.Logger']=None
) -> None:
Expand Down
13 changes: 7 additions & 6 deletions iocage/Filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,12 @@
import iocage.errors
import iocage.helpers
import iocage.Resource
import iocage.ResourceSelector
import iocage.Resource.Selector

_ResourceSelector = iocage.ResourceSelector.ResourceSelector
_TermValuesType = typing.Union[
str,
typing.List[str],
iocage.ResourceSelector.ResourceSelector
'iocage.Resource.Selector'
]

_REGEX_PATTERN_SPLIT_COMMA = re.compile(r"(?<!\\),")
Expand Down Expand Up @@ -69,7 +68,7 @@ def __init__(
data = self._split_filter_values(values)
elif isinstance(values, list):
data = values
elif isinstance(values, _ResourceSelector):
elif isinstance(values, iocage.Resource.Selector):
data = [values]
elif values is None:
data = []
Expand Down Expand Up @@ -109,13 +108,15 @@ def matches(self, value: typing.Any, short: bool=False) -> bool:
return any(map(self.matches, value))

input_value = iocage.helpers.to_string(value)
_ResourceSelector = iocage.Resource.Selector
print(_ResourceSelector, type(_ResourceSelector))

for filter_value in self:

if isinstance(filter_value, str):
if self._match_filter(input_value, filter_value, short):
return True
elif isinstance(filter_value, _ResourceSelector):
elif isinstance(filter_value, iocage.Resource.Selector):
if self._match_filter(input_value, filter_value.name, short):
return True
elif isinstance(filter_value, list):
Expand Down Expand Up @@ -312,7 +313,7 @@ def _parse_term(self, user_input: str) -> Term:
value = user_input

if prop == "name":
value = [iocage.ResourceSelector.ResourceSelector(
value = [iocage.Resource.Selector(
partial_value,
logger=self.logger
) for partial_value in re.split(
Expand Down
14 changes: 7 additions & 7 deletions iocage/Jail.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,16 @@
import iocage.Storage
import iocage.ZFSBasejailStorage
import iocage.ZFSShareStorage
import iocage.LaunchableResource
import iocage.VersionedResource
import iocage.Resource.Launchable
import iocage.Resource.Versioned
import iocage.Config.Jail.Properties.ResourceLimit
import iocage.ResourceSelector
import iocage.Resource.Selector
import iocage.Config.Jail.File.Fstab


class JailResource(
iocage.LaunchableResource.LaunchableResource,
iocage.VersionedResource.VersionedResource
iocage.Resource.Launchable.LaunchableResource,
iocage.Resource.Versioned.VersionedResource
):
"""Resource that represents a jail."""

Expand Down Expand Up @@ -88,7 +88,7 @@ def __init__(
if jail is not None:
self._jail = jail

iocage.LaunchableResource.LaunchableResource.__init__(
iocage.Resource.Launchable.LaunchableResource.__init__(
self,
dataset=dataset,
dataset_name=dataset_name,
Expand Down Expand Up @@ -2019,7 +2019,7 @@ def _resolve_name(self, text: str) -> str:
if (text is None) or (len(text) == 0):
raise iocage.errors.JailNotSupplied(logger=self.logger)

resource_selector = iocage.ResourceSelector.ResourceSelector(
resource_selector = iocage.Resource.Selector(
name=text,
logger=self.logger
)
Expand Down
8 changes: 4 additions & 4 deletions iocage/Jails.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@

import iocage.Jail
import iocage.Filter
import iocage.ListableResource
import iocage.Resource.Listable
import iocage.helpers_object


class JailsGenerator(iocage.ListableResource.ListableResource):
class JailsGenerator(iocage.Resource.Listable.ListableResource):
"""Asynchronous representation of a collection of jails."""

states = iocage.JailState.JailStates()
Expand All @@ -58,7 +58,7 @@ def __init__(
self.zfs = iocage.helpers_object.init_zfs(self, zfs)
self.host = iocage.helpers_object.init_host(self, host)

iocage.ListableResource.ListableResource.__init__(
iocage.Resource.Listable.ListableResource.__init__(
self,
sources=self.host.datasets,
namespace="jails",
Expand Down Expand Up @@ -101,7 +101,7 @@ def __iter__(
if self.states.queried is False:
self.states.query(logger=self.logger)

iterator = iocage.ListableResource.ListableResource.__iter__(self)
iterator = iocage.Resource.Listable.ListableResource.__iter__(self)
for jail in iterator:

if jail.identifier in self.states:
Expand Down
2 changes: 1 addition & 1 deletion iocage/Pkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import iocage.events
import iocage.helpers
import iocage.helpers_object
import iocage.LaunchableResource
import iocage.Resource.Launchable

_PkgConfDataType = typing.Union[
str, int, bool,
Expand Down
10 changes: 5 additions & 5 deletions iocage/Release.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@
import iocage.helpers
import iocage.helpers_object
import iocage.events
import iocage.LaunchableResource
import iocage.ResourceSelector
import iocage.Resource.Launchable
import iocage.Resource.Selector
import iocage.Jail
import iocage.SecureTarfile

Expand All @@ -51,7 +51,7 @@
import iocage.Config.Jail.File.SysctlConf


class ReleaseResource(iocage.LaunchableResource.LaunchableResource):
class ReleaseResource(iocage.Resource.Launchable.LaunchableResource):
"""Resource that represents an iocage release."""

_release: typing.Optional['ReleaseGenerator']
Expand All @@ -75,7 +75,7 @@ def __init__(
self.host = iocage.helpers_object.init_host(self, host)
self.root_datasets_name = root_datasets_name

iocage.LaunchableResource.LaunchableResource.__init__(
iocage.Resource.Launchable.LaunchableResource.__init__(
self,
dataset=dataset,
dataset_name=dataset_name,
Expand Down Expand Up @@ -256,7 +256,7 @@ def __init__(
self.zfs = iocage.helpers_object.init_zfs(self, zfs)
self.host = iocage.helpers_object.init_host(self, host)

resource_selector = iocage.ResourceSelector.ResourceSelector(
resource_selector = iocage.Resource.Selector(
name,
logger=self.logger
)
Expand Down
8 changes: 4 additions & 4 deletions iocage/Releases.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
# POSSIBILITY OF SUCH DAMAGE.
"""Model of multiple iocage Releases."""
import iocage.Release
import iocage.ListableResource
import iocage.Resource.Listable
import iocage.Filter
import iocage.helpers_object

Expand All @@ -35,7 +35,7 @@
ReleaseListType = typing.List['iocage.Release.ReleaseGenerator']


class ReleasesGenerator(iocage.ListableResource.ListableResource):
class ReleasesGenerator(iocage.Resource.Listable.ListableResource):
"""Generator Model of multiple iocage Releases."""

host: 'iocage.Host.HostGenerator'
Expand All @@ -54,7 +54,7 @@ def __init__(
self.zfs = iocage.helpers_object.init_zfs(self, zfs)
self.host = iocage.helpers_object.init_host(self, host)

iocage.ListableResource.ListableResource.__init__(
iocage.Resource.Listable.ListableResource.__init__(
self,
sources=self.host.datasets,
namespace="releases",
Expand All @@ -70,7 +70,7 @@ def _class_release(self) -> 'iocage.Release.ReleaseGenerator':
@property
def local(self) -> ReleaseListType:
"""Return the locally available releases."""
datasets = iocage.ListableResource.ListableResource.__iter__(self)
datasets = iocage.Resource.Listable.ListableResource.__iter__(self)
return list(map(
lambda x: self._class_release( # noqa: T484
name=x.name.split("/").pop(),
Expand Down
4 changes: 2 additions & 2 deletions iocage/ResourceBackup.py → iocage/Resource/Backup.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ class LaunchableResourceBackup:
state.
"""

resource: 'iocage.LaunchableResource.LaunchableResource'
resource: 'iocage.Resource.Launchable.LaunchableResource'
_temp_dir: typing.Optional[tempfile.TemporaryDirectory]
_snapshot_name: typing.Optional[str]

def __init__(
self,
resource: 'iocage.LaunchableResource.LaunchableResource'
resource: 'iocage.Resource.Launchable.LaunchableResource'
) -> None:
self.resource = resource
self._temp_dir = None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

import iocage.helpers_object
import iocage.Resource
import iocage.ResourceBackup
import iocage.Resource.Backup


class LaunchableResource(iocage.Resource.Resource):
Expand All @@ -45,7 +45,7 @@ class LaunchableResource(iocage.Resource.Resource):
'iocage.ResourceUpdater.LaunchableResourceUpdate'
]
_backup: typing.Optional[
'iocage.ResourceBackup.LaunchableResourceBackup'
'iocage.Resource.Backup.LaunchableResourceBackup'
]
config: 'iocage.Config.Jail.JailConfig.JailConfig'

Expand Down Expand Up @@ -101,7 +101,7 @@ def backup(
if self._backup is not None:
return self._backup

backup = iocage.ResourceBackup.LaunchableResourceBackup(
backup = iocage.Resource.Backup.LaunchableResourceBackup(
resource=self
)
self._backup = backup
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion iocage/ResourceSelector.py → iocage/Resource/Selector.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
import iocage.Datasets


class ResourceSelector:
class Selector:
"""Parse and wrap resource selectors."""

source_name: typing.Optional[str]
Expand Down
2 changes: 1 addition & 1 deletion iocage/ResourceUpdater.py → iocage/Resource/Updater.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class Updater:

def __init__(
self,
resource: 'iocage.LaunchableResource.LaunchableResource',
resource: 'iocage.Resource.Launchable.LaunchableResource',
host: 'iocage.Host.HostGenerator'
) -> None:
self.resource = resource
Expand Down
File renamed without changes.
13 changes: 13 additions & 0 deletions iocage/Resource.py → iocage/Resource/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -413,3 +413,16 @@ def destroy(
def save(self) -> None:
"""Save changes to the default configuration."""
self._write_config(self.config.user_data)


iocage.hook_module(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this a python thing, or a (lib)iocage thing?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A local workaround for ugly Python module names. Makes them callable and act like classes with the same names.

module_name="iocage.Resource",
hooked_submodule_names=[
"Backup",
"Launchable",
"Listable",
"Selector",
"Updater",
"Versioned"
]
)
Loading