Skip to content

Commit

Permalink
Add command line option to avoid deleting unknown volumes
Browse files Browse the repository at this point in the history
Signed-off-by: Anthony Floeder <[email protected]>
  • Loading branch information
ajfloeder committed Sep 6, 2024
1 parent cb407b1 commit 12c457b
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 20 deletions.
16 changes: 9 additions & 7 deletions pkg/controller.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020, 2021, 2022 Hewlett Packard Enterprise Development LP
* Copyright 2020-2024 Hewlett Packard Enterprise Development LP
* Other additional copyright holders may be indicated within.
*
* The entirety of this work is licensed under the Apache License,
Expand Down Expand Up @@ -52,12 +52,13 @@ const (
)

type Options struct {
mock bool // Enable mock interfaces for Switches, NVMe, and NNF
cli bool // Enable CLI commands instead of binary
persistence bool // Enable persistent object storage; used during crash/reboot recovery
json string // Initialize the element controller with the provided json file
direct string // Enable direct management of NVMe devices matching this regexp pattern
InitializeAndExit bool // Initialize all controllers then exit without starting the http server (mfg use)
mock bool // Enable mock interfaces for Switches, NVMe, and NNF
cli bool // Enable CLI commands instead of binary
persistence bool // Enable persistent object storage; used during crash/reboot recovery
json string // Initialize the element controller with the provided json file
direct string // Enable direct management of NVMe devices matching this regexp pattern
InitializeAndExit bool // Initialize all controllers then exit without starting the http server (mfg use)
DeleteUnknownVolumes bool // Delete volumes not represented by a storage pool at the end of initialization
}

func newDefaultOptions() *Options {
Expand All @@ -77,6 +78,7 @@ func BindFlags(fs *flag.FlagSet) *Options {
fs.StringVar(&opts.json, "json", "", "Initialize database with provided json file")
fs.StringVar(&opts.direct, "direct", opts.direct, "Enable direct management of NVMe block devices matching this regexp pattern. Implies Mock.")
fs.BoolVar(&opts.InitializeAndExit, "initializeAndExit", opts.InitializeAndExit, "Initialize all hardware controllers, then exit without starting the http server. Useful in hardware bringup")
fs.BoolVar(&opts.DeleteUnknownVolumes, "deleteUnknownVolumes", opts.DeleteUnknownVolumes, "Delete volumes not represented by storage pools")

nvme.BindFlags(fs)

Expand Down
4 changes: 2 additions & 2 deletions pkg/ec/ec.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020, 2021, 2022 Hewlett Packard Enterprise Development LP
* Copyright 2020-2024 Hewlett Packard Enterprise Development LP
* Other additional copyright holders may be indicated within.
*
* The entirety of this work is licensed under the Apache License,
Expand Down Expand Up @@ -322,7 +322,7 @@ func (c *Controller) Init(opts *Options) error {

// Run - Run a controller with standard behavior - that is with GRPC server and
// request handling that operates by unpacking the GRPC request and
// forwardining it to the element controller's handlers.
// forwarding it to the element controller's handlers.
func (c *Controller) Run() error {
if c.processor == nil {
return fmt.Errorf("controller processor uninitialized")
Expand Down
4 changes: 2 additions & 2 deletions pkg/manager-nnf/allocation_policy.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020, 2021, 2022 Hewlett Packard Enterprise Development LP
* Copyright 2020-2024 Hewlett Packard Enterprise Development LP
* Other additional copyright holders may be indicated within.
*
* The entirety of this work is licensed under the Apache License,
Expand Down Expand Up @@ -210,7 +210,7 @@ func (p *SpareAllocationPolicy) Allocate(pid uuid.UUID) ([]nvme.ProvidingVolume,
return volumes, fmt.Errorf("Create Volume Failure: %s", err)
}

remainingCapacityBytes = remainingCapacityBytes - volume.GetCapaityBytes()
remainingCapacityBytes = remainingCapacityBytes - volume.GetCapacityBytes()
volumes = append(volumes, nvme.ProvidingVolume{Storage: storage, VolumeId: volume.Id()})
}

Expand Down
8 changes: 4 additions & 4 deletions pkg/manager-nnf/manager.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020, 2021, 2022 Hewlett Packard Enterprise Development LP
* Copyright 2020-2024 Hewlett Packard Enterprise Development LP
* Other additional copyright holders may be indicated within.
*
* The entirety of this work is licensed under the Apache License,
Expand Down Expand Up @@ -528,8 +528,8 @@ func (s *StorageService) EventHandler(e event.Event) error {
return nil
}

// Check if the fabric is ready; that is all devices are enumerated and discovery
// is complete.
// Check if the fabric is ready;
// that is all devices are enumerated and discovery is complete.
if e.Is(msgreg.FabricReadyNnf("")) {
log.V(1).Info("Fabric ready")

Expand All @@ -539,7 +539,7 @@ func (s *StorageService) EventHandler(e event.Event) error {
}

// Remove any namespaces that are not part of a Storage Pool
log.V(2).Info("Cleanup obsolete volumes")
log.V(2).Info("Cleanup unknown volumes")
s.cleanupVolumes()

s.state = sf.ENABLED_RST
Expand Down
4 changes: 2 additions & 2 deletions pkg/manager-nnf/storage_pool.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020, 2021, 2022 Hewlett Packard Enterprise Development LP
* Copyright 2020-2024 Hewlett Packard Enterprise Development LP
* Other additional copyright holders may be indicated within.
*
* The entirety of this work is licensed under the Apache License,
Expand Down Expand Up @@ -55,7 +55,7 @@ type AllocatedVolume struct {

func (p *StoragePool) GetCapacityBytes() (capacityBytes uint64) {
for _, pv := range p.providingVolumes {
capacityBytes += pv.Storage.FindVolume(pv.VolumeId).GetCapaityBytes()
capacityBytes += pv.Storage.FindVolume(pv.VolumeId).GetCapacityBytes()
}
return capacityBytes
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/manager-nvme/manager.go
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020, 2021, 2022 Hewlett Packard Enterprise Development LP
* Copyright 2020-2024 Hewlett Packard Enterprise Development LP
* Other additional copyright holders may be indicated within.
*
* The entirety of this work is licensed under the Apache License,
Expand Down Expand Up @@ -82,7 +82,7 @@ type Manager struct {

// Command-Line Options
purge bool // Purge existing namespaces on storage controllers
purgeMockDb bool // Purge the persistent mock databse
purgeMockDb bool // Purge the persistent mock database

log ec.Logger
}
Expand Down Expand Up @@ -635,7 +635,7 @@ func (s *Storage) findVolume(volumeId string) *Volume {

func (v *Volume) Id() string { return v.id }
func (v *Volume) GetOdataId() string { return v.storage.OdataId() + "/Volumes/" + v.id }
func (v *Volume) GetCapaityBytes() uint64 { return uint64(v.capacityBytes) }
func (v *Volume) GetCapacityBytes() uint64 { return uint64(v.capacityBytes) }
func (v *Volume) GetNamespaceId() nvme.NamespaceIdentifier { return v.namespaceId }

func (v *Volume) GetGloballyUniqueIdentifier() nvme.NamespaceGloballyUniqueIdentifier {
Expand Down

0 comments on commit 12c457b

Please sign in to comment.