Slightly change spec

This commit is contained in:
Ettore Di Giacinto 2022-10-13 22:21:06 +00:00
parent 7c6fa7df06
commit 673bfcbd56
4 changed files with 30 additions and 16 deletions

View File

@ -26,8 +26,7 @@ import (
// SealedVolumeSpec defines the desired state of SealedVolume
type SealedVolumeSpec struct {
TPMHash string `json:"TPMHash,omitempty"`
Label string `json:"label,omitempty"`
Passphrase *SecretSpec `json:"passphraseRef,omitempty"`
Passphrase map[string]*SecretSpec `json:"partitionSecrets,omitempty"`
Quarantined bool `json:"quarantined,omitempty"`
}

View File

@ -89,9 +89,19 @@ func (in *SealedVolumeSpec) DeepCopyInto(out *SealedVolumeSpec) {
*out = *in
if in.Passphrase != nil {
in, out := &in.Passphrase, &out.Passphrase
*out = make(map[string]*SecretSpec, len(*in))
for key, val := range *in {
var outVal *SecretSpec
if val == nil {
(*out)[key] = nil
} else {
in, out := &val, &outVal
*out = new(SecretSpec)
**out = **in
}
(*out)[key] = outVal
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SealedVolumeSpec.

View File

@ -15,8 +15,8 @@ metadata:
namespace: default
spec:
TPMHash: "something"
label: "label"
passphraseRef:
partitionSecrets:
LABEL:
name: mysecret
path: pass
quarantined: false

View File

@ -87,10 +87,16 @@ func Start(ctx context.Context, kclient *kubernetes.Clientset, reconciler *contr
found := false
var volume keyserverv1alpha1.SealedVolume
var passsecret *keyserverv1alpha1.SecretSpec
for _, v := range volumeList.Items {
if hashEncoded == v.Spec.TPMHash && v.Spec.Label == label {
if hashEncoded == v.Spec.TPMHash {
for l, secretRef := range v.Spec.Passphrase {
if l == label {
found = true
volume = v
passsecret = secretRef
}
}
}
}
@ -119,11 +125,10 @@ func Start(ctx context.Context, kclient *kubernetes.Clientset, reconciler *contr
writer, _ := conn.NextWriter(websocket.BinaryMessage)
if !volume.Spec.Quarantined {
secret, err := kclient.CoreV1().Secrets(namespace).Get(ctx, volume.Spec.Passphrase.Name, v1.GetOptions{})
secret, err := kclient.CoreV1().Secrets(namespace).Get(ctx, passsecret.Name, v1.GetOptions{})
if err == nil {
passphrase := secret.Data[volume.Spec.Passphrase.Path]
passphrase := secret.Data[passsecret.Path]
json.NewEncoder(writer).Encode(map[string]string{"passphrase": string(passphrase)})
}
} else {
conn.Close()