Connecting app logs to workflow
Changing the solumclient to get logs from workflow resource instead of assembly resource. Change-Id: Idf899d99bf5cd71128304446035107ab6f6d4f0f Closes-Bug: #1498181
This commit is contained in:
@@ -980,6 +980,9 @@ Available commands:
|
|||||||
|
|
||||||
solum workflow show <APP_NAME> <WORKFLOW_ID>
|
solum workflow show <APP_NAME> <WORKFLOW_ID>
|
||||||
Print the details of a workflow.
|
Print the details of a workflow.
|
||||||
|
|
||||||
|
solum workflow logs <APP_NAME> <WORKFLOW_ID>
|
||||||
|
List all the logs of a given workflow.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def list(self):
|
def list(self):
|
||||||
@@ -1012,6 +1015,42 @@ Available commands:
|
|||||||
'source', 'id', 'created_at', 'updated_at', 'status']
|
'source', 'id', 'created_at', 'updated_at', 'status']
|
||||||
self._print_dict(wf, fields, wrap=72)
|
self._print_dict(wf, fields, wrap=72)
|
||||||
|
|
||||||
|
def logs(self):
|
||||||
|
"""Get Logs."""
|
||||||
|
self.parser.add_argument('app',
|
||||||
|
help="App uuid or name")
|
||||||
|
self.parser.add_argument('workflow',
|
||||||
|
help="Workflow id or uuid")
|
||||||
|
args = self.parser.parse_args()
|
||||||
|
revision = args.workflow
|
||||||
|
try:
|
||||||
|
revision = int(revision, 10)
|
||||||
|
except ValueError:
|
||||||
|
revision = args.workflow
|
||||||
|
app = self.client.apps.find(name_or_id=args.app)
|
||||||
|
|
||||||
|
wfman = cli_wf.WorkflowManager(self.client, app_id=app.id)
|
||||||
|
loglist = wfman.logs(revision_or_id=revision)
|
||||||
|
fields = ["resource_uuid"]
|
||||||
|
for log in loglist:
|
||||||
|
strategy_info = json.loads(log.strategy_info)
|
||||||
|
if log.strategy == 'local':
|
||||||
|
if 'local_storage' not in fields:
|
||||||
|
fields.append('local_storage')
|
||||||
|
log.local_storage = log.location
|
||||||
|
elif log.strategy == 'swift':
|
||||||
|
if 'swift_container' not in fields:
|
||||||
|
fields.append('swift_container')
|
||||||
|
if 'swift_path' not in fields:
|
||||||
|
fields.append('swift_path')
|
||||||
|
log.swift_container = strategy_info['container']
|
||||||
|
log.swift_path = log.location
|
||||||
|
else:
|
||||||
|
if 'location' not in fields:
|
||||||
|
fields.append('location')
|
||||||
|
|
||||||
|
self._print_list(loglist, fields)
|
||||||
|
|
||||||
|
|
||||||
class OldAppCommands(cli_utils.CommandsBase):
|
class OldAppCommands(cli_utils.CommandsBase):
|
||||||
"""Commands for working with applications.
|
"""Commands for working with applications.
|
||||||
|
@@ -24,6 +24,11 @@ class Workflow(apiclient_base.Resource):
|
|||||||
return "<Workflow %s>" % self._info
|
return "<Workflow %s>" % self._info
|
||||||
|
|
||||||
|
|
||||||
|
class UserLog(apiclient_base.Resource):
|
||||||
|
def __repr__(self):
|
||||||
|
return "<Log %s>" % self._info
|
||||||
|
|
||||||
|
|
||||||
class WorkflowManager(solum_base.CrudManager, solum_base.FindMixin):
|
class WorkflowManager(solum_base.CrudManager, solum_base.FindMixin):
|
||||||
resource_class = Workflow
|
resource_class = Workflow
|
||||||
collection_key = 'workflows'
|
collection_key = 'workflows'
|
||||||
@@ -50,6 +55,22 @@ class WorkflowManager(solum_base.CrudManager, solum_base.FindMixin):
|
|||||||
return (super(WorkflowManager, self).get(
|
return (super(WorkflowManager, self).get(
|
||||||
base_url=self.base_url, **kwargs))
|
base_url=self.base_url, **kwargs))
|
||||||
|
|
||||||
|
def logs(self, **kwargs):
|
||||||
|
self.resource_class = UserLog
|
||||||
|
url = self.build_url(self.base_url, **kwargs)
|
||||||
|
rev_or_uuid = kwargs['revision_or_id']
|
||||||
|
try:
|
||||||
|
if uuidutils.is_uuid_like(rev_or_uuid):
|
||||||
|
workflow_id = rev_or_uuid
|
||||||
|
else:
|
||||||
|
wf = self.find(**kwargs)
|
||||||
|
workflow_id = wf.id
|
||||||
|
except exceptions.NoUniqueMatch:
|
||||||
|
raise exc.NotUnique(resource='Workflow')
|
||||||
|
|
||||||
|
url += '/%s/logs/' % workflow_id
|
||||||
|
return self._list(url)
|
||||||
|
|
||||||
def find(self, **kwargs):
|
def find(self, **kwargs):
|
||||||
if 'workflow_id' in kwargs:
|
if 'workflow_id' in kwargs:
|
||||||
return (super(WorkflowManager, self).get(
|
return (super(WorkflowManager, self).get(
|
||||||
|
Reference in New Issue
Block a user