Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vue charts #67

Merged
merged 2 commits into from
Aug 19, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 19 additions & 12 deletions backend/api/actions/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,21 @@
from datetime import datetime
import docker


def get_apps():
apps_list = []
dclient = docker.from_env()
apps = dclient.containers.list(all=True)
for app in apps:
attrs=app.attrs
attrs = app.attrs
attrs.update(conv2dict('name', app.name))
attrs.update(conv2dict('ports', app.ports))
attrs.update(conv2dict('short_id', app.short_id))
apps_list.append(attrs)

return apps_list


def get_app(app_name):
dclient = docker.from_env()
app = dclient.containers.get(app_name)
Expand All @@ -31,6 +33,7 @@ def get_app(app_name):

return attrs


def get_app_processes(app_name):
dclient = docker.from_env()
app = dclient.containers.get(app_name)
Expand All @@ -40,6 +43,7 @@ def get_app_processes(app_name):
else:
return None


def get_app_logs(app_name):
dclient = docker.from_env()
app = dclient.containers.get(app_name)
Expand All @@ -48,25 +52,27 @@ def get_app_logs(app_name):
else:
return None


def deploy_app(template: schemas.DeployForm):
try:
launch = launch_app(
template.name,
template.image,
conv_restart2data(template.restart_policy),
conv_ports2data(template.ports),
conv_volumes2data(template.volumes),
conv_env2data(template.env),
conv_sysctls2data(template.sysctls),
conv_caps2data(template.cap_add)
template.name,
template.image,
conv_restart2data(template.restart_policy),
conv_ports2data(template.ports),
conv_volumes2data(template.volumes),
conv_env2data(template.env),
conv_sysctls2data(template.sysctls),
conv_caps2data(template.cap_add)
)


except Exception as exc: raise
except Exception as exc:
raise
print('done deploying')

return schemas.DeployLogs(logs=launch.logs())


def launch_app(name, image, restart_policy, ports, volumes, env, sysctls, caps):
dclient = docker.from_env()
lauch = dclient.containers.run(
Expand All @@ -89,6 +95,7 @@ def launch_app(name, image, restart_policy, ports, volumes, env, sysctls, caps):
Env: {env}''')
return lauch


def app_action(app_name, action):
err = None
dclient = docker.from_env()
Expand All @@ -105,4 +112,4 @@ def app_action(app_name, action):
except Exception as exc:
err = exc.explination
apps_list = get_apps()
return apps_list
return apps_list
2 changes: 1 addition & 1 deletion backend/api/auth/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from .auth import *
from .auth import *
9 changes: 6 additions & 3 deletions backend/api/auth/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,18 @@
from fastapi_users.password import get_password_hash

from ..settings import Settings
settings=Settings()
settings = Settings()

SECRET = settings.SECRET_KEY

auth_backends = []

cookie_authentication = CookieAuthentication(secret=SECRET, lifetime_seconds=3600, cookie_secure=False)
cookie_authentication = CookieAuthentication(
secret=SECRET, lifetime_seconds=3600, cookie_secure=False)

auth_backends.append(cookie_authentication)


class User(models.BaseUser):
pass

Expand Down Expand Up @@ -71,5 +73,6 @@ class UserTable(Base, SQLAlchemyBaseUserTable):
get_auth_router = fastapi_users.get_auth_router
get_password_hash = get_password_hash


async def user_create(UD):
await fastapi_users.db.create(UD)
await fastapi_users.db.create(UD)
2 changes: 1 addition & 1 deletion backend/api/db/crud/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from .templates import *
from .settings import *
from .settings import *
18 changes: 10 additions & 8 deletions backend/api/db/crud/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,28 @@
import sqlite3
import json


def export_settings(db: Session):
file_export = {}
file_export['templates'] = db.query(models.Template).all()
file_export['variables'] = db.query(models.TemplateVariables).all()
return(file_export)


def import_settings(db: Session, upload):
import_file = upload.file.read()
decoded_import = import_file.decode('utf-8')
import_contents = json.loads(decoded_import)

_templates = import_contents['templates']
_variables = import_contents['variables']

_template_list = []
_var_list = []

for template in _templates:
template_model = models.Template(id = template['id'], title=template['title'], url=template['url'], updated_at=datetime.fromisoformat(template['updated_at']), created_at=datetime.fromisoformat(template['created_at']))
template_model = models.Template(id=template['id'], title=template['title'], url=template['url'], updated_at=datetime.fromisoformat(
template['updated_at']), created_at=datetime.fromisoformat(template['created_at']))
for item in template['items']:
_item = models.TemplateItem(**item)
template_model.items.append(_item)
Expand All @@ -36,16 +39,15 @@ def import_settings(db: Session, upload):
for variable in _variables:
variable_model = models.TemplateVariables(**variable)
_var_list.append(variable_model)
#Remove Existing

# Remove Existing
db.query(models.TemplateVariables).delete()
db.query(models.Template).delete()
db.query(models.TemplateItem).delete()


#Add New
# Add New
db.add_all(_template_list)
db.add_all(_var_list)
db.commit()
response = { 'success': 'Import Successful'}
return(response)
response = {'success': 'Import Successful'}
return(response)
94 changes: 54 additions & 40 deletions backend/api/db/crud/templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,52 +9,61 @@
import urllib.request
import json

### Templates
# Templates


def get_templates(db: Session):
return db.query(models.Template).all()


def get_template(db: Session, url: str):
return db.query(models.Template).filter(models.Template.url == url).first()


def get_template_by_id(db: Session, id: int):
return db.query(models.Template).filter(models.Template.id == id).first()


def get_template_items(db: Session, template_id: int):
return db.query(models.TemplateItem).filter(models.TemplateItem.template_id == template_id).all()


def delete_template(db: Session, template_id: int):
_template = db.query(models.Template).filter(models.Template.id == template_id).first()
_template = db.query(models.Template).filter(
models.Template.id == template_id).first()
db.delete(_template)
db.commit()
return _template


def add_template(db: Session, template: models.containers.Template):
try:
# Opens the JSON and iterate over the content.
_template = models.containers.Template(title = template.title, url = template.url)
# Opens the JSON and iterate over the content.
_template = models.containers.Template(
title=template.title, url=template.url)
with urllib.request.urlopen(template.url) as file:
for entry in json.load(file):

ports = conv_ports2dict(entry.get('ports', []))
sysctls = conv_sysctls2dict(entry.get('sysctls', []))

# Optional use classmethod from_dict
template_content = models.containers.TemplateItem(
type = int(entry['type']),
title = entry['title'],
platform = entry['platform'],
description = entry.get('description', ''),
name = entry.get('name', entry['title'].lower()),
logo = entry.get('logo', ''), # default logo here!
image = entry.get('image', ''),
notes = entry.get('note', ''),
categories = entry.get('categories', ''),
restart_policy = entry.get('restart_policy'),
ports = ports,
volumes = entry.get('volumes', []),
env = entry.get('env', []),
sysctls = sysctls,
cap_add = entry.get('cap_add', [])
type=int(entry['type']),
title=entry['title'],
platform=entry['platform'],
description=entry.get('description', ''),
name=entry.get('name', entry['title'].lower()),
logo=entry.get('logo', ''), # default logo here!
image=entry.get('image', ''),
notes=entry.get('note', ''),
categories=entry.get('categories', ''),
restart_policy=entry.get('restart_policy'),
ports=ports,
volumes=entry.get('volumes', []),
env=entry.get('env', []),
sysctls=sysctls,
cap_add=entry.get('cap_add', [])
)
_template.items.append(template_content)
except (OSError, TypeError, ValueError) as err:
Expand All @@ -73,8 +82,10 @@ def add_template(db: Session, template: models.containers.Template):

return get_template(db=db, url=template.url)


def refresh_template(db: Session, template_id: id):
template = db.query(models.Template).filter(models.Template.id == template_id).first()
template = db.query(models.Template).filter(
models.Template.id == template_id).first()

items = []
try:
Expand All @@ -85,21 +96,21 @@ def refresh_template(db: Session, template_id: id):
sysctls = conv_sysctls2dict(entry.get('sysctls', []))

item = models.TemplateItem(
type = int(entry['type']),
title = entry['title'],
platform = entry['platform'],
description = entry.get('description', ''),
name = entry.get('name', entry['title'].lower()),
logo = entry.get('logo', ''), # default logo here!
image = entry.get('image', ''),
notes = entry.get('note', ''),
categories = entry.get('categories', ''),
restart_policy = entry.get('restart_policy'),
ports = ports,
volumes = entry.get('volumes', []),
env = entry.get('env', []),
sysctls = sysctls,
cap_add = entry.get('cap_add', [])
type=int(entry['type']),
title=entry['title'],
platform=entry['platform'],
description=entry.get('description', ''),
name=entry.get('name', entry['title'].lower()),
logo=entry.get('logo', ''), # default logo here!
image=entry.get('image', ''),
notes=entry.get('note', ''),
categories=entry.get('categories', ''),
restart_policy=entry.get('restart_policy'),
ports=ports,
volumes=entry.get('volumes', []),
env=entry.get('env', []),
sysctls=sysctls,
cap_add=entry.get('cap_add', [])
)
items.append(item)
except Exception as exc:
Expand All @@ -110,7 +121,6 @@ def refresh_template(db: Session, template_id: id):
# make_transient(template)
# db.commit()


template.updated_at = datetime.utcnow()
template.items = items

Expand All @@ -125,18 +135,21 @@ def refresh_template(db: Session, template_id: id):

return template


def read_app_template(db, app_id):
try:
template_item = db.query(models.TemplateItem).filter(models.TemplateItem.id == app_id).first()
template_item = db.query(models.TemplateItem).filter(
models.TemplateItem.id == app_id).first()
return template_item
except Exception as exc:
print('App template not found')
raise


def set_template_variables(db: Session, new_variables: models.TemplateVariables):
try:
template_vars = db.query(models.TemplateVariables).all()

variables = []
t_vars = new_variables

Expand All @@ -156,7 +169,8 @@ def set_template_variables(db: Session, new_variables: models.TemplateVariables)
return new_template_variables

except IntegrityError as err:
abort(400, { 'error': 'Bad Request' })
abort(400, {'error': 'Bad Request'})


def read_template_variables(db: Session):
return db.query(models.TemplateVariables).all()
Loading