Skip to content
Snippets Groups Projects

Add basic application framework and example application to show interaction between events an NBI

Merged Ghost User requested to merge istaester/init-application-framework into develop
2 files
+ 147
37
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -2,6 +2,8 @@ package topology
import (
"code.fbi.h-da.de/danet/gosdn/controller/topology/links"
"code.fbi.h-da.de/danet/gosdn/controller/topology/nodes"
"code.fbi.h-da.de/danet/gosdn/controller/topology/ports"
"code.fbi.h-da.de/danet/gosdn/controller/topology/store"
)
@@ -16,19 +18,47 @@ type Service interface {
// service is a service for ports
type service struct {
store Store
store Store
nodeService nodes.Service
portService ports.Service
}
// NewTopologyService creates a new TopologyService
func NewTopologyService(store Store) Service {
func NewTopologyService(
store Store,
nodeService nodes.Service,
portService ports.Service,
) Service {
return &service{
store: store,
store: store,
nodeService: nodeService,
portService: portService,
}
}
// AddLink adds a new link to the topology
func (t *service) AddLink(link links.Link) error {
err := t.store.Add(link)
// These checks are also happening in the current NBI implementation.
// This should be refactored to only to these checks here.
_, err := t.nodeService.EnsureExists(link.SourceNode)
if err != nil {
return err
}
_, err = t.portService.EnsureExists(link.SourcePort)
if err != nil {
return err
}
_, err = t.nodeService.EnsureExists(link.TargetNode)
if err != nil {
return err
}
_, err = t.portService.EnsureExists(link.TargetPort)
if err != nil {
return err
}
err = t.store.Add(link)
if err != nil {
return err
}
Loading