Browse Source

Identifica portais suspensos no rancher

pull/172/head
Sesóstris Vieira 9 months ago
parent
commit
590fe34609
  1. 58
      sigi/apps/servicos/jobs/daily/sincroniza_rancher.py

58
sigi/apps/servicos/jobs/daily/sincroniza_rancher.py

@ -59,7 +59,13 @@ class Job(JobReportMixin, DailyJob):
portais = [ portais = [
item item
for item in json_data["items"] for item in json_data["items"]
if item["spec"]["chart"]["metadata"]["name"] == tipo.tipo_rancher if item["kind"].lower() == "app"
and item["spec"]["chart"]["metadata"]["name"] == tipo.tipo_rancher
]
namespaces = [
item
for item in json_data["items"]
if item["kind"].lower() == "namespace"
] ]
encontrados = 0 encontrados = 0
@ -72,7 +78,8 @@ class Job(JobReportMixin, DailyJob):
# Atualiza portais existentes e cria novos # # Atualiza portais existentes e cria novos #
for p in portais: for p in portais:
iname = p["metadata"]["name"] namespace = p["metadata"]["namespace"]
name = p["metadata"]["name"]
if tipo.spec_rancher in p["spec"]["values"]: if tipo.spec_rancher in p["spec"]["values"]:
if "hostname" in p["spec"]["values"][tipo.spec_rancher]: if "hostname" in p["spec"]["values"][tipo.spec_rancher]:
hostname = p["spec"]["values"][tipo.spec_rancher][ hostname = p["spec"]["values"][tipo.spec_rancher][
@ -84,7 +91,7 @@ class Job(JobReportMixin, DailyJob):
hostname = NAO_CONSTA hostname = NAO_CONSTA
self.errors[tipo].append( self.errors[tipo].append(
_( _(
f"Instância {iname} de {tipo.nome} sem URL no " f"Instância {namespace} de {tipo.nome} sem URL no "
"rancher" "rancher"
) )
) )
@ -99,7 +106,9 @@ class Job(JobReportMixin, DailyJob):
else: else:
hostname = NAO_CONSTA hostname = NAO_CONSTA
self.errors[tipo].append( self.errors[tipo].append(
_(f"Instância {iname} de {tipo.nome} sem URL no rancher") _(
f"Instância {namespace} de {tipo.nome} sem URL no rancher"
)
) )
nova_versao = ( nova_versao = (
@ -114,24 +123,33 @@ class Job(JobReportMixin, DailyJob):
try: try:
portal = Servico.objects.get( portal = Servico.objects.get(
instancia=iname, tipo_servico=tipo, data_desativacao=None instancia=namespace,
tipo_servico=tipo,
data_desativacao=None,
) )
encontrados += 1 encontrados += 1
except Servico.MultipleObjectsReturned: except Servico.MultipleObjectsReturned:
self.errors[tipo].append( self.errors[tipo].append(
_( _(
f"Existe mais de um registro ativo da instância {iname}" f"Existe mais de um registro ativo da instância {namespace}"
f" de {tipo}." f" de {tipo}."
) )
) )
continue continue
except Servico.DoesNotExist: except Servico.DoesNotExist:
if iname in self.nomes_gerados: if (
orgao = self.nomes_gerados[iname] namespace in self.nomes_gerados
or name in self.nomes_gerados
):
orgao = (
self.nomes_gerados[namespace]
if namespace in self.nomes_gerados
else self.nomes_gerados[name]
)
portal = Servico( portal = Servico(
casa_legislativa=orgao, casa_legislativa=orgao,
tipo_servico=tipo, tipo_servico=tipo,
instancia=iname, instancia=namespace,
url=nova_url, url=nova_url,
versao=nova_versao, versao=nova_versao,
data_ativacao=p["spec"]["info"]["firstDeployed"][:10], data_ativacao=p["spec"]["info"]["firstDeployed"][:10],
@ -142,18 +160,36 @@ class Job(JobReportMixin, DailyJob):
novos += 1 novos += 1
self.infos[tipo].append( self.infos[tipo].append(
_( _(
f"Criada instância {iname} de {tipo.nome} para " f"Criada instância {namespace} de {tipo.nome} para "
f"{orgao.nome} ({orgao.municipio.uf.sigla})" f"{orgao.nome} ({orgao.municipio.uf.sigla})"
) )
) )
else: else:
self.errors[tipo].append( self.errors[tipo].append(
_( _(
f"{iname} ({hostname}) não parece pertencer a " f"{namespace} ({hostname}) não parece pertencer a "
"nenhum órgão." "nenhum órgão."
) )
) )
continue continue
# Verificar se tem registro de suspensão do namespace
if namespace == "acegua-rs":
breakpoint()
suspenso = [
ns["metadata"]["annotations"]["suspenso"]
for ns in namespaces
if ns["metadata"]["name"] == namespace
and "suspenso" in ns["metadata"]["annotations"]
]
if suspenso:
# Desativar o portal no SIGI
portal.data_desativacao = timezone.localdate()
portal.motivo_desativacao = (
"Suspenso no Rancher com os seguintes apontamentos:"
+ ", ".join([f'"{s}"' for s in suspenso])
)
portal.save()
self.admin_log_change(portal, portal.motivo_desativacao)
# atualiza o serviço no SIGI # atualiza o serviço no SIGI
if ( if (
nova_versao != portal.versao nova_versao != portal.versao

Loading…
Cancel
Save