mirror of
https://github.com/clearml/clearml-server
synced 2025-03-03 10:43:10 +00:00
Add server version api
This commit is contained in:
parent
b5cc858494
commit
76418eec1b
20
server/config/info.py
Normal file
20
server/config/info.py
Normal 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 ""
|
@ -1,11 +1,14 @@
|
||||
from datetime import datetime
|
||||
import attr
|
||||
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 database.model.auth import Role
|
||||
from database.model.company import Company
|
||||
from elastic.apply_mappings import apply_mappings_to_host
|
||||
from service_repo.auth.fixed_user import FixedUser
|
||||
|
||||
log = config.logger(__file__)
|
||||
|
||||
@ -44,22 +47,28 @@ def _ensure_company():
|
||||
return company_id
|
||||
|
||||
|
||||
def _ensure_user(user_data, company_id):
|
||||
user = User.objects(
|
||||
credentials__match=Credentials(key=user_data["key"], secret=user_data["secret"])
|
||||
def _ensure_auth_user(user_data, company_id):
|
||||
ensure_credentials = {"key", "secret"}.issubset(user_data.keys())
|
||||
if ensure_credentials:
|
||||
user = AuthUser.objects(
|
||||
credentials__match=Credentials(
|
||||
key=user_data["key"], secret=user_data["secret"]
|
||||
)
|
||||
).first()
|
||||
if user:
|
||||
return user.id
|
||||
|
||||
log.info(f"Creating user: {user_data['name']}")
|
||||
user = User(
|
||||
id=f"__{user_data['name']}__",
|
||||
user = AuthUser(
|
||||
id=user_data.get("id", f"__{user_data['name']}__"),
|
||||
name=user_data["name"],
|
||||
company=company_id,
|
||||
role=user_data["role"],
|
||||
email=user_data["email"],
|
||||
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()
|
||||
@ -67,7 +76,33 @@ def _ensure_user(user_data, company_id):
|
||||
return user.id
|
||||
|
||||
|
||||
def _ensure_user(user: FixedUser, company_id: str):
|
||||
if User.objects(id=user.user_id).first():
|
||||
return
|
||||
|
||||
data = attr.asdict(user)
|
||||
data["id"] = user.user_id
|
||||
data["email"] = f"{user.user_id}@example.com"
|
||||
data["role"] = Role.user
|
||||
|
||||
_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"},
|
||||
@ -79,4 +114,10 @@ def init_mongo_data():
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user