summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/utils/deploy_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'snaps/openstack/utils/deploy_utils.py')
-rw-r--r--snaps/openstack/utils/deploy_utils.py151
1 files changed, 151 insertions, 0 deletions
diff --git a/snaps/openstack/utils/deploy_utils.py b/snaps/openstack/utils/deploy_utils.py
new file mode 100644
index 0000000..ade8811
--- /dev/null
+++ b/snaps/openstack/utils/deploy_utils.py
@@ -0,0 +1,151 @@
+#
+# 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.
+#
+# This utility makes it easy to create OpenStack objects
+import logging
+
+from snaps.openstack.create_project import OpenStackProject
+from snaps.openstack.create_user import OpenStackUser
+from snaps.openstack.create_image import OpenStackImage
+from snaps.openstack.create_network import OpenStackNetwork
+from snaps.openstack.create_router import OpenStackRouter
+from snaps.openstack.create_keypairs import OpenStackKeypair
+from snaps.openstack.create_instance import OpenStackVmInstance
+from snaps.openstack.create_security_group import OpenStackSecurityGroup
+
+logger = logging.getLogger('deploy_utils')
+
+
+def create_image(os_creds, image_settings, cleanup=False):
+ """
+ Creates an image in OpenStack if necessary
+ :param os_creds: The OpenStack credentials object
+ :param image_settings: The image settings object
+ :param cleanup: Denotes whether or not this is being called for cleanup or not
+ :return: A reference to the image creator object from which the image object can be accessed
+ """
+ image_creator = OpenStackImage(os_creds, image_settings)
+ image_creator.create(cleanup)
+ return image_creator
+
+
+def create_network(os_creds, network_settings, cleanup=False):
+ """
+ Creates a network on which the CMTSs can attach
+ :param os_creds: The OpenStack credentials object
+ :param network_settings: The network settings object
+ :param cleanup: Denotes whether or not this is being called for cleanup or not
+ :return: A reference to the network creator objects for each network from which network elements such as the
+ subnet, router, interface router, and network objects can be accessed.
+ """
+ # Check for OS for network existence
+ # If exists return network instance data
+ # Else, create network and return instance data
+
+ logger.info('Attempting to create network with name - ' + network_settings.name)
+
+ network_creator = OpenStackNetwork(os_creds, network_settings)
+ network_creator.create(cleanup)
+ logger.info('Created network ')
+ return network_creator
+
+
+def create_router(os_creds, router_settings, cleanup=False):
+ """
+ Creates a network on which the CMTSs can attach
+ :param os_creds: The OpenStack credentials object
+ :param router_settings: The RouterSettings instance
+ :param cleanup: Denotes whether or not this is being called for cleanup or not
+ :return: A reference to the network creator objects for each network from which network elements such as the
+ subnet, router, interface router, and network objects can be accessed.
+ """
+ # Check for OS for network existence
+ # If exists return network instance data
+ # Else, create network and return instance data
+ logger.info('Attempting to create router with name - ' + router_settings.name)
+ router_creator = OpenStackRouter(os_creds, router_settings)
+ router_creator.create(cleanup)
+ logger.info('Created router ')
+ return router_creator
+
+
+def create_keypair(os_creds, keypair_settings, cleanup=False):
+ """
+ Creates a keypair that can be applied to an instance
+ :param os_creds: The OpenStack credentials object
+ :param keypair_settings: The KeypairSettings object
+ :param cleanup: Denotes whether or not this is being called for cleanup or not
+ :return: A reference to the keypair creator object
+ """
+ keypair_creator = OpenStackKeypair(os_creds, keypair_settings)
+ keypair_creator.create(cleanup)
+ return keypair_creator
+
+
+def create_vm_instance(os_creds, instance_settings, image_settings, keypair_creator=None, cleanup=False):
+ """
+ Creates a VM instance
+ :param os_creds: The OpenStack credentials
+ :param instance_settings: Instance of VmInstanceSettings
+ :param image_settings: The object containing image settings
+ :param keypair_creator: The object responsible for creating the keypair associated with this VM instance. (optional)
+ :param sg_names: The names of the security groups to apply to VM. (optional)
+ :param cleanup: Denotes whether or not this is being called for cleanup or not (default False)
+ :return: A reference to the VM instance object
+ """
+ kp_settings = None
+ if keypair_creator:
+ kp_settings = keypair_creator.keypair_settings
+ vm_creator = OpenStackVmInstance(os_creds, instance_settings, image_settings, kp_settings)
+ vm_creator.create(cleanup=cleanup)
+ return vm_creator
+
+
+def create_user(os_creds, user_settings):
+ """
+ Creates an OpenStack user
+ :param os_creds: The OpenStack credentials
+ :param user_settings: The user configuration settings
+ :return: A reference to the user instance object
+ """
+ user_creator = OpenStackUser(os_creds, user_settings)
+ user_creator.create()
+ return user_creator
+
+
+def create_project(os_creds, project_settings):
+ """
+ Creates an OpenStack user
+ :param os_creds: The OpenStack credentials
+ :param project_settings: The user project configuration settings
+ :return: A reference to the project instance object
+ """
+ project_creator = OpenStackProject(os_creds, project_settings)
+ project_creator.create()
+ return project_creator
+
+
+def create_security_group(os_creds, sec_grp_settings):
+ """
+ Creates an OpenStack Security Group
+ :param os_creds: The OpenStack credentials
+ :param sec_grp_settings: The security group settings
+ :return: A reference to the project instance object
+ """
+ sg_creator = OpenStackSecurityGroup(os_creds, sec_grp_settings)
+ sg_creator.create()
+ return sg_creator
+