1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 # and others. All rights reserved.
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:
8 # http://www.apache.org/licenses/LICENSE-2.0
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)
19 __author__ = 'spisarski'
22 class OpenStackCloudObject(CloudObject):
24 Abstract class for all OpenStack object creators
27 def __init__(self, os_creds):
30 :param os_creds: the OpenStack credentials object
32 self._os_creds = os_creds
33 self._os_session = None
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)
41 def get_os_creds(self):
45 raise NotImplementedError('Do not override abstract method')
49 keystone_utils.close_session(self._os_session)
52 class OpenStackComputeObject(OpenStackCloudObject):
54 Abstract class for all OpenStack compute creators
57 def __init__(self, os_creds):
60 :param os_creds: the OpenStack credentials object
62 super(OpenStackComputeObject, self).__init__(os_creds)
66 super(OpenStackComputeObject, self).initialize()
67 self._nova = nova_utils.nova_client(self._os_creds, self._os_session)
70 raise NotImplementedError('Do not override abstract method')
73 class OpenStackNetworkObject(OpenStackCloudObject):
75 Abstract class for all OpenStack compute creators
78 def __init__(self, os_creds):
81 :param os_creds: the OpenStack credentials object
83 super(OpenStackNetworkObject, self).__init__(os_creds)
87 super(OpenStackNetworkObject, self).initialize()
88 self._neutron = neutron_utils.neutron_client(
89 self._os_creds, self._os_session)
92 raise NotImplementedError('Do not override abstract method')
95 class OpenStackIdentityObject(OpenStackCloudObject):
97 Abstract class for all OpenStack compute creators
100 def __init__(self, os_creds):
103 :param os_creds: the OpenStack credentials object
105 super(OpenStackIdentityObject, self).__init__(os_creds)
107 def initialize(self):
108 super(OpenStackIdentityObject, self).initialize()
111 raise NotImplementedError('Do not override abstract method')
114 class OpenStackVolumeObject(OpenStackCloudObject):
116 Abstract class for all OpenStack compute creators
119 def __init__(self, os_creds):
122 :param os_creds: the OpenStack credentials object
124 super(OpenStackVolumeObject, self).__init__(os_creds)
127 def initialize(self):
128 super(OpenStackVolumeObject, self).initialize()
129 self._cinder = cinder_utils.cinder_client(
130 self._os_creds, self._os_session)
133 raise NotImplementedError('Do not override abstract method')
136 class OpenStackMagnumObject(OpenStackCloudObject):
138 Abstract class for all OpenStack compute creators
141 def __init__(self, os_creds):
144 :param os_creds: the OpenStack credentials object
146 super(OpenStackMagnumObject, self).__init__(os_creds)
149 def initialize(self):
150 super(OpenStackMagnumObject, self).initialize()
151 self._magnum = magnum_utils.magnum_client(
152 self._os_creds, self._os_session)
155 raise NotImplementedError('Do not override abstract method')