Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposta de novo tipo de campo: Enum #26

Open
daltonmatos opened this issue Oct 18, 2024 · 1 comment
Open

Proposta de novo tipo de campo: Enum #26

daltonmatos opened this issue Oct 18, 2024 · 1 comment

Comments

@daltonmatos
Copy link
Collaborator

Poderíamos pensar em um tipo de campo novo, além dos que já temos (integer, bool, string, array, object). Seria um tipo simples mas com um conjunto fechado de valores possíveis.

Proposta de CRD com esse novo campo:

apiVersion: manifest-tf.lukerops.com/v1alpha3
kind: CustomResourceDefinition
metadata: 
  name: user.iam.cloud
spec:
  group: iam.cloud
  kind: User
  versions:
    - name: v1alpha1
      specSchema:
        type: object
        properties:
          name:
            type: string
          kind:
            type: enum
            values: 
              - Group
              - ServiceAccount
              - Topic
              - User
            default: User

E um manifesto de exemplo para esse CRD:

apiVersion: iam.cloud/v1alpha1
kind: User
metadata:
  name: user-teste
spec:
  name: User One
  kind: Topic

E um manifesto que faz uso da funcionalidade de valor default (#16):

apiVersion: iam.cloud/v1alpha1
kind: User
metadata:
  name: user-teste
spec:
  name: User One

(Esse novo tipo já nascerá com suporte a default value)

Validações

  • O campo do tipo enum só pode ter seu valor com uma das opções definidas no CRD.
  • Não devemos permitir um valor default diferente das opções que o enum propõe. Por exemplo não podemos permitir que o valor default de um campo desse seja "", pois isso violaria a garantia de sempre termos um dos valores possíveis como o valor do campo.

Dúvidas:

  • Seria sempre um campo com valores string?
  • Faz sentido termos um enum onde os valores possíveis são, por exemplo: 1, 2, 3, 4
    • Se sim. Como esses valores seriam entregues no output final do manifest.tf? Como inteiros? Como strings?
@daltonmatos
Copy link
Collaborator Author

@lukerops

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant