@@ -46,13 +46,37 @@ func FindFencingCredentialsByNodeName(oc *exutil.CLI, nodeName string) (*Fencing
4646 return nil , fmt .Errorf ("list secrets in %s: %w" , FencingCredentialsNamespace , err )
4747 }
4848
49+ expected := map [string ]struct {}{
50+ fencingCredentialsPrefix + shortName : {},
51+ fencingCredentialsPrefix + nodeName : {},
52+ }
53+
4954 for _ , secret := range list .Items {
50- if strings .HasPrefix (secret .Name , fencingCredentialsPrefix ) && strings .Contains (secret .Name , shortName ) {
55+ if _ , ok := expected [secret .Name ]; ok {
56+ getRequired := func (key string ) (string , error ) {
57+ v , exists := secret .Data [key ]
58+ if ! exists || len (v ) == 0 {
59+ return "" , fmt .Errorf ("secret %s missing required key %q" , secret .Name , key )
60+ }
61+ return string (v ), nil
62+ }
63+ address , err := getRequired ("address" )
64+ if err != nil {
65+ return nil , err
66+ }
67+ username , err := getRequired ("username" )
68+ if err != nil {
69+ return nil , err
70+ }
71+ password , err := getRequired ("password" )
72+ if err != nil {
73+ return nil , err
74+ }
5175 return & FencingCredentials {
5276 SecretName : secret .Name ,
53- Address : string ( secret . Data [ " address" ]) ,
54- Username : string ( secret . Data [ " username" ]) ,
55- Password : string ( secret . Data [ " password" ]) ,
77+ Address : address ,
78+ Username : username ,
79+ Password : password ,
5680 CertificateVerification : string (secret .Data ["certificateVerification" ]),
5781 }, nil
5882 }
0 commit comments