Improved creator/state machine classes class hierarchy.
[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 nova_utils, neutron_utils, keystone_utils
17
18 __author__ = 'spisarski'
19
20
21 class OpenStackCloudObject(CloudObject):
22     """
23     Abstract class for all OpenStack object creators
24     """
25
26     def __init__(self, os_creds):
27         """
28         Constructor
29         :param os_creds: the OpenStack credentials object
30         """
31         # super(self.__class__, self, os_creds)
32         self._os_creds = os_creds
33
34     def initialize(self):
35         raise NotImplementedError('Do not override abstract method')
36
37     def create(self):
38         raise NotImplementedError('Do not override abstract method')
39
40     def clean(self):
41         raise NotImplementedError('Do not override abstract method')
42
43
44 class OpenStackComputeObject(OpenStackCloudObject):
45     """
46     Abstract class for all OpenStack compute creators
47     """
48
49     def __init__(self, os_creds):
50         """
51         Constructor
52         :param os_creds: the OpenStack credentials object
53         """
54         super(OpenStackComputeObject, self).__init__(os_creds)
55         self._nova = None
56
57     def initialize(self):
58         self._nova = nova_utils.nova_client(self._os_creds)
59
60     def create(self):
61         raise NotImplementedError('Do not override abstract method')
62
63     def clean(self):
64         raise NotImplementedError('Do not override abstract method')
65
66
67 class OpenStackNetworkObject(OpenStackCloudObject):
68     """
69     Abstract class for all OpenStack compute creators
70     """
71
72     def __init__(self, os_creds):
73         """
74         Constructor
75         :param os_creds: the OpenStack credentials object
76         """
77         super(OpenStackNetworkObject, self).__init__(os_creds)
78         self._neutron = None
79
80     def initialize(self):
81         self._neutron = neutron_utils.neutron_client(self._os_creds)
82
83     def create(self):
84         raise NotImplementedError('Do not override abstract method')
85
86     def clean(self):
87         raise NotImplementedError('Do not override abstract method')
88
89
90 class OpenStackIdentityObject(OpenStackCloudObject):
91     """
92     Abstract class for all OpenStack compute creators
93     """
94
95     def __init__(self, os_creds):
96         """
97         Constructor
98         :param os_creds: the OpenStack credentials object
99         """
100         super(OpenStackIdentityObject, self).__init__(os_creds)
101         self._keystone = None
102
103     def initialize(self):
104         self._keystone = keystone_utils.keystone_client(self._os_creds)
105
106     def create(self):
107         raise NotImplementedError('Do not override abstract method')
108
109     def clean(self):
110         raise NotImplementedError('Do not override abstract method')