Пример #1
0
    def test_host_exists_pass(self):
        """Verify host_exists produces expected results."""
        with mock.patch(self.REQ_FUNC, return_value=(200, self.EXISTING_HOSTS)):
            self._set_args({'state': 'present', 'name': 'new_host', 'host_type': 'linux dm-mp', 'force_port': False,
                            'ports': [{'label': 'new_host_port_1', 'type': 'fc', 'port': '0x08ef08ef08ef08ef'}]})
            host = NetAppESeriesHost()
            self.assertFalse(host.host_exists)

            self._set_args({'state': 'present', 'name': 'does_not_exist', 'host_type': 'linux dm-mp',
                            'ports': [{'label': 'beegfs_storage1_iscsi_0', 'type': 'iscsi',
                                       'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
            host = NetAppESeriesHost()
            self.assertFalse(host.host_exists)

            self._set_args({'state': 'present', 'name': 'beegfs_storage1', 'host_type': 'linux dm-mp',
                            'ports': [{'label': 'beegfs_storage1_iscsi_0', 'type': 'iscsi', 'port': 'iqn.differentiqn.org'}]})
            host = NetAppESeriesHost()
            self.assertTrue(host.host_exists)

            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': True,
                                'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
                                           'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
                host = NetAppESeriesHost()
                self.assertTrue(host.host_exists)
Пример #2
0
    def test_build_success_payload(self):
        """Validate success payload."""
        def _assigned_host_ports(apply_unassigning=False):
            return None

        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 = NetAppESeriesHost()
        self.assertEquals(host.build_success_payload(), {'api_url': 'http://localhost/', 'ssid': '1'})
Пример #3
0
 def test_remove_host_pass(self):
     """Verify remove_host produces expected results."""
     with mock.patch(self.REQ_FUNC, return_value=(200, None)):
         self._set_args({'state': 'absent', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
                         'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
                                    'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
         host = NetAppESeriesHost()
         host.host_obj = {"id": "84000000600A098000A4B9D10030370B5D430109"}
         host.remove_host()
Пример #4
0
 def test_remove_host_fail(self):
     """Verify remove_host produces expected exceptions."""
     with self.assertRaisesRegexp(AnsibleFailJson, "Failed to remove host."):
         with mock.patch(self.REQ_FUNC, return_value=Exception()):
             self._set_args({'state': 'absent', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
                             'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
                                        'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
             host = NetAppESeriesHost()
             host.host_obj = {"id": "84000000600A098000A4B9D10030370B5D430109"}
             host.remove_host()
Пример #5
0
 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,
                             'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
                                        'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
             host = NetAppESeriesHost()
             host.build_success_payload = lambda x: {}
             exists = host.host_exists
             self.assertTrue(host.needs_update)
             host.update_host()
Пример #6
0
 def test_valid_host_type_pass(self):
     """Validate the available host types."""
     with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_TYPES)):
         self._set_args({'state': 'present', 'host_type': '0'})
         host = NetAppESeriesHost()
         self.assertTrue(host.valid_host_type)
         self._set_args({'state': 'present', 'host_type': '28'})
         host = NetAppESeriesHost()
         self.assertTrue(host.valid_host_type)
         self._set_args({'state': 'present', 'host_type': 'windows'})
         host = NetAppESeriesHost()
         self.assertTrue(host.valid_host_type)
         self._set_args({'state': 'present', 'host_type': 'linux dm-mp'})
         host = NetAppESeriesHost()
         self.assertTrue(host.valid_host_type)
Пример #7
0
 def test_host_exists_fail(self):
     """Verify host_exists produces expected exceptions."""
     self._set_args({'state': 'present', 'host_type': 'linux dm-mp', 'ports': [{'label': 'abc', 'type': 'iscsi', 'port': 'iqn:0'}]})
     host = NetAppESeriesHost()
     with self.assertRaisesRegexp(AnsibleFailJson, "Failed to determine host existence."):
         with mock.patch(self.REQ_FUNC, return_value=Exception()):
             exists = host.host_exists
Пример #8
0
    def test_valid_host_type_fail(self):
        """Validate the available host types."""
        with self.assertRaisesRegexp(AnsibleFailJson, "host_type must be either a host type name or host type index found integer the documentation"):
            self._set_args({'state': 'present', 'host_type': 'non-host-type'})
            host = NetAppESeriesHost()

        with mock.patch(self.REQ_FUNC, return_value=(200, self.HOST_TYPES)):
            with self.assertRaisesRegexp(AnsibleFailJson, "There is no host type with index"):
                self._set_args({'state': 'present', 'host_type': '4'})
                host = NetAppESeriesHost()
                valid = host.valid_host_type

        with mock.patch(self.REQ_FUNC, return_value=Exception()):
            with self.assertRaisesRegexp(AnsibleFailJson, "Failed to get host types."):
                self._set_args({'state': 'present', 'host_type': '4'})
                host = NetAppESeriesHost()
                valid = host.valid_host_type
Пример #9
0
    def test_needs_update_pass(self):
        """Verify needs_update produces expected results."""
        # No changes
        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',
                            'ports': [{'label': 'beegfs_metadata1_iscsi_0', 'type': 'iscsi',
                                       'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
            host = NetAppESeriesHost()
            exists = host.host_exists
            self.assertFalse(host.needs_update)

        # Change host type
        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,
                            'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'iscsi', 'port': 'iqn.not_used'}]})
            host = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)

        # Add port to host
        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 = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)

        # Change port name
        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_2', 'type': 'iscsi',
                                       'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
            host = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)

        # take port from another host by force
        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': True,
                            'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi',
                                       'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
            host = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)
Пример #10
0
 def test_needs_update_fail(self):
     """Verify needs_update produces expected exceptions."""
     with self.assertRaisesRegexp(AnsibleFailJson, "is associated with a different host."):
         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_metadata2_iscsi_0', 'type': 'iscsi',
                                        'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
             host = NetAppESeriesHost()
             exists = host.host_exists
             host.needs_update
Пример #11
0
    def test_create_host_pass(self):
        """Verify create_host produces expected results."""
        def _assigned_host_ports(apply_unassigning=False):
            return None

        with self.assertRaises(AnsibleExitJson):
            with mock.patch(self.REQ_FUNC, return_value=(200, {'id': '84000000600A098000A4B9D10030370B5D430109'})):
                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 = NetAppESeriesHost()
                with mock.patch(self.REQ_FUNC, return_value=(200, [])):
                    host.assigned_host_ports = _assigned_host_ports
                    host.build_success_payload = lambda x: {}
                    host.create_host()
Пример #12
0
    def test_create_host_fail(self):
        """Verify create_host produces expected exceptions."""
        def _assigned_host_ports(apply_unassigning=False):
            return None

        with self.assertRaisesRegexp(AnsibleFailJson, "Failed to create host."):
            with mock.patch(self.REQ_FUNC, side_effect=[(200, []), Exception()]):
                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 = NetAppESeriesHost()
                host.assigned_host_ports = _assigned_host_ports
                host.build_success_payload = lambda x: {}
                host.create_host()

        with self.assertRaisesRegexp(AnsibleExitJson, "Host already exists."):
            with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]):
                self._set_args({'state': 'present', 'name': 'beegfs_storage1', 'host_type': 'linux dm-mp', 'force_port': True,
                                'ports': [{'label': 'beegfs_storage1_iscsi_0', 'type': 'iscsi',
                                           'port': 'iqn.1993-08.org.debian.beegfs-storage1:01:b0621126818'}]})
                host = NetAppESeriesHost()
                host.assigned_host_ports = _assigned_host_ports
                host.build_success_payload = lambda x: {}
                host.create_host()
Пример #13
0
    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 = NetAppESeriesHost()
                host.build_success_payload = lambda x: {}
                exists = 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 = NetAppESeriesHost()
                host.build_success_payload = lambda x: {}
                exists = 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 = NetAppESeriesHost()
                host.build_success_payload = lambda x: {}
                exists = 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 = NetAppESeriesHost()
                host.build_success_payload = lambda x: {}
                exists = host.host_exists
                self.assertTrue(host.needs_update)
                host.update_host()
Пример #14
0
    def test_assigned_host_ports_fail(self):
        """Verify assigned_host_ports gives expected exceptions."""
        # take port from another
        with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"):
            with mock.patch(self.REQ_FUNC, side_effect=[(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_2', 'type': 'iscsi',
                                           'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
                host = NetAppESeriesHost()
                exists = host.host_exists
                self.assertTrue(host.needs_update)
                host.assigned_host_ports(apply_unassigning=True)

        # take port from another host and fail because force == False
        with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"):
            with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]):
                self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': False,
                                'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
                host = NetAppESeriesHost()
                exists = host.host_exists
                self.assertTrue(host.needs_update)
                host.assigned_host_ports(apply_unassigning=True)

        # take port from another host and fail because force == False
        with self.assertRaisesRegexp(AnsibleFailJson, "There are no host ports available OR there are not enough unassigned host ports"):
            with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS)]):
                self._set_args({'state': 'present', 'name': 'beegfs_metadata3', 'host_type': 'linux dm-mp', 'force_port': False,
                                'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
                host = NetAppESeriesHost()
                exists = host.host_exists
                host.assigned_host_ports(apply_unassigning=True)

        with self.assertRaisesRegexp(AnsibleFailJson, "Failed to unassign host port."):
            with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), Exception()]):
                self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
                                'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
                host = NetAppESeriesHost()
                exists = host.host_exists
                self.assertTrue(host.needs_update)
                host.assigned_host_ports(apply_unassigning=True)
Пример #15
0
    def test_assigned_host_ports_pass(self):
        """Verify assigned_host_ports gives expected results."""

        # Add an unused port to host
        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 = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)
            self.assertEquals(host.assigned_host_ports(), {})

        # Change port name (force)
        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': True,
                            'ports': [{'label': 'beegfs_metadata1_iscsi_2', 'type': 'iscsi',
                                       'port': 'iqn.1993-08.org.debian.beegfs-metadata:01:69e4efdf30b8'}]})
            host = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)
            self.assertEquals(host.assigned_host_ports(), {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']})

        # Change port type
        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': True,
                            'ports': [{'label': 'beegfs_metadata1_iscsi_1', 'type': 'fc', 'port': '08:ef:7e:24:52:a0'}]})
            host = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)
            self.assertEquals(host.assigned_host_ports(), {})

        # take port from another host by force
        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': True,
                            'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
            host = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)
            self.assertEquals(host.assigned_host_ports(), {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']})

        # take port from another host by force
        with mock.patch(self.REQ_FUNC, side_effect=[(200, self.EXISTING_HOSTS), (200, {})]):
            self._set_args({'state': 'present', 'name': 'beegfs_metadata1', 'host_type': 'linux dm-mp', 'force_port': True,
                            'ports': [{'label': 'beegfs_metadata2_iscsi_0', 'type': 'iscsi', 'port': 'iqn.used_elsewhere'}]})
            host = NetAppESeriesHost()
            exists = host.host_exists
            self.assertTrue(host.needs_update)
            self.assertEquals(host.assigned_host_ports(apply_unassigning=True),
                              {'84000000600A098000A4B9D10030370B5D430109': ['89000000600A098000A4B28D00303CFC5D4300F7']})