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 nova_utils, neutron_utils, keystone_utils
18 __author__ = 'spisarski'
21 class OpenStackCloudObject(CloudObject):
23 Abstract class for all OpenStack object creators
26 def __init__(self, os_creds):
29 :param os_creds: the OpenStack credentials object
31 # super(self.__class__, self, os_creds)
32 self._os_creds = os_creds
35 raise NotImplementedError('Do not override abstract method')
38 raise NotImplementedError('Do not override abstract method')
41 raise NotImplementedError('Do not override abstract method')
44 class OpenStackComputeObject(OpenStackCloudObject):
46 Abstract class for all OpenStack compute creators
49 def __init__(self, os_creds):
52 :param os_creds: the OpenStack credentials object
54 super(OpenStackComputeObject, self).__init__(os_creds)
58 self._nova = nova_utils.nova_client(self._os_creds)
61 raise NotImplementedError('Do not override abstract method')
64 raise NotImplementedError('Do not override abstract method')
67 class OpenStackNetworkObject(OpenStackCloudObject):
69 Abstract class for all OpenStack compute creators
72 def __init__(self, os_creds):
75 :param os_creds: the OpenStack credentials object
77 super(OpenStackNetworkObject, self).__init__(os_creds)
81 self._neutron = neutron_utils.neutron_client(self._os_creds)
84 raise NotImplementedError('Do not override abstract method')
87 raise NotImplementedError('Do not override abstract method')
90 class OpenStackIdentityObject(OpenStackCloudObject):
92 Abstract class for all OpenStack compute creators
95 def __init__(self, os_creds):
98 :param os_creds: the OpenStack credentials object
100 super(OpenStackIdentityObject, self).__init__(os_creds)
101 self._keystone = None
103 def initialize(self):
104 self._keystone = keystone_utils.keystone_client(self._os_creds)
107 raise NotImplementedError('Do not override abstract method')
110 raise NotImplementedError('Do not override abstract method')