diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | snaps/openstack/create_flavor.py | 118 | ||||
-rw-r--r-- | snaps/openstack/tests/create_flavor_tests.py | 154 | ||||
-rw-r--r-- | snaps/openstack/tests/openstack_tests.py | 15 | ||||
-rw-r--r-- | snaps/provisioning/ansible/__init__.py | 15 | ||||
-rw-r--r-- | snaps/provisioning/ansible/centos-network-setup/__init__.py | 15 | ||||
-rw-r--r-- | snaps/provisioning/ansible/centos-network-setup/playbooks/__init__.py | 15 | ||||
-rw-r--r-- | snaps/provisioning/ansible/ubuntu-network-setup/__init__.py | 15 | ||||
-rw-r--r-- | snaps/provisioning/ansible/ubuntu-network-setup/playbooks/__init__.py | 15 |
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' |