Add server uid to server.info response in API v2.8

This commit is contained in:
allegroai 2020-06-01 13:01:31 +03:00
parent c85ab66ae6
commit 84a75d9e70
7 changed files with 36 additions and 13 deletions

View File

@ -207,15 +207,6 @@ class DomainField(fields.StringField):
raise errors.bad_request.InvalidDomainName() raise errors.bad_request.InvalidDomainName()
class StringEnum(Enum):
def __str__(self):
return self.value
# noinspection PyMethodParameters
def _generate_next_value_(name, start, count, last_values):
return name
class JsonSerializableMixin: class JsonSerializableMixin:
def to_json(self: ModelBase): def to_json(self: ModelBase):
return dumps(self.to_struct()) return dumps(self.to_struct())

View File

@ -4,7 +4,7 @@ Module for polymorphism over different types of X axes in scalar aggregations
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from enum import auto from enum import auto
from apimodels import StringEnum from utilities.stringenum import StringEnum
from bll.util import extract_properties_to_lists from bll.util import extract_properties_to_lists
from config import config from config import config

View File

@ -7,6 +7,10 @@ from database import Database, strict
from database.model import DbModelMixin from database.model import DbModelMixin
class SettingKeys:
server__uuid = "server.uuid"
class Settings(DbModelMixin, Document): class Settings(DbModelMixin, Document):
meta = { meta = {
"db_alias": Database.backend, "db_alias": Database.backend,
@ -47,7 +51,7 @@ class Settings(DbModelMixin, Document):
""" Adds a new key/value settings. Fails if key already exists. """ """ Adds a new key/value settings. Fails if key already exists. """
key = key.strip(sep) key = key.strip(sep)
try: try:
res = Settings(key=key, value=value).save(force_insert=True) res = cls(key=key, value=value).save(force_insert=True)
return bool(res) return bool(res)
except NotUniqueError: except NotUniqueError:
return False return False

View File

@ -6,7 +6,7 @@ from config import config
from config.info import get_default_company from config.info import get_default_company
from database.model.company import Company from database.model.company import Company
from database.model.queue import Queue from database.model.queue import Queue
from database.model.settings import Settings from database.model.settings import Settings, SettingKeys
log = config.logger(__file__) log = config.logger(__file__)
@ -37,4 +37,4 @@ def _ensure_default_queue(company):
def _ensure_uuid(): def _ensure_uuid():
Settings.add_value("server.uuid", str(uuid4())) Settings.add_value(SettingKeys.server__uuid, str(uuid4()))

View File

@ -69,6 +69,17 @@ info {
} }
} }
} }
"2.8": ${info."2.1"} {
response {
type: object
properties {
uid {
description: "Server UID"
type: string
}
}
}
}
} }
endpoints { endpoints {
"2.1" { "2.1" {

View File

@ -10,6 +10,7 @@ from config.info import get_version, get_build_number, get_commit_number
from database.errors import translate_errors_context from database.errors import translate_errors_context
from database.model import Company from database.model import Company
from database.model.company import ReportStatsOption from database.model.company import ReportStatsOption
from database.model.settings import Settings, SettingKeys
from service_repo import ServiceRepo, APICall, endpoint from service_repo import ServiceRepo, APICall, endpoint
@ -60,6 +61,12 @@ def info(call: APICall):
} }
@endpoint("server.info", min_version="2.8")
def info_2_8(call: APICall):
info(call)
call.result.data["uid"] = Settings.get_by_key(SettingKeys.server__uuid)
@endpoint( @endpoint(
"server.report_stats_option", "server.report_stats_option",
request_data_model=ReportStatsOptionRequest, request_data_model=ReportStatsOptionRequest,

View File

@ -0,0 +1,10 @@
from enum import Enum
class StringEnum(Enum):
def __str__(self):
return self.value
# noinspection PyMethodParameters
def _generate_next_value_(name, start, count, last_values):
return name