Skip to content
Snippets Groups Projects
Commit 1ff43f1f authored by S.H's avatar S.H
Browse files

venv.go: Add RetrieveTopology(), add some getByUUID functions to rtdt-topology

parent 53b9b09d
Branches
No related tags found
No related merge requests found
Pipeline #262745 failed
......@@ -61,6 +61,23 @@ func (t *Topology) GetNodeByName(name string) *Node {
return nil
}
func (t *Topology) GetPortByUUID(UUID string) *Port {
for _, port := range t.Ports {
if port.ID == UUID {
return port
}
}
return nil
}
func (t *Topology) GetLinkByUUID(UUID string) *Link {
for _, link := range t.Links {
if link.ID == UUID {
return link
}
}
return nil
}
// Source for function: "code.fbi.h-da.de/danet/gosdn/applications/venv-manager/link.go"
// commit: 0264b698286b6cbb965d743078c681f8af55edf6
// GetLinkAsSliceOfStrings returns the link as a slice of strings for yaml representation.
......@@ -117,14 +134,12 @@ func (p *Port) Convert() *topoPb.Port {
}
}
func (l *Link) Convert() *topoPb.Link {
return &topoPb.Link{
Id: l.ID,
Name: l.Name,
SourceNode: l.SourceNode.Convert(),
SourcePort: l.SourcePort.Convert(),
TargetNode: l.TargetNode.Convert(),
TargetPort: l.TargetPort.Convert(),
}
return &topoPb.Link{
Id: l.ID,
Name: l.Name,
SourceNode: l.SourceNode.Convert(),
SourcePort: l.SourcePort.Convert(),
TargetNode: l.TargetNode.Convert(),
TargetPort: l.TargetPort.Convert(),
}
}
......@@ -317,6 +317,56 @@ func (v *VEnv) UploadTopology() error {
return nil
}
func (v *VEnv) RetrieveTopology() error {
conn := v.auth.GetConn()
ctx := v.auth.CreateContextWithAuthorization()
topoService := topoPb.NewTopologyServiceClient(conn)
topoResponse, err := topoService.GetTopology(ctx, &topoPb.GetTopologyRequest{Timestamp: util.Now()})
if err != nil {
return fmt.Errorf("Couldn't retrieve topology from DB: %v\n", err)
}
sourceTopo := topoResponse.GetToplogy()
targetTopo := rtdt_topology.NewTopology()
for _, link := range sourceTopo.Links {
var n0 rtdt_topology.Node
var n1 rtdt_topology.Node
if targetTopo.GetNodeByUUID(link.SourceNode.Id) == nil {
snode := link.SourceNode
n1 = rtdt_topology.Node{
ID: snode.Id,
Name: snode.Name,
Kind: "todo",
Image: "todo", // How to do this?
MgmtIpv4: "todo",
}
v.topology.Nodes = append(v.topology.Nodes, &n1)
}
if targetTopo.GetNodeByUUID(link.TargetNode.Id) == nil {
tnode := link.TargetNode
n1 = rtdt_topology.Node{
ID: tnode.Id,
Name: tnode.Name,
Kind: "todo",
Image: "todo", // How to do this?
MgmtIpv4: "todo",
}
v.topology.Nodes = append(v.topology.Nodes, &n1)
}
if targetTopo.GetLinkByUUID(link.Id) == nil {
var newLink = rtdt_topology.Link{
ID: link.Id,
Name: link.Name,
SourceNode: &n0,
TargetNode: &n1,
}
v.topology.Links = append(v.topology.Links, &newLink)
}
}
return nil
}
func getTypedValue(value string) *gnmi.TypedValue {
if boolVal, err := strconv.ParseBool(value); err == nil {
return &gnmi.TypedValue{Value: &gnmi.TypedValue_BoolVal{BoolVal: boolVal}}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment