package staticfileserver import ( "bytes" "html/template" "path/filepath" "edge-infra.dev/config/components/pxe" ) var ( volumeMountPoint = "/opt/boot" livePath = volumeMountPoint + "/live" ) // template locations var ( deploymentTemplate = "deployment.template" configMapTemplate = "configmap.template" templateDir = "static-file-server" deploymentTemplateGlob = filepath.Join(templateDir, deploymentTemplate) configMapTemplateGlob = filepath.Join(templateDir, configMapTemplate) ) // ScaleParams contains the configuration required to update replica counts type ScaleParams struct { Replicas int32 } // ConfigParams contains the configuration required to update the // static-file-server directory type ConfigParams struct { Directory string } // ScaledDownDeployment returns a scaled down static-file-server deployment with // 0 replicas func ScaledDownDeployment() ([]byte, error) { return scaledDeployment(0) } // ScaledUpDeployment returns a scaled up static-file-server deployment with // 1 replica func ScaledUpDeployment() ([]byte, error) { return scaledDeployment(1) } // scaledDeployment returns the static-file-server manifest scaled to the // desired number of replicas func scaledDeployment(desired int32) ([]byte, error) { tmpl, err := template.New(""). Delims("<<", ">>"). ParseFS(pxe.TemplateFS, deploymentTemplateGlob) if err != nil { return nil, err } params := ScaleParams{ Replicas: desired, } var rendered bytes.Buffer if err := tmpl.ExecuteTemplate(&rendered, deploymentTemplate, params); err != nil { return nil, err } return rendered.Bytes(), nil } // ConfigMap returns the static-file-server-config configmap manifest func ConfigMap() ([]byte, error) { tmpl, err := template.New(""). Delims("<<", ">>"). ParseFS(pxe.TemplateFS, configMapTemplateGlob) if err != nil { return nil, err } params := ConfigParams{ Directory: livePath, } var rendered bytes.Buffer if err := tmpl.ExecuteTemplate(&rendered, configMapTemplate, params); err != nil { return nil, err } return rendered.Bytes(), nil }