Bryan Strassner 95784c03ed Fix shipyard encoding of status response
Fixes 2 issues with getting configdocs. First, this updates the
cli to use a more simple optional argument rather than consuming
all following arguments on get configdocs commands. Second, this
fixes the API to encode the response into json before trying to
return it, preventing an exception on a configdocs status GET.

Change-Id: Ia24c35a0261bc93d7cb8f8258bec682721064f3c
2018-01-22 18:52:16 -06:00

172 lines
5.2 KiB
Python

# 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.
# Get command
import click
from shipyard_client.cli.get.actions import GetActions
from shipyard_client.cli.get.actions import GetConfigdocs
from shipyard_client.cli.get.actions import GetConfigdocsStatus
from shipyard_client.cli.get.actions import GetRenderedConfigdocs
from shipyard_client.cli.get.actions import GetWorkflows
@click.group()
@click.pass_context
def get(ctx):
"""
Get the actions, confidocs, or renderedconfigdocs. \n
For more information on get commands
please enter the get command followed by '--help' \n
Example: shipyard get actions --help
"""
DESC_ACTIONS = """
COMMAND: actions \n
DESCRIPTION: Lists the actions that have been invoked. \n
FORMAT: shipyard get actions \n
EXAMPLE: shipyard get actions
"""
SHORT_DESC_ACTIONS = "Lists the actions that have been invoked."
@get.command(name='actions', help=DESC_ACTIONS, short_help=SHORT_DESC_ACTIONS)
@click.pass_context
def get_actions(ctx):
click.echo(GetActions(ctx).invoke_and_return_resp())
DESC_CONFIGDOCS = """
COMMAND: configdocs \n
DESCRIPTION: Retrieve documents loaded into Shipyard, either committed or
from the Shipyard Buffer. \n
FORMAT: shipyard get configdocs <collection> [--committed | --buffer] \n
EXAMPLE: shipyard get configdocs design
"""
SHORT_DESC_CONFIGDOCS = ("Retrieve documents loaded into Shipyard, either "
"committed or from the Shipyard Buffer.")
@get.command(
name='configdocs', help=DESC_CONFIGDOCS, short_help=SHORT_DESC_CONFIGDOCS)
@click.argument('collection', required=False)
@click.option(
'--committed',
'-c',
flag_value='committed',
help='Retrieve the documents that have last been committed for this '
'collection')
@click.option(
'--buffer',
'-b',
flag_value='buffer',
help='Retrive the documents that have been loaded into Shipyard since the '
'prior commit. If no documents have been loaded into the buffer for this '
'collection, this will return an empty response (default)')
@click.pass_context
def get_configdocs(ctx, collection, buffer, committed):
if collection:
if buffer and committed:
ctx.fail(
'You must choose whether to retrive the committed OR from the '
'Shipyard Buffer with --committed or --buffer. ')
if committed:
version = 'committed'
else:
version = 'buffer'
click.echo(
GetConfigdocs(ctx, collection, version).invoke_and_return_resp())
else:
click.echo(GetConfigdocsStatus(ctx).invoke_and_return_resp())
DESC_RENDEREDCONFIGDOCS = """
COMMAND: renderedconfigdocs \n
DESCRIPTION: Retrieve the rendered version of documents loaded into
Shipyard. Rendered documents are the "final" version of the documents after
applying Deckhand layering and substitution. \n
FORMAT: shipyard get renderedconfigdocs [--committed | --buffer] \n
EXAMPLE: shipyard get renderedconfigdocs
"""
SHORT_DESC_RENDEREDCONFIGDOCS = (
"Retrieve the rendered version of documents "
"loaded into Shipyard. Rendered documents are "
"the 'final' version of the documents after "
"applying Deckhand layering and substitution.")
@get.command(
name='renderedconfigdocs',
help=DESC_RENDEREDCONFIGDOCS,
short_help=SHORT_DESC_RENDEREDCONFIGDOCS)
@click.option(
'--committed',
'-c',
flag_value='committed',
help='Retrieve the documents that have last been committed.')
@click.option(
'--buffer',
'-b',
flag_value='buffer',
help='Retrieve the documents that have been loaded into Shipyard since the'
' prior commit. (default)')
@click.pass_context
def get_renderedconfigdocs(ctx, buffer, committed):
if buffer and committed:
ctx.fail(
'You must choose whether to retrive the committed documents OR the'
' docutments in the Shipyard Buffer with --committed or --buffer.')
if committed:
version = 'committed'
else:
version = 'buffer'
click.echo(GetRenderedConfigdocs(ctx, version).invoke_and_return_resp())
DESC_WORKFLOWS = """
COMMAND: workflows \n
DESCRIPTION: Lists the workflows from airflow. \n
FORMAT: shipyard get workflows [since]\n
EXAMPLE: \n
shipyard get workflows \n
shipyard get workflows --since=2017-11-09T15:02:18Z
"""
SHORT_DESC_WORKFLOWS = "Lists the workflows from airflow."
@get.command(
name='workflows', help=DESC_WORKFLOWS, short_help=SHORT_DESC_WORKFLOWS)
@click.option(
'--since',
help=('A boundary in the past within which to retrieve results.'
'Default is 30 days in the past.'))
@click.pass_context
def get_workflows(ctx, since):
click.echo(GetWorkflows(ctx, since).invoke_and_return_resp())