Merge "Add missing licences in requirements.txt"
[snaps.git] / snaps / domain / stack.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
16
17 class Stack:
18     """
19     SNAPS domain object for Heat Stacks. Should contain attributes that
20     are shared amongst cloud providers
21     """
22     def __init__(self, name, stack_id, stack_project_id,
23                  status, status_reason):
24         """
25         Constructor
26         :param name: the stack's name
27         :param stack_id: the stack's stack_id
28         :param stack_project_id: the project ID that was spawned from this
29                                  deployment
30         :param status: the stack's last known status code
31         :param status_reason: the stack's last known explanation of the status
32         """
33         self.name = name
34         self.id = stack_id
35         self.stack_project_id = stack_project_id
36         self.status = status
37         self.status_reason = status_reason
38
39     def __eq__(self, other):
40         return (self.name == other.name and
41                 self.id == other.id)
42
43
44 class Resource:
45     """
46     SNAPS domain object for a resource created by a heat template
47     """
48     def __init__(self, name, resource_type, resource_id, status,
49                  status_reason):
50         """
51         Constructor
52         :param name: the resource's name
53         :param resource_type: the resource's type
54         :param resource_id: the ID attached to the resource of the given type
55         :param status: the resource's status code
56         :param status_reason: the resource's status code reason
57         """
58         self.name = name
59         self.type = resource_type
60         self.id = resource_id
61         self.status = status
62         self.status_reason = status_reason
63
64
65 class Output:
66     """
67     SNAPS domain object for an output defined by a heat template
68     """
69     def __init__(self, **kwargs):
70         """
71         Constructor
72         :param description: the output description
73         :param output_key: the output's key
74         """
75         self.description = kwargs.get('description')
76         self.key = kwargs.get('output_key')
77         self.value = kwargs.get('output_value')