@@ -4,10 +4,9 @@ import (
44 "fmt"
55
66 "github.com/acmore/okdev/internal/config"
7- "gopkg.in/yaml.v3"
87 corev1 "k8s.io/api/core/v1"
98 "k8s.io/apimachinery/pkg/api/resource"
10- metav1 " k8s.io/apimachinery/pkg/apis/meta/v1 "
9+ "sigs. k8s.io/yaml "
1110)
1211
1312func BuildPVCManifest (namespace , name , size , storageClass string , labels map [string ]string , annotations map [string ]string ) ([]byte , error ) {
@@ -18,52 +17,49 @@ func BuildPVCManifest(namespace, name, size, storageClass string, labels map[str
1817 if err != nil {
1918 return nil , fmt .Errorf ("parse pvc size %q: %w" , size , err )
2019 }
21- pvc := corev1.PersistentVolumeClaim {
22- TypeMeta : metav1.TypeMeta {
23- APIVersion : "v1" ,
24- Kind : "PersistentVolumeClaim" ,
25- },
26- ObjectMeta : metav1.ObjectMeta {
27- Name : name ,
28- Namespace : namespace ,
29- Labels : labels ,
30- Annotations : annotations ,
31- },
32- Spec : corev1.PersistentVolumeClaimSpec {
33- AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadWriteOnce },
34- Resources : corev1.VolumeResourceRequirements {
35- Requests : corev1.ResourceList {
36- corev1 .ResourceStorage : qty ,
37- },
20+ pvcSpec := corev1.PersistentVolumeClaimSpec {
21+ AccessModes : []corev1.PersistentVolumeAccessMode {corev1 .ReadWriteOnce },
22+ Resources : corev1.VolumeResourceRequirements {
23+ Requests : corev1.ResourceList {
24+ corev1 .ResourceStorage : qty ,
3825 },
3926 },
4027 }
4128 if storageClass != "" {
42- pvc . Spec .StorageClassName = & storageClass
29+ pvcSpec .StorageClassName = & storageClass
4330 }
44- b , err := yaml .Marshal (pvc )
31+ manifest := map [string ]any {
32+ "apiVersion" : "v1" ,
33+ "kind" : "PersistentVolumeClaim" ,
34+ "metadata" : map [string ]any {
35+ "name" : name ,
36+ "namespace" : namespace ,
37+ "labels" : labels ,
38+ "annotations" : annotations ,
39+ },
40+ "spec" : pvcSpec ,
41+ }
42+ b , err := yaml .Marshal (manifest )
4543 if err != nil {
4644 return nil , fmt .Errorf ("marshal pvc manifest: %w" , err )
4745 }
4846 return b , nil
4947}
5048
5149func BuildPodManifest (namespace , name string , labels map [string ]string , annotations map [string ]string , podSpec corev1.PodSpec ) ([]byte , error ) {
52- pod := corev1.Pod {
53- TypeMeta : metav1.TypeMeta {
54- APIVersion : "v1" ,
55- Kind : "Pod" ,
56- },
57- ObjectMeta : metav1.ObjectMeta {
58- Name : name ,
59- Namespace : namespace ,
60- Labels : labels ,
61- Annotations : annotations ,
50+ manifest := map [string ]any {
51+ "apiVersion" : "v1" ,
52+ "kind" : "Pod" ,
53+ "metadata" : map [string ]any {
54+ "name" : name ,
55+ "namespace" : namespace ,
56+ "labels" : labels ,
57+ "annotations" : annotations ,
6258 },
63- Spec : podSpec ,
59+ "spec" : podSpec ,
6460 }
6561
66- b , err := yaml .Marshal (pod )
62+ b , err := yaml .Marshal (manifest )
6763 if err != nil {
6864 return nil , fmt .Errorf ("marshal pod manifest: %w" , err )
6965 }
0 commit comments