def test_update_host_pass(self):
        """Verify update_host produces expected results."""
        # Change host type
        with self.assertRaises(AnsibleExitJson):
            with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
                self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True,
                                'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi',
                                           'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
                host = Host()
                host.build_success_payload = lambda x: {}
                host.host_exists()
                self.assertTrue(host.needs_update())
                host.update_host()

        # Change port iqn
        with self.assertRaises(AnsibleExitJson):
            with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
                self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
                                'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]})
                host = Host()
                host.build_success_payload = lambda x: {}
                host.host_exists()
                self.assertTrue(host.needs_update())
                host.update_host()

        # Change port type to fc
        with self.assertRaises(AnsibleExitJson):
            with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
                self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
                                'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'fc', 'port': '0x08ef08ef08ef08ef'}]})
                host = Host()
                host.build_success_payload = lambda x: {}
                host.host_exists()
                self.assertTrue(host.needs_update())
                host.update_host()

        # Change port name
        with self.assertRaises(AnsibleExitJson):
            with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
                self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': True,
                                'ports': [{'label': 'beegfs_metadata1_iscsi_12', 'type': 'iscsi',
                                           'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
                host = Host()
                host.build_success_payload = lambda x: {}
                host.host_exists()
                self.assertTrue(host.needs_update())
                host.update_host()

        # Change group
        with self.assertRaises(AnsibleExitJson):
            with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
                self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': False, 'group': 'test_group',
                                'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
                                           'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
                host = Host()
                host.build_success_payload = lambda x: {}
                host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB"
                host.host_exists()
                self.assertTrue(host.needs_update())
                host.update_host()
 def test_update_host_fail(self):
     """Verify update_host produces expected exceptions."""
     with self.assertRaisesRegexp(AnsibleFailJson, "Failed to update host."):
         with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), Exception()]):
             self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'windows', 'force_port': False, 'group': 'test_group',
                             'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
                                        'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
             host = Host()
             host.build_success_payload = lambda x: {}
             host.group_id = lambda: "85000000600A098000A4B9D1003637135D483DEB"
             host.host_exists()
             self.assertTrue(host.needs_update())
             host.update_host()