LXC on sfcb Test Run Summary for Dec 22 2008

================================================= LXC on sfcb Test Run Summary for Dec 22 2008 ================================================= Distro: Fedora release 9.90.1 (Rawhide) Kernel: 2.6.27-0.323.rc6.fc10.x86_64 libvirt: 0.4.5 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.3preview Libvirt-cim revision: 791 Libvirt-cim changeset: 3557859610b4 Cimtest revision: 563 Cimtest changeset: e1783c9fa63c ================================================= FAIL : 3 XFAIL : 3 SKIP : 39 PASS : 95 ----------------- Total : 140 ================================================= FAIL Test Summary: NetworkPort - 02_np_gi_errors.py: FAIL RedirectionService - 03_RedirectionSAP_errs.py: FAIL SettingsDefine - 02_reverse.py: FAIL ================================================= XFAIL Test Summary: HostSystem - 02_hostsystem_to_rasd.py: XFAIL VSSD - 04_vssd_to_rasd.py: XFAIL VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL ================================================= SKIP Test Summary: ComputerSystem - 02_nosystems.py: SKIP ComputerSystem - 06_paused_active_suspend.py: SKIP ComputerSystem - 23_suspend_suspend.py: SKIP ComputerSystem - 32_start_reboot.py: SKIP ComputerSystem - 33_suspend_reboot.py: SKIP ComputerSystem - 35_start_reset.py: SKIP ComputerSystem - 40_RSC_start.py: SKIP ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP ComputerSystemIndication - 01_created_indication.py: SKIP ElementAllocatedFromPool - 03_reverse_errs.py: SKIP ElementAllocatedFromPool - 04_forward_errs.py: SKIP HostedDependency - 03_enabledstate.py: SKIP LogicalDisk - 01_disk.py: SKIP LogicalDisk - 02_nodevs.py: SKIP LogicalDisk - 03_ld_gi_errs.py: SKIP NetworkPort - 01_netport.py: SKIP NetworkPort - 03_user_netport.py: SKIP Processor - 01_processor.py: SKIP Processor - 02_definesys_get_procs.py: SKIP Processor - 03_proc_gi_errs.py: SKIP Profile - 02_profile_to_elec.py: SKIP RASD - 04_disk_rasd_size.py: SKIP ResourceAllocationFromPool - 05_RAPF_err.py: SKIP ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP SettingsDefineCapabilities - 05_reverse_vsmcap.py: SKIP VSSD - 02_bootldr.py: SKIP VirtualSystemManagementService - 06_addresource.py: SKIP VirtualSystemManagementService - 08_modifyresource.py: SKIP VirtualSystemManagementService - 09_procrasd_persist.py: SKIP VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP VirtualSystemManagementService - 12_referenced_config.py: SKIP VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP VirtualSystemMigrationService - 01_migratable_host.py: SKIP VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP ================================================= Full report: -------------------------------------------------------------------- AllocationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- AllocationCapabilities - 02_alloccap_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 01_enum.py: PASS -------------------------------------------------------------------- ComputerSystem - 02_nosystems.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- ComputerSystem - 03_defineVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 04_defineStartVS.py: PASS -------------------------------------------------------------------- ComputerSystem - 05_activate_defined_start.py: PASS -------------------------------------------------------------------- ComputerSystem - 06_paused_active_suspend.py: SKIP -------------------------------------------------------------------- ComputerSystem - 22_define_suspend.py: PASS -------------------------------------------------------------------- ComputerSystem - 23_suspend_suspend.py: SKIP -------------------------------------------------------------------- ComputerSystem - 27_define_suspend_errs.py: PASS -------------------------------------------------------------------- ComputerSystem - 32_start_reboot.py: SKIP -------------------------------------------------------------------- ComputerSystem - 33_suspend_reboot.py: SKIP -------------------------------------------------------------------- ComputerSystem - 35_start_reset.py: SKIP -------------------------------------------------------------------- ComputerSystem - 40_RSC_start.py: SKIP -------------------------------------------------------------------- ComputerSystem - 41_cs_to_settingdefinestate.py: SKIP -------------------------------------------------------------------- ComputerSystem - 42_cs_gi_errs.py: PASS -------------------------------------------------------------------- ComputerSystemIndication - 01_created_indication.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ElementAllocatedFromPool - 03_reverse_errs.py: SKIP -------------------------------------------------------------------- ElementAllocatedFromPool - 04_forward_errs.py: SKIP -------------------------------------------------------------------- ElementCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- ElementCapabilities - 02_reverse.py: PASS -------------------------------------------------------------------- ElementCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ElementCapabilities - 05_hostsystem_cap.py: PASS -------------------------------------------------------------------- ElementConforms - 01_forward.py: PASS -------------------------------------------------------------------- ElementConforms - 02_reverse.py: PASS -------------------------------------------------------------------- ElementConforms - 03_ectp_fwd_errs.py: PASS -------------------------------------------------------------------- ElementConforms - 04_ectp_rev_errs.py: PASS -------------------------------------------------------------------- ElementSettingData - 01_forward.py: PASS -------------------------------------------------------------------- ElementSettingData - 03_esd_assoc_with_rasd_errs.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- EnabledLogicalElementCapabilities - 02_elecap_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 01_enum.py: PASS -------------------------------------------------------------------- HostSystem - 02_hostsystem_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned CrossClass_GuestDom/mouse:xen instead of CrossClass_GuestDom/mouse:usb Class not found Bug:<00009> -------------------------------------------------------------------- HostSystem - 03_hs_to_settdefcap.py: PASS -------------------------------------------------------------------- HostSystem - 04_hs_to_EAPF.py: PASS -------------------------------------------------------------------- HostSystem - 05_hs_gi_errs.py: PASS -------------------------------------------------------------------- HostSystem - 06_hs_to_vsms.py: PASS -------------------------------------------------------------------- HostedDependency - 01_forward.py: PASS -------------------------------------------------------------------- HostedDependency - 02_reverse.py: PASS -------------------------------------------------------------------- HostedDependency - 03_enabledstate.py: SKIP -------------------------------------------------------------------- HostedDependency - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 01_forward.py: PASS -------------------------------------------------------------------- HostedResourcePool - 02_reverse.py: PASS -------------------------------------------------------------------- HostedResourcePool - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedResourcePool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- HostedService - 01_forward.py: PASS -------------------------------------------------------------------- HostedService - 02_reverse.py: PASS -------------------------------------------------------------------- HostedService - 03_forward_errs.py: PASS -------------------------------------------------------------------- HostedService - 04_reverse_errs.py: PASS -------------------------------------------------------------------- LogicalDisk - 01_disk.py: SKIP -------------------------------------------------------------------- LogicalDisk - 02_nodevs.py: SKIP ERROR - System has defined domains; unable to run -------------------------------------------------------------------- LogicalDisk - 03_ld_gi_errs.py: SKIP -------------------------------------------------------------------- Memory - 01_memory.py: PASS -------------------------------------------------------------------- Memory - 02_defgetmem.py: PASS -------------------------------------------------------------------- Memory - 03_mem_gi_errs.py: PASS -------------------------------------------------------------------- NetworkPort - 01_netport.py: SKIP -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: FAIL -------------------------------------------------------------------- NetworkPort - 03_user_netport.py: SKIP -------------------------------------------------------------------- Processor - 01_processor.py: SKIP -------------------------------------------------------------------- Processor - 02_definesys_get_procs.py: SKIP -------------------------------------------------------------------- Processor - 03_proc_gi_errs.py: SKIP -------------------------------------------------------------------- Profile - 01_enum.py: PASS -------------------------------------------------------------------- Profile - 02_profile_to_elec.py: SKIP -------------------------------------------------------------------- Profile - 03_rprofile_gi_errs.py: PASS -------------------------------------------------------------------- RASD - 01_verify_rasd_fields.py: PASS -------------------------------------------------------------------- RASD - 02_enum.py: PASS -------------------------------------------------------------------- RASD - 03_rasd_errs.py: PASS -------------------------------------------------------------------- RASD - 04_disk_rasd_size.py: SKIP -------------------------------------------------------------------- RedirectionService - 01_enum_crs.py: PASS -------------------------------------------------------------------- RedirectionService - 02_enum_crscap.py: PASS -------------------------------------------------------------------- RedirectionService - 03_RedirectionSAP_errs.py: FAIL ERROR - Unexpected rc code 1 and description Unable to determine console port for guest 'demo' ERROR - -------------- FAILED invalid_nameport ----------- : -------------------------------------------------------------------- ReferencedProfile - 01_verify_refprof.py: PASS -------------------------------------------------------------------- ReferencedProfile - 02_refprofile_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 01_forward.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 02_reverse.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 03_forward_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 04_reverse_errs.py: PASS -------------------------------------------------------------------- ResourceAllocationFromPool - 05_RAPF_err.py: SKIP -------------------------------------------------------------------- ResourcePool - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePool - 02_rp_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationCapabilities - 02_rpcc_gi_errs.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 01_enum.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 02_rcps_gi_errors.py: PASS -------------------------------------------------------------------- ResourcePoolConfigurationService - 03_CreateResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 04_CreateChildResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 05_AddResourcesToResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 06_RemoveResourcesFromResourcePool.py: SKIP -------------------------------------------------------------------- ResourcePoolConfigurationService - 07_DeleteResourcePool.py: SKIP -------------------------------------------------------------------- SettingsDefine - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefine - 02_reverse.py: FAIL ERROR - EnabledState is 3 instead of 2. ERROR - Try to increase the timeout and run the test again ERROR - Unable start dom 'virtgst' -------------------------------------------------------------------- SettingsDefine - 03_sds_fwd_errs.py: PASS -------------------------------------------------------------------- SettingsDefine - 04_sds_rev_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 01_forward.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 03_forward_errs.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 04_forward_vsmsdata.py: PASS -------------------------------------------------------------------- SettingsDefineCapabilities - 05_reverse_vsmcap.py: SKIP -------------------------------------------------------------------- SystemDevice - 01_forward.py: PASS -------------------------------------------------------------------- SystemDevice - 02_reverse.py: PASS -------------------------------------------------------------------- SystemDevice - 03_fwderrs.py: PASS -------------------------------------------------------------------- VSSD - 01_enum.py: PASS -------------------------------------------------------------------- VSSD - 02_bootldr.py: SKIP -------------------------------------------------------------------- VSSD - 03_vssd_gi_errs.py: PASS -------------------------------------------------------------------- VSSD - 04_vssd_to_rasd.py: XFAIL ERROR - InstanceID Mismatch ERROR - Returned VSSDC_dom/mouse:xen instead of VSSDC_dom/mouse:usb Bug:<00009> -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemManagementCapabilities - 02_vsmcap_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 01_definesystem_name.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 02_destroysystem.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 03_definesystem_ess.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 04_definesystem_ers.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 05_destroysystem_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 06_addresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 07_addresource_neg.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 08_modifyresource.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 09_procrasd_persist.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 10_hv_version.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 11_define_memrasdunits.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 12_referenced_config.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 13_refconfig_additional_devs.py: SKIP -------------------------------------------------------------------- VirtualSystemManagementService - 14_define_sys_disk.py: PASS -------------------------------------------------------------------- VirtualSystemManagementService - 15_mod_system_settings.py: XFAIL ERROR - rstest_domain not updated properly. ERROR - Exp AutomaticRecoveryAction=3, got 2 Bug:<00008> -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationCapabilities - 02_vsmc_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationService - 01_migratable_host.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 02_host_migrate_type.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationService - 05_migratable_host_errs.py: SKIP -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemMigrationSettingData - 02_vsmsd_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 01_forward.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 02_reverse.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 03_vssdc_fwd_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSettingDataComponent - 04_vssdc_rev_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotService - 02_vs_sservice_gi_errs.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 01_enum.py: PASS -------------------------------------------------------------------- VirtualSystemSnapshotServiceCapabilities - 02_vs_sservicecap_gi_errs.py: PASS --------------------------------------------------------------------

Guo Lian Yun wrote:
================================================= LXC on sfcb Test Run Summary for Dec 22 2008 ================================================= Distro: Fedora release 9.90.1 (Rawhide) Kernel: 2.6.27-0.323.rc6.fc10.x86_64 libvirt: 0.4.5 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.3preview Libvirt-cim revision: 791 Libvirt-cim changeset: 3557859610b4 Cimtest revision: 563 Cimtest changeset: e1783c9fa63c ================================================= FAIL : 3 XFAIL : 3 SKIP : 39 PASS : 95 ----------------- Total : 140 ================================================= FAIL Test Summary: NetworkPort - 02_np_gi_errors.py: FAIL
The tc fails because the LXC guest does not have any network interface information.
RedirectionService - 03_RedirectionSAP_errs.py: FAIL Fixed and submitted patch for the above. SettingsDefine - 02_reverse.py: FAIL The test passed when run manually.
Thanks and Regards, Deepti.

Deepti B Kalakeri wrote:
Guo Lian Yun wrote:
================================================= LXC on sfcb Test Run Summary for Dec 22 2008 ================================================= Distro: Fedora release 9.90.1 (Rawhide) Kernel: 2.6.27-0.323.rc6.fc10.x86_64 libvirt: 0.4.5 Hypervisor: QEMU 0.9.1 CIMOM: sfcb sfcbd 1.3.3preview Libvirt-cim revision: 791 Libvirt-cim changeset: 3557859610b4 Cimtest revision: 563 Cimtest changeset: e1783c9fa63c ================================================= FAIL : 3 XFAIL : 3 SKIP : 39 PASS : 95 ----------------- Total : 140 ================================================= FAIL Test Summary: NetworkPort - 02_np_gi_errors.py: FAIL
The tc fails because the LXC guest does not have any network interface information.
I believe we require Network NameSpace support to be able to define LXC guest. Can you let me know which rpm I need to install, since I am getting the following error when I try to define a guest with network information. Testing LXC hypervisor -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: FAIL ERROR - Got CIM error Failed to define domain: this function is not supported by the hypervisor: System lacks NETNS support with return code 1 ERROR - Define domain failed! InvokeMethod(DefineSystem): Failed to define domain: this function is not supported by the hypervisor: System lacks NETNS support -------------------------------------------------------------------- Thanks and Regards, Deepti.
RedirectionService - 03_RedirectionSAP_errs.py: FAIL Fixed and submitted patch for the above. SettingsDefine - 02_reverse.py: FAIL The test passed when run manually.
Thanks and Regards, Deepti.

================================================= FAIL Test Summary: NetworkPort - 02_np_gi_errors.py: FAIL The tc fails because the LXC guest does not have any network interface information. I believe we require Network NameSpace support to be able to define LXC guest. Can you let me know which rpm I need to install, since I am getting the following error when I try to define a guest with network information.
Testing LXC hypervisor -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: FAIL ERROR - Got CIM error Failed to define domain: this function is not supported by the hypervisor: System lacks NETNS support with return code 1 ERROR - Define domain failed! InvokeMethod(DefineSystem): Failed to define domain: this function is not supported by the hypervisor: System lacks NETNS support --------------------------------------------------------------------
NETNS support requires a kernel patch (or at least, last time I looked). The kernel for this system doesn't have the proper support. This test needs to SKIP if LXC_netns_support is set to False. -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com

Kaitlin Rupert wrote:
================================================= FAIL Test Summary: NetworkPort - 02_np_gi_errors.py: FAIL The tc fails because the LXC guest does not have any network interface information. I believe we require Network NameSpace support to be able to define LXC guest. Can you let me know which rpm I need to install, since I am getting the following error when I try to define a guest with network information.
Testing LXC hypervisor -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: FAIL ERROR - Got CIM error Failed to define domain: this function is not supported by the hypervisor: System lacks NETNS support with return code 1 ERROR - Define domain failed! InvokeMethod(DefineSystem): Failed to define domain: this function is not supported by the hypervisor: System lacks NETNS support --------------------------------------------------------------------
NETNS support requires a kernel patch (or at least, last time I looked). The kernel for this system doesn't have the proper support. This test needs to SKIP if LXC_netns_support is set to False.
The value of LXC_netns_support is set to false by default in the const.py. But, I guess this is not the appropriate way for verifying the NETNS support. Can you help me with the steps for automating the verification of the NETNS support in the kernel ? I shall update the tc to be skipped as of now for LXC by verifying the LXC_netns_support variable, we can update the tc to call appropriate function that verifies the NETNS support once it is in the test suite. Thanks and Regards, Deepti.

Deepti B Kalakeri wrote:
Kaitlin Rupert wrote:
================================================= FAIL Test Summary: NetworkPort - 02_np_gi_errors.py: FAIL The tc fails because the LXC guest does not have any network interface information. I believe we require Network NameSpace support to be able to define LXC guest. Can you let me know which rpm I need to install, since I am getting the following error when I try to define a guest with network information.
Testing LXC hypervisor -------------------------------------------------------------------- NetworkPort - 02_np_gi_errors.py: FAIL ERROR - Got CIM error Failed to define domain: this function is not supported by the hypervisor: System lacks NETNS support with return code 1 ERROR - Define domain failed! InvokeMethod(DefineSystem): Failed to define domain: this function is not supported by the hypervisor: System lacks NETNS support --------------------------------------------------------------------
NETNS support requires a kernel patch (or at least, last time I looked). The kernel for this system doesn't have the proper support. This test needs to SKIP if LXC_netns_support is set to False.
The value of LXC_netns_support is set to false by default in the const.py. But, I guess this is not the appropriate way for verifying the NETNS support. Can you help me with the steps for automating the verification of the NETNS support in the kernel ? I shall update the tc to be skipped as of now for LXC by verifying the LXC_netns_support variable, we can update the tc to call appropriate function that verifies the NETNS support once it is in the test suite.
Is checking for CONFIG_NET_NS=y in the .config file of the kernel, sufficient for verifying the NETNS support ?
Thanks and Regards, Deepti.

NETNS support requires a kernel patch (or at least, last time I looked). The kernel for this system doesn't have the proper support. This test needs to SKIP if LXC_netns_support is set to False.
The value of LXC_netns_support is set to false by default in the const.py. But, I guess this is not the appropriate way for verifying the NETNS support. Can you help me with the steps for automating the verification of the NETNS support in the kernel ? I shall update the tc to be skipped as of now for LXC by verifying the LXC_netns_support variable, we can update the tc to call appropriate function that verifies the NETNS support once it is in the test suite.
Is checking for CONFIG_NET_NS=y in the .config file of the kernel, sufficient for verifying the NETNS support ?
You can't guarantee that the running kernel was built with a given config. There's a kernel flag that you can enable to store the kernel config in /proc/config.gz, but kernels aren't often built with this flag set. libvirt checks the output of "ip --help". If netns is listed, then both ip and the kernel have NETNS support. You could do a similar check in const.py Thanks! -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com
participants (3)
-
Deepti B Kalakeri
-
Guo Lian Yun
-
Kaitlin Rupert