def test_iscsi_disk_ip_valid(self): # these are all misparses we cannot catch trivially i = iscsi.IscsiDisk('iscsi:192.168::::target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, '192.168') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 0) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:[fe80::]::::target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'fe80::') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 0) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:test.example::::target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'test.example') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 0) self.assertEquals(i.target, 'target')
def test_iscsi_disk_target(self): with self.assertRaisesRegexp(ValueError, 'Both host and targetname'): iscsi.IscsiDisk('iscsi:192.168.1.12::::') with self.assertRaisesRegexp(ValueError, 'Both host and targetname'): iscsi.IscsiDisk('iscsi:[fe80::a634:d9ff:fe40:768a:6]::::') with self.assertRaisesRegexp(ValueError, 'Both host and targetname'): iscsi.IscsiDisk('iscsi:test.example.com::::')
def test_iscsi_disk_port(self): with self.assertRaisesRegexp(ValueError, 'Specified iSCSI port'): iscsi.IscsiDisk('iscsi:192.168.1.12::ABCD::target') with self.assertRaisesRegexp(ValueError, 'Specified iSCSI port'): iscsi.IscsiDisk('iscsi:[fe80::a634:d9ff:fe40:768a:6]::ABCD::' 'target') with self.assertRaisesRegexp(ValueError, 'Specified iSCSI port'): iscsi.IscsiDisk('iscsi:test.example.com::ABCD::target')
def test_iscsi_disk_basic(self): with self.assertRaisesRegexp(ValueError, 'must be specified'): iscsi.IscsiDisk('') # typo with self.assertRaisesRegexp(ValueError, 'must be specified'): iscsi.IscsiDisk('iscs:') # no specification with self.assertRaisesRegexp(ValueError, 'must be specified'): iscsi.IscsiDisk('iscsi:') with self.assertRaisesRegexp(ValueError, 'Both host and targetname'): iscsi.IscsiDisk('iscsi:::::')
def test_parse_iscsi_disk_from_config(self): """Test parsing iscsi volume path creates the same iscsi disk""" target = 'curtin-659d5f45-4f23-46cb-b826-f2937b896e09' iscsi_path = 'iscsi:10.245.168.20::20112:1:' + target cfg = { 'storage': { 'config': [{ 'type': 'disk', 'id': 'iscsidev1', 'path': iscsi_path, 'name': 'iscsi_disk1', 'ptable': 'msdos', 'wipe': 'superblock' }] } } expected_iscsi_disk = iscsi.IscsiDisk(iscsi_path) iscsi_disk = iscsi.get_iscsi_disks_from_config(cfg).pop() # utilize IscsiDisk str method for equality check self.assertEqual(str(expected_iscsi_disk), str(iscsi_disk)) # test with cfg.get('storage') since caller may already have # grabbed the 'storage' value from the curtin config iscsi_disk = iscsi.get_iscsi_disks_from_config( cfg.get('storage')).pop() # utilize IscsiDisk str method for equality check self.assertEqual(str(expected_iscsi_disk), str(iscsi_disk))
def test_iscsi_target_parsing(self): i = iscsi.IscsiDisk( 'iscsi:192.168.1.12::::iqn.2017-04.com.example.test:target-name') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 0) self.assertEquals(i.target, 'iqn.2017-04.com.example.test:target-name') i = iscsi.IscsiDisk('iscsi:[fe80::a634:d9ff:fe40:768a:6]::::' 'iqn.2017-04.com.example.test:target-name') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 0) self.assertEquals(i.target, 'iqn.2017-04.com.example.test:target-name') i = iscsi.IscsiDisk('iscsi:test.example.com::::' 'iqn.2017-04.com.example.test:target-name') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 0) self.assertEquals(i.target, 'iqn.2017-04.com.example.test:target-name')
def test_iscsi_disk_auth(self): # user without password with self.assertRaises(ValueError): iscsi.IscsiDisk('iscsi:[email protected]::::target') with self.assertRaises(ValueError): iscsi.IscsiDisk('iscsi:user@[fe80::a634:d9ff:fe40:768a:6]::::' 'target') with self.assertRaises(ValueError): iscsi.IscsiDisk('iscsi:[email protected]::::target') # iuser without password with self.assertRaises(ValueError): iscsi.IscsiDisk('iscsi:user:password:[email protected]::::target') with self.assertRaises(ValueError): iscsi.IscsiDisk('iscsi:user:password:iuser@' '[fe80::a634:d9ff:fe40:768a:6]::::target') with self.assertRaises(ValueError): iscsi.IscsiDisk( 'iscsi:user:password:[email protected]::::target')
def test_iscsi_disk_good_hostname(self): i = iscsi.IscsiDisk('iscsi:test.example.com:6:3260:1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:test.example.com::3260:1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:test.example.com:::1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:[email protected]:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:@test.example.com:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, '') self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:password:iuser:ipassword@' 'test.example.com:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, 'ipassword') self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:password:iuser:@' 'test.example.com:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, '') self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user::iuser:@test.example.com:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, '') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, '') self.assertEquals(i.host, 'test.example.com') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target')
def test_iscsi_disk_good_ipv6(self): i = iscsi.IscsiDisk( 'iscsi:[fe80::a634:d9ff:fe40:768a:6]:5:3260:1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk( 'iscsi:[fe80::a634:d9ff:fe40:768a:6]::3260:1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:[fe80::a634:d9ff:fe40:768a:6]:::1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:password@' '[fe80::a634:d9ff:fe40:768a:6]:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:@' '[fe80::a634:d9ff:fe40:768a:6]:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, '') self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:password:iuser:ipassword@' '[fe80::a634:d9ff:fe40:768a:6]:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, 'ipassword') self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:password:iuser:@' '[fe80::a634:d9ff:fe40:768a:6]:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, '') self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user::iuser:@' '[fe80::a634:d9ff:fe40:768a:6]:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, '') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, '') self.assertEquals(i.host, 'fe80::a634:d9ff:fe40:768a:6') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target')
def test_iscsi_disk_good_ipv4(self): i = iscsi.IscsiDisk('iscsi:192.168.1.12:6:3260:1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:192.168.1.12::3260:1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:192.168.1.12:::1:target') self.assertEquals(i.user, None) self.assertEquals(i.password, None) self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:[email protected]:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:@192.168.1.12:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, '') self.assertEquals(i.iuser, None) self.assertEquals(i.ipassword, None) self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:password:iuser:ipassword@' '192.168.1.12:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, 'ipassword') self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user:password:iuser:@' '192.168.1.12:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, 'password') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, '') self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target') i = iscsi.IscsiDisk('iscsi:user::iuser:@192.168.1.12:::1:target') self.assertEquals(i.user, 'user') self.assertEquals(i.password, '') self.assertEquals(i.iuser, 'iuser') self.assertEquals(i.ipassword, '') self.assertEquals(i.host, '192.168.1.12') self.assertEquals(i.proto, '6') self.assertEquals(i.port, 3260) self.assertEquals(i.lun, 1) self.assertEquals(i.target, 'target')
def test_iscsi_disk_ip(self): with self.assertRaisesRegexp(ValueError, 'Both host and targetname'): iscsi.IscsiDisk('iscsi:::::target')
def block_detach_iscsi_main(args): i = iscsi.IscsiDisk(args.disk) i.disconnect() return 0