receiver/awsebsnvmereceiver/internal/nvme/device_file_attributes.go (44 lines of code) (raw):

// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT package nvme import ( "errors" "fmt" ) type DeviceFileAttributes struct { controller int namespace int partition int deviceName string } func ParseNvmeDeviceFileName(device string) (DeviceFileAttributes, error) { controller := -1 namespace := -1 partition := -1 _, _ = fmt.Sscanf(device, "nvme%dn%dp%d", &controller, &namespace, &partition) if controller == -1 { return DeviceFileAttributes{deviceName: device}, errors.New("unable to parse device name") } return DeviceFileAttributes{ controller: controller, namespace: namespace, partition: partition, deviceName: device, }, nil } func (n *DeviceFileAttributes) Controller() int { return n.controller } func (n *DeviceFileAttributes) Namespace() int { return n.namespace } func (n *DeviceFileAttributes) Partition() int { return n.partition } func (n *DeviceFileAttributes) BaseDeviceName() (string, error) { if n.Controller() == -1 { return "", errors.New("unable to re-create device name due to missing controller id") } return fmt.Sprintf("nvme%d", n.Controller()), nil } func (n *DeviceFileAttributes) DeviceName() string { return n.deviceName }