Test Plan for XenServer Fuel Plugin =================================== XenServer Fuel Plugin ===================== XenServer Fuel Plugin will help to deploy Mirantis OpenStack using the XenServer hypervisor to host virtual machines, making all the necessary changes to the Mirantis OpenStack to use the xenapi Nova compute driver. Developer’s Specification ========================= See developers specification in the source code repository at https://git.openstack.org/openstack/fuel-plugin-xenserver Limitations ----------- This version of XenServer Fuel Plugin has not been certified to work with the Ceilometer, MongoDB or Murano additional services. Future versions of the plugin will relax these restrictions. Test strategy ============= Acceptance criteria ------------------- All tests that do not depend on additional services must pass. Test environment, infrastructure and tools ------------------------------------------ All tests need to be run under a cluster of at least 4 XenServer machines with 3 physical NICs. As HA and multihost are enabled, a topology of 3 Controller Nodes + 3 Compute Nodes + 1 Storage Node will be recommended to be created as VMs on XenServer machines. Easy setup and management of those XenServers and VM Nodes can be achieved using XenCenter and a plugin, described below, to add an internal management network to VMs. To simplify setup, the fuel master is also installed on the XenServer hosts (so XenServer hosts can fully control the network setup), but this is not required. While many networking setups are expected to work, the following setup is used by this test plan: * eth0 / “Access network”: Used to access the XenServer hosts and the Fuel Master’s web interface * eth1 / “Control network”: OpenStack control plane (management and storage), the PXE network and the public network; all separated by VLAN tags. The public network is also on this network, and if a VLAN is required this is applied by the switch for untagged traffic. * eth2 / “VLAN network”: This version of the plugin only supports VLAN segmentation for Neutron networking. This device carries all of the VLANs to be used by Neutron for VM traffic. .. image:: _static/topology00.png :width: 80% For the hardware configuration see Mirantis OpenStack Planning Guide at https://docs.mirantis.com/openstack/fuel/fuel-8.0/mos-planning-guide.html Product compatibility matrix ---------------------------- The plugin is compatible with MOS 8.0 and XenServer 6.5 SP1, with all hotfixes applied (Especially hotfix XS65ESP1013). Prerequirements =============== Prepare XenServers ------------------ #. Install and start XenCenter on your Windows PC #. Add new servers with a common root password in XenCenter #. Plug three physical NIC to each of all XenServer machines, make sure the cabling of all NIC 0 are attached to the ‘access’ network, all NIC 1 to the ‘public’ network and NIC 2 are attached to the isolated, ‘VLAN network’. It is recommended to rename these networks using XenCenter to make the network topology clear. #. Add a further network, with a vlan tag that will be used for PXE. Prepare Fuel Master ------------------- #. Upload Fuel ISO to a NFS/Samba server and make it accessible to your XenServer hosts. #. Select a XenServer and click “New Storage” button, in the popup window check on CIFS/NFS ISO library and input NFS/Samba server path. #. Create a new VM in XenCenter using the “Other Install Media” template (to ensure a HVM domain is created) with and PXE network as eth0 and ‘access’ network as eth1. In the Console Tab, insert Fuel ISO and install. #. In fuel menu, enable eth1 with DHCP so the fuel master can be accessed over the ‘access’ network. #. Select Fuel Master in XenCenter and switch to Console tab, login with prompted user and password #. Visit http://ip_of_fuel_master:8000 in browser. Type of testing =============== Install XenServer Fuel Plugin ----------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - insall_xfp * - Description - Verify that XenServer Fuel Plugin can be installed into Fuel Master, and the new OpenStack release is registered. * - Steps - | ``fuel plugins --install /tmp/fuel-plugin-xenserver-3.1-3.1.0-1.noarch.rpm`` | ``fuel plugins`` | ``id | name | version | package_version`` | ``1 | fuel-plugin-xenserver | 3.1.0 | 4.0.0`` * - Expected Result - | ``fuel plugins`` | ``id | name | version | package_version`` | ``1 | fuel-plugin-xenserver | 3.1.0 | 4.0.0`` Prepare Nodes ------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - prepare_nodes * - Description - Verify all controller/compute/storage nodes are ready for PXE install. * - Steps - #. Create 3 new VMs in XenCenter in different XenServers and name them Controller1, Controller2, Controller3 #. Create 3 new VMs in XenCenter in different XenServers and name them Compute1, Compute2, Compute3 #. Create 1 new VM in XenCenter and name it Storage1 #. Add ‘PXE’ network as eth0, Public/Management/Storage network as eth1 and ‘VLAN network’ as eth2 to each of new VMs created above. * - Expected Result - All nodes are shown in XenCenter with ‘PXE network’ as eth0 and ‘VLAN network’ as eth1. Install XenCenter HIMN plugin ----------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - install_xcp * - Description - Verify XenCenter HIMN plugin is installed to Windows. * - Steps - #. Download SetupHIMN from http://ca.downloads.xensource.com/OpenStack/Plugins/ #. Install MSI to your XenCenter #. Restart XenCenter * - Expected Result - Right click on any selected VMs, there will be a menu item “Manage internal management network”. Add Host Internal Management Network to Compute Nodes ----------------------------------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - add_himn * - Description - Verify (or add) Host Internal Management Network is added to all Compute Nodes. * - Steps - #. Select Compute1, Compute2, Compute3 in XenCenter #. Right click on above nodes and select “Manage internal management network” menu. #. In the popup window, after status detection, make sure all selected Compute nodes are checked on. Click on “Manage internal management network” button. #. After processing, the status column should be shown as management network is added with new generated MAC address #. Close the management network window * - Expected Result - The wizard will report success, however the networks may not be visible in XenCenter. Create an OpenStack environment with XenServer Fuel Plugin ---------------------------------------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - create_env * - Description - Verify that an OpenStack environment created with XenServer Fuel Plugin can have XenServer options and options of hypervisor/network/storage/additional services are disabled. * - Steps - #. Create new OpenStack environment Fuel Web UI and select “Liberty on Ubuntu 14.04” in the OpenStack release dropdown list #. Check off QEMU and check on XenServer, Network is default to “Neutron with VLAN segmentation” and Storage is default to Cinder. Other options are disabled. #. In Nodes Tab, add all 3 Controller Nodes, 3 Compute Nodes and 1 Storage Node. #. Select all Compute Nodes and click “Configure Interfaces”, drag Storage/Management network from default eth0 to eth1, Private network to eth2. Leave PXE on eth0. No networks should be assigned to the final interface. #. Select all Controller and Storage Nodes and click “Configure Interfaces”, drag Storage/Management network from default eth0 to eth1, Private network to eth2. Leave PXE on eth0. #. In Networks Tab, set the vlan tags according to your network interfaces previous set and make sure network range will not be conflicting with other systems in the same lab. Then click “Verify Networks” button. #. In the Settings Tab under the side tab “Compute”, input the credential applied to all your XenServer hosts. #. Click “Deploy Changes” button * - Expected Result - Deploy of nodes all succeed Verify hypervisor type ---------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - verify_hypervisor * - Description - Verify that all hypervisors are identified by OpenStack as ‘xen’. * - Steps - #. Login to Horizon with admin user when OpenStack deployment is finished. #. Enter into Admin->Hypervisors * - Expected Result - The Type column should show xen for all hypervisors. Create guest instances ---------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - create_instances * - Description - Verify that new environment can create guest instances. * - Steps - #. Create an instance with image of TestVM and flavor of m1.tiny in either of Horizon or Controller Node. #. Find the instance in XenCenter and switch to Console Tab. #. Login with the username and password that prompted in the terminal screen. #. Ping out to 8.8.8.8 * - Expected Result - Guest instances can ping out. Verify Fuel Health Checks ------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - verify_health_checks * - Description - Ensure that all applicable health checks pass * - Steps - #. Within the Fuel Master, select the appropriate environment #. Run all health checks and wait for completion * - Expected Result - All health checks, except those requiring additional services (e.g. Ceilometer) and those where the configuration has not been changed from the defaults, pass Mandatory Tests =============== Install plugin and deploy environment ------------------------------------- Covered above. Modifying env with enabled plugin (removing/adding compute nodes) ----------------------------------------------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - modify_env_compute_nodes * - Description - Adding/removing compute nodes to an existing environment * - Steps - #. Create one more compute following the procedure in step prepare_nodes #. Add compute node to an existing environment #. Redeploy cluster #. Run Health Check #. Remove a compute node #. Redeploy cluster #. Run Health Check * - Expected Result - Removing a compute node will cause “Sanity tests-Check that required services are running” fail. “Some nova services have not been started.. Please refer to OpenStack logs for more details.” Modifying env with enabled plugin (removing/adding controller nodes) -------------------------------------------------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - modify_env_controller_nodes * - Description - Adding/removing controller nodes to an existing environment * - Steps - #. Create one more controller following the procedure in step prepare_nodes #. Add controller node to an existing environment #. Redeploy cluster #. Run Health Check #. Remove a compute node (not the primary controller node) #. Redeploy cluster #. Run Health Check * - Expected Result - (Probably caused by previous test modify_env_compute_nodes)Removing a compute node will cause “Sanity tests-Check that required services are running” fail. “Some nova services have not been started.. Please refer to OpenStack logs for more details.” Create mirror and update (setup) of core repos --------------------------------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - create_mirror_update_core_repos * - Description - Fuel create mirror and update (setup) of core repos * - Steps - #. Launch the following command on the Fuel Master node: ``fuel-mirror create -G mos -P ubuntu`` #. Launch the following command on the Fuel Master node: ``fuel-mirror apply -G mos -P ubuntu -e ENV_ID``, ENV_ID is the id of the deployed cluster #. Check if MOS repositories have been changed to local #. Run Health Check * - Expected Result - Health Checks are passed. - MOS repositories have been changed to local - XenServer Fuel plugin doesn't launch any services, so the check of process PID and status can be skipped Uninstall of plugin with deployed environment --------------------------------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - uninstall_plugin_with_deployed_env * - Description - Verify XenServer Fuel Plugin cannot be uninstalled before all dependant environments are removed. * - Steps - ``fuel plugins --remove fuel-plugin-xenserver==3.1.0`` * - Expected Result - 400 Client Error: Bad Request (Can't delete plugin which is enabled for some environment.) Uninstall of plugin ------------------- .. tabularcolumns:: |p{3cm}|p{13cm}| .. list-table:: :header-rows: 0 * - Test Case ID - uninstall_plugin * - Description - Verify XenServer Fuel Plugin can be uninstalled as well as XenServer OpenStack release after all dependant environments are removed. * - Steps - | ``fuel plugins --remove fuel-plugin-xenserver==3.1.0`` | ``fuel plugins`` * - Expected Result - Plugin is removed. Appendix ======== * XenServer Fuel Plugin Repository: https://git.openstack.org/cgit/openstack/fuel-plugin-xenserver * XenCenter HIMN Plugin GitHub: https://github.com/citrix-openstack/xencenter-himn-plugin * Plugin download server: http://ca.downloads.xensource.com/OpenStack/Plugins/ Revision history ================ .. list-table:: :header-rows: 1 * - Version - Revision Date - Editor - Comment * - 1.0 - 18.09.2015 - John Hua (john.hua@citrix.com) - First draft. * - 2.0 - 18.11.2015 - John Hua (john.hua@citrix.com) - Revised for Fuel 7.0 * - 3.0 - 22.03.2016 - John Hua (john.hua@citrix.com) - Revised for Fuel 8.0 * - 3.1 - 22.03.2016 - John Hua (john.hua@citrix.com) - Revised for plugin 3.1.0