Как назначить значение по умолчанию для типа Enum

Из этого кода Go я генерирую CRD yaml. Я использую следующую структуру в Go. Я хочу назначить значение по умолчанию для параметров "Размер" и "Случай" из одного из вариантов перечисления. Назначение // +kubebuilder:validation:default:=512 не действует в сгенерированном файле yaml. Есть ли способ в kubebuilder назначить значение по умолчанию для enum?

type Options struct {
    // +kubebuilder:validation:default:=512
    // +kubebuilder:validation:Enum=64;128;256;512
    Size int64 `json:"Size"`
    
    // +kubebuilder:validation:Enum=caseA;caseB
    // +kubebuilder:validation:default:=caseA
    Case string `json:"case"`
}   



Generated yaml without default value
---------------
 case:
     enum:
      - caseA
      - caseB
     type: string

 Size:
     enum:
      - 64
      - 128
      - 256
      -512
     format: int64
     type: integer

2 ответа

я делаю что-то в этом роде:

          // +kubebuilder:validation:Optional
    // +kubebuilder:validation:Enum=foo;bar
    // +kubebuilder:default:=none 
    Qux string `json:qux`

в результате yaml выглядит так:

                    qux:
                default: foo
                enum:
                - foo
                - bar
                type: string

поэтому я считаю, что сделать поле необязательным является ключевым.

Я думаю, вы должны добавить omitemptyк тегу json, в противном случае он заполняет его значением по умолчанию 0 для типа

Другие вопросы по тегам