github.com/openebs/node-disk-manager@v1.9.1-0.20230225014141-4531f06ffa1e/api-service/node/services/listBlockDeviceDetails.go (about) 1 /* 2 Copyright 2020 The OpenEBS Authors 3 Licensed under the Apache License, Version 2.0 (the "License"); 4 you may not use this file except in compliance with the License. 5 You may obtain a copy of the License at 6 http://www.apache.org/licenses/LICENSE-2.0 7 Unless required by applicable law or agreed to in writing, software 8 distributed under the License is distributed on an "AS IS" BASIS, 9 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 See the License for the specific language governing permissions and 11 limitations under the License. 12 */ 13 14 package services 15 16 import ( 17 "context" 18 19 "github.com/openebs/node-disk-manager/pkg/smart" 20 protos "github.com/openebs/node-disk-manager/spec/ndm" 21 22 "google.golang.org/grpc/codes" 23 "google.golang.org/grpc/status" 24 "k8s.io/klog/v2" 25 ) 26 27 // ListBlockDeviceDetails gives the details about the disk from SMART 28 func (n *Node) ListBlockDeviceDetails(ctx context.Context, bd *protos.BlockDevice) (*protos.BlockDeviceDetails, error) { 29 30 klog.Info("Listing Device Details") 31 32 device := smart.Identifier{ 33 DevPath: bd.Name, 34 } 35 info, err := device.SCSIBasicDiskInfo() 36 if len(err) != 0 { 37 klog.Errorf("Error fetching block device details %v", err) 38 return nil, status.Errorf(codes.Internal, "Error fetching disk details") 39 } 40 klog.V(4).Info(info.BasicDiskAttr) 41 klog.V(4).Info(info.ATADiskAttr) 42 43 return &protos.BlockDeviceDetails{ 44 Compliance: info.BasicDiskAttr.Compliance, 45 Vendor: info.BasicDiskAttr.Vendor, 46 Model: info.BasicDiskAttr.ModelNumber, 47 SerialNumber: info.BasicDiskAttr.SerialNumber, 48 FirmwareRevision: info.BasicDiskAttr.FirmwareRevision, 49 WWN: info.BasicDiskAttr.WWN, 50 Capacity: info.BasicDiskAttr.Capacity, 51 LBSize: info.BasicDiskAttr.LBSize, 52 PBSize: info.BasicDiskAttr.PBSize, 53 RotationRate: uint32(info.BasicDiskAttr.RotationRate), 54 ATAMajorVersion: info.ATADiskAttr.ATAMajorVersion, 55 ATAMinorVersion: info.ATADiskAttr.ATAMinorVersion, 56 AtaTransport: info.ATADiskAttr.AtaTransport, 57 }, nil 58 59 }