Mercurial > repos > shellac > guppy_basecaller
comparison env/lib/python3.7/site-packages/boto/cloudformation/stack.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
| author | shellac |
|---|---|
| date | Sat, 02 May 2020 07:14:21 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:26e78fe6e8c4 |
|---|---|
| 1 from datetime import datetime | |
| 2 | |
| 3 from boto.resultset import ResultSet | |
| 4 | |
| 5 | |
| 6 class Stack(object): | |
| 7 def __init__(self, connection=None): | |
| 8 self.connection = connection | |
| 9 self.creation_time = None | |
| 10 self.description = None | |
| 11 self.disable_rollback = None | |
| 12 self.notification_arns = [] | |
| 13 self.outputs = [] | |
| 14 self.parameters = [] | |
| 15 self.capabilities = [] | |
| 16 self.tags = [] | |
| 17 self.stack_id = None | |
| 18 self.stack_status = None | |
| 19 self.stack_status_reason = None | |
| 20 self.stack_name = None | |
| 21 self.timeout_in_minutes = None | |
| 22 | |
| 23 @property | |
| 24 def stack_name_reason(self): | |
| 25 return self.stack_status_reason | |
| 26 | |
| 27 @stack_name_reason.setter | |
| 28 def stack_name_reason(self, value): | |
| 29 self.stack_status_reason = value | |
| 30 | |
| 31 def startElement(self, name, attrs, connection): | |
| 32 if name == "Parameters": | |
| 33 self.parameters = ResultSet([('member', Parameter)]) | |
| 34 return self.parameters | |
| 35 elif name == "Outputs": | |
| 36 self.outputs = ResultSet([('member', Output)]) | |
| 37 return self.outputs | |
| 38 elif name == "Capabilities": | |
| 39 self.capabilities = ResultSet([('member', Capability)]) | |
| 40 return self.capabilities | |
| 41 elif name == "Tags": | |
| 42 self.tags = Tag() | |
| 43 return self.tags | |
| 44 elif name == 'NotificationARNs': | |
| 45 self.notification_arns = ResultSet([('member', NotificationARN)]) | |
| 46 return self.notification_arns | |
| 47 else: | |
| 48 return None | |
| 49 | |
| 50 def endElement(self, name, value, connection): | |
| 51 if name == 'CreationTime': | |
| 52 try: | |
| 53 self.creation_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ') | |
| 54 except ValueError: | |
| 55 self.creation_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%fZ') | |
| 56 elif name == "Description": | |
| 57 self.description = value | |
| 58 elif name == "DisableRollback": | |
| 59 if str(value).lower() == 'true': | |
| 60 self.disable_rollback = True | |
| 61 else: | |
| 62 self.disable_rollback = False | |
| 63 elif name == 'StackId': | |
| 64 self.stack_id = value | |
| 65 elif name == 'StackName': | |
| 66 self.stack_name = value | |
| 67 elif name == 'StackStatus': | |
| 68 self.stack_status = value | |
| 69 elif name == "StackStatusReason": | |
| 70 self.stack_status_reason = value | |
| 71 elif name == "TimeoutInMinutes": | |
| 72 self.timeout_in_minutes = int(value) | |
| 73 elif name == "member": | |
| 74 pass | |
| 75 else: | |
| 76 setattr(self, name, value) | |
| 77 | |
| 78 def delete(self): | |
| 79 return self.connection.delete_stack(stack_name_or_id=self.stack_id) | |
| 80 | |
| 81 def describe_events(self, next_token=None): | |
| 82 return self.connection.describe_stack_events( | |
| 83 stack_name_or_id=self.stack_id, | |
| 84 next_token=next_token | |
| 85 ) | |
| 86 | |
| 87 def describe_resource(self, logical_resource_id): | |
| 88 return self.connection.describe_stack_resource( | |
| 89 stack_name_or_id=self.stack_id, | |
| 90 logical_resource_id=logical_resource_id | |
| 91 ) | |
| 92 | |
| 93 def describe_resources(self, logical_resource_id=None, | |
| 94 physical_resource_id=None): | |
| 95 return self.connection.describe_stack_resources( | |
| 96 stack_name_or_id=self.stack_id, | |
| 97 logical_resource_id=logical_resource_id, | |
| 98 physical_resource_id=physical_resource_id | |
| 99 ) | |
| 100 | |
| 101 def list_resources(self, next_token=None): | |
| 102 return self.connection.list_stack_resources( | |
| 103 stack_name_or_id=self.stack_id, | |
| 104 next_token=next_token | |
| 105 ) | |
| 106 | |
| 107 def update(self): | |
| 108 rs = self.connection.describe_stacks(self.stack_id) | |
| 109 if len(rs) == 1 and rs[0].stack_id == self.stack_id: | |
| 110 self.__dict__.update(rs[0].__dict__) | |
| 111 else: | |
| 112 raise ValueError("%s is not a valid Stack ID or Name" % | |
| 113 self.stack_id) | |
| 114 | |
| 115 def get_template(self): | |
| 116 return self.connection.get_template(stack_name_or_id=self.stack_id) | |
| 117 | |
| 118 def get_policy(self): | |
| 119 """ | |
| 120 Returns the stack policy for this stack. If it has no policy | |
| 121 then, a null value is returned. | |
| 122 """ | |
| 123 return self.connection.get_stack_policy(self.stack_id) | |
| 124 | |
| 125 def set_policy(self, stack_policy_body=None, stack_policy_url=None): | |
| 126 """ | |
| 127 Sets a stack policy for this stack. | |
| 128 | |
| 129 :type stack_policy_body: string | |
| 130 :param stack_policy_body: Structure containing the stack policy body. | |
| 131 (For more information, go to ` Prevent Updates to Stack Resources`_ | |
| 132 in the AWS CloudFormation User Guide.) | |
| 133 You must pass `StackPolicyBody` or `StackPolicyURL`. If both are | |
| 134 passed, only `StackPolicyBody` is used. | |
| 135 | |
| 136 :type stack_policy_url: string | |
| 137 :param stack_policy_url: Location of a file containing the stack | |
| 138 policy. The URL must point to a policy (max size: 16KB) located in | |
| 139 an S3 bucket in the same region as the stack. You must pass | |
| 140 `StackPolicyBody` or `StackPolicyURL`. If both are passed, only | |
| 141 `StackPolicyBody` is used. | |
| 142 """ | |
| 143 return self.connection.set_stack_policy(self.stack_id, | |
| 144 stack_policy_body=stack_policy_body, | |
| 145 stack_policy_url=stack_policy_url) | |
| 146 | |
| 147 | |
| 148 class StackSummary(object): | |
| 149 def __init__(self, connection=None): | |
| 150 self.connection = connection | |
| 151 self.stack_id = None | |
| 152 self.stack_status = None | |
| 153 self.stack_name = None | |
| 154 self.creation_time = None | |
| 155 self.deletion_time = None | |
| 156 self.template_description = None | |
| 157 | |
| 158 def startElement(self, name, attrs, connection): | |
| 159 return None | |
| 160 | |
| 161 def endElement(self, name, value, connection): | |
| 162 if name == 'StackId': | |
| 163 self.stack_id = value | |
| 164 elif name == 'StackStatus': | |
| 165 self.stack_status = value | |
| 166 elif name == 'StackName': | |
| 167 self.stack_name = value | |
| 168 elif name == 'CreationTime': | |
| 169 try: | |
| 170 self.creation_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ') | |
| 171 except ValueError: | |
| 172 self.creation_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%fZ') | |
| 173 elif name == "DeletionTime": | |
| 174 try: | |
| 175 self.deletion_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ') | |
| 176 except ValueError: | |
| 177 self.deletion_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%fZ') | |
| 178 elif name == 'TemplateDescription': | |
| 179 self.template_description = value | |
| 180 elif name == "member": | |
| 181 pass | |
| 182 else: | |
| 183 setattr(self, name, value) | |
| 184 | |
| 185 | |
| 186 class Parameter(object): | |
| 187 def __init__(self, connection=None): | |
| 188 self.connection = None | |
| 189 self.key = None | |
| 190 self.value = None | |
| 191 | |
| 192 def startElement(self, name, attrs, connection): | |
| 193 return None | |
| 194 | |
| 195 def endElement(self, name, value, connection): | |
| 196 if name == "ParameterKey": | |
| 197 self.key = value | |
| 198 elif name == "ParameterValue": | |
| 199 self.value = value | |
| 200 else: | |
| 201 setattr(self, name, value) | |
| 202 | |
| 203 def __repr__(self): | |
| 204 return "Parameter:\"%s\"=\"%s\"" % (self.key, self.value) | |
| 205 | |
| 206 | |
| 207 class Output(object): | |
| 208 def __init__(self, connection=None): | |
| 209 self.connection = connection | |
| 210 self.description = None | |
| 211 self.key = None | |
| 212 self.value = None | |
| 213 | |
| 214 def startElement(self, name, attrs, connection): | |
| 215 return None | |
| 216 | |
| 217 def endElement(self, name, value, connection): | |
| 218 if name == "Description": | |
| 219 self.description = value | |
| 220 elif name == "OutputKey": | |
| 221 self.key = value | |
| 222 elif name == "OutputValue": | |
| 223 self.value = value | |
| 224 else: | |
| 225 setattr(self, name, value) | |
| 226 | |
| 227 def __repr__(self): | |
| 228 return "Output:\"%s\"=\"%s\"" % (self.key, self.value) | |
| 229 | |
| 230 | |
| 231 class Capability(object): | |
| 232 def __init__(self, connection=None): | |
| 233 self.connection = None | |
| 234 self.value = None | |
| 235 | |
| 236 def startElement(self, name, attrs, connection): | |
| 237 return None | |
| 238 | |
| 239 def endElement(self, name, value, connection): | |
| 240 self.value = value | |
| 241 | |
| 242 def __repr__(self): | |
| 243 return "Capability:\"%s\"" % (self.value) | |
| 244 | |
| 245 | |
| 246 class Tag(dict): | |
| 247 | |
| 248 def __init__(self, connection=None): | |
| 249 dict.__init__(self) | |
| 250 self.connection = connection | |
| 251 self._current_key = None | |
| 252 self._current_value = None | |
| 253 | |
| 254 def startElement(self, name, attrs, connection): | |
| 255 return None | |
| 256 | |
| 257 def endElement(self, name, value, connection): | |
| 258 if name == "Key": | |
| 259 self._current_key = value | |
| 260 elif name == "Value": | |
| 261 self._current_value = value | |
| 262 else: | |
| 263 setattr(self, name, value) | |
| 264 | |
| 265 if self._current_key and self._current_value: | |
| 266 self[self._current_key] = self._current_value | |
| 267 self._current_key = None | |
| 268 self._current_value = None | |
| 269 | |
| 270 | |
| 271 class NotificationARN(object): | |
| 272 def __init__(self, connection=None): | |
| 273 self.connection = None | |
| 274 self.value = None | |
| 275 | |
| 276 def startElement(self, name, attrs, connection): | |
| 277 return None | |
| 278 | |
| 279 def endElement(self, name, value, connection): | |
| 280 self.value = value | |
| 281 | |
| 282 def __repr__(self): | |
| 283 return "NotificationARN:\"%s\"" % (self.value) | |
| 284 | |
| 285 | |
| 286 class StackResource(object): | |
| 287 def __init__(self, connection=None): | |
| 288 self.connection = connection | |
| 289 self.description = None | |
| 290 self.logical_resource_id = None | |
| 291 self.physical_resource_id = None | |
| 292 self.resource_status = None | |
| 293 self.resource_status_reason = None | |
| 294 self.resource_type = None | |
| 295 self.stack_id = None | |
| 296 self.stack_name = None | |
| 297 self.timestamp = None | |
| 298 | |
| 299 def startElement(self, name, attrs, connection): | |
| 300 return None | |
| 301 | |
| 302 def endElement(self, name, value, connection): | |
| 303 if name == "Description": | |
| 304 self.description = value | |
| 305 elif name == "LogicalResourceId": | |
| 306 self.logical_resource_id = value | |
| 307 elif name == "PhysicalResourceId": | |
| 308 self.physical_resource_id = value | |
| 309 elif name == "ResourceStatus": | |
| 310 self.resource_status = value | |
| 311 elif name == "ResourceStatusReason": | |
| 312 self.resource_status_reason = value | |
| 313 elif name == "ResourceType": | |
| 314 self.resource_type = value | |
| 315 elif name == "StackId": | |
| 316 self.stack_id = value | |
| 317 elif name == "StackName": | |
| 318 self.stack_name = value | |
| 319 elif name == "Timestamp": | |
| 320 try: | |
| 321 self.timestamp = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ') | |
| 322 except ValueError: | |
| 323 self.timestamp = datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%fZ') | |
| 324 else: | |
| 325 setattr(self, name, value) | |
| 326 | |
| 327 def __repr__(self): | |
| 328 return "StackResource:%s (%s)" % (self.logical_resource_id, | |
| 329 self.resource_type) | |
| 330 | |
| 331 | |
| 332 class StackResourceSummary(object): | |
| 333 def __init__(self, connection=None): | |
| 334 self.connection = connection | |
| 335 self.last_updated_time = None | |
| 336 self.logical_resource_id = None | |
| 337 self.physical_resource_id = None | |
| 338 self.resource_status = None | |
| 339 self.resource_status_reason = None | |
| 340 self.resource_type = None | |
| 341 | |
| 342 def startElement(self, name, attrs, connection): | |
| 343 return None | |
| 344 | |
| 345 def endElement(self, name, value, connection): | |
| 346 if name == "LastUpdatedTime": | |
| 347 try: | |
| 348 self.last_updated_time = datetime.strptime( | |
| 349 value, | |
| 350 '%Y-%m-%dT%H:%M:%SZ' | |
| 351 ) | |
| 352 except ValueError: | |
| 353 self.last_updated_time = datetime.strptime( | |
| 354 value, | |
| 355 '%Y-%m-%dT%H:%M:%S.%fZ' | |
| 356 ) | |
| 357 elif name == "LogicalResourceId": | |
| 358 self.logical_resource_id = value | |
| 359 elif name == "PhysicalResourceId": | |
| 360 self.physical_resource_id = value | |
| 361 elif name == "ResourceStatus": | |
| 362 self.resource_status = value | |
| 363 elif name == "ResourceStatusReason": | |
| 364 self.resource_status_reason = value | |
| 365 elif name == "ResourceType": | |
| 366 self.resource_type = value | |
| 367 else: | |
| 368 setattr(self, name, value) | |
| 369 | |
| 370 def __repr__(self): | |
| 371 return "StackResourceSummary:%s (%s)" % (self.logical_resource_id, | |
| 372 self.resource_type) | |
| 373 | |
| 374 | |
| 375 class StackEvent(object): | |
| 376 valid_states = ("CREATE_IN_PROGRESS", "CREATE_FAILED", "CREATE_COMPLETE", | |
| 377 "DELETE_IN_PROGRESS", "DELETE_FAILED", "DELETE_COMPLETE") | |
| 378 def __init__(self, connection=None): | |
| 379 self.connection = connection | |
| 380 self.event_id = None | |
| 381 self.logical_resource_id = None | |
| 382 self.physical_resource_id = None | |
| 383 self.resource_properties = None | |
| 384 self.resource_status = None | |
| 385 self.resource_status_reason = None | |
| 386 self.resource_type = None | |
| 387 self.stack_id = None | |
| 388 self.stack_name = None | |
| 389 self.timestamp = None | |
| 390 | |
| 391 def startElement(self, name, attrs, connection): | |
| 392 return None | |
| 393 | |
| 394 def endElement(self, name, value, connection): | |
| 395 if name == "EventId": | |
| 396 self.event_id = value | |
| 397 elif name == "LogicalResourceId": | |
| 398 self.logical_resource_id = value | |
| 399 elif name == "PhysicalResourceId": | |
| 400 self.physical_resource_id = value | |
| 401 elif name == "ResourceProperties": | |
| 402 self.resource_properties = value | |
| 403 elif name == "ResourceStatus": | |
| 404 self.resource_status = value | |
| 405 elif name == "ResourceStatusReason": | |
| 406 self.resource_status_reason = value | |
| 407 elif name == "ResourceType": | |
| 408 self.resource_type = value | |
| 409 elif name == "StackId": | |
| 410 self.stack_id = value | |
| 411 elif name == "StackName": | |
| 412 self.stack_name = value | |
| 413 elif name == "Timestamp": | |
| 414 try: | |
| 415 self.timestamp = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ') | |
| 416 except ValueError: | |
| 417 self.timestamp = datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%fZ') | |
| 418 else: | |
| 419 setattr(self, name, value) | |
| 420 | |
| 421 def __repr__(self): | |
| 422 return "StackEvent %s %s %s" % (self.resource_type, | |
| 423 self.logical_resource_id, self.resource_status) |
