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