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 """