puk
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
package RBDFactory
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"rbd_exporter/logger"
|
||||
"rbd_exporter/mytypes"
|
||||
)
|
||||
|
||||
func PoolFactory(cephConn mytypes.CephConnector, poolName string) (mytypes.Pool, error) {
|
||||
var rbdlist []mytypes.IRBD = []mytypes.IRBD{}
|
||||
|
||||
ioctx, err := cephConn.OpenIOContext(poolName)
|
||||
if err != nil {
|
||||
return mytypes.Pool{}, fmt.Errorf("Couldn't set context for pool %s %w", poolName, err)
|
||||
}
|
||||
|
||||
defer ioctx.Destroy()
|
||||
|
||||
imageList, err := ioctx.GetImageNames()
|
||||
if err != nil {
|
||||
return mytypes.Pool{}, fmt.Errorf("Couldn't get list of rbds %w", err)
|
||||
}
|
||||
for _, rbdname := range imageList {
|
||||
stat, err := RBDFacroty(ioctx, rbdname)
|
||||
if err != nil {
|
||||
fmt.Errorf("Coundn't get stat from disk %s %w", rbdname, err)
|
||||
panic(err)
|
||||
}
|
||||
rbdlist = append(rbdlist, stat)
|
||||
}
|
||||
return mytypes.Pool{
|
||||
Name: poolName,
|
||||
HasRBD: len(imageList) != 0,
|
||||
RBDlist: rbdlist,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func RBDFacroty(ioctx mytypes.IOContexter, rbdname string) (mytypes.RBD, error) {
|
||||
defer func() {
|
||||
if v := recover(); v != nil {
|
||||
logger.Logger.Errorf("No such RBD exists (probably just deleted)")
|
||||
}
|
||||
}()
|
||||
|
||||
image := ioctx.GetImage(rbdname)
|
||||
err := image.Open()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
// logger.Logger.Errorf("Shit happened in RBDFactory")
|
||||
}
|
||||
|
||||
defer image.Close()
|
||||
|
||||
|
||||
info,err := image.Stat()
|
||||
if err != nil {
|
||||
return mytypes.RBD{},fmt.Errorf("Couldn't get stats for image %s %w",rbdname,err)
|
||||
}
|
||||
|
||||
return mytypes.RBD{
|
||||
Name: rbdname,
|
||||
ImageInfo: *info,
|
||||
},nil
|
||||
}
|
||||
Reference in New Issue
Block a user