Documentation ¶
Index ¶
- Constants
- type BlockDeviceAccessInfo
- type Device
- type DevicePartition
- type DevicePrivate
- type FcHostPort
- type FileSystemOptions
- type Host
- type Hosts
- type Initiator
- type IscsiAccessInfo
- type IscsiTarget
- type Mount
- type MountPrivate
- type Network
- type NetworkPrivate
- type Path
- type PublishInfo
- type TargetPortal
- type TargetPortalPrivate
- type VirtualDeviceAccessInfo
Constants ¶
const ( // AccessProtocolIscsi - iSCSI volume AccessProtocolIscsi = "iscsi" // AccessProtocolFC - Fibre Channel volume AccessProtocolFC = "fc" )
const ( // TargetScopeGroup - Multi-LUN capable target, Group Scoped Target (GST) TargetScopeGroup = "group" // Group Scoped Target (GST) // TargetScopeVolume - Single LUN capable target, Volume Scoped Target (VST) TargetScopeVolume = "volume" // Volume Scoped Target (VST) )
const ( // ConnectTypeDefault - CHAPI2 will automatically detect and choose the optimal connection type. // This setting is also used if the connect type is not provided (e.g. empty string) ConnectTypeDefault = "default" // ConnectTypePing - Ping each I_T nexus to detect where connections are possible. ConnectTypePing = "ping" // ConnectTypeSubnet - Only make connections to initiator ports in same subnet as target ports. ConnectTypeSubnet = "subnet" // ConnectTypeAutoInitiator - Let the host's iSCSI initiator automatically select the initiator // to use to make a connection to the target ports. ConnectTypeAutoInitiator = "auto_initiator" )
const ( // FsCreateOpt filesystem create type FsCreateOpt = "filesystem" // FsModeOpt filesystem mode option FsModeOpt = "fsMode" // FsOwnerOpt filesystem owner option FsOwnerOpt = "fsOwner" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BlockDeviceAccessInfo ¶
type BlockDeviceAccessInfo struct { AccessProtocol string `json:"access_protocol,omitempty"` // Access protocol ("iscsi" or "fc") TargetName string `json:"target_name,omitempty"` // Target name (iqn for iSCSI, empty for FC) - // TODO, clarify FC usage? TargetScope string `json:"target_scope,omitempty"` // GST="group", VST="volume" or empty if unknown scope or FC LunID string `json:"lun_id,omitempty"` // LunID is only used by Linux for rescan optimization and not used/required for Windows IscsiAccessInfo *IscsiAccessInfo `json:"iscsi_access_info,omitempty"` }
BlockDeviceAccessInfo contains the common fields for accessing a block device
type Device ¶
type Device struct { SerialNumber string `json:"serial_number,omitempty"` // Nimble volume serial number Pathname string `json:"path_name,omitempty"` // Path name (e.g. "dm-3" for Linux, "Disk3" for Windows) AltFullPathName string `json:"alt_full_path_name,omitempty"` // Alternate path name (e.g. "/dev/mapper/mpathg" for Linux, "\\?\mpio#disk&ven_nimble&..." for Windows) Size uint64 `json:"size,omitempty"` // Volume capacity in total number of bytes //TODO ensure clients/servers change from MiB to byte count State string `json:"state,omitempty"` // TODO, Shiva to define states IscsiTarget *IscsiTarget `json:"iscsi_target,omitempty"` // Pointer to iSCSI target if device connected to an iSCSI target Private *DevicePrivate `json:"-"` // Private device properties used internally by CHAPI }
TODO: create fc and iscsi specific attributes Device struct
type DevicePartition ¶
type DevicePartition struct { Name string `json:"name,omitempty"` // Partition name (e.g. "sda, mpathp1, mpathp2" for Linux, "Disk #1, Partition #0" for Windows) PartitionType string `json:"partition_type,omitempty"` // Partition type (e.g. "TODO" for Linux, "GPT: Basic Data" for Windows) Size uint64 `json:"size,omitempty"` // Partition size in total number of bytes }
DevicePartition Partition Info for a Device
type DevicePrivate ¶
type DevicePrivate struct {
Paths []Path `json:"-"` // Physical path details (used internally by CHAPI server)
}
DevicePrivate provides model.Device platform specific private data
type FcHostPort ¶
type FcHostPort struct { HostNumber string `json:"-"` PortWwn string `json:"-"` NodeWwn string `json:"-"` }
FcHostPort FC host port
type FileSystemOptions ¶
type FileSystemOptions struct { FsType string `json:"fs_type,omitempty"` // Filesystem type FsMode string `json:"fs_mode,omitempty"` // Filesystem permissions FsOwner string `json:"fs_owner,omitempty"` // Filesystem owner MountOpts []string `json:"mount_options,omitempty"` // Mount options rw,ro nodiscard etc }
FileSystemOptions represent file system options to be configured during mount
type Host ¶
type Host struct { UUID string `json:"id,omitempty"` // Unique host identifier Name string `json:"name,omitempty"` // Host name Domain string `json:"domain,omitempty"` // Host domain name }
Host : Host information
type Initiator ¶
type Initiator struct { AccessProtocol string `json:"access_protocol,omitempty"` // Access protocol ("iscsi" or "fc") Init []string `json:"initiator,omitempty"` // Initiator iqn if AccessProtocol=="iscsi" else WWPNs if "fc" }
Initiator : Initiator details
type IscsiAccessInfo ¶
type IscsiAccessInfo struct { ConnectType string `json:"connect_type,omitempty"` // How connections should be enumerated/established DiscoveryIP string `json:"discovery_ip,omitempty"` // iSCSI Discovery IP (empty for FC volumes) ChapUser string `json:"chap_user,omitempty"` // CHAP username (empty if CHAP not used) ChapPassword string `json:"chap_password,omitempty"` // CHAP password (empty if CHAP not used) }
IscsiAccessInfo contains the fields necessary for iSCSI access
type IscsiTarget ¶
type IscsiTarget struct { Name string `json:"name,omitempty"` // Target iSCSI iqn TargetPortals []*TargetPortal `json:"target_portals,omitempty"` // Target portals TargetScope string `json:"target_scope,omitempty"` // GST="group", VST="volume" or empty if unknown scope or FC }
IscsiTarget struct
type Mount ¶
type Mount struct { ID string `json:"id,omitempty"` // Unique mount point ID MountPoint string `json:"mount_point,omitempty"` // Mount point location e.g. "/mnt" for Linux, "C:\MountFolder" for Windows SerialNumber string `json:"serial_number,omitempty"` // Nimble volume serial number FsOpts *FileSystemOptions `json:"fs_options,omitempty"` // Filesystem options like fsType, mode, owner and mount options Private *MountPrivate `json:"-"` // Private mount properties used internally by CHAPI }
Mount structure represents all information required to mount and setup filesystem
type MountPrivate ¶
type MountPrivate struct { }
MountPrivate provides model.Mount platform specific private data
type Network ¶
type Network struct { Name string `json:"name,omitempty"` // NIC name (e.g. "eth0" for Linux, "Ethernet 1" for Windows) AddressV4 string `json:"address_v4,omitempty"` // NIC IPv4 address MaskV4 string `json:"mask_v4,omitempty"` // NIC subnet mask Mac string `json:"mac,omitempty"` // NIC MAC address Mtu int64 `json:"mtu,omitempty"` // NIC Maximum Transmission Unit (MTU) Up bool `json:"up"` // NIC available? Private *NetworkPrivate `json:"-"` // Private network properties used internally by CHAPI }
Network : network interface info for host
type NetworkPrivate ¶
type NetworkPrivate struct { }
NetworkPrivate provides model.Network platform specific private data
type Path ¶
type Path struct { Name string `json:"-"` Major string `json:"-"` Minor string `json:"-"` Hcils string `json:"-"` State string `json:"-"` }
Path struct
type PublishInfo ¶
type PublishInfo struct { SerialNumber string `json:"serial_number,omitempty"` BlockDev *BlockDeviceAccessInfo `json:"block_device,omitempty"` VirtualDev *VirtualDeviceAccessInfo `json:"virtual_device,omitempty"` }
PublishInfo is the node side data required to access a volume
type TargetPortal ¶
type TargetPortal struct { Address string `json:"address,omitempty"` // Target port IP address Port string `json:"port,omitempty"` // Target port socket Tag string `json:"tag,omitempty"` // Target port tag Private *TargetPortalPrivate `json:"-"` // Private TargetPortal properties used internally by CHAPI }
TargetPortal provides information for a single iSCSI target portal (i.e. Data IP)
type TargetPortalPrivate ¶
type TargetPortalPrivate struct { }
TargetPortalPrivate provides model.TargetPortal platform specific private data
type VirtualDeviceAccessInfo ¶
type VirtualDeviceAccessInfo struct { PciSlotNumber string `json:"pci_slot_number,omitempty"` ScsiController string `json:"scsi_controller,omitempty"` }
VirtualDeviceAccessInfo contains the required data to access a virtual device