summaryrefslogtreecommitdiff
path: root/tests/cloud_tests/platforms/images.py
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2017-12-05 17:05:29 -0500
committerScott Moser <smoser@brickies.net>2017-12-05 17:05:29 -0500
commit47016791ca5e97d80e45d3f100bc4e5d0b88627d (patch)
tree70f9e5bad3b136abeecd6399b077c82a81953220 /tests/cloud_tests/platforms/images.py
parent7acc9e68fafbbd7c56587aebe752ba6ba8c8a3db (diff)
downloadvyos-cloud-init-47016791ca5e97d80e45d3f100bc4e5d0b88627d.tar.gz
vyos-cloud-init-47016791ca5e97d80e45d3f100bc4e5d0b88627d.zip
tests: consolidate platforms into specific dirs
This groups up each test platform into its own directory rather than having files spread between four different directories for one platform. Platforms tend to be worked on one at a time and so having the platforms together makes more sense than apart.
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