package state import ( "github.com/aws/amazon-eks-connector/pkg/k8s" ) const ( SecretKeyManifest = "manifest" SecretKeyRegistrationKey = "regkey" SecretKeyFingerprint = "fingerprint" SecretKeyConnectorConfig = "connector-config" ) type SecretPersistence struct { secret k8s.Secret } func NewSecretPersistence(secret k8s.Secret) Persistence { return &SecretPersistence{ secret: secret, } } func (p *SecretPersistence) Load() (state SerializedState, err error) { state = SerializedState{} data, err := p.secret.Get() if err != nil { return } state = secretToState(data) return } func (p *SecretPersistence) Save(state SerializedState) (err error) { data := stateToSecret(state) err = p.secret.Put(data) return } func stateToSecret(state SerializedState) map[string][]byte { return map[string][]byte{ SecretKeyManifest: []byte(state[FileManifest]), SecretKeyFingerprint: []byte(state[FileInstanceFingerprint]), SecretKeyRegistrationKey: []byte(state[FileRegistrationKey]), SecretKeyConnectorConfig: []byte(state[EksConnectorConfig]), } } func secretToState(secret map[string][]byte) SerializedState { if len(secret) == 0 { return nil } return SerializedState{ FileManifest: string(secret[SecretKeyManifest]), FileInstanceFingerprint: string(secret[SecretKeyFingerprint]), FileRegistrationKey: string(secret[SecretKeyRegistrationKey]), EksConnectorConfig: string(secret[SecretKeyConnectorConfig]), } }