f-50: lab: scénarios E5, configuration de l'agent par hyperviseur, release 0.2.0rc003 #50
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
0659dc69a5
commit
5728fdd33c
25 changed files with 760 additions and 27 deletions
|
|
@ -76,7 +76,11 @@ func Prepare(ctx context.Context, p *topology.Plan, o Options) ([]render.Node, e
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nodes, err := render.Render(p, render.Options{RunDir: o.RunDir, AuthorizedKeys: []string{key}, FRR: frr})
|
||||
agent, err := ReadAgent(p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nodes, err := render.Render(p, render.Options{RunDir: o.RunDir, AuthorizedKeys: []string{key}, FRR: frr, Agent: agent})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -89,18 +93,26 @@ func Prepare(ctx context.Context, p *topology.Plan, o Options) ([]render.Node, e
|
|||
}
|
||||
|
||||
func ReadFRR(p *topology.Plan) (map[string]string, error) {
|
||||
configs := map[string]string{}
|
||||
return readNodeFiles(p, func(n topology.NodePlan) string { return n.FRR })
|
||||
}
|
||||
|
||||
func ReadAgent(p *topology.Plan) (map[string]string, error) {
|
||||
return readNodeFiles(p, func(n topology.NodePlan) string { return n.Agent })
|
||||
}
|
||||
|
||||
func readNodeFiles(p *topology.Plan, path func(topology.NodePlan) string) (map[string]string, error) {
|
||||
files := map[string]string{}
|
||||
for _, n := range p.Nodes {
|
||||
if n.FRR == "" {
|
||||
if path(n) == "" {
|
||||
continue
|
||||
}
|
||||
data, err := os.ReadFile(n.FRR)
|
||||
data, err := os.ReadFile(path(n))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("node %s: %w", n.Name, err)
|
||||
}
|
||||
configs[n.Name] = string(data)
|
||||
files[n.Name] = string(data)
|
||||
}
|
||||
return configs, nil
|
||||
return files, nil
|
||||
}
|
||||
|
||||
func EnsureKey(ctx context.Context, r Runner, dir string) (string, error) {
|
||||
|
|
|
|||
|
|
@ -385,3 +385,23 @@ func TestPrepare_PutsTheFRRConfigIntoTheSeed(t *testing.T) {
|
|||
}
|
||||
t.Errorf("hv1 user-data has no /etc/lab/frr.conf:\n%s", data)
|
||||
}
|
||||
|
||||
func TestReadAgent_ReadsOnlyTheNodesThatDeclareOne(t *testing.T) {
|
||||
conf := filepath.Join(t.TempDir(), "two.yml")
|
||||
if err := os.WriteFile(conf, []byte("dhcp:\n backend: two\n"), 0o600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
m := newMirror(t)
|
||||
p := labPlan(t, m)
|
||||
p.Nodes[2].Agent = conf
|
||||
|
||||
got, err := ReadAgent(p)
|
||||
|
||||
if err != nil || !reflect.DeepEqual(got, map[string]string{"hv1": "dhcp:\n backend: two\n"}) {
|
||||
t.Errorf("ReadAgent = %q, %v", got, err)
|
||||
}
|
||||
p.Nodes[3].Agent = filepath.Join(t.TempDir(), "absent.yml")
|
||||
if _, err := ReadAgent(p); err == nil || !strings.Contains(err.Error(), "node hv2: ") {
|
||||
t.Errorf("error = %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue