...

Source file src/edge-infra.dev/pkg/sds/ien/k8s/controllers/pxe/staticfileserver/static_file_server.go

Documentation: edge-infra.dev/pkg/sds/ien/k8s/controllers/pxe/staticfileserver

     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  // template locations
    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  // ScaleParams contains the configuration required to update replica counts
    28  type ScaleParams struct {
    29  	Replicas int32
    30  }
    31  
    32  // ConfigParams contains the configuration required to update the
    33  // static-file-server directory
    34  type ConfigParams struct {
    35  	Directory string
    36  }
    37  
    38  // ScaledDownDeployment returns a scaled down static-file-server deployment with
    39  // 0 replicas
    40  func ScaledDownDeployment() ([]byte, error) {
    41  	return scaledDeployment(0)
    42  }
    43  
    44  // ScaledUpDeployment returns a scaled up static-file-server deployment with
    45  // 1 replica
    46  func ScaledUpDeployment() ([]byte, error) {
    47  	return scaledDeployment(1)
    48  }
    49  
    50  // scaledDeployment returns the static-file-server manifest scaled to the
    51  // desired number of replicas
    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  // ConfigMap returns the static-file-server-config configmap manifest
    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