MCPcopy Create free account
hub / github.com/encodeous/nylon / readCentralConfig

Function readCentralConfig

core/entrypoint.go:35–83  ·  view source on GitHub ↗
(centralPath, nodePath string, tunables *state.RouterTunables)

Source from the content-addressed store, hash-verified

33}
34
35func readCentralConfig(centralPath, nodePath string, tunables *state.RouterTunables) (*state.CentralCfg, error) {
36 var centralCfg state.CentralCfg
37
38 file, err := os.ReadFile(centralPath)
39 if err != nil {
40 if !os.IsNotExist(err) {
41 return nil, err
42 }
43 // fallback to using dist from node config
44
45 var nodeCfg state.LocalCfg
46
47 file, err = os.ReadFile(nodePath)
48 if err != nil {
49 return nil, fmt.Errorf("central.yaml not found and failed to read node.yaml: %w", err)
50 }
51
52 err = yaml.Unmarshal(file, &nodeCfg)
53 if err != nil {
54 return nil, err
55 }
56
57 if nodeCfg.Dist == nil {
58 return nil, fmt.Errorf("central.yaml not found and node.yaml has no dist config")
59 }
60
61 cfg, err := FetchConfig(nodeCfg.Dist.Url, nodeCfg.Dist.Key, tunables.MaxConfigSize)
62 if err != nil {
63 return nil, err
64 }
65
66 bytes, err := yaml.Marshal(cfg)
67 if err != nil {
68 return nil, err
69 }
70 err = os.WriteFile(centralPath, bytes, 0600)
71 if err != nil {
72 return nil, err
73 }
74
75 centralCfg = *cfg
76 } else {
77 err = yaml.Unmarshal(file, &centralCfg)
78 if err != nil {
79 return nil, err
80 }
81 }
82 return &centralCfg, nil
83}
84
85func readNodeConfig(nodePath string) (*state.LocalCfg, error) {
86 var nodeCfg state.LocalCfg

Callers 1

BootstrapFunction · 0.85

Calls 1

FetchConfigFunction · 0.85

Tested by

no test coverage detected