1541 |
1541 |
return constants.INSTST_ADMINOFFLINE
|
1542 |
1542 |
|
1543 |
1543 |
|
1544 |
|
def _GetInstDiskSize(index):
|
1545 |
|
"""Build function for retrieving disk size.
|
|
1544 |
def _GetInstDisk(index, cb):
|
|
1545 |
"""Build function for calling another function with an instance Disk.
|
1546 |
1546 |
|
1547 |
1547 |
@type index: int
|
1548 |
1548 |
@param index: Disk index
|
|
1549 |
@type cb: callable
|
|
1550 |
@param cb: Callback
|
1549 |
1551 |
|
1550 |
1552 |
"""
|
1551 |
|
def fn(_, inst):
|
1552 |
|
"""Get size of a disk.
|
|
1553 |
def fn(ctx, inst):
|
|
1554 |
"""Call helper function with instance Disk.
|
1553 |
1555 |
|
|
1556 |
@type ctx: L{InstanceQueryData}
|
1554 |
1557 |
@type inst: L{objects.Instance}
|
1555 |
1558 |
@param inst: Instance object
|
1556 |
1559 |
|
1557 |
1560 |
"""
|
1558 |
1561 |
try:
|
1559 |
|
return inst.disks[index].size
|
|
1562 |
nic = inst.disks[index]
|
1560 |
1563 |
except IndexError:
|
1561 |
1564 |
return _FS_UNAVAIL
|
1562 |
1565 |
|
|
1566 |
return cb(ctx, index, nic)
|
|
1567 |
|
1563 |
1568 |
return fn
|
1564 |
1569 |
|
1565 |
1570 |
|
|
1571 |
def _GetInstDiskSize(ctx, _, disk): # pylint: disable=W0613
|
|
1572 |
"""Get a Disk's size.
|
|
1573 |
|
|
1574 |
@type ctx: L{InstanceQueryData}
|
|
1575 |
@type disk: L{objects.Disk}
|
|
1576 |
@param disk: The Disk object
|
|
1577 |
|
|
1578 |
"""
|
|
1579 |
if disk.size is None:
|
|
1580 |
return _FS_UNAVAIL
|
|
1581 |
else:
|
|
1582 |
return disk.size
|
|
1583 |
|
|
1584 |
|
|
1585 |
def _GetInstDeviceName(ctx, _, device): # pylint: disable=W0613
|
|
1586 |
"""Get a Device's Name.
|
|
1587 |
|
|
1588 |
@type ctx: L{InstanceQueryData}
|
|
1589 |
@type device: L{objects.NIC} or L{objects.Disk}
|
|
1590 |
@param device: The NIC or Disk object
|
|
1591 |
|
|
1592 |
"""
|
|
1593 |
if device.name is None:
|
|
1594 |
return _FS_UNAVAIL
|
|
1595 |
else:
|
|
1596 |
return device.name
|
|
1597 |
|
|
1598 |
|
|
1599 |
def _GetInstDeviceUUID(ctx, _, device): # pylint: disable=W0613
|
|
1600 |
"""Get a Device's UUID.
|
|
1601 |
|
|
1602 |
@type ctx: L{InstanceQueryData}
|
|
1603 |
@type device: L{objects.NIC} or L{objects.Disk}
|
|
1604 |
@param device: The NIC or Disk object
|
|
1605 |
|
|
1606 |
"""
|
|
1607 |
if device.uuid is None:
|
|
1608 |
return _FS_UNAVAIL
|
|
1609 |
else:
|
|
1610 |
return device.uuid
|
|
1611 |
|
|
1612 |
|
1566 |
1613 |
def _GetInstNic(index, cb):
|
1567 |
1614 |
"""Build function for calling another function with an instance NIC.
|
1568 |
1615 |
|
... | ... | |
1739 |
1786 |
(_MakeField("nic.ips", "NIC_IPs", QFT_OTHER,
|
1740 |
1787 |
"List containing each network interface's IP address"),
|
1741 |
1788 |
IQ_CONFIG, 0, lambda ctx, inst: [nic.ip for nic in inst.nics]),
|
|
1789 |
(_MakeField("nic.names", "NIC_Names", QFT_OTHER,
|
|
1790 |
"List containing each network interface's name"),
|
|
1791 |
IQ_CONFIG, 0, lambda ctx, inst: [nic.name for nic in inst.nics]),
|
|
1792 |
(_MakeField("nic.uuids", "NIC_UUIDs", QFT_OTHER,
|
|
1793 |
"List containing each network interface's UUID"),
|
|
1794 |
IQ_CONFIG, 0, lambda ctx, inst: [nic.uuid for nic in inst.nics]),
|
1742 |
1795 |
(_MakeField("nic.modes", "NIC_modes", QFT_OTHER,
|
1743 |
1796 |
"List containing each network interface's mode"), IQ_CONFIG, 0,
|
1744 |
1797 |
lambda ctx, inst: [nicp[constants.NIC_MODE]
|
... | ... | |
1768 |
1821 |
(_MakeField("nic.mac/%s" % i, "NicMAC/%s" % i, QFT_TEXT,
|
1769 |
1822 |
"MAC address of %s network interface" % numtext),
|
1770 |
1823 |
IQ_CONFIG, 0, _GetInstNic(i, nic_mac_fn)),
|
|
1824 |
(_MakeField("nic.name/%s" % i, "NicName/%s" % i, QFT_TEXT,
|
|
1825 |
"Name address of %s network interface" % numtext),
|
|
1826 |
IQ_CONFIG, 0, _GetInstNic(i, _GetInstDeviceName)),
|
|
1827 |
(_MakeField("nic.uuid/%s" % i, "NicUUID/%s" % i, QFT_TEXT,
|
|
1828 |
"UUID address of %s network interface" % numtext),
|
|
1829 |
IQ_CONFIG, 0, _GetInstNic(i, _GetInstDeviceUUID)),
|
1771 |
1830 |
(_MakeField("nic.mode/%s" % i, "NicMode/%s" % i, QFT_TEXT,
|
1772 |
1831 |
"Mode of %s network interface" % numtext),
|
1773 |
1832 |
IQ_CONFIG, 0, _GetInstNic(i, nic_mode_fn)),
|
... | ... | |
1846 |
1905 |
IQ_CONFIG, 0, lambda ctx, inst: len(inst.disks)),
|
1847 |
1906 |
(_MakeField("disk.sizes", "Disk_sizes", QFT_OTHER, "List of disk sizes"),
|
1848 |
1907 |
IQ_CONFIG, 0, lambda ctx, inst: [disk.size for disk in inst.disks]),
|
|
1908 |
(_MakeField("disk.names", "Disk_names", QFT_OTHER, "List of disk names"),
|
|
1909 |
IQ_CONFIG, 0, lambda ctx, inst: [disk.name for disk in inst.disks]),
|
|
1910 |
(_MakeField("disk.uuids", "Disk_UUIDs", QFT_OTHER, "List of disk UUIDs"),
|
|
1911 |
IQ_CONFIG, 0, lambda ctx, inst: [disk.uuid for disk in inst.disks]),
|
1849 |
1912 |
]
|
1850 |
1913 |
|
1851 |
1914 |
# Disks by number
|
1852 |
|
fields.extend([
|
1853 |
|
(_MakeField("disk.size/%s" % i, "Disk/%s" % i, QFT_UNIT,
|
1854 |
|
"Disk size of %s disk" % utils.FormatOrdinal(i + 1)),
|
1855 |
|
IQ_CONFIG, 0, _GetInstDiskSize(i))
|
1856 |
|
for i in range(constants.MAX_DISKS)])
|
|
1915 |
for i in range(constants.MAX_DISKS):
|
|
1916 |
numtext = utils.FormatOrdinal(i + 1)
|
|
1917 |
fields.extend([
|
|
1918 |
(_MakeField("disk.size/%s" % i, "Disk/%s" % i, QFT_UNIT,
|
|
1919 |
"Disk size of %s disk" % numtext),
|
|
1920 |
IQ_CONFIG, 0, _GetInstDisk(i, _GetInstDiskSize)),
|
|
1921 |
(_MakeField("disk.name/%s" % i, "DiskName/%s" % i, QFT_TEXT,
|
|
1922 |
"Name of %s disk" % numtext),
|
|
1923 |
IQ_CONFIG, 0, _GetInstDisk(i, _GetInstDeviceName)),
|
|
1924 |
(_MakeField("disk.uuid/%s" % i, "DiskUUID/%s" % i, QFT_TEXT,
|
|
1925 |
"UUID of %s disk" % numtext),
|
|
1926 |
IQ_CONFIG, 0, _GetInstDisk(i, _GetInstDeviceUUID))])
|
1857 |
1927 |
|
1858 |
1928 |
return fields
|
1859 |
1929 |
|