Skip to content
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
3 changes: 1 addition & 2 deletions class_generator/parsers/user_code_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ def parse_user_code_from_file(file_path: str) -> tuple[str, str]:
"from typing import Any",
"from ocp_resources.resource import NamespacedResource",
"from ocp_resources.resource import Resource",
"from ocp_resources.resource import NamespacedResource, MissingRequiredArgumentError",
"from ocp_resources.resource import Resource, MissingRequiredArgumentError",
"from ocp_resources.exceptions import MissingRequiredArgumentError",
}

for _import in imports:
Expand Down
44 changes: 42 additions & 2 deletions class_generator/tests/test_user_code_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,8 @@ def test_parse_file_with_different_template_imports(self):
content = '''# Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md

from typing import Any
from ocp_resources.resource import NamespacedResource, MissingRequiredArgumentError
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource
from custom_validators import validate_name
import json

Expand All @@ -160,7 +161,8 @@ def validate(self):
assert "from custom_validators import validate_name" in user_imports
assert "import json" in user_imports
assert "from typing import Any" not in user_imports
assert "from ocp_resources.resource import NamespacedResource, MissingRequiredArgumentError" not in user_imports
assert "from ocp_resources.exceptions import MissingRequiredArgumentError" not in user_imports
assert "from ocp_resources.resource import NamespacedResource" not in user_imports

def test_parse_empty_file(self):
"""Test parsing an empty file."""
Expand Down Expand Up @@ -203,6 +205,44 @@ class MyResource(Resource):
assert user_code.strip() == "" # Only whitespace after marker
assert user_imports == ""

def test_parse_file_with_exceptions_import(self):
"""Test parsing a file with import from ocp_resources.exceptions module."""
content = '''# Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md

from typing import Any
from ocp_resources.resource import NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
import json


class MyResource(NamespacedResource):
"""My resource class."""

def __init__(self, **kwargs):
super().__init__(**kwargs)

# End of generated code

def custom_method(self):
return True
'''

with tempfile.NamedTemporaryFile(mode="w", suffix=".py", delete=False) as f:
f.write(content)
f.flush()

_user_code, user_imports = parse_user_code_from_file(file_path=f.name)

Path(f.name).unlink()

# Template imports should be filtered out
assert "from ocp_resources.exceptions import MissingRequiredArgumentError" not in user_imports
assert "from typing import Any" not in user_imports
assert "from ocp_resources.resource import NamespacedResource" not in user_imports

# User imports should be preserved
assert "import json" in user_imports

def test_parse_file_with_syntax_error(self):
"""Test parsing a file with syntax errors in imports section."""
content = '''# Generated using https://github.com/RedHatQE/openshift-python-wrapper/blob/main/scripts/resource/README.md
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/application_aware_cluster_resource_quota.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
# TODO: update API reference when OCP doc is available
from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class ApplicationAwareClusterResourceQuota(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/application_aware_resource_quota.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
# TODO: update API reference when OCP doc is available
from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class ApplicationAwareResourceQuota(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/authorino.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class Authorino(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/catalog_source.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class CatalogSource(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/cluster_resource_quota.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class ClusterResourceQuota(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/cluster_role.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class ClusterRole(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/cluster_role_binding.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from ocp_resources.cluster_role import ClusterRole
from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class ClusterRoleBinding(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/cluster_user_defined_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class ClusterUserDefinedNetwork(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/config_imageregistry_operator_openshift_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class Config(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/controller_revision.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class ControllerRevision(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/cron_job.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class CronJob(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/csi_storage_capacity.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class CSIStorageCapacity(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/data_import_cron.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class DataImportCron(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/data_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

from kubernetes.dynamic.exceptions import ResourceNotFoundError

from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.persistent_volume_claim import PersistentVolumeClaim
from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.resource import NamespacedResource
from ocp_resources.volume_snapshot import VolumeSnapshot


Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/deployment.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

from timeout_sampler import TimeoutSampler, TimeoutWatch

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource
from ocp_resources.utils.constants import PROTOCOL_ERROR_EXCEPTION_DICT, TIMEOUT_4MINUTES


Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/dsc_initialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class DSCInitialization(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/endpoint_slice.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource
from ocp_resources.utils.constants import TIMEOUT_4MINUTES


Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/endpoints.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource
from ocp_resources.utils.constants import TIMEOUT_4MINUTES


Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/fence_agent_remediation_templates.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class FenceAgentsRemediationTemplate(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/group.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class Group(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/image_caching_internal_knative_dev.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class Image(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/image_digest_mirror_set.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class ImageDigestMirrorSet(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/inference_graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class InferenceGraph(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/inference_service.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class InferenceService(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/ip_address_pool.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# API reference: https://metallb.universe.tf/apis/#metallb.io/v1beta1.IPAddressPool

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class IPAddressPool(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/limit_range.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# API reference: https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/limit-range-v1/

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class LimitRange(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/llama_stack_distribution.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class LlamaStackDistribution(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/lm_eval_job.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class LMEvalJob(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/mig_analytic.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class MigAnalytic(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/mig_cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class MigCluster(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/mig_migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class MigMigration(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/model_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
from typing import Any
from warnings import warn

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource

warn(
"model_registry.py module will be removed in the next release, "
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/model_registry_modelregistry_opendatahub_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@

from typing import Any

from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class ModelRegistry(NamespacedResource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/multi_cluster_observability.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, Resource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import Resource


class MultiClusterObservability(Resource):
Expand Down
3 changes: 2 additions & 1 deletion ocp_resources/multi_network_policy.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from ocp_resources.resource import MissingRequiredArgumentError, NamespacedResource
from ocp_resources.exceptions import MissingRequiredArgumentError
from ocp_resources.resource import NamespacedResource


class MultiNetworkPolicy(NamespacedResource):
Expand Down
Loading