Services

Service faz o papel da “ponte” entre os endpoints HTTP e todo restante do código. E ideia é que os endppints HTTP só consigam interagir com o restante do código através de um “Service”.

A ideia dos “Services” é mapear todas as possíveis ações que a Asgard API pode executar.

Os services estão hoje divididos em:

Essas são classes concretas e ali estão todas as ações que podem ser executadas em cada service. À medida em que mais endpints HTTP forem surgindo podemos criar novos services para que esses endpoints possam executar suas funções.

O papel dos Services é falar com os backends, que são as implementações efetivas, que realmente vão às APIs que compõem o projeto Asgard.

AgentsService

Aqui está a implementação do AgentsService, mostrando os métodos disponíveis:

class asgard.services.agents.AgentsService[código fonte]
get_agent_by_id(agent_id: str, user: asgard.models.user.User, account: asgard.models.account.Account, backend: asgard.backends.base.Orchestrator) → Optional[asgard.models.agent.Agent][código fonte]
get_agents(user: asgard.models.user.User, account: asgard.models.account.Account, backend: asgard.backends.base.Orchestrator) → List[asgard.models.agent.Agent][código fonte]

Lista todos os agentes de cluster asgard. Essa litsa vem do orquestrador que é passado como parametro.

get_apps_running_for_agent(user: asgard.models.user.User, agent: asgard.models.agent.Agent, backend: asgard.backends.base.Orchestrator) → List[asgard.models.app.App][código fonte]

Perceba como os métodos do AgentsService recebem objetos concretos em vez de tipos primitivos, esses são os Models. A única exceção é quando precisamos buscar um objeto usando seu identificador único (id), nesse caso passamos o valor do id mesmo, já que essa busca é justamente quem vai fazer a troca de um “id” por um objeto preenchido.

AppsService

Aqui está a implementação do AppsService:

class asgard.services.apps.AppsService[código fonte]
static get_app_stats(app_id: str, interval: asgard.backends.base.Interval, user: asgard.models.user.User, account: asgard.models.account.Account, orchestrator: asgard.backends.base.Orchestrator) → asgard.models.app.AppStats[código fonte]

Retorna estatísticas de uso de CPU/RAM/CPU thr de uma app. O Cálculo considera todas as instâncias dessa app. Retorna um objeto AppStats