lukerops / manifest.tf

Um processador de manifestos YAML escrito inteiramente em Terraform.
GNU General Public License v3.0
3 stars 1 forks source link

Refatorar processamento dos manifestos #15

Open lukerops opened 4 months ago

lukerops commented 4 months ago

Contexto:

O processamento dos manifestos é separado em 2 fluxos diferentes:

1 - O processamento dos CustomResourceDefinitions

Consiste na leitura do manifesto, verificando a estrutura do mesmo e gerando o schema que será utilizado na validação de outros manifestos.

2 - O processamento dos manifestos de recursos

Consiste na validação do manifesto utilizando as regras presentes nos schemas gerados no passo anterior.

Como se é percebido, o resultado de um passo está completamente acoplado com o próximo, o que torna necessário o casamento dos dados entre eles, porém, da forma que está sendo implementado pelo PR #14, as regras dos dois fluxos ficarão separadas, deixando a manutenção desses códigos mais complicada.

Proposta

A ideia proposta nessa issue é a adição de um novo conceito chamado de Schema Processor. O Schema Processor será um bloco de código, único para cada tipo de dado, que terá a função de ler as regras do CustomResourceDefinition, gerar um schema e depois validar se um manifesto cumpre as regras do schema gerado.

Como antes, isso ocorrerá em 2 etapas, como descrito no diagrama: image

O que a proposta resolve?

Essa proposta resolve o espalhamento das regras de validação pelo código, além de tornar possível a reutilização do código de processamento do CustomResourceDefinition, tornando a criação de uma nova versão da interface YAML mais rápida, simples e fácil, evitando um "copia e cola" de vários arquivos.