comparison env/lib/python3.7/site-packages/boto/ec2/instancestatus.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
comparison
equal deleted inserted replaced
4:79f47841a781 5:9b1c78e6ba9c
1 # Copyright (c) 2012 Mitch Garnaat http://garnaat.org/
2 # Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
3 # All Rights Reserved
4 #
5 # Permission is hereby granted, free of charge, to any person obtaining a
6 # copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish, dis-
9 # tribute, sublicense, and/or sell copies of the Software, and to permit
10 # persons to whom the Software is furnished to do so, subject to the fol-
11 # lowing conditions:
12 #
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
18 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
19 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22 # IN THE SOFTWARE.
23
24
25 class Details(dict):
26 """
27 A dict object that contains name/value pairs which provide
28 more detailed information about the status of the system
29 or the instance.
30 """
31
32 def startElement(self, name, attrs, connection):
33 return None
34
35 def endElement(self, name, value, connection):
36 if name == 'name':
37 self._name = value
38 elif name == 'status':
39 self[self._name] = value
40 else:
41 setattr(self, name, value)
42
43
44 class Event(object):
45 """
46 A status event for an instance.
47
48 :ivar code: A string indicating the event type.
49 :ivar description: A string describing the reason for the event.
50 :ivar not_before: A datestring describing the earliest time for
51 the event.
52 :ivar not_after: A datestring describing the latest time for
53 the event.
54 """
55
56 def __init__(self, code=None, description=None,
57 not_before=None, not_after=None):
58 self.code = code
59 self.description = description
60 self.not_before = not_before
61 self.not_after = not_after
62
63 def __repr__(self):
64 return 'Event:%s' % self.code
65
66 def startElement(self, name, attrs, connection):
67 return None
68
69 def endElement(self, name, value, connection):
70 if name == 'code':
71 self.code = value
72 elif name == 'description':
73 self.description = value
74 elif name == 'notBefore':
75 self.not_before = value
76 elif name == 'notAfter':
77 self.not_after = value
78 else:
79 setattr(self, name, value)
80
81
82 class Status(object):
83 """
84 A generic Status object used for system status and instance status.
85
86 :ivar status: A string indicating overall status.
87 :ivar details: A dict containing name-value pairs which provide
88 more details about the current status.
89 """
90
91 def __init__(self, status=None, details=None):
92 self.status = status
93 if not details:
94 details = Details()
95 self.details = details
96
97 def __repr__(self):
98 return 'Status:%s' % self.status
99
100 def startElement(self, name, attrs, connection):
101 if name == 'details':
102 return self.details
103 return None
104
105 def endElement(self, name, value, connection):
106 if name == 'status':
107 self.status = value
108 else:
109 setattr(self, name, value)
110
111
112 class EventSet(list):
113
114 def startElement(self, name, attrs, connection):
115 if name == 'item':
116 event = Event()
117 self.append(event)
118 return event
119 else:
120 return None
121
122 def endElement(self, name, value, connection):
123 setattr(self, name, value)
124
125
126 class InstanceStatus(object):
127 """
128 Represents an EC2 Instance status as reported by
129 DescribeInstanceStatus request.
130
131 :ivar id: The instance identifier.
132 :ivar zone: The availability zone of the instance.
133 :ivar events: A list of events relevant to the instance.
134 :ivar state_code: An integer representing the current state
135 of the instance.
136 :ivar state_name: A string describing the current state
137 of the instance.
138 :ivar system_status: A Status object that reports impaired
139 functionality that stems from issues related to the systems
140 that support an instance, such as such as hardware failures
141 and network connectivity problems.
142 :ivar instance_status: A Status object that reports impaired
143 functionality that arises from problems internal to the instance.
144 """
145
146 def __init__(self, id=None, zone=None, events=None,
147 state_code=None, state_name=None):
148 self.id = id
149 self.zone = zone
150 self.events = events
151 self.state_code = state_code
152 self.state_name = state_name
153 self.system_status = Status()
154 self.instance_status = Status()
155
156 def __repr__(self):
157 return 'InstanceStatus:%s' % self.id
158
159 def startElement(self, name, attrs, connection):
160 if name == 'eventsSet':
161 self.events = EventSet()
162 return self.events
163 elif name == 'systemStatus':
164 return self.system_status
165 elif name == 'instanceStatus':
166 return self.instance_status
167 else:
168 return None
169
170 def endElement(self, name, value, connection):
171 if name == 'instanceId':
172 self.id = value
173 elif name == 'availabilityZone':
174 self.zone = value
175 elif name == 'code':
176 self.state_code = int(value)
177 elif name == 'name':
178 self.state_name = value
179 else:
180 setattr(self, name, value)
181
182
183 class InstanceStatusSet(list):
184 """
185 A list object that contains the results of a call to
186 DescribeInstanceStatus request. Each element of the
187 list will be an InstanceStatus object.
188
189 :ivar next_token: If the response was truncated by
190 the EC2 service, the next_token attribute of the
191 object will contain the string that needs to be
192 passed in to the next request to retrieve the next
193 set of results.
194 """
195
196 def __init__(self, connection=None):
197 list.__init__(self)
198 self.connection = connection
199 self.next_token = None
200
201 def startElement(self, name, attrs, connection):
202 if name == 'item':
203 status = InstanceStatus()
204 self.append(status)
205 return status
206 else:
207 return None
208
209 def endElement(self, name, value, connection):
210 if name == 'nextToken':
211 self.next_token = value
212 setattr(self, name, value)