#!/usr/bin/env python # # Copyright 2019 Banco Bilbao Vizcaya Argentaria, S.A. # # 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. # import sys import click import requests @click.group() def kroute(): pass @kroute.command() @click.option("-c", "--command", nargs=1) @click.option("-e", "--entrypoint", default="/bin/sh -c") @click.option("-X", "--method", default="GET") @click.option("--url", envvar='KAPOW_URL') @click.argument("url_pattern", nargs=1) @click.argument("command_file", required=False) def add(url_pattern, entrypoint, command, method, url, command_file): if command: # Command is given inline source = command elif command_file is None: # No command source = "" elif command_file == '-': # Read commands from stdin source = sys.stdin.read() else: # Read commands from a file with open(command_file, 'r', encoding='utf-8') as handler: source = handler.read() response = requests.post(f"{url}/routes", json={"method": method, "url_pattern": url_pattern, "entrypoint": entrypoint, "command": source}) response.raise_for_status() print(response.json()) @kroute.command() @click.option("--url", envvar='KAPOW_URL') @click.argument("route-id") def remove(route_id, url): response = requests.delete(f"{url}/routes/{route_id}") response.raise_for_status() print(response.json()) if __name__ == '__main__': kroute()