Add server version api

This commit is contained in:
allegroai 2019-07-09 00:01:16 +03:00
parent b5cc858494
commit 76418eec1b
2 changed files with 83 additions and 22 deletions

20
server/config/info.py Normal file
View File

@ -0,0 +1,20 @@
from functools import lru_cache
from pathlib import Path
root = Path(__file__).parent.parent
@lru_cache()
def get_build_number():
try:
return (root / "BUILD").read_text().strip()
except FileNotFoundError:
return ""
@lru_cache()
def get_version():
try:
return (root / "VERSION").read_text().strip()
except FileNotFoundError:
return ""

View File

@ -1,11 +1,14 @@
from datetime import datetime from datetime import datetime
import attr
from furl import furl from furl import furl
from database.model.auth import User, Credentials from database.model.user import User
from database.model.auth import User as AuthUser, Credentials
from config import config from config import config
from database.model.auth import Role from database.model.auth import Role
from database.model.company import Company from database.model.company import Company
from elastic.apply_mappings import apply_mappings_to_host from elastic.apply_mappings import apply_mappings_to_host
from service_repo.auth.fixed_user import FixedUser
log = config.logger(__file__) log = config.logger(__file__)
@ -44,22 +47,28 @@ def _ensure_company():
return company_id return company_id
def _ensure_user(user_data, company_id): def _ensure_auth_user(user_data, company_id):
user = User.objects( ensure_credentials = {"key", "secret"}.issubset(user_data.keys())
credentials__match=Credentials(key=user_data["key"], secret=user_data["secret"]) if ensure_credentials:
).first() user = AuthUser.objects(
if user: credentials__match=Credentials(
return user.id key=user_data["key"], secret=user_data["secret"]
)
).first()
if user:
return user.id
log.info(f"Creating user: {user_data['name']}") log.info(f"Creating user: {user_data['name']}")
user = User( user = AuthUser(
id=f"__{user_data['name']}__", id=user_data.get("id", f"__{user_data['name']}__"),
name=user_data["name"], name=user_data["name"],
company=company_id, company=company_id,
role=user_data["role"], role=user_data["role"],
email=user_data["email"], email=user_data["email"],
created=datetime.utcnow(), created=datetime.utcnow(),
credentials=[Credentials(key=user_data["key"], secret=user_data["secret"])], credentials=[Credentials(key=user_data["key"], secret=user_data["secret"])]
if ensure_credentials
else None,
) )
user.save() user.save()
@ -67,16 +76,48 @@ def _ensure_user(user_data, company_id):
return user.id return user.id
def init_mongo_data(): def _ensure_user(user: FixedUser, company_id: str):
company_id = _ensure_company() if User.objects(id=user.user_id).first():
users = [ return
{"name": "apiserver", "role": Role.system, "email": "apiserver@example.com"},
{"name": "webserver", "role": Role.system, "email": "webserver@example.com"},
{"name": "tests", "role": Role.user, "email": "tests@example.com"},
]
for user in users: data = attr.asdict(user)
credentials = config.get(f"secure.credentials.{user['name']}") data["id"] = user.user_id
user["key"] = credentials.user_key data["email"] = f"{user.user_id}@example.com"
user["secret"] = credentials.user_secret data["role"] = Role.user
_ensure_user(user, company_id)
_ensure_auth_user(
user_data=data,
company_id=company_id,
)
given_name, _, family_name = user.name.partition(" ")
User(
id=user.user_id,
company=company_id,
name=user.name,
given_name=given_name,
family_name=family_name,
).save()
def init_mongo_data():
try:
company_id = _ensure_company()
users = [
{"name": "apiserver", "role": Role.system, "email": "apiserver@example.com"},
{"name": "webserver", "role": Role.system, "email": "webserver@example.com"},
{"name": "tests", "role": Role.user, "email": "tests@example.com"},
]
for user in users:
credentials = config.get(f"secure.credentials.{user['name']}")
user["key"] = credentials.user_key
user["secret"] = credentials.user_secret
_ensure_auth_user(user, company_id)
if FixedUser.enabled():
for user in FixedUser.from_config():
_ensure_user(user, company_id)
except Exception as ex:
pass