-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpreset.go
94 lines (86 loc) · 2 KB
/
preset.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package main
import (
"encoding/json"
"github.com/guoyk93/tempfile"
"gopkg.in/yaml.v2"
"io/ioutil"
"log"
"os"
"path/filepath"
)
type Preset struct {
Registry string `yaml:"registry"`
Annotations map[string]string `yaml:"annotations"`
ImagePullSecrets []string `yaml:"imagePullSecrets"`
Resource UniversalResourceList `yaml:"resource"`
Kubeconfig map[string]interface{} `yaml:"kubeconfig"`
Dockerconfig struct {
Auths map[string]struct {
Auth string `json:"auth"`
} `json:"auths"`
} `yaml:"dockerconfig"`
}
func LoadPresetFromHome(cluster string, p *Preset) (err error) {
var home string
if home, err = os.UserHomeDir(); err != nil {
return
}
filename := filepath.Join(home, ".deployer2", "preset-"+cluster+".yml")
log.Printf("加载集群配置: %s", filename)
if err = LoadPresetFile(filename, p); err != nil {
return
}
return
}
func LoadPresetFile(filename string, p *Preset) (err error) {
var buf []byte
if buf, err = ioutil.ReadFile(filename); err != nil {
return
}
if err = LoadPreset(buf, p); err != nil {
return
}
return
}
func LoadPreset(buf []byte, p *Preset) error {
return yaml.Unmarshal(buf, p)
}
func (p Preset) GenerateKubeconfig() []byte {
if p.Kubeconfig == nil {
return []byte{}
}
buf, err := yaml.Marshal(p.Kubeconfig)
if err != nil {
panic(err)
}
return buf
}
func (p Preset) GenerateDockerconfig() []byte {
buf, err := json.Marshal(p.Dockerconfig)
if err != nil {
panic(err)
}
return buf
}
func (p Preset) GenerateFiles() (dcDir string, kcFile string, err error) {
var dcFile string
if dcDir, dcFile, err = tempfile.WriteDirFile(
p.GenerateDockerconfig(),
"deployer-dockerconfig",
"config.json",
false,
); err != nil {
return
}
log.Printf("生成 Docker 配置文件: %s", dcFile)
if kcFile, err = tempfile.WriteFile(
p.GenerateKubeconfig(),
"deployer-kubeconfig",
".yml",
false,
); err != nil {
return
}
log.Printf("生成 Kubeconfig 文件: %s", kcFile)
return
}