Skip to content
Snippets Groups Projects
Commit c7ccf6de authored by Shrey Garg's avatar Shrey Garg Committed by Malte Bauch
Browse files

Resolve "Deleting a Device should remove plugin files if device is of type plugin/csbi"


See merge request !318

Co-authored-by: default avatarMalte Bauch <malte.bauch@extern.h-da.de>
parent 01225378
No related branches found
No related tags found
2 merge requests!318Resolve "Deleting a Device should remove plugin files if device is of type plugin/csbi",!264WIP: Develop
Pipeline #102477 passed
...@@ -59,7 +59,7 @@ The device UUID must be specified as a positional argument.`, ...@@ -59,7 +59,7 @@ The device UUID must be specified as a positional argument.`,
spinner.Fail(err) spinner.Fail(err)
return err return err
} }
spinner.Success("PND has been deleted, ID: ", did.String()) spinner.Success("Device has been deleted, ID: ", did.String())
return nil return nil
}, },
} }
......
...@@ -90,7 +90,12 @@ func (s *DeviceService) Delete(deviceToDelete device.Device) error { ...@@ -90,7 +90,12 @@ func (s *DeviceService) Delete(deviceToDelete device.Device) error {
if err != nil { if err != nil {
return err return err
} }
if deviceToDelete.SBI().Type() == spb.Type_TYPE_PLUGIN {
err = s.sbiService.Delete(deviceToDelete.SBI())
if err != nil {
return err
}
}
return nil return nil
} }
......
...@@ -342,7 +342,7 @@ func (pnd *pndImplementation) removeDevice(id uuid.UUID) error { ...@@ -342,7 +342,7 @@ func (pnd *pndImplementation) removeDevice(id uuid.UUID) error {
defer metrics.FinishHook(labels, start, deviceDeletionDurationSecondsTotal, deviceDeletionDurationSeconds) defer metrics.FinishHook(labels, start, deviceDeletionDurationSecondsTotal, deviceDeletionDurationSeconds)
switch d.(type) { switch d.(type) {
case *CsbiDevice: case *CsbiDevice:
return pnd.handleCsbiDeletion(id) return pnd.handleCsbiDeletion(d)
default: default:
return pnd.deviceService.Delete(d) return pnd.deviceService.Delete(d)
} }
...@@ -507,20 +507,24 @@ func handleRollbackError(id uuid.UUID, err error) { ...@@ -507,20 +507,24 @@ func handleRollbackError(id uuid.UUID, err error) {
// TODO: Notion of invalid state needed. // TODO: Notion of invalid state needed.
} }
func (pnd *pndImplementation) handleCsbiDeletion(id uuid.UUID) error { func (pnd *pndImplementation) handleCsbiDeletion(d device.Device) error {
log.Infof("csbi deletion triggered for %v", id) log.Infof("csbi deletion triggered for %v", d.ID().String())
ctx, cancel := context.WithTimeout(context.Background(), time.Minute) ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel() defer cancel()
req := &cpb.DeleteRequest{ req := &cpb.DeleteRequest{
Timestamp: time.Now().UnixNano(), Timestamp: time.Now().UnixNano(),
Did: []string{id.String()}, Did: []string{d.ID().String()},
} }
resp, err := pnd.csbiClient.Delete(ctx, req) resp, err := pnd.csbiClient.Delete(ctx, req)
if err != nil { if err != nil {
return err return err
} }
err = pnd.southboundService.Delete(d.SBI())
if err != nil {
return err
}
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"uuid": id, "uuid": d.ID().String(),
"status": resp.Status, "status": resp.Status,
}).Info("csbi deleted") }).Info("csbi deleted")
return nil return nil
......
package nucleus package nucleus
import ( import (
"os"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound" "code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound"
"code.fbi.h-da.de/danet/gosdn/controller/store" "code.fbi.h-da.de/danet/gosdn/controller/store"
"github.com/google/uuid" "github.com/google/uuid"
...@@ -71,6 +73,13 @@ func (s *SbiService) Delete(sbiToDelete southbound.SouthboundInterface) error { ...@@ -71,6 +73,13 @@ func (s *SbiService) Delete(sbiToDelete southbound.SouthboundInterface) error {
return err return err
} }
sbiPlugin, ok := sbiToDelete.(*SouthboundPlugin)
if ok {
if err := os.RemoveAll(sbiPlugin.Path()); err != nil {
return err
}
}
return nil return nil
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment