def app(ctx, id, image, tag):
    dnac_app = ciscodnacapphosting.Api()
    if id != None:
        click.echo(f"Get App ({id})")
        if tag != None:
            app = dnac_app.get(appId=id, tag=tag)
            click.echo(
                yaml.safe_dump(app,
                               allow_unicode=True,
                               default_flow_style=False))
            return
        app = dnac_app.get(appId=id)
        click.echo(
            yaml.safe_dump(app, allow_unicode=True, default_flow_style=False))
        return
    if image != None:
        click.echo(f"Get App ({image})")
        if tag != None:
            app = dnac_app.get(image=image, tag=tag)
            click.echo(
                yaml.safe_dump(app,
                               allow_unicode=True,
                               default_flow_style=False))
            return
        app = dnac_app.get(image=image)
        click.echo(
            yaml.safe_dump(app, allow_unicode=True, default_flow_style=False))
        return
    click.echo(f"Get App list")
    apps = dnac_app.get()
    for app in apps["data"]:
        click.echo(
            yaml.safe_dump(app, allow_unicode=True, default_flow_style=False))
    return
def upload(ctx, file, categories):
    dnac_app = ciscodnacapphosting.Api()
    click.echo(f"Upload App ({file}) - {categories}")
    upload = dnac_app.upload(tar=file, categories=categories)
    click.echo(
        f"New AppId ({upload['appId']}) {upload['name']}:{upload['version']} - {categories}"
    )
    return
def delete(ctx, id, tag):
    dnac_app = ciscodnacapphosting.Api()
    if tag != None:
        click.echo(f"Delete App ({id}) - {tag}")
        delete = dnac_app.delete(appId=id, tag=tag)
        click.echo(f"Deleted App ({id}) - {tag}")
    else:
        click.echo(f"Delete App ({id})")
        delete = dnac_app.delete(appId=id)
        click.echo(f"Deleted App ({id})")
    return
def upgrade(ctx, id, tag, file, categories):
    dnac_app = ciscodnacapphosting.Api()
    if tag != None:
        click.echo(f"Upgrade App ({file}) - {tag} - {categories}")
        upgrade = dnac_app.upgrade(appId=id,
                                   tag=tag,
                                   tar=file,
                                   categories=categories)
    else:
        click.echo(f"Upgrade App ({file}) - latest - {categories}")
        upgrade = dnac_app.upgrade(appId=id, tar=file, categories=categories)
    click.echo(
        f"New AppId {upgrade['appId']} of {upgrade['name']}:{upgrade['version']}"
    )
    return
def docker(download, save):
    dnac_app = ciscodnacapphosting.Api()
    if download == None and save is False:
        download = click.prompt("Docker image")
        save = True
        click.echo(f"Downloading {download} and saving it locally")
    if download != None:
        if ":" in download:
            download = download.split(":")
            docker_download = dnac_app.docker.download(image=download[0],
                                                       tag=download[1])
        else:
            docker_download = dnac_app.docker.download(image=download,
                                                       tag="latest")
    if save is True:
        save = dnac_app.docker.save(image=docker_download["image"],
                                    tag=docker_download["tag"])
        click.echo(
            f"Download completed ({save['image']}) - saved as {save['filename']}"
        )
    return
def update(ctx, id, categories):
    dnac_app = ciscodnacapphosting.Api()
    click.echo(f"Update App ({id}) - {categories}")
    update = dnac_app.update(appId=id, categories=categories)
    click.echo(f"Update App ({update['appId']}) {update['name']} - categories")
    return
import ciscodnacapphosting

if __name__ == "__main__":
    """ Start logging if you want more details """
    import logging

    logging.basicConfig(
        format="%(asctime)s %(levelname)-8s %(message)s",
        level=logging.INFO,
        datefmt="%Y-%m-%d %H:%M:%S",
    )
    logging.info("Start Application")

    """ Instance of ciscodnacapphosting """
    dnac_app = ciscodnacapphosting.Api()

    """
    Docker API
    """

    """ Download Image """
    download = dnac_app.docker.download(image="busybox", tag="1.31")
    print(f"Image: {download['image']} Tag: {download['tag']}")
    """ Save image as tar file """
    save = dnac_app.docker.save(image=download["image"], tag=download["tag"])
    print(f"Image: {save['image']} Tag: {save['tag']} Filename: {save['filename']}")
    """ Filename == repo_image-tag.tar """

    """
    Cisco DNA Center App Hosting APIs
    """