Enhancements to the SNAPS orchestrator/launcher
[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         # super(self.__class__, self, os_creds)
33         self._os_creds = os_creds
34
35     def initialize(self):
36         raise NotImplementedError('Do not override abstract method')
37
38     def create(self):
39         raise NotImplementedError('Do not override abstract method')
40
41     def clean(self):
42         raise NotImplementedError('Do not override abstract method')
43
44
45 class OpenStackComputeObject(OpenStackCloudObject):
46     """
47     Abstract class for all OpenStack compute creators
48     """
49
50     def __init__(self, os_creds):
51         """
52         Constructor
53         :param os_creds: the OpenStack credentials object
54         """
55         super(OpenStackComputeObject, self).__init__(os_creds)
56         self._nova = None
57
58     def initialize(self):
59         self._nova = nova_utils.nova_client(self._os_creds)
60
61     def create(self):
62         raise NotImplementedError('Do not override abstract method')
63
64     def clean(self):
65         raise NotImplementedError('Do not override abstract method')
66
67
68 class OpenStackNetworkObject(OpenStackCloudObject):
69     """
70     Abstract class for all OpenStack compute creators
71     """
72
73     def __init__(self, os_creds):
74         """
75         Constructor
76         :param os_creds: the OpenStack credentials object
77         """
78         super(OpenStackNetworkObject, self).__init__(os_creds)
79         self._neutron = None
80
81     def initialize(self):
82         self._neutron = neutron_utils.neutron_client(self._os_creds)
83
84     def create(self):
85         raise NotImplementedError('Do not override abstract method')
86
87     def clean(self):
88         raise NotImplementedError('Do not override abstract method')
89
90
91 class OpenStackIdentityObject(OpenStackCloudObject):
92     """
93     Abstract class for all OpenStack compute creators
94     """
95
96     def __init__(self, os_creds):
97         """
98         Constructor
99         :param os_creds: the OpenStack credentials object
100         """
101         super(OpenStackIdentityObject, self).__init__(os_creds)
102         self._keystone = None
103
104     def initialize(self):
105         self._keystone = keystone_utils.keystone_client(self._os_creds)
106
107     def create(self):
108         raise NotImplementedError('Do not override abstract method')
109
110     def clean(self):
111         raise NotImplementedError('Do not override abstract method')
112
113
114 class OpenStackVolumeObject(OpenStackCloudObject):
115     """
116     Abstract class for all OpenStack compute creators
117     """
118
119     def __init__(self, os_creds):
120         """
121         Constructor
122         :param os_creds: the OpenStack credentials object
123         """
124         super(OpenStackVolumeObject, self).__init__(os_creds)
125         self._cinder = None
126
127     def initialize(self):
128         self._cinder = cinder_utils.cinder_client(self._os_creds)
129
130     def create(self):
131         raise NotImplementedError('Do not override abstract method')
132
133     def clean(self):
134         raise NotImplementedError('Do not override abstract method')
135
136
137 class OpenStackMagnumObject(OpenStackCloudObject):
138     """
139     Abstract class for all OpenStack compute creators
140     """
141
142     def __init__(self, os_creds):
143         """
144         Constructor
145         :param os_creds: the OpenStack credentials object
146         """
147         super(OpenStackMagnumObject, self).__init__(os_creds)
148         self._magnum = None
149
150     def initialize(self):
151         self._magnum = magnum_utils.magnum_client(self._os_creds)
152
153     def create(self):
154         raise NotImplementedError('Do not override abstract method')
155
156     def clean(self):
157         raise NotImplementedError('Do not override abstract method')