Newer
Older
package nucleus
import (
Shrey Garg
committed
"os"
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
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound"
"code.fbi.h-da.de/danet/gosdn/controller/store"
"github.com/google/uuid"
)
// SbiService provides a sbi service implementation.
type SbiService struct {
sbiStore southbound.Store
}
// NewSbiService creates a sbi service.
func NewSbiService(sbiStore southbound.Store) southbound.Service {
return &SbiService{
sbiStore: sbiStore,
}
}
// Get takes a SBI's UUID or name and returns the SBI.
func (s *SbiService) Get(query store.Query) (southbound.SouthboundInterface, error) {
loadedSbi, err := s.sbiStore.Get(query)
if err != nil {
return nil, err
}
device, err := s.createSbiFromStore(loadedSbi)
if err != nil {
return nil, err
}
return device, nil
}
// GetAll returns all stored SBIs.
func (s *SbiService) GetAll() ([]southbound.SouthboundInterface, error) {
var sbis []southbound.SouthboundInterface
loadedSbis, err := s.sbiStore.GetAll()
if err != nil {
return nil, err
}
for _, loadedSbi := range loadedSbis {
sbi, err := s.createSbiFromStore(loadedSbi)
if err != nil {
return nil, err
}
sbis = append(sbis, sbi)
}
return sbis, nil
}
// Add adds a sbi to the sbi store.
func (s *SbiService) Add(sbiToAdd southbound.SouthboundInterface) error {
err := s.sbiStore.Add(sbiToAdd)
if err != nil {
return err
}
return nil
}
// Delete deletes a sbi from the sbi store.
func (s *SbiService) Delete(sbiToDelete southbound.SouthboundInterface) error {
err := s.sbiStore.Delete(sbiToDelete)
if err != nil {
return err
}
Shrey Garg
committed
sbiPlugin, ok := sbiToDelete.(*SouthboundPlugin)
if ok {
if err := os.RemoveAll(sbiPlugin.Path()); err != nil {
return err
}
}
return nil
}
func (s *SbiService) createSbiFromStore(loadedSbi southbound.LoadedSbi) (southbound.SouthboundInterface, error) {
newSbi, err := NewSBI(loadedSbi.Type, uuid.MustParse(loadedSbi.ID))
if err != nil {
return nil, err
}
return newSbi, nil
}