Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2475)

Unified Diff: boto/cloudformation/stack.py

Issue 8386013: Merging in latest boto. (Closed) Base URL: svn://svn.chromium.org/boto
Patch Set: Redoing vendor drop by deleting and then merging. Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « boto/cloudformation/connection.py ('k') | boto/cloudformation/template.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: boto/cloudformation/stack.py
diff --git a/boto/cloudformation/stack.py b/boto/cloudformation/stack.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b9e11574bb4b740c7c506b969b0cf5e6e98b150
--- /dev/null
+++ b/boto/cloudformation/stack.py
@@ -0,0 +1,289 @@
+from datetime import datetime
+
+from boto.resultset import ResultSet
+
+class Stack:
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.creation_time = None
+ self.description = None
+ self.disable_rollback = None
+ self.notification_arns = []
+ self.outputs = []
+ self.parameters = []
+ self.stack_id = None
+ self.stack_status = None
+ self.stack_name = None
+ self.stack_name_reason = None
+ self.timeout_in_minutes = None
+
+ def startElement(self, name, attrs, connection):
+ if name == "Parameters":
+ self.parameters = ResultSet([('member', Parameter)])
+ return self.parameters
+ elif name == "Outputs":
+ self.outputs = ResultSet([('member', Output)])
+ return self.outputs
+ else:
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == 'CreationTime':
+ self.creation_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ')
+ elif name == "Description":
+ self.description = value
+ elif name == "DisableRollback":
+ self.disable_rollback = bool(value)
+ elif name == "NotificationARNs":
+ self.notification_arns = value
+ elif name == 'StackId':
+ self.stack_id = value
+ elif name == 'StackName':
+ self.stack_name = value
+ elif name == 'StackStatus':
+ self.stack_status = value
+ elif name == "StackStatusReason":
+ self.stack_status_reason = value
+ elif name == "TimeoutInMinutes":
+ self.timeout_in_minutes = int(value)
+ elif name == "member":
+ pass
+ else:
+ setattr(self, name, value)
+
+ def delete(self):
+ return self.connection.delete_stack(stack_name_or_id=self.stack_id)
+
+ def describe_events(self, next_token=None):
+ return self.connection.describe_stack_events(
+ stack_name_or_id=self.stack_id,
+ next_token=next_token
+ )
+
+ def describe_resource(self, logical_resource_id):
+ return self.connection.describe_stack_resource(
+ stack_name_or_id=self.stack_id,
+ logical_resource_id=logical_resource_id
+ )
+
+ def describe_resources(self, logical_resource_id=None,
+ physical_resource_id=None):
+ return self.connection.describe_stack_resources(
+ stack_name_or_id=self.stack_id,
+ logical_resource_id=logical_resource_id,
+ physical_resource_id=physical_resource_id
+ )
+
+ def list_resources(self, next_token=None):
+ return self.connection.list_stack_resources(
+ stack_name_or_id=self.stack_id,
+ next_token=next_token
+ )
+
+ def update(self):
+ rs = self.connection.describe_stacks(self.stack_id)
+ if len(rs) == 1 and rs[0].stack_id == self.stack_id:
+ self.__dict__.update(rs[0].__dict__)
+ else:
+ raise ValueError("%s is not a valid Stack ID or Name" %
+ self.stack_id)
+
+ def get_template(self):
+ return self.connection.get_template(stack_name_or_id=self.stack_id)
+
+class StackSummary:
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.stack_id = None
+ self.stack_status = None
+ self.stack_name = None
+ self.creation_time = None
+ self.deletion_time = None
+ self.template_description = None
+
+ def startElement(self, name, attrs, connection):
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == 'StackId':
+ self.stack_id = value
+ elif name == 'StackStatus':
+ self.stack_status = value
+ elif name == 'StackName':
+ self.stack_name = value
+ elif name == 'CreationTime':
+ self.creation_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ')
+ elif name == "DeletionTime":
+ self.deletion_time = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ')
+ elif name == 'TemplateDescription':
+ self.template_description = value
+ elif name == "member":
+ pass
+ else:
+ setattr(self, name, value)
+
+class Parameter:
+ def __init__(self, connection=None):
+ self.connection = None
+ self.key = None
+ self.value = None
+
+ def startElement(self, name, attrs, connection):
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == "ParameterKey":
+ self.key = value
+ elif name == "ParameterValue":
+ self.value = value
+ else:
+ setattr(self, name, value)
+
+ def __repr__(self):
+ return "Parameter:\"%s\"=\"%s\"" % (self.key, self.value)
+
+class Output:
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.description = None
+ self.key = None
+ self.value = None
+
+ def startElement(self, name, attrs, connection):
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == "Description":
+ self.description = value
+ elif name == "OutputKey":
+ self.key = value
+ elif name == "OutputValue":
+ self.value = value
+ else:
+ setattr(self, name, value)
+
+ def __repr__(self):
+ return "Output:\"%s\"=\"%s\"" % (self.key, self.value)
+
+class StackResource:
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.description = None
+ self.logical_resource_id = None
+ self.physical_resource_id = None
+ self.resource_status = None
+ self.resource_status_reason = None
+ self.resource_type = None
+ self.stack_id = None
+ self.stack_name = None
+ self.timestamp = None
+
+ def startElement(self, name, attrs, connection):
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == "Description":
+ self.description = value
+ elif name == "LogicalResourceId":
+ self.logical_resource_id = value
+ elif name == "PhysicalResourceId":
+ self.physical_resource_id = value
+ elif name == "ResourceStatus":
+ self.resource_status = value
+ elif name == "ResourceStatusReason":
+ self.resource_status_reason = value
+ elif name == "ResourceType":
+ self.resource_type = value
+ elif name == "StackId":
+ self.stack_id = value
+ elif name == "StackName":
+ self.stack_name = value
+ elif name == "Timestamp":
+ self.timestamp = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ')
+ else:
+ setattr(self, name, value)
+
+ def __repr__(self):
+ return "StackResource:%s (%s)" % (self.logical_resource_id,
+ self.resource_type)
+
+class StackResourceSummary:
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.last_updated_timestamp = None
+ self.logical_resource_id = None
+ self.physical_resource_id = None
+ self.resource_status = None
+ self.resource_status_reason = None
+ self.resource_type = None
+
+ def startElement(self, name, attrs, connection):
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == "LastUpdatedTimestamp":
+ self.last_updated_timestampe = datetime.strptime(value,
+ '%Y-%m-%dT%H:%M:%SZ')
+ elif name == "LogicalResourceId":
+ self.logical_resource_id = value
+ elif name == "PhysicalResourceId":
+ self.physical_resource_id = value
+ elif name == "ResourceStatus":
+ self.resource_status = value
+ elif name == "ResourceStatusReason":
+ self.resource_status_reason = value
+ elif name == "ResourceType":
+ self.resource_type = value
+ else:
+ setattr(self, name, value)
+
+ def __repr__(self):
+ return "StackResourceSummary:%s (%s)" % (self.logical_resource_id,
+ self.resource_type)
+
+class StackEvent:
+ valid_states = ("CREATE_IN_PROGRESS", "CREATE_FAILED", "CREATE_COMPLETE",
+ "DELETE_IN_PROGRESS", "DELETE_FAILED", "DELETE_COMPLETE")
+ def __init__(self, connection=None):
+ self.connection = connection
+ self.event_id = None
+ self.logical_resource_id = None
+ self.physical_resource_id = None
+ self.resource_properties = None
+ self.resource_status = None
+ self.resource_status_reason = None
+ self.resource_type = None
+ self.stack_id = None
+ self.stack_name = None
+ self.timestamp = None
+
+ def startElement(self, name, attrs, connection):
+ return None
+
+ def endElement(self, name, value, connection):
+ if name == "EventId":
+ self.event_id = value
+ elif name == "LogicalResourceId":
+ self.logical_resource_id = value
+ elif name == "PhysicalResourceId":
+ self.physical_resource_id = value
+ elif name == "ResourceProperties":
+ self.resource_properties = value
+ elif name == "ResourceStatus":
+ self.resource_status = value
+ elif name == "ResourceStatusReason":
+ self.resource_status_reason = value
+ elif name == "ResourceType":
+ self.resource_type = value
+ elif name == "StackId":
+ self.stack_id = value
+ elif name == "StackName":
+ self.stack_name = value
+ elif name == "Timestamp":
+ self.timestamp = datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ')
+ else:
+ setattr(self, name, value)
+
+ def __repr__(self):
+ return "StackEvent %s %s %s" % (self.resource_type,
+ self.logical_resource_id, self.resource_status)
« no previous file with comments | « boto/cloudformation/connection.py ('k') | boto/cloudformation/template.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698