Removed TODO from comment about the physical network value.
[snaps.git] / snaps / openstack / utils / deploy_utils.py
1 #
2 # Copyright (c) 2016 Cable Television Laboratories, Inc. ("CableLabs")
3 #                    and others.  All rights reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at:
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #
17 # This utility makes it easy to create OpenStack objects
18 import logging
19
20 from snaps.openstack.create_project import OpenStackProject
21 from snaps.openstack.create_user import OpenStackUser
22 from snaps.openstack.create_image import OpenStackImage
23 from snaps.openstack.create_network import OpenStackNetwork
24 from snaps.openstack.create_router import OpenStackRouter
25 from snaps.openstack.create_keypairs import OpenStackKeypair
26 from snaps.openstack.create_instance import OpenStackVmInstance
27 from snaps.openstack.create_security_group import OpenStackSecurityGroup
28
29 logger = logging.getLogger('deploy_utils')
30
31
32 def create_image(os_creds, image_settings, cleanup=False):
33     """
34     Creates an image in OpenStack if necessary
35     :param os_creds: The OpenStack credentials object
36     :param image_settings: The image settings object
37     :param cleanup: Denotes whether or not this is being called for cleanup or not
38     :return: A reference to the image creator object from which the image object can be accessed
39     """
40     image_creator = OpenStackImage(os_creds, image_settings)
41     image_creator.create(cleanup)
42     return image_creator
43
44
45 def create_network(os_creds, network_settings, cleanup=False):
46     """
47     Creates a network on which the CMTSs can attach
48     :param os_creds: The OpenStack credentials object
49     :param network_settings: The network settings object
50     :param cleanup: Denotes whether or not this is being called for cleanup or not
51     :return: A reference to the network creator objects for each network from which network elements such as the
52              subnet, router, interface router, and network objects can be accessed.
53     """
54     # Check for OS for network existence
55     # If exists return network instance data
56     # Else, create network and return instance data
57
58     logger.info('Attempting to create network with name - ' + network_settings.name)
59
60     network_creator = OpenStackNetwork(os_creds, network_settings)
61     network_creator.create(cleanup)
62     logger.info('Created network ')
63     return network_creator
64
65
66 def create_router(os_creds, router_settings, cleanup=False):
67     """
68     Creates a network on which the CMTSs can attach
69     :param os_creds: The OpenStack credentials object
70     :param router_settings: The RouterSettings instance
71     :param cleanup: Denotes whether or not this is being called for cleanup or not
72     :return: A reference to the network creator objects for each network from which network elements such as the
73              subnet, router, interface router, and network objects can be accessed.
74     """
75     # Check for OS for network existence
76     # If exists return network instance data
77     # Else, create network and return instance data
78     logger.info('Attempting to create router with name - ' + router_settings.name)
79     router_creator = OpenStackRouter(os_creds, router_settings)
80     router_creator.create(cleanup)
81     logger.info('Created router ')
82     return router_creator
83
84
85 def create_keypair(os_creds, keypair_settings, cleanup=False):
86     """
87     Creates a keypair that can be applied to an instance
88     :param os_creds: The OpenStack credentials object
89     :param keypair_settings: The KeypairSettings object
90     :param cleanup: Denotes whether or not this is being called for cleanup or not
91     :return: A reference to the keypair creator object
92     """
93     keypair_creator = OpenStackKeypair(os_creds, keypair_settings)
94     keypair_creator.create(cleanup)
95     return keypair_creator
96
97
98 def create_vm_instance(os_creds, instance_settings, image_settings, keypair_creator=None, cleanup=False):
99     """
100     Creates a VM instance
101     :param os_creds: The OpenStack credentials
102     :param instance_settings: Instance of VmInstanceSettings
103     :param image_settings: The object containing image settings
104     :param keypair_creator: The object responsible for creating the keypair associated with this VM instance. (optional)
105     :param sg_names: The names of the security groups to apply to VM. (optional)
106     :param cleanup: Denotes whether or not this is being called for cleanup or not (default False)
107     :return: A reference to the VM instance object
108     """
109     kp_settings = None
110     if keypair_creator:
111         kp_settings = keypair_creator.keypair_settings
112     vm_creator = OpenStackVmInstance(os_creds, instance_settings, image_settings, kp_settings)
113     vm_creator.create(cleanup=cleanup)
114     return vm_creator
115
116
117 def create_user(os_creds, user_settings):
118     """
119     Creates an OpenStack user
120     :param os_creds: The OpenStack credentials
121     :param user_settings: The user configuration settings
122     :return: A reference to the user instance object
123     """
124     user_creator = OpenStackUser(os_creds, user_settings)
125     user_creator.create()
126     return user_creator
127
128
129 def create_project(os_creds, project_settings):
130     """
131     Creates an OpenStack user
132     :param os_creds: The OpenStack credentials
133     :param project_settings: The user project configuration settings
134     :return: A reference to the project instance object
135     """
136     project_creator = OpenStackProject(os_creds, project_settings)
137     project_creator.create()
138     return project_creator
139
140
141 def create_security_group(os_creds, sec_grp_settings):
142     """
143     Creates an OpenStack Security Group
144     :param os_creds: The OpenStack credentials
145     :param sec_grp_settings: The security group settings
146     :return: A reference to the project instance object
147     """
148     sg_creator = OpenStackSecurityGroup(os_creds, sec_grp_settings)
149     sg_creator.create()
150     return sg_creator
151