Merge pull request #11 from denismakogon/expose-url

Provide new capability to V1 client - expose_url
This commit is contained in:
Denis Makogon 2016-12-13 00:04:11 +02:00 committed by GitHub
commit 09cc73c6fe
3 changed files with 40 additions and 0 deletions

View File

@ -233,3 +233,22 @@ class ExecuteAppRoute(command.ShowOne):
supply_auth_properties=supply_auth_properties, **data)
clmns = list(result.keys())
return clmns, utils.get_dict_properties(result, clmns)
class ExposeAppRouteURL(command.Command):
"""Deletes specific app route"""
log = logging.getLogger(__name__ + ".ExposeAppRouteURL")
def get_parser(self, prog_name):
parser = super(ExposeAppRouteURL, self).get_parser(prog_name)
parser.add_argument("app", metavar="<app-name>",
help="Specifies which app to show")
parser.add_argument("route", metavar="<route-path>",
help="App route to look for")
return parser
def take_action(self, parsed_args):
self.log.debug("take_action(%s)", parsed_args)
fc = self.app.client_manager.functions
app, route = parsed_args.app, parsed_args.route
print(fc.routes.expose_url(app, route))

View File

@ -171,3 +171,23 @@ class Routes(object):
OS_PROJECT_ID=project_id)
response = self.client.post(url, json=data)
return response.json()
@client.inject_project_id
def expose_url(self, project_id, app_name, route_path):
"""
Exposes fully-qualified function URL
:param app_name: App name
:param route_path: App route path
:return: function URL
:rtype: str
"""
endpoint = self.client.get_endpoint()
route = self.show(app_name, route_path)
is_public = route["route"].get("is_public")
url = (self.public_execution.format(
app=app_name, route_path=route_path) if is_public else
self.private_execution.format(
project_id=project_id, app=app_name,
route_path=route_path))
return "{}{}".format(endpoint, url)

View File

@ -36,6 +36,7 @@ openstack.functions.v1 =
fn_routes_delete = picassoclient.osc.v1.routes:DeleteAppRoute
fn_routes_update = picassoclient.osc.v1.routes:UpdateAppRoute
fn_routes_execute = picassoclient.osc.v1.routes:ExecuteAppRoute
fn_routes_expose-url = picassoclient.osc.v1.routes:ExposeAppRouteURL
[global]
setup-hooks =