Open1

[調査] MetalLB

tozastationtozastation

https://github.com/metallb/metallb/issues/2377

タイトル

  • プール・セレクタに重複したipaddresspoolsを含む不明確なメッセージ

バグ解説

  • ipaddresspoolセレクタに2回同じ名前のbgp advertisement /l2 advertisemetを作成し、エラーを確認する

メンテナの指摘

A clear message that tells me to remove the duplicate entry from advertisement xy.
I suspect this also applies in other areas where we use the validate* functions.

Advertisement XYから重複したエントリーを削除するようにのような明確なメッセージ
これは、validate*関数を使う他の分野でも当てはまるのではないでしょうか

再現

inv dev-env

コードリーディング:

Label Selector の重複を検査している
https://github.com/metallb/metallb/blob/main/internal/config/config.go#L1041

fmt.Errorf("duplicate definition of %s %q", labelSelectorType, labelSelectors[i])

この関数は以下で参照されている

*[main][~/workspace/ghq/github.com/metallb/metallb]$ pt validateLabelSelectorDuplicate
./internal/config/config.go
416:    err = validateLabelSelectorDuplicate(p.Spec.NodeSelectors, "nodeSelectors")
540:    err := validateLabelSelectorDuplicate(p.Spec.AllocateTo.NamespaceSelectors, "namespaceSelectors")
544:    err = validateLabelSelectorDuplicate(p.Spec.AllocateTo.ServiceSelectors, "serviceSelectors")
707:    err = validateLabelSelectorDuplicate(crdAd.Spec.IPAddressPoolSelectors, "ipAddressPoolSelectors")
711:    err = validateLabelSelectorDuplicate(crdAd.Spec.NodeSelectors, "nodeSelectors")
742:    err = validateLabelSelectorDuplicate(crdAd.Spec.IPAddressPoolSelectors, "ipAddressPoolSelectors")
746:    err = validateLabelSelectorDuplicate(crdAd.Spec.NodeSelectors, "nodeSelectors")
1041:func validateLabelSelectorDuplicate(labelSelectors []metav1.LabelSelector, labelSelectorType string) error {

Duplicate 系のやつ