heat api/engine : Reworked approach to aligning with AWS date format

Modifies heat internal default date-string representation to match AWS spec
Note heat.common.utils.strtime default format loses sub-second precision
Avoids having to regex mangle datetime string format
ref #125

Change-Id: I1347e82b1c3ccac5eac7c85858cf8009723547c2
Signed-off-by: Steven Hardy <shardy@redhat.com>
changes/88/188/1
Steven Hardy 10 years ago
parent f7f4755076
commit 614f7868c4
  1. 11
      heat/api/v1/stacks.py
  2. 2
      heat/common/utils.py
  3. 9
      heat/engine/manager.py

@ -49,13 +49,6 @@ class StackController(object):
def __init__(self, options):
self.options = options
# convert date so it is aligned with aws date spec
# engine returns UTC date "2012-06-15 18:24:32"
# AWS format is "2012-06-15T18:24:32Z"
def _to_api_date(self, db_date):
return re.sub("([0-9]+-[0-9]+-[0-9]+) ([0-9]+:[0-9]+:[0-9]+)$",
"\\1T\\2Z", str(db_date))
def list(self, req):
"""
Returns the following information for all stacks:
@ -73,7 +66,6 @@ class StackController(object):
summaries = results['StackSummaries']
if stack_list is not None:
for s in stack_list['stacks']:
s['CreationTime'] = self._to_api_date(s['CreationTime'])
summaries.append(s)
return res
@ -97,9 +89,6 @@ class StackController(object):
res = {'DescribeStacksResult': {'Stacks': []}}
stacks = res['DescribeStacksResult']['Stacks']
for s in stack_list['stacks']:
s['CreationTime'] = self._to_api_date(s['CreationTime'])
s['LastUpdatedTimestamp'] = self._to_api_date(
s['LastUpdatedTimestamp'])
stacks.append(s)
return res

@ -32,7 +32,7 @@ from eventlet.green import subprocess
from heat.openstack.common import exception
from heat.openstack.common import timeutils
PERFECT_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%f"
PERFECT_TIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ"
def chunkreadable(iter, chunk_size=65536):

@ -27,6 +27,7 @@ import eventlet
from heat import manager
from heat.db import api as db_api
from heat.common import config
from heat.common import utils as heat_utils
from heat.engine import parser
from heat.engine import resources
from heat.engine import watchrule
@ -150,7 +151,7 @@ class EngineManager(manager.Manager):
mem = {}
mem['StackId'] = s.id
mem['StackName'] = s.name
mem['CreationTime'] = str(s.created_at)
mem['CreationTime'] = heat_utils.strtime(s.created_at)
mem['TemplateDescription'] = ps.t.get('Description',
'No description')
mem['StackStatus'] = ps.t.get('stack_status', 'unknown')
@ -176,8 +177,8 @@ class EngineManager(manager.Manager):
mem = {}
mem['StackId'] = s.id
mem['StackName'] = s.name
mem['CreationTime'] = str(s.created_at)
mem['LastUpdatedTimestamp'] = str(s.updated_at)
mem['CreationTime'] = heat_utils.strtime(s.created_at)
mem['LastUpdatedTimestamp'] = heat_utils.strtime(s.updated_at)
mem['NotificationARNs'] = 'TODO'
mem['Parameters'] = ps.t['Parameters']
mem['TimeoutInMinutes'] = ps.t.get('Timeout', '60')
@ -255,7 +256,7 @@ class EngineManager(manager.Manager):
greenpool.spawn_n(stack.create)
return {'stack': {'id': new_s.id, 'name': new_s.name,
'CreationTime': str(new_s.created_at)}}
'CreationTime': heat_utils.strtime(new_s.created_at)}}
def validate_template(self, context, template, params):
"""

Loading…
Cancel
Save