From 149e7dd0192e89a7784b2bbf58f9a0ee0f243fb6 Mon Sep 17 00:00:00 2001 From: Ivan Gromov Date: Mon, 13 Jul 2020 01:22:28 +0500 Subject: [PATCH] Draft for GCE --- app/server.py | 23 +++++++++++++- app/static/provider-gce.vue | 63 +++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 app/static/provider-gce.vue diff --git a/app/server.py b/app/server.py index b2d68d9..6dba79c 100644 --- a/app/server.py +++ b/app/server.py @@ -1,12 +1,16 @@ import asyncio +import json + import yaml import boto3 from os.path import join, dirname from aiohttp import web import concurrent.futures import sys -from playbook import PlaybookCLI +from google.auth.transport.requests import AuthorizedSession +from google.oauth2 import service_account +from playbook import PlaybookCLI routes = web.RouteTableDef() PROJECT_ROOT = dirname(dirname(__file__)) @@ -87,6 +91,7 @@ async def post_config(request): f.write(config) return web.json_response({'ok': True}) + @routes.post('/exit') async def post_exit(_): if task_future and task_future.done(): @@ -94,6 +99,7 @@ async def post_exit(_): else: sys.exit(1) + @routes.post('/lightsail_regions') async def post_exit(request): data = await request.json() @@ -107,6 +113,7 @@ async def post_exit(request): ) return web.json_response(response) + @routes.post('/ec2_regions') async def post_exit(request): data = await request.json() @@ -119,6 +126,20 @@ async def post_exit(request): return web.json_response(response) +@routes.post('/gce_regions') +async def post_exit(request): + #data = await request.json() + gce_config_file = 'configs/gce.json' # 'data.get('gce_config_file') + project_id = json.loads(open(gce_config_file, 'r').read())['project_id'] + + response = AuthorizedSession( + service_account.Credentials.from_service_account_file(gce_config_file).with_scopes( + ['https://www.googleapis.com/auth/compute'])).get( + 'https://www.googleapis.com/compute/v1/projects/{project_id}/regions'.format(project_id=project_id)) + + return web.json_response(json.loads(response.content)) + + app = web.Application() app.router.add_routes(routes) app.add_routes([web.static('/static', join(PROJECT_ROOT, 'app', 'static'))]) diff --git a/app/static/provider-gce.vue b/app/static/provider-gce.vue new file mode 100644 index 0000000..e202142 --- /dev/null +++ b/app/static/provider-gce.vue @@ -0,0 +1,63 @@ + + +