Skip to content

Commit

Permalink
Add Datasource bootsource property (#1601) (#1621) (#1628)
Browse files Browse the repository at this point in the history
* Add snapshot property to Datasource class

* Add deprecation warning for DataSource pvc property

---------

Signed-off-by: Harel Meir <hmeir@redhat.com>
Co-authored-by: Ruth Netser <rnetser@redhat.com>
  • Loading branch information
hmeir and rnetser authored Jan 30, 2024
1 parent 2db069a commit 71ea5e9
Showing 1 changed file with 33 additions and 24 deletions.
57 changes: 33 additions & 24 deletions ocp_resources/data_source.py
Original file line number Diff line number Diff line change
@@ -1,34 +1,26 @@
from openshift.dynamic.exceptions import ResourceNotFoundError

from ocp_resources.constants import TIMEOUT_4MINUTES
from warnings import warn
from kubernetes.dynamic.exceptions import ResourceNotFoundError
from ocp_resources.persistent_volume_claim import PersistentVolumeClaim
from ocp_resources.resource import NamespacedResource
from ocp_resources.volume_snapshot import VolumeSnapshot


class DataSource(NamespacedResource):
"""
DataSource object.
https://kubevirt.io/cdi-api-reference/main/definitions.html#_v1beta1_datasource
"""

api_group = NamespacedResource.ApiGroup.CDI_KUBEVIRT_IO

def __init__(
self,
name=None,
namespace=None,
client=None,
source=None,
teardown=True,
yaml_file=None,
delete_timeout=TIMEOUT_4MINUTES,
**kwargs,
):
super().__init__(
name=name,
namespace=namespace,
client=client,
teardown=teardown,
yaml_file=yaml_file,
delete_timeout=delete_timeout,
**kwargs,
)
self.source = source
def __init__(self, source=None, **kwargs):
"""
Args:
source (dict): The source of the data.
"""
super().__init__(**kwargs)
self._source = source

def to_dict(self):
super().to_dict()
Expand All @@ -40,9 +32,14 @@ def to_dict(self):
},
}
)
if not self._source:
raise ValueError("Passing yaml_file or parameter 'source' is required")

self.res["spec"]["source"] = self._source

@property
def pvc(self):
warn("pvc will be deprecated in v4.16, Use source instead", DeprecationWarning, stacklevel=2)
data_source_pvc = self.instance.spec.source.pvc
pvc_name = data_source_pvc.name
pvc_namespace = data_source_pvc.namespace
Expand All @@ -57,3 +54,15 @@ def pvc(self):
f"dataSource {self.name} is pointing to a non-existing PVC, name:"
f" {pvc_name}, namespace: {pvc_namespace}"
)

@property
def source(self):
_instance_source = self.instance.spec.source
_source = [*_instance_source][0][0]
_source_mapping = {"pvc": PersistentVolumeClaim, "snapshot": VolumeSnapshot}

return _source_mapping[_source](
client=self.client,
name=_instance_source[_source].name,
namespace=_instance_source[_source].namespace,
)

0 comments on commit 71ea5e9

Please sign in to comment.