/
swift_service_config.go
55 lines (47 loc) · 1.72 KB
/
swift_service_config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package swiftstorage
import (
"bytes"
contrail "github.com/Juniper/contrail-operator/pkg/apis/contrail/v1alpha1"
"github.com/Juniper/contrail-operator/pkg/k8s"
core "k8s.io/api/core/v1"
"text/template"
)
type swiftServiceConfig struct {
SrcConfigFileName string
DestConfigFileName string
ContainerName string
BindAddress string
BindPort int
ServiceConfigTemplate *template.Template
ServiceStartConfigTemplate *template.Template
}
func (c *swiftServiceConfig) FillConfigMap(cm *core.ConfigMap) {
cm.Data["config.json"] = c.executeTemplate(c.ServiceStartConfigTemplate)
cm.Data[c.ServiceConfigTemplate.Name()] = c.executeTemplate(c.ServiceConfigTemplate)
cm.Data["bootstrap.sh"] = c.executeTemplate(bootstrapScript)
}
func (c *swiftServiceConfig) executeTemplate(t *template.Template) string {
var buffer bytes.Buffer
if err := t.Execute(&buffer, c); err != nil {
panic(err)
}
return buffer.String()
}
type configMaps struct {
cm *k8s.ConfigMap
swiftStorageConf contrail.SwiftStorageConfiguration
}
func (r *ReconcileSwiftStorage) configMap(configMapName, ownerType string, swiftStorage *contrail.SwiftStorage) *configMaps {
return &configMaps{
cm: r.kubernetes.ConfigMap(configMapName, ownerType, swiftStorage),
swiftStorageConf: swiftStorage.Spec.ServiceConfiguration,
}
}
var bootstrapScript = template.Must(template.New("").Parse(`
#!/bin/bash
chmod 777 /srv/node/d1
ln -fs /etc/rings/account.ring.gz /etc/swift/account.ring.gz
ln -fs /etc/rings/object.ring.gz /etc/swift/object.ring.gz
ln -fs /etc/rings/container.ring.gz /etc/swift/container.ring.gz
{{ .ContainerName }} /etc/swift/{{ .DestConfigFileName }} --verbose
`))