def test_create_cg_with_hosts(self): lun1 = UnityLun(cli=t_rest(), _id='sv_3338') host1 = UnityHost(cli=t_rest(), _id='Host_14') host2 = UnityHost(cli=t_rest(), _id='Host_15') cg = UnityConsistencyGroup.create( t_rest(), 'Muse', lun_add=[lun1], hosts=[host1, host2]) hosts = cg.block_host_access assert_that(len(hosts), equal_to(2)) for mask in hosts.access_mask: assert_that(mask, equal_to(HostLUNAccessEnum.BOTH))
def test_update_initators_with_fc(self): host = UnityHost(cli=t_rest(), _id='Host_9') r = host.update_initiators(wwns=[ "50:00:14:40:47:B0:0C:44:50:00:14:42:D0:0C:44:11", "50:00:14:40:47:B0:0C:44:50:00:14:42:D0:0C:44:12" ]) assert_that(r, equal_to(3))
def test_fc_initiator_create(self): host = UnityHost(cli=t_rest(), _id='Host_9') type = HostInitiatorTypeEnum.FC wwn = "50:00:14:40:47:B0:0C:44:50:00:14:42:D0:0C:44:10" initiator = UnityHostInitiator.create(t_rest(), wwn, host, type) assert_that(initiator, instance_of(UnityHostInitiator)) assert_that(initiator.initiator_id, equal_to(wwn))
def test_iscsi_initiator_create(self): host = UnityHost(cli=t_rest(), _id='Host_9') type = HostInitiatorTypeEnum.ISCSI iqn = "iqn.1993-08.org.debian:01:a4f95ed14d65" initiator = UnityHostInitiator.create(t_rest(), iqn, host, type) assert_that(initiator, instance_of(UnityHostInitiator)) assert_that(initiator.initiator_id, equal_to(iqn))
def test_lun_attach_to_with_hlu(self): host = UnityHost(_id="Host_1", cli=t_rest()) lun = UnityLun(_id='sv_6', cli=t_rest(version='4.4.0')) resp = lun.attach_to(host, access_mask=HostLUNAccessEnum.BOTH, hlu=1655) assert_that(resp.is_ok(), equal_to(True))
def test_add_initiator_iscsi_already_existed(self): host = UnityHost(cli=t_rest(), _id='Host_9') iqn = "iqn.1993-08.org.debian:01:a4f95ed19999" def _inner(): host.add_initiator(iqn) assert_that(_inner, raises(UnityHostInitiatorExistedError))
def test_attach_with_retry_snap_not_skip_hlu_0_5_0_0(self): host = UnityHost(cli=t_rest(), _id='Host_27') snap = UnitySnap(_id='38654705831', cli=t_rest(version='5.0.0')) with mock.patch('storops.unity.resource.host.UnityHost.' '_modify_hlu') as mock_modify_hlu: hlu = host._attach_with_retry(snap, False) assert_that(mock_modify_hlu.called, equal_to(False)) assert_that(hlu, equal_to(0))
def test_attach_with_retry_hlu_in_use_but_no_retry(self): host = UnityHost(cli=t_rest(), _id='Host_24') lun = UnityLun(_id='sv_5610', cli=t_rest()) lun.is_cg_member = False with mock.patch('storops.unity.resource.host.UnityHost.' '_modify_hlu', new=mock.Mock(side_effect=UnityHluNumberInUseError)): assert_that(host._attach_with_retry(lun, True), equal_to(1))
def test_add_initiator_iscsi(self): host = UnityHost(cli=t_rest(), _id='Host_1') iqn = "iqn.1993-08.org.debian:01:a4f95ed19999" initiator = host.add_initiator(iqn) assert_that(initiator, instance_of(UnityHostInitiator)) assert_that(initiator.existed, equal_to(True)) assert_that(host.iscsi_host_initiators, instance_of(UnityHostInitiatorList))
def test_attach_alu_exceed_limit(self): host = UnityHost(cli=t_rest(), _id='Host_11') lun = UnityLun(cli=t_rest(), _id="sv_2") def f(): host.attach_alu(lun) assert_that(f, raises(UnityAttachAluExceedLimitError))
def test_delete_initiator_not_found(self): host = UnityHost(cli=t_rest(), _id='Host_1') wwn = "50:00:14:40:47:B0:0C:44:50:00:14:42:99:99:99:99" def f(): host.delete_initiator(wwn) assert_that(f, raises(UnityHostInitiatorNotFoundError))
def test_attach_attached_hlu(self): host = UnityHost(cli=t_rest(), _id='Host_10') lun = UnityLun(cli=t_rest(), _id="sv_2") def f(): host.attach_alu(lun) assert_that(f, raises(UnityAluAlreadyAttachedError))
def test_add_not_exist_initiator_with_force(self): host = UnityHost(cli=t_rest(), _id='Host_9') wwn = "50:00:14:40:47:B0:0C:44:50:00:14:42:D0:0C:99:99" initiator = host.add_initiator(wwn, force_create=True) assert_that(initiator, instance_of(UnityHostInitiator)) assert_that(initiator.existed, equal_to(True)) assert_that(host.fc_host_initiators, instance_of(UnityHostInitiatorList))
def test_add_initiator_not_exist(self): host = UnityHost(cli=t_rest(), _id='Host_9') wwn = "50:00:14:40:47:B0:0C:44:50:00:14:42:D0:0C:99:99" def f(): host.add_initiator(wwn, force_create=False) assert_that(f, raises(UnityHostInitiatorNotFoundError))
def test_add_initiator(self): host = UnityHost(cli=t_rest(), _id='Host_9') wwn = "50:00:14:40:47:B0:0C:44:50:00:14:42:D0:0C:44:10" initiator = host.add_initiator(wwn) assert_that(initiator, instance_of(UnityHostInitiator)) assert_that(initiator.existed, equal_to(True)) assert_that(host.fc_host_initiators, instance_of(UnityHostInitiatorList))
def test_initiator_modify(self): initiator = UnityHostInitiator(cli=t_rest(), _id='HostInitiator_2') assert_that(initiator.parent_host, instance_of(UnityHost)) assert_that(initiator.parent_host.id, equal_to("Host_1")) host = UnityHost(cli=t_rest(), _id='Host_19') resp = initiator.modify(host=host) assert_that(resp.is_ok(), equal_to(True)) assert_that(initiator.parent_host, instance_of(UnityHost))
def test_get_hlu_using_object_id_filter(self): host = UnityHost(cli=t_rest(), _id='Host_10') lun = UnityLun(cli=t_rest(), _id="sv_2") filters = {'host.id': host.id, 'lun.id': lun.id} host_lun = UnityHostLunList.get(cli=t_rest(), **filters) assert_that(host_lun, instance_of(UnityHostLunList)) assert_that(len(host_lun), equal_to(1)) hlu = host.get_hlu(lun) assert_that(hlu, equal_to(host_lun[0].hlu))
def test_unknown_initiator_create(self): host = UnityHost(cli=t_rest(), _id='Host_9') type = HostInitiatorTypeEnum.UNKNOWN iqn = "iqn.1993-08.org.debian:01:a4f95ed14d65" def f(): UnityHostInitiator.create(t_rest(), iqn, host, type) assert_that(f, raises(UnityHostInitiatorUnknownType))
def test_attach_with_retry_snap_not_skip_hlu_0(self): host = UnityHost(cli=t_rest(), _id='Host_27') snap = UnitySnap(_id='38654705831', cli=t_rest()) with mock.patch( 'storops.unity.resource.host.UnityHost.' '_random_hlu_number', new=lambda _: 12781): hlu = host._attach_with_retry(snap, False) assert_that(hlu, equal_to(0))
def test_nested_properties_shadow_copy(self): host = UnityHost(_id='Host_12', cli=t_rest()) host.fc_host_initiators[0].paths[0].is_logged_in = False host.fc_host_initiators[0].paths[0].initiator.type = \ HostInitiatorTypeEnum.ISCSI paths = host.fc_host_initiators[0].paths.shadow_copy() assert_that(paths[0].is_logged_in, equal_to(False)) assert_that(paths[0].initiator.type, equal_to(HostInitiatorTypeEnum.ISCSI))
def test_unity_name_not_unique_error(self): ex = UnityNameNotUniqueError(objects=None) assert_that(str(ex), equal_to('multiple objects found')) assert_that(ex.objects, equal_to(None)) host = UnityHost(_id=9999) ex = UnityNameNotUniqueError("Multipath hosts found.", objects=host) assert_that(str(ex), equal_to('Multipath hosts found.')) assert_that(ex.objects, equal_to(host))
def test_lun_modify_host_access(self): host = UnityHost(_id="Host_1", cli=t_rest()) lun = UnityLun(_id='sv_4', cli=t_rest()) host_access = [{'host': host, 'accessMask': HostLUNAccessEnum.BOTH}] lun.modify(host_access=host_access) lun.update() assert_that(lun.host_access[0].host, equal_to(host)) assert_that(lun.host_access[0].access_mask, equal_to(HostLUNAccessEnum.BOTH))
def test_attach_with_retry_hlu_in_use(self): host = UnityHost(cli=t_rest(), _id='Host_23') lun = UnityLun(_id='sv_5610', cli=t_rest()) lun.is_cg_member = False with mock.patch('storops.unity.resource.host.UnityHost.' '_modify_hlu', new=mock.Mock(side_effect=UnityHluNumberInUseError)): assert_that( calling(host._attach_with_retry).with_args(lun, True), raises(UnityHluNumberInUseError))
def test_attach_with_retry_skip_hlu_0(self): host = UnityHost(cli=t_rest(), _id='Host_23') lun = UnityLun(_id='sv_5610', cli=t_rest()) lun.is_cg_member = False with mock.patch( 'storops.unity.resource.host.UnityHost.' '_random_hlu_number', new=lambda _: 12781): hlu = host._attach_with_retry(lun, True) assert_that(hlu, is_not(equal_to(0))) assert_that(hlu, equal_to(12781))
def test_attach_with_retry_no_hlu_available(self): host = UnityHost(cli=t_rest(), _id='Host_23') lun = UnityLun(_id='sv_5610', cli=t_rest()) lun.is_cg_member = False with mock.patch( 'storops.unity.resource.host.UnityHost.' '_random_hlu_number', new=mock.Mock(side_effect=UnityNoHluAvailableError)): assert_that( calling(host._attach_with_retry).with_args(lun, True), raises(UnityNoHluAvailableError))
def test_attach_with_retry_snap_skip_hlu_0_5_0_0(self): host = UnityHost(cli=t_rest(), _id='Host_27') snap = UnitySnap(_id='38654705831', cli=t_rest(version='5.0.0')) with mock.patch( 'storops.unity.resource.host.UnityHost.' '_random_hlu_number', new=lambda _: 12782): with mock.patch('storops.unity.resource.host.UnityHost.' '_modify_hlu') as mock_modify_hlu: hlu = host._attach_with_retry(snap, True) host_lun = host.get_host_lun(snap) mock_modify_hlu.assert_called_with(host_lun, 12782) assert_that(hlu, equal_to(12782))
def test_nested_properties(self): host = UnityHost(_id='Host_12', cli=t_rest()) assert_that( host.fc_host_initiators.initiator_id, only_contains('20:00:00:00:C9:F3:AB:0C:10:00:00:00:C9:F3:AB:0C', '20:00:00:00:C9:F3:AB:0D:10:00:00:00:C9:F3:AB:0D')) assert_that(host.iscsi_host_initiators.initiator_id, only_contains( 'iqn.1998-01.com.vmware:esx239209-7e7a57a4')) assert_that(host.fc_host_initiators[0].paths[0].is_logged_in, equal_to(True)) assert_that( host.fc_host_initiators[1].paths[0].fc_port.wwn, equal_to('50:06:01:60:C7:E0:01:DA:50:06:01:6C:47:E0:01:DA'))
def test_get_hlu(self): host = UnityHost(cli=t_rest(), _id='Host_10') lun = UnityLun(cli=t_rest(), _id="sv_2") # UnityResourceList will return the found UnityResource # When '_id' as filter. host_lun = UnityHostLunList.get(cli=t_rest(), _id="Host_10_sv_2_prod") assert_that(host_lun, instance_of(UnityHostLun)) hlu = host.get_hlu(lun) assert_that(hlu, equal_to(host_lun.hlu)) # Be caureful, this will return UnityResourceList when 'id' as filter host_lun2 = UnityHostLunList.get(cli=t_rest(), id="Host_10_sv_2_prod") assert_that(host_lun2, instance_of(UnityHostLunList)) assert_that(len(host_lun2), equal_to(1)) assert_that(host_lun, equal_to(host_lun2[0]))
def test_attach_exceptions(self): host = UnityHost(cli=t_rest(), _id='Host_23') lun = UnityLun(_id='sv_5609', cli=t_rest()) with mock.patch( 'storops.unity.resource.host.UnityHost.' '_attach_with_retry', new=mock.Mock(side_effect=SystemAPINotSupported)): assert_that( calling(host.attach).with_args(lun, skip_hlu_0=True), raises(SystemAPINotSupported)) with mock.patch( 'storops.unity.resource.host.UnityHost._attach_with_retry', new=mock.Mock(side_effect=UnityAttachExceedLimitError)): assert_that( calling(host.attach).with_args(lun, skip_hlu_0=True), raises(UnityAttachExceedLimitError))
def test_attach_exceptions_detach_dummy_lun(self): host = UnityHost(cli=t_rest(), _id='Host_26') lun = UnityLun(_id='sv_5611', cli=t_rest()) lun.is_cg_member = False with mock.patch( 'storops.unity.resource.host.UnityHost.' '_attach_with_retry', new=mock.Mock(side_effect=UnityHluNumberInUseError)): assert_that( calling(host.attach).with_args(lun, skip_hlu_0=True), raises(UnityHluNumberInUseError)) with mock.patch( 'storops.unity.resource.host.UnityHost._attach_with_retry', new=mock.Mock(side_effect=UnityNoHluAvailableError)): assert_that( calling(host.attach).with_args(lun, skip_hlu_0=True), raises(UnityNoHluAvailableError))