...
1 package staticfileserver
2
3 import (
4 "bytes"
5 "html/template"
6 "path/filepath"
7
8 "edge-infra.dev/config/components/pxe"
9 )
10
11 var (
12 volumeMountPoint = "/opt/boot"
13 livePath = volumeMountPoint + "/live"
14 )
15
16
17 var (
18 deploymentTemplate = "deployment.template"
19 configMapTemplate = "configmap.template"
20
21 templateDir = "static-file-server"
22
23 deploymentTemplateGlob = filepath.Join(templateDir, deploymentTemplate)
24 configMapTemplateGlob = filepath.Join(templateDir, configMapTemplate)
25 )
26
27
28 type ScaleParams struct {
29 Replicas int32
30 }
31
32
33
34 type ConfigParams struct {
35 Directory string
36 }
37
38
39
40 func ScaledDownDeployment() ([]byte, error) {
41 return scaledDeployment(0)
42 }
43
44
45
46 func ScaledUpDeployment() ([]byte, error) {
47 return scaledDeployment(1)
48 }
49
50
51
52 func scaledDeployment(desired int32) ([]byte, error) {
53 tmpl, err := template.New("").
54 Delims("<<", ">>").
55 ParseFS(pxe.TemplateFS, deploymentTemplateGlob)
56 if err != nil {
57 return nil, err
58 }
59
60 params := ScaleParams{
61 Replicas: desired,
62 }
63
64 var rendered bytes.Buffer
65 if err := tmpl.ExecuteTemplate(&rendered, deploymentTemplate, params); err != nil {
66 return nil, err
67 }
68
69 return rendered.Bytes(), nil
70 }
71
72
73 func ConfigMap() ([]byte, error) {
74 tmpl, err := template.New("").
75 Delims("<<", ">>").
76 ParseFS(pxe.TemplateFS, configMapTemplateGlob)
77 if err != nil {
78 return nil, err
79 }
80
81 params := ConfigParams{
82 Directory: livePath,
83 }
84
85 var rendered bytes.Buffer
86 if err := tmpl.ExecuteTemplate(&rendered, configMapTemplate, params); err != nil {
87 return nil, err
88 }
89
90 return rendered.Bytes(), nil
91 }
92
View as plain text