Ejemplo n.º 1
0
    def test_get_disk_security_info_failed_os_nvme(self):
        mock_check_output = self.patch(subprocess, "check_output")
        mock_check_output.side_effect = OSError(
            -2, "No such file or directory"
        )
        disk_name = factory.make_name("nvme").encode("ascii")
        observered = get_disk_security_info(disk_name)

        self.assertThat(
            self.print_flush,
            MockCalledOnceWith(
                "OS error when running nvme-cli (No such file or directory)"
            ),
        )
        self.assertEqual(
            {
                "format_supported": False,
                "writez_supported": False,
                "crypto_format": False,
                "nsze": 0,
                "lbaf": 0,
                "ms": 0,
            },
            observered,
        )
Ejemplo n.º 2
0
 def test_get_disk_security_info_noformat_nowritez_nvme(self):
     nvme_cli_output = (
         NVME_IDCTRL_PROLOGUE
         + NVME_IDCTRL_OACS_FORMAT_UNSUPPORTED
         + NVME_IDCTRL_ONCS_WRITEZ_UNSUPPORTED
         + NVME_IDCTRL_FNA_CRYPTFORMAT_UNSUPPORTED
         + NVME_IDCTRL_EPILOGUE
     )
     mock_check_output = self.patch(subprocess, "check_output")
     mock_check_output.return_value = nvme_cli_output
     disk_name = factory.make_name("nvme").encode("ascii")
     observered = get_disk_security_info(disk_name)
     self.assertThat(
         mock_check_output,
         MockCallsMatch(
             call(["nvme", "id-ctrl", maas_wipe.DEV_PATH % disk_name]),
             call(["nvme", "id-ns", maas_wipe.DEV_PATH % disk_name]),
         ),
     )
     self.assertEqual(
         {
             "format_supported": False,
             "writez_supported": False,
             "crypto_format": False,
             "nsze": 0,
             "lbaf": 0,
             "ms": 0,
         },
         observered,
     )
Ejemplo n.º 3
0
 def test_get_disk_security_info_missing(self):
     hdparm_output = HDPARM_BEFORE_SECURITY + HDPARM_AFTER_SECURITY
     mock_check_output = self.patch(subprocess, "check_output")
     mock_check_output.return_value = hdparm_output
     disk_name = factory.make_name("disk").encode('ascii')
     observered = get_disk_security_info(disk_name)
     self.assertThat(
         mock_check_output,
         MockCalledOnceWith([b'hdparm', b'-I', b'/dev/%s' % disk_name]))
     self.assertEqual({
         b"supported": False,
         b"enabled": False,
         b"locked": False,
         b"frozen": False,
     }, observered)
Ejemplo n.º 4
0
 def test_get_disk_security_info_all_true(self):
     hdparm_output = (HDPARM_BEFORE_SECURITY + HDPARM_SECURITY_ALL_TRUE +
                      HDPARM_AFTER_SECURITY)
     mock_check_output = self.patch(subprocess, "check_output")
     mock_check_output.return_value = hdparm_output
     disk_name = factory.make_name("disk").encode("ascii")
     observered = get_disk_security_info(disk_name)
     self.assertThat(
         mock_check_output,
         MockCalledOnceWith([b"hdparm", b"-I",
                             b"/dev/%s" % disk_name]),
     )
     self.assertEqual(
         {
             b"supported": True,
             b"enabled": True,
             b"locked": True,
             b"frozen": True,
         },
         observered,
     )
Ejemplo n.º 5
0
    def test_get_disk_security_info_failed_cmd_nvme(self):
        mock_check_output = self.patch(subprocess, "check_output")
        mock_check_output.side_effect = subprocess.CalledProcessError(
            1, "nvme id-ctrl")
        disk_name = factory.make_name("nvme").encode("ascii")
        observered = get_disk_security_info(disk_name)

        self.assertThat(
            self.print_flush,
            MockCalledOnceWith("Error on nvme id-ctrl (%s)" % "1"),
        )
        self.assertEqual(
            {
                "format_supported": False,
                "writez_supported": False,
                "crypto_format": False,
                "nsze": 0,
                "lbaf": 0,
                "ms": 0,
            },
            observered,
        )