Action lifecycle mapping include unknown
When a dag_status is not in the known list of statuses, indicate unknown, and include the returned status parenthetically. Change-Id: I42a083433e26c6f48aa4ef8195f0df03d1567d71
This commit is contained in:
parent
2a826d5a43
commit
ccebbeb5ef
1
.gitignore
vendored
1
.gitignore
vendored
@ -103,6 +103,7 @@ ENV/
|
|||||||
|
|
||||||
# Generated bogus docs
|
# Generated bogus docs
|
||||||
ChangeLog
|
ChangeLog
|
||||||
|
AUTHORS
|
||||||
|
|
||||||
# build/lint artifacts
|
# build/lint artifacts
|
||||||
/charts/shipyard/charts
|
/charts/shipyard/charts
|
||||||
|
14
AUTHORS
14
AUTHORS
@ -1,14 +0,0 @@
|
|||||||
Alan Meadows <alan.meadows@gmail.com>
|
|
||||||
Anthony Lin <anthony.jclin@gmail.com>
|
|
||||||
Bryan Strassner <bryan.strassner@gmail.com>
|
|
||||||
Felipe Monteiro <felipe.monteiro@att.com>
|
|
||||||
Hassan Kaous <hkyq8@mst.edu>
|
|
||||||
Mark Burnett <mark.m.burnett@gmail.com>
|
|
||||||
One-Fine-Day <vd789v@att.com>
|
|
||||||
Pete Birley <pete@port.direct>
|
|
||||||
Rodolfo <rp2723@att.com>
|
|
||||||
Scott Hussey <sh8121@att.com>
|
|
||||||
Stacey Fletcher <staceylynnfletcher@gmail.com>
|
|
||||||
Tin Lam <tin@irrational.io>
|
|
||||||
Vamsi Krishna Surapureddi <vamsi.skrishna@gmail.com>
|
|
||||||
eanylin <anthony.jclin@gmail.com>
|
|
@ -11,9 +11,7 @@
|
|||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
"""
|
""" Common methods for use by action api classes as necessary """
|
||||||
Common methods for use by action api classes as necessary
|
|
||||||
"""
|
|
||||||
|
|
||||||
DAG_STATE_MAPPING = {
|
DAG_STATE_MAPPING = {
|
||||||
'QUEUED': 'Pending',
|
'QUEUED': 'Pending',
|
||||||
@ -32,18 +30,17 @@ DAG_STATE_MAPPING = {
|
|||||||
|
|
||||||
|
|
||||||
def determine_lifecycle(dag_status=None):
|
def determine_lifecycle(dag_status=None):
|
||||||
"""
|
""" Convert a dag_status to an action_lifecycle value """
|
||||||
Convert a dag_status to an action_lifecycle value
|
|
||||||
"""
|
|
||||||
if dag_status is None:
|
if dag_status is None:
|
||||||
dag_status = 'NONE'
|
dag_status = 'NONE'
|
||||||
return DAG_STATE_MAPPING.get(dag_status.upper())
|
lifecycle = DAG_STATE_MAPPING.get(dag_status.upper())
|
||||||
|
if lifecycle is None:
|
||||||
|
lifecycle = 'Unknown ({})'.format(dag_status)
|
||||||
|
return lifecycle
|
||||||
|
|
||||||
|
|
||||||
def format_action_steps(action_id, steps):
|
def format_action_steps(action_id, steps):
|
||||||
"""
|
""" Converts a list of action step db records to desired format """
|
||||||
Converts a list of action step database records to desired format
|
|
||||||
"""
|
|
||||||
if not steps:
|
if not steps:
|
||||||
return []
|
return []
|
||||||
steps_response = []
|
steps_response = []
|
||||||
@ -55,9 +52,7 @@ def format_action_steps(action_id, steps):
|
|||||||
|
|
||||||
|
|
||||||
def format_step(action_id, step, index):
|
def format_step(action_id, step, index):
|
||||||
"""
|
""" reformat a step (dictionary) into a common response format """
|
||||||
reformat a step (dictionary) into a common response format
|
|
||||||
"""
|
|
||||||
return {
|
return {
|
||||||
'url': '/actions/{}/steps/{}'.format(action_id, step.get('task_id')),
|
'url': '/actions/{}/steps/{}'.format(action_id, step.get('task_id')),
|
||||||
'state': step.get('state'),
|
'state': step.get('state'),
|
||||||
|
30
tests/unit/control/test_action_helper.py
Normal file
30
tests/unit/control/test_action_helper.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Copyright 2017 AT&T Intellectual Property. All other rights reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
""" Tests for the action_helper.py module """
|
||||||
|
|
||||||
|
from shipyard_airflow.control.action import action_helper
|
||||||
|
|
||||||
|
|
||||||
|
def test_determine_lifecycle():
|
||||||
|
dag_statuses = [
|
||||||
|
{'input': 'queued', 'expected': 'Pending'},
|
||||||
|
{'input': 'ShUTdown', 'expected': 'Failed'},
|
||||||
|
{'input': 'RUNNING', 'expected': 'Processing'},
|
||||||
|
{'input': 'None', 'expected': 'Pending'},
|
||||||
|
{'input': None, 'expected': 'Pending'},
|
||||||
|
{'input': 'bogusBroken', 'expected': 'Unknown (bogusBroken)'},
|
||||||
|
]
|
||||||
|
for status_pair in dag_statuses:
|
||||||
|
assert(status_pair['expected'] ==
|
||||||
|
action_helper.determine_lifecycle(status_pair['input']))
|
Loading…
Reference in New Issue
Block a user