pkg/runtimeevidence/vault.go
Rama main · réplica de lectura del repositorio original.
package runtimeevidence
import "encoding/json"
type VaultFacts struct {
Initialized bool `json:"initialized"`
Sealed bool `json:"sealed"`
Standby bool `json:"standby"`
PerformanceStandby *bool `json:"performanceStandby,omitempty"`
HAConnectionHealthy *bool `json:"haConnectionHealthy,omitempty"`
RemovedFromCluster *bool `json:"removedFromCluster,omitempty"`
}
func parseVault(body []byte) (*VaultFacts, error) {
var response struct {
Initialized *bool `json:"initialized"`
Sealed *bool `json:"sealed"`
Standby *bool `json:"standby"`
PerformanceStandby *bool `json:"performance_standby"`
HAConnectionHealthy json.RawMessage `json:"ha_connection_healthy"`
RemovedFromCluster json.RawMessage `json:"removed_from_cluster"`
}
if err := decode(body, &response); err != nil {
return nil, err
}
if response.Initialized == nil || response.Sealed == nil || response.Standby == nil {
return nil, UnexpectedShape
}
return &VaultFacts{
Initialized: *response.Initialized, Sealed: *response.Sealed, Standby: *response.Standby,
PerformanceStandby: response.PerformanceStandby,
HAConnectionHealthy: optionalBool(response.HAConnectionHealthy),
RemovedFromCluster: optionalBool(response.RemovedFromCluster),
}, nil
}
// Malformed connection or removal reports must not discard valid base facts.
func optionalBool(raw json.RawMessage) *bool {
var value *bool
if json.Unmarshal(raw, &value) != nil {
return nil
}
return value
}