def gate_patch_fuel_agent(self):
        """ Revert snapshot, update fuel-agent, bootstrap from review
        and provision one node

    Scenario:
        1. Revert snapshot "ready"
        2. Update fuel-agent, fuel-bootstrap-cli on master node
        3. Update fuel_bootstrap_cli.yaml
        4. Rebuild bootstrap
        5. Verify fuel-agent version in ubuntu bootstrap image
        6. Bootstrap 5 slaves
        7. Verify Ubuntu bootstrap on slaves
        8. Add 1 node with controller
        9. Add 1 node ironic role
        10. Deploy the cluster
        11. Verify fuel-agent version in ironic-bootstrap
        12. Upload image to glance
        13. Enroll Ironic nodes
        14. Boot nova instance
        15. Check Nova instance status

        Snapshot review_fuel_agent_ironic_deploy
        """
        if not settings.UPDATE_FUEL:
            raise exceptions.FuelQAVariableNotSet(settings.UPDATE_FUEL, 'true')

        self.show_step(1, initialize=True)
        self.env.revert_snapshot("ready")

        self.show_step(2)
        replace_rpm_package('fuel-agent')
        replace_rpm_package('fuel-bootstrap-cli')

        self.show_step(3)
        self.update_bootstrap_cli_yaml()

        self.show_step(4)
        if settings.UPDATE_FUEL:
            self.env.admin_actions.upload_packages(
                local_packages_dir=settings.UPDATE_FUEL_PATH,
                centos_repo_path=None,
                ubuntu_repo_path=settings.LOCAL_MIRROR_UBUNTU,
                clean_target=True)
        uuid, bootstrap_location = \
            self.env.fuel_bootstrap_actions.build_bootstrap_image()
        self.env.fuel_bootstrap_actions. \
            import_bootstrap_image(bootstrap_location)
        self.env.fuel_bootstrap_actions. \
            activate_bootstrap_image(uuid)

        self.show_step(5)
        check_package_version_injected_in_bootstraps("fuel-agent")

        self.show_step(6)
        self.env.bootstrap_nodes(
            self.env.d_env.nodes().slaves[:2])

        self.show_step(7)
        for node in self.env.d_env.nodes().slaves[:2]:
            _ip = self.fuel_web.get_nailgun_node_by_devops_node(node)['ip']
            verify_bootstrap_on_node(_ip, os_type="ubuntu", uuid=uuid)

        data = {
            "net_provider": 'neutron',
            "net_segment_type": settings.NEUTRON_SEGMENT['vlan'],
            "ironic": True}

        nodes = {
            'slave-01': ['controller'],
            'slave-02': ['ironic']}

        self.show_step(8)
        self.show_step(9)
        self.show_step(10)

        cluster_id = self._deploy_ironic_cluster(settings=data, nodes=nodes)

        ironic_conn = ironic_actions.IronicActions(
            self.fuel_web.get_public_vip(cluster_id))

        self.show_step(11)
        check_package_version_injected_in_bootstraps("fuel-agent",
                                                     cluster_id=cluster_id,
                                                     ironic=True)

        self.show_step(12)
        self.show_step(13)
        self._create_os_resources(ironic_conn)

        self.show_step(14)
        self._boot_nova_instances(ironic_conn)

        self.show_step(15)
        ironic_conn.wait_for_vms(ironic_conn)
        ironic_conn.verify_vms_connection(ironic_conn)

        self.env.make_snapshot("review_fuel_agent_ironic_deploy")
    def gate_patch_fuel_agent(self):
        """ Revert snapshot, update fuel-agent, bootstrap from review
        and provision one node

    Scenario:
        1. Revert snapshot "ready"
        2. Update fuel-agent, fuel-bootstrap-cli on master node
        3. Update fuel_bootstrap_cli.yaml
        4. Rebuild bootstrap
        5. Bootstrap 5 slaves
        6. Verify Ubuntu bootstrap on slaves
        7. Add 1 node with controller
        8. Add 1 node ironic role
        9. Deploy the cluster
        10. Verify fuel-agent version in ubuntu and ironic-bootstrap
        11. Upload image to glance
        12. Enroll Ironic nodes
        13. Boot nova instance
        14. Check Nova instance status

        Snapshot review_fuel_agent_ironic_deploy
        """
        if not settings.UPDATE_FUEL:
            raise exceptions.FuelQAVariableNotSet(settings.UPDATE_FUEL, 'true')

        self.show_step(1, initialize=True)
        self.env.revert_snapshot("ready")

        self.show_step(2)
        replace_rpm_package('fuel-agent')
        replace_rpm_package('fuel-bootstrap-cli')

        self.show_step(3)
        self.update_bootstrap_cli_yaml()

        self.show_step(4)
        uuid, bootstrap_location = \
            self.env.fuel_bootstrap_actions.build_bootstrap_image()
        self.env.fuel_bootstrap_actions. \
            import_bootstrap_image(bootstrap_location)
        self.env.fuel_bootstrap_actions. \
            activate_bootstrap_image(uuid)

        self.show_step(5)
        self.env.bootstrap_nodes(self.env.d_env.nodes().slaves[:2])

        self.show_step(6)
        for node in self.env.d_env.nodes().slaves[:2]:
            _ip = self.fuel_web.get_nailgun_node_by_devops_node(node)['ip']
            verify_bootstrap_on_node(_ip, os_type="ubuntu", uuid=uuid)

        data = {
            "net_provider": 'neutron',
            "net_segment_type": settings.NEUTRON_SEGMENT['vlan'],
            "ironic": True
        }

        nodes = {'slave-01': ['controller'], 'slave-02': ['ironic']}

        self.show_step(7)
        self.show_step(8)
        self.show_step(9)

        cluster_id = self._deploy_ironic_cluster(settings=data, nodes=nodes)

        ironic_conn = ironic_actions.IronicActions(
            self.fuel_web.get_public_vip(cluster_id))

        self.show_step(10)
        check_package_version_injected_in_bootstraps("fuel-agent")

        check_package_version_injected_in_bootstraps("fuel-agent",
                                                     cluster_id=cluster_id,
                                                     ironic=True)

        self.show_step(11)
        self.show_step(12)
        self._create_os_resources(ironic_conn)

        self.show_step(13)
        self._boot_nova_instances(ironic_conn)

        self.show_step(14)
        ironic_conn.wait_for_vms(ironic_conn)
        ironic_conn.verify_vms_connection(ironic_conn)

        self.env.make_snapshot("review_fuel_agent_ironic_deploy")
Example #3
0
    def gate_patch_nailgun_agent(self):
        """ Revert snapshot, update nailgun-agent, deploy one node

    Scenario:
        1. Revert snapshot "ready"
        2. Update fuel_bootstrap_cli.yaml
        3. Rebuild bootstrap
        4. Bootstrap 1 slave
        5. Verify nailgun-agent version in ubuntu bootstrap image
        6. Create environment via FUEL CLI
        7. Assign controller role
        8. Deploy

        """
        if not settings.UPDATE_FUEL:
            raise Exception("{} variable doesn't exist"
                            .format(settings.UPDATE_FUEL))
        self.show_step(1, initialize=True)
        self.env.revert_snapshot("ready")

        self.show_step(2)
        update_bootstrap_cli_yaml()

        self.show_step(3)
        if settings.UPDATE_FUEL:
            self.env.admin_actions.upload_packages(
                local_packages_dir=settings.UPDATE_FUEL_PATH,
                centos_repo_path=None,
                ubuntu_repo_path=settings.LOCAL_MIRROR_UBUNTU,
                clean_target=True)

        uuid, bootstrap_location = \
            self.env.fuel_bootstrap_actions.build_bootstrap_image()
        self.env.fuel_bootstrap_actions. \
            import_bootstrap_image(bootstrap_location)
        self.env.fuel_bootstrap_actions. \
            activate_bootstrap_image(uuid)

        self.show_step(4)
        self.env.bootstrap_nodes(
            self.env.d_env.nodes().slaves[:1])

        self.show_step(5)
        check_package_version_injected_in_bootstraps("nailgun-agent")

        release_id = self.fuel_web.get_releases_list_for_os(
            release_name=OPENSTACK_RELEASE)[0]

        self.show_step(6)
        cmd = ('fuel env create --name={0} --release={1} --nst=tun '
               '--json'.format(self.__class__.__name__, release_id))
        env_result = self.ssh_manager.execute_on_remote(
            ip=self.ssh_manager.admin_ip,
            cmd=cmd, jsonify=True)['stdout_json']
        cluster_id = env_result['id']

        self.show_step(7)
        self.fuel_web.update_nodes(
            cluster_id,
            {
                'slave-01': ['controller'],
            }
        )

        cluster_id = self.fuel_web.get_last_created_cluster()
        self.show_step(8)
        self.fuel_web.deploy_cluster_wait(cluster_id)

        self.env.make_snapshot("review_nailgun_agent_one_node")