summaryrefslogtreecommitdiff
path: root/tests/cloud_tests/platforms/images.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cloud_tests/platforms/images.py')
-rw-r--r--tests/cloud_tests/platforms/images.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/cloud_tests/platforms/images.py b/tests/cloud_tests/platforms/images.py
new file mode 100644
index 00000000..d503108a
--- /dev/null
+++ b/tests/cloud_tests/platforms/images.py
@@ -0,0 +1,56 @@
+# This file is part of cloud-init. See LICENSE file for license information.
+
+"""Base class for images."""
+
+from ..util import TargetBase
+
+
+class Image(TargetBase):
+ """Base class for images."""
+
+ platform_name = None
+
+ def __init__(self, platform, config):
+ """Set up image.
+
+ @param platform: platform object
+ @param config: image configuration
+ """
+ self.platform = platform
+ self.config = config
+
+ def __str__(self):
+ """A brief description of the image."""
+ return '-'.join((self.properties['os'], self.properties['release']))
+
+ @property
+ def properties(self):
+ """{} containing: 'arch', 'os', 'version', 'release'."""
+ raise NotImplementedError
+
+ @property
+ def features(self):
+ """Feature flags supported by this image.
+
+ @return_value: list of feature names
+ """
+ return [k for k, v in self.config.get('features', {}).items() if v]
+
+ @property
+ def setup_overrides(self):
+ """Setup options that need to be overridden for the image.
+
+ @return_value: dictionary to update args with
+ """
+ # NOTE: more sophisticated options may be requied at some point
+ return self.config.get('setup_overrides', {})
+
+ def snapshot(self):
+ """Create snapshot of image, block until done."""
+ raise NotImplementedError
+
+ def destroy(self):
+ """Clean up data associated with image."""
+ pass
+
+# vi: ts=4 expandtab