Ctrl K
ComunidadGuías…

pkg/runtimeevidence/vault.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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
}