123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- """
- :codeauthor: :email:`Shane Lee <slee@saltstack.com>`
- """
- # Import Python libs
- # Import Salt Libs
- import salt.grains.lvm as lvm
- # Import Salt Testing Libs
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.mock import MagicMock, patch
- from tests.support.unit import TestCase
- class LvmGrainsTestCase(TestCase, LoaderModuleMockMixin):
- """
- Test cases for LVM grains
- """
- def setup_loader_modules(self):
- return {
- lvm: {"__salt__": {}},
- }
- def test__linux_lvm(self):
- """
- Test grains._linux_lvm, normal return
- Should return a populated dictionary
- """
- vgs_out = " vg00\n vg01"
- lvs_out_vg00 = " root\n swap\n tmp \n usr \n var"
- lvs_out_vg01 = " opt \n"
- cmd_out = MagicMock(
- autospec=True, side_effect=[vgs_out, lvs_out_vg00, lvs_out_vg01]
- )
- patch_which = patch(
- "salt.utils.path.which", autospec=True, return_value="/usr/sbin/lvm"
- )
- patch_cmd_lvm = patch.dict(lvm.__salt__, {"cmd.run": cmd_out})
- with patch_which, patch_cmd_lvm:
- ret = lvm._linux_lvm()
- assert ret == {
- "lvm": {"vg00": ["root", "swap", "tmp", "usr", "var"], "vg01": ["opt"]}
- }, ret
- def test__linux_lvm_no_lvm(self):
- """
- Test grains._linux_lvm, no lvm installed
- Should return nothing
- """
- vgs_out = " vg00\n vg01"
- lvs_out_vg00 = " root\n swap\n tmp \n usr \n var"
- lvs_out_vg01 = " opt \n"
- cmd_out = MagicMock(
- autospec=True, side_effect=[vgs_out, lvs_out_vg00, lvs_out_vg01]
- )
- patch_which = patch("salt.utils.path.which", autospec=True, return_value="")
- patch_cmd_lvm = patch.dict(lvm.__salt__, {"cmd.run": cmd_out})
- with patch_which, patch_cmd_lvm:
- ret = lvm._linux_lvm()
- assert ret is None, ret
- def test__linux_lvm_no_logical_volumes(self):
- """
- Test grains._linux_lvm, lvm is installed but no volumes
- Should return a dictionary only with the header
- """
- vgs_out = ""
- cmd_out = MagicMock(autospec=True, side_effect=[vgs_out])
- patch_which = patch(
- "salt.utils.path.which", autospec=True, return_value="/usr/sbin/lvm"
- )
- patch_cmd_lvm = patch.dict(lvm.__salt__, {"cmd.run": cmd_out})
- with patch_which, patch_cmd_lvm:
- ret = lvm._linux_lvm()
- assert ret == {"lvm": {}}, ret
- def test__aix_lvm(self):
- """
- Test grains._aix_lvm, normal return
- Should return a populated dictionary
- """
- lsvg_out = "rootvg\nothervg"
- lsvg_out_rootvg = "rootvg:\n\
- LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT\n\
- hd5 boot 1 1 1 closed/syncd N/A\n\
- hd6 paging 32 32 1 open/syncd N/A\n\
- hd8 jfs2log 1 1 1 open/syncd N/A\n\
- hd4 jfs2 32 32 1 open/syncd /\n\
- hd2 jfs2 16 16 1 open/syncd /usr\n\
- hd9var jfs2 32 32 1 open/syncd /var\n\
- hd3 jfs2 32 32 1 open/syncd /tmp\n\
- hd1 jfs2 16 16 1 open/syncd /home\n\
- hd10opt jfs2 16 16 1 open/syncd /opt"
- lsvg_out_othervg = "othervg:\n\
- LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT\n\
- loglv01 jfs2log 1 1 1 open/syncd N/A\n\
- datalv jfs2 16 16 1 open/syncd /data"
- cmd_out = MagicMock(
- autospec=True, side_effect=[lsvg_out, lsvg_out_rootvg, lsvg_out_othervg]
- )
- patch_which = patch(
- "salt.utils.path.which", autospec=True, return_value="/usr/sbin/lsvg"
- )
- patch_cmd_lvm = patch.dict(lvm.__salt__, {"cmd.run": cmd_out})
- with patch_which, patch_cmd_lvm:
- ret = lvm._aix_lvm()
- assert ret == {
- "lvm": {
- "rootvg": [
- "hd5",
- "hd6",
- "hd8",
- "hd4",
- "hd2",
- "hd9var",
- "hd3",
- "hd1",
- "hd10opt",
- ],
- "othervg": ["loglv01", "datalv"],
- }
- }, ret
|