summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--snaps/openstack/create_flavor.py118
-rw-r--r--snaps/openstack/tests/create_flavor_tests.py154
-rw-r--r--snaps/openstack/tests/openstack_tests.py15
-rw-r--r--snaps/provisioning/ansible/__init__.py15
-rw-r--r--snaps/provisioning/ansible/centos-network-setup/__init__.py15
-rw-r--r--snaps/provisioning/ansible/centos-network-setup/playbooks/__init__.py15
-rw-r--r--snaps/provisioning/ansible/ubuntu-network-setup/__init__.py15
-rw-r--r--snaps/provisioning/ansible/ubuntu-network-setup/playbooks/__init__.py15
9 files changed, 246 insertions, 119 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..39e6d08
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.egg-info
+build
+dist
diff --git a/snaps/openstack/create_flavor.py b/snaps/openstack/create_flavor.py
index 2d78be4..f1c7ee3 100644
--- a/snaps/openstack/create_flavor.py
+++ b/snaps/openstack/create_flavor.py
@@ -46,18 +46,23 @@ class OpenStackFlavor:
def create(self, cleanup=False):
"""
Creates the image in OpenStack if it does not already exist
- :param cleanup: Denotes whether or not this is being called for cleanup or not
+ :param cleanup: Denotes whether or not this is being called for cleanup
+ or not
:return: The OpenStack flavor object
"""
self.__nova = nova_utils.nova_client(self.__os_creds)
- self.__flavor = nova_utils.get_flavor_by_name(self.__nova, self.flavor_settings.name)
+ self.__flavor = nova_utils.get_flavor_by_name(
+ self.__nova, self.flavor_settings.name)
if self.__flavor:
- logger.info('Found flavor with name - ' + self.flavor_settings.name)
+ logger.info(
+ 'Found flavor with name - ' + self.flavor_settings.name)
elif not cleanup:
- self.__flavor = nova_utils.create_flavor(self.__nova, self.flavor_settings)
+ self.__flavor = nova_utils.create_flavor(
+ self.__nova, self.flavor_settings)
if self.flavor_settings.metadata:
self.__flavor.set_keys(self.flavor_settings.metadata)
- self.__flavor = nova_utils.get_flavor_by_name(self.__nova, self.flavor_settings.name)
+ self.__flavor = nova_utils.get_flavor_by_name(
+ self.__nova, self.flavor_settings.name)
else:
logger.info('Did not create flavor due to cleanup mode')
@@ -89,12 +94,12 @@ class FlavorSettings:
Configuration settings for OpenStack flavor creation
"""
- def __init__(self, config=None, name=None, flavor_id='auto', ram=None, disk=None, vcpus=None, ephemeral=0, swap=0,
- rxtx_factor=1.0, is_public=True, metadata=None):
+ def __init__(self, **kwargs):
"""
Constructor
- :param config: dict() object containing the configuration settings using the attribute names below as each
- member's the key and overrides any of the other parameters.
+ :param config: dict() object containing the configuration settings
+ using the attribute names below as each member's the
+ key and overrides any of the other parameters.
:param name: the flavor's name (required)
:param flavor_id: the string ID (default 'auto')
:param ram: the required RAM in MB (required)
@@ -102,62 +107,52 @@ class FlavorSettings:
:param vcpus: the number of virtual CPUs (required)
:param ephemeral: the size of the ephemeral disk in GB (default 0)
:param swap: the size of the dedicated swap disk in GB (default 0)
- :param rxtx_factor: the receive/transmit factor to be set on ports if backend supports
- QoS extension (default 1.0)
- :param is_public: denotes whether or not the flavor is public (default True)
- :param metadata: freeform dict() for special metadata (default hw:mem_page_size=any)
+ :param rxtx_factor: the receive/transmit factor to be set on ports if
+ backend supports QoS extension (default 1.0)
+ :param is_public: denotes whether or not the flavor is public
+ (default True)
+ :param metadata: freeform dict() for special metadata
"""
+ self.name = kwargs.get('name')
- if config:
- self.name = config.get('name')
-
- if config.get('flavor_id'):
- self.flavor_id = config['flavor_id']
- else:
- self.flavor_id = flavor_id
-
- self.ram = config.get('ram')
- self.disk = config.get('disk')
- self.vcpus = config.get('vcpus')
-
- if config.get('ephemeral'):
- self.ephemeral = config['ephemeral']
- else:
- self.ephemeral = ephemeral
-
- if config.get('swap'):
- self.swap = config['swap']
- else:
- self.swap = swap
-
- if config.get('rxtx_factor'):
- self.rxtx_factor = config['rxtx_factor']
- else:
- self.rxtx_factor = rxtx_factor
-
- if config.get('is_public') is not None:
- self.is_public = config['is_public']
- else:
- self.is_public = is_public
-
- if config.get('metadata'):
- self.metadata = config['metadata']
- else:
- self.metadata = metadata
+ if kwargs.get('flavor_id'):
+ self.flavor_id = kwargs['flavor_id']
else:
- self.name = name
- self.flavor_id = flavor_id
- self.ram = ram
- self.disk = disk
- self.vcpus = vcpus
- self.ephemeral = ephemeral
- self.swap = swap
- self.rxtx_factor = rxtx_factor
- self.is_public = is_public
- self.metadata = metadata
+ self.flavor_id = 'auto'
+
+ self.ram = kwargs.get('ram')
+ self.disk = kwargs.get('disk')
+ self.vcpus = kwargs.get('vcpus')
+
+ if kwargs.get('ephemeral'):
+ self.ephemeral = kwargs['ephemeral']
+ else:
+ self.ephemeral = 0
+
+ if kwargs.get('swap'):
+ self.swap = kwargs['swap']
+ else:
+ self.swap = 0
+
+ if kwargs.get('rxtx_factor'):
+ self.rxtx_factor = kwargs['rxtx_factor']
+ else:
+ self.rxtx_factor = 1.0
+
+ if kwargs.get('is_public') is not None:
+ self.is_public = kwargs['is_public']
+ else:
+ self.is_public = True
+
+ if kwargs.get('metadata'):
+ self.metadata = kwargs['metadata']
+ else:
+ self.metadata = None
if not self.name or not self.ram or not self.disk or not self.vcpus:
- raise Exception('The attributes name, ram, disk, and vcpus are required for FlavorSettings')
+ raise Exception(
+ 'The attributes name, ram, disk, and vcpus are required for'
+ 'FlavorSettings')
if not isinstance(self.ram, int):
raise Exception('The ram attribute must be a integer')
@@ -175,7 +170,8 @@ class FlavorSettings:
raise Exception('The swap attribute must be an integer')
if self.rxtx_factor and not isinstance(self.rxtx_factor, (int, float)):
- raise Exception('The is_public attribute must be an integer or float')
+ raise Exception(
+ 'The is_public attribute must be an integer or float')
if self.is_public and not isinstance(self.is_public, bool):
raise Exception('The is_public attribute must be a boolean')
diff --git a/snaps/openstack/tests/create_flavor_tests.py b/snaps/openstack/tests/create_flavor_tests.py
index be7ac64..5d7e4c4 100644
--- a/snaps/openstack/tests/create_flavor_tests.py
+++ b/snaps/openstack/tests/create_flavor_tests.py
@@ -12,8 +12,8 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-import uuid
import unittest
+import uuid
from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
from snaps.openstack.tests.os_source_file_test import OSComponentTestCase
@@ -61,107 +61,140 @@ class FlavorSettingsUnitTests(unittest.TestCase):
def test_ram_string(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram='bar', disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0,
+ FlavorSettings(name='foo', ram='bar', disk=2, vcpus=3, ephemeral=4,
+ swap=5, rxtx_factor=6.0,
is_public=False)
def test_config_ram_string(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 'bar', 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 'bar', 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5,
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_ram_float(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1.5, disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0, is_public=False)
+ FlavorSettings(name='foo', ram=1.5, disk=2, vcpus=3, ephemeral=4,
+ swap=5, rxtx_factor=6.0, is_public=False)
def test_config_ram_float(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1.5, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1.5, 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5,
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_disk_string(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk='bar', vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0,
+ FlavorSettings(name='foo', ram=1, disk='bar', vcpus=3, ephemeral=4,
+ swap=5, rxtx_factor=6.0,
is_public=False)
def test_config_disk_string(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 'bar', 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 'bar', 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5,
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_disk_float(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk=2.5, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0, is_public=False)
+ FlavorSettings(name='foo', ram=1, disk=2.5, vcpus=3, ephemeral=4,
+ swap=5, rxtx_factor=6.0, is_public=False)
def test_config_disk_float(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2.5, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 2.5, 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5,
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_vcpus_string(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk=2, vcpus='bar', ephemeral=4, swap=5, rxtx_factor=6.0,
+ FlavorSettings(name='foo', ram=1, disk=2, vcpus='bar', ephemeral=4,
+ swap=5, rxtx_factor=6.0,
is_public=False)
def test_config_vcpus_string(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 'bar', 'ephemeral': 4, 'swap': 5,
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 'bar',
+ 'ephemeral': 4, 'swap': 5,
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_ephemeral_string(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral='bar', swap=5, rxtx_factor=6.0,
+ FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral='bar',
+ swap=5, rxtx_factor=6.0,
is_public=False)
def test_config_ephemeral_string(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 'bar', 'swap': 5,
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 'bar', 'swap': 5,
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_ephemeral_float(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4.5, swap=5, rxtx_factor=6.0, is_public=False)
+ FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4.5,
+ swap=5, rxtx_factor=6.0, is_public=False)
def test_config_ephemeral_float(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4.5, 'swap': 5,
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 4.5, 'swap': 5,
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_swap_string(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4, swap='bar', rxtx_factor=6.0,
+ FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4,
+ swap='bar', rxtx_factor=6.0,
is_public=False)
def test_config_swap_string(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 'bar',
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 'bar',
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_swap_float(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5.5, rxtx_factor=6.0, is_public=False)
+ FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4,
+ swap=5.5, rxtx_factor=6.0, is_public=False)
def test_config_swap_float(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5.5,
- 'rxtx_factor': 6.0, 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5.5,
+ 'rxtx_factor': 6.0, 'is_public': False})
def test_rxtx_string(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor='bar', is_public=False)
+ FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4,
+ swap=5, rxtx_factor='bar', is_public=False)
def test_config_rxtx_string(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
- 'rxtx_factor': 'bar', 'is_public': False})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5,
+ 'rxtx_factor': 'bar', 'is_public': False})
def test_is_pub_string(self):
with self.assertRaises(Exception):
- FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5, rxtx_factor=6.0, is_public='bar')
+ FlavorSettings(name='foo', ram=1, disk=2, vcpus=3, ephemeral=4,
+ swap=5, rxtx_factor=6.0, is_public='bar')
def test_config_is_pub_string(self):
with self.assertRaises(Exception):
- FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3, 'ephemeral': 4, 'swap': 5,
- 'rxtx_factor': 6.0, 'is_public': 'bar'})
+ FlavorSettings(
+ config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5,
+ 'rxtx_factor': 6.0, 'is_public': 'bar'})
def test_name_ram_disk_vcpus_only(self):
settings = FlavorSettings(name='foo', ram=1, disk=2, vcpus=3)
@@ -177,7 +210,8 @@ class FlavorSettingsUnitTests(unittest.TestCase):
self.assertEqual(None, settings.metadata)
def test_config_with_name_ram_disk_vcpus_only(self):
- settings = FlavorSettings(config={'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3})
+ settings = FlavorSettings(
+ **{'name': 'foo', 'ram': 1, 'disk': 2, 'vcpus': 3})
self.assertEqual('foo', settings.name)
self.assertEqual('auto', settings.flavor_id)
self.assertEqual(1, settings.ram)
@@ -191,8 +225,9 @@ class FlavorSettingsUnitTests(unittest.TestCase):
def test_all(self):
metadata = {'foo': 'bar'}
- settings = FlavorSettings(name='foo', flavor_id='bar', ram=1, disk=2, vcpus=3, ephemeral=4, swap=5,
- rxtx_factor=6.0, is_public=False, metadata=metadata)
+ settings = FlavorSettings(
+ name='foo', flavor_id='bar', ram=1, disk=2, vcpus=3, ephemeral=4,
+ swap=5, rxtx_factor=6.0, is_public=False, metadata=metadata)
self.assertEqual('foo', settings.name)
self.assertEqual('bar', settings.flavor_id)
self.assertEqual(1, settings.ram)
@@ -206,9 +241,12 @@ class FlavorSettingsUnitTests(unittest.TestCase):
def test_config_all(self):
metadata = {'foo': 'bar'}
- settings = FlavorSettings(config={'name': 'foo', 'flavor_id': 'bar', 'ram': 1, 'disk': 2, 'vcpus': 3,
- 'ephemeral': 4, 'swap': 5, 'rxtx_factor': 6.0, 'is_public': False,
- 'metadata': metadata})
+ settings = FlavorSettings(
+ **{'name': 'foo', 'flavor_id': 'bar', 'ram': 1, 'disk': 2,
+ 'vcpus': 3,
+ 'ephemeral': 4, 'swap': 5, 'rxtx_factor': 6.0,
+ 'is_public': False,
+ 'metadata': metadata})
self.assertEqual('foo', settings.name)
self.assertEqual('bar', settings.flavor_id)
self.assertEqual(1, settings.ram)
@@ -228,8 +266,8 @@ class CreateFlavorTests(OSComponentTestCase):
def setUp(self):
"""
- Instantiates the CreateSecurityGroup object that is responsible for downloading and creating an OS image file
- within OpenStack
+ Instantiates the CreateSecurityGroup object that is responsible for
+ downloading and creating an OS image file within OpenStack
"""
guid = self.__class__.__name__ + '-' + str(uuid.uuid4())
self.flavor_name = guid + 'name'
@@ -251,17 +289,20 @@ class CreateFlavorTests(OSComponentTestCase):
Tests the creation of an OpenStack flavor.
"""
# Create Flavor
- flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1, vcpus=1)
+ flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
+ vcpus=1)
self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_settings)
flavor = self.flavor_creator.create()
self.assertTrue(validate_flavor(flavor_settings, flavor))
def test_create_flavor_existing(self):
"""
- Tests the creation of an OpenStack flavor then starts another creator to ensure it has not been done twice.
+ Tests the creation of an OpenStack flavor then starts another creator
+ to ensure it has not been done twice.
"""
# Create Flavor
- flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1, vcpus=1)
+ flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
+ vcpus=1)
self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_settings)
flavor = self.flavor_creator.create()
self.assertTrue(validate_flavor(flavor_settings, flavor))
@@ -276,7 +317,8 @@ class CreateFlavorTests(OSComponentTestCase):
Tests the creation and cleanup of an OpenStack flavor.
"""
# Create Flavor
- flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1, vcpus=1)
+ flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
+ vcpus=1)
self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_settings)
flavor = self.flavor_creator.create()
self.assertTrue(validate_flavor(flavor_settings, flavor))
@@ -285,22 +327,26 @@ class CreateFlavorTests(OSComponentTestCase):
self.flavor_creator.clean()
self.assertIsNone(self.flavor_creator.get_flavor())
- self.assertIsNone(nova_utils.get_flavor_by_name(self.nova, flavor_settings.name))
+ self.assertIsNone(
+ nova_utils.get_flavor_by_name(self.nova, flavor_settings.name))
def test_create_delete_flavor(self):
"""
- Tests the creation of an OpenStack Security Group, the deletion, then cleanup to ensure clean() does not
+ Tests the creation of an OpenStack Security Group, the deletion, then
+ cleanup to ensure clean() does not
raise any exceptions.
"""
# Create Flavor
- flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1, vcpus=1)
+ flavor_settings = FlavorSettings(name=self.flavor_name, ram=1, disk=1,
+ vcpus=1)
self.flavor_creator = OpenStackFlavor(self.os_creds, flavor_settings)
flavor = self.flavor_creator.create()
self.assertTrue(validate_flavor(flavor_settings, flavor))
# Delete Flavor
nova_utils.delete_flavor(self.nova, flavor)
- self.assertIsNone(nova_utils.get_flavor_by_name(self.nova, flavor_settings.name))
+ self.assertIsNone(
+ nova_utils.get_flavor_by_name(self.nova, flavor_settings.name))
# Attempt to cleanup
self.flavor_creator.clean()
@@ -317,7 +363,7 @@ def validate_flavor(flavor_settings, flavor):
:param flavor: the OpenStack flavor object
"""
return flavor is not None \
- and flavor_settings.name == flavor.name \
- and flavor_settings.ram == flavor.ram \
- and flavor_settings.disk == flavor.disk \
- and flavor_settings.vcpus == flavor.vcpus
+ and flavor_settings.name == flavor.name \
+ and flavor_settings.ram == flavor.ram \
+ and flavor_settings.disk == flavor.disk \
+ and flavor_settings.vcpus == flavor.vcpus
diff --git a/snaps/openstack/tests/openstack_tests.py b/snaps/openstack/tests/openstack_tests.py
index 22c4677..71d4d0e 100644
--- a/snaps/openstack/tests/openstack_tests.py
+++ b/snaps/openstack/tests/openstack_tests.py
@@ -12,6 +12,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+import pkg_resources
import re
from snaps import file_utils
@@ -112,7 +113,7 @@ def get_credentials(os_env_file=None, proxy_settings_str=None, ssh_proxy_cmd=Non
def create_image_settings(image_name, image_user, image_format, metadata, disk_url=None, default_url=None,
- kernel_settings=None, ramdisk_settings=None, public=False):
+ kernel_settings=None, ramdisk_settings=None, public=False, nic_config_pb_loc=None):
"""
Returns the image settings object
:param image_name: the name of the image
@@ -124,6 +125,7 @@ def create_image_settings(image_name, image_user, image_format, metadata, disk_u
:param kernel_settings: override to the kernel settings from the image_metadata
:param ramdisk_settings: override to the ramdisk settings from the image_metadata
:param public: True denotes image can be used by other projects where False indicates the converse (default: False)
+ :param nic_config_pb_loc: The location of the playbook used for configuring multiple NICs
:return:
"""
@@ -161,7 +163,8 @@ def create_image_settings(image_name, image_user, image_format, metadata, disk_u
return ImageSettings(name=image_name, image_user=image_user, img_format=image_format, image_file=disk_file,
url=disk_url, extra_properties=extra_properties, kernel_image_settings=kernel_image_settings,
- ramdisk_image_settings=ramdisk_image_settings, public=public)
+ ramdisk_image_settings=ramdisk_image_settings, public=public,
+ nic_config_pb_loc=nic_config_pb_loc)
def cirros_image_settings(name=None, url=None, image_metadata=None, kernel_settings=None, ramdisk_settings=None,
@@ -208,10 +211,12 @@ def centos_image_settings(name, url=None, image_metadata=None, kernel_settings=N
else:
metadata = image_metadata
+ pb_path = pkg_resources.resource_filename('snaps.provisioning.ansible.centos-network-setup.playbooks',
+ 'configure_host.yml')
return create_image_settings(
image_name=name, image_user=CENTOS_USER, image_format=DEFAULT_IMAGE_FORMAT, metadata=metadata, disk_url=url,
default_url=CENTOS_DEFAULT_IMAGE_URL,
- kernel_settings=kernel_settings, ramdisk_settings=ramdisk_settings, public=public)
+ kernel_settings=kernel_settings, ramdisk_settings=ramdisk_settings, public=public, nic_config_pb_loc=pb_path)
def ubuntu_image_settings(name, url=None, image_metadata=None, kernel_settings=None, ramdisk_settings=None,
@@ -231,10 +236,12 @@ def ubuntu_image_settings(name, url=None, image_metadata=None, kernel_settings=N
else:
metadata = image_metadata
+ pb_path = pkg_resources.resource_filename('snaps.provisioning.ansible.ubuntu-network-setup.playbooks',
+ 'configure_host.yml')
return create_image_settings(
image_name=name, image_user=UBUNTU_USER, image_format=DEFAULT_IMAGE_FORMAT, metadata=metadata, disk_url=url,
default_url=UBUNTU_DEFAULT_IMAGE_URL,
- kernel_settings=kernel_settings, ramdisk_settings=ramdisk_settings, public=public)
+ kernel_settings=kernel_settings, ramdisk_settings=ramdisk_settings, public=public, nic_config_pb_loc=pb_path)
def get_priv_net_config(net_name, subnet_name, router_name=None, cidr='10.55.0.0/24', external_net=None):
diff --git a/snaps/provisioning/ansible/__init__.py b/snaps/provisioning/ansible/__init__.py
new file mode 100644
index 0000000..e3e876e
--- /dev/null
+++ b/snaps/provisioning/ansible/__init__.py
@@ -0,0 +1,15 @@
+# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
+# and others. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+__author__ = 'spisarski'
diff --git a/snaps/provisioning/ansible/centos-network-setup/__init__.py b/snaps/provisioning/ansible/centos-network-setup/__init__.py
new file mode 100644
index 0000000..e3e876e
--- /dev/null
+++ b/snaps/provisioning/ansible/centos-network-setup/__init__.py
@@ -0,0 +1,15 @@
+# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
+# and others. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+__author__ = 'spisarski'
diff --git a/snaps/provisioning/ansible/centos-network-setup/playbooks/__init__.py b/snaps/provisioning/ansible/centos-network-setup/playbooks/__init__.py
new file mode 100644
index 0000000..e3e876e
--- /dev/null
+++ b/snaps/provisioning/ansible/centos-network-setup/playbooks/__init__.py
@@ -0,0 +1,15 @@
+# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
+# and others. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+__author__ = 'spisarski'
diff --git a/snaps/provisioning/ansible/ubuntu-network-setup/__init__.py b/snaps/provisioning/ansible/ubuntu-network-setup/__init__.py
new file mode 100644
index 0000000..e3e876e
--- /dev/null
+++ b/snaps/provisioning/ansible/ubuntu-network-setup/__init__.py
@@ -0,0 +1,15 @@
+# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
+# and others. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+__author__ = 'spisarski'
diff --git a/snaps/provisioning/ansible/ubuntu-network-setup/playbooks/__init__.py b/snaps/provisioning/ansible/ubuntu-network-setup/playbooks/__init__.py
new file mode 100644
index 0000000..e3e876e
--- /dev/null
+++ b/snaps/provisioning/ansible/ubuntu-network-setup/playbooks/__init__.py
@@ -0,0 +1,15 @@
+# Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
+# and others. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+__author__ = 'spisarski'