1f679512aa8424412ac25e0fbce9e185c4f632f7
[snaps.git] / snaps / openstack / openstack_creator.py
1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 #                    and others.  All rights reserved.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at:
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 from snaps.domain.creator import CloudObject
16 from snaps.openstack.utils import (
17     nova_utils, neutron_utils, keystone_utils, cinder_utils, magnum_utils)
18
19 __author__ = 'spisarski'
20
21
22 class OpenStackCloudObject(CloudObject):
23     """
24     Abstract class for all OpenStack object creators
25     """
26
27     def __init__(self, os_creds):
28         """
29         Constructor
30         :param os_creds: the OpenStack credentials object
31         """
32         self._os_creds = os_creds
33         keystone = keystone_utils.keystone_client(os_creds)
34         self.project_id = keystone_utils.get_project(
35             keystone=keystone, project_name=os_creds.project_name).id
36
37     def initialize(self):
38         raise NotImplementedError('Do not override abstract method')
39
40     def create(self):
41         raise NotImplementedError('Do not override abstract method')
42
43     def clean(self):
44         raise NotImplementedError('Do not override abstract method')
45
46
47 class OpenStackComputeObject(OpenStackCloudObject):
48     """
49     Abstract class for all OpenStack compute creators
50     """
51
52     def __init__(self, os_creds):
53         """
54         Constructor
55         :param os_creds: the OpenStack credentials object
56         """
57         super(OpenStackComputeObject, self).__init__(os_creds)
58         self._nova = None
59
60     def initialize(self):
61         self._nova = nova_utils.nova_client(self._os_creds)
62
63     def create(self):
64         raise NotImplementedError('Do not override abstract method')
65
66     def clean(self):
67         raise NotImplementedError('Do not override abstract method')
68
69
70 class OpenStackNetworkObject(OpenStackCloudObject):
71     """
72     Abstract class for all OpenStack compute creators
73     """
74
75     def __init__(self, os_creds):
76         """
77         Constructor
78         :param os_creds: the OpenStack credentials object
79         """
80         super(OpenStackNetworkObject, self).__init__(os_creds)
81         self._neutron = None
82
83     def initialize(self):
84         self._neutron = neutron_utils.neutron_client(self._os_creds)
85
86     def create(self):
87         raise NotImplementedError('Do not override abstract method')
88
89     def clean(self):
90         raise NotImplementedError('Do not override abstract method')
91
92
93 class OpenStackIdentityObject(OpenStackCloudObject):
94     """
95     Abstract class for all OpenStack compute creators
96     """
97
98     def __init__(self, os_creds):
99         """
100         Constructor
101         :param os_creds: the OpenStack credentials object
102         """
103         super(OpenStackIdentityObject, self).__init__(os_creds)
104         self._keystone = None
105
106     def initialize(self):
107         self._keystone = keystone_utils.keystone_client(self._os_creds)
108
109     def create(self):
110         raise NotImplementedError('Do not override abstract method')
111
112     def clean(self):
113         raise NotImplementedError('Do not override abstract method')
114
115
116 class OpenStackVolumeObject(OpenStackCloudObject):
117     """
118     Abstract class for all OpenStack compute creators
119     """
120
121     def __init__(self, os_creds):
122         """
123         Constructor
124         :param os_creds: the OpenStack credentials object
125         """
126         super(OpenStackVolumeObject, self).__init__(os_creds)
127         self._cinder = None
128
129     def initialize(self):
130         self._cinder = cinder_utils.cinder_client(self._os_creds)
131
132     def create(self):
133         raise NotImplementedError('Do not override abstract method')
134
135     def clean(self):
136         raise NotImplementedError('Do not override abstract method')
137
138
139 class OpenStackMagnumObject(OpenStackCloudObject):
140     """
141     Abstract class for all OpenStack compute creators
142     """
143
144     def __init__(self, os_creds):
145         """
146         Constructor
147         :param os_creds: the OpenStack credentials object
148         """
149         super(OpenStackMagnumObject, self).__init__(os_creds)
150         self._magnum = None
151
152     def initialize(self):
153         self._magnum = magnum_utils.magnum_client(self._os_creds)
154
155     def create(self):
156         raise NotImplementedError('Do not override abstract method')
157
158     def clean(self):
159         raise NotImplementedError('Do not override abstract method')