Jump to: navigation, search

Difference between revisions of "XenServer/XenServer CI/AdminTips"

(project-config)
Line 106: Line 106:
 
These scripts are used by nodepool to prepare the nodes. Please see that nodepool's configuration refers to the location of these scripts.
 
These scripts are used by nodepool to prepare the nodes. Please see that nodepool's configuration refers to the location of these scripts.
 
* source code: https://github.com/citrix-openstack/project-config
 
* source code: https://github.com/citrix-openstack/project-config
* branch: xenserver-trusty
+
* branch: xenserver-ci
 
* cloned to: /root/src/project-config
 
* cloned to: /root/src/project-config
 
* to update these scripts, you don't need to restart any services.
 
* to update these scripts, you don't need to restart any services.

Revision as of 16:48, 28 October 2014

Questions

How can I get the list of job IDs (and the URL for the logs) given a specific testcase. For example, I would like to see all the jobs that failed in tempest.api.compute.servers.test_server_actions.ServerActionsTest.test_reboot_suspended_server_hard

Status

http://f0ab4dc4366795c303a0-8fd069087bab3f263c7f9ddd524fce42.r22.cf1.rackcdn.com/ci_status/results.html

Description

Nodepool service will launch an instance in the Rackspace cloud, and run the XenServer related scripts https://github.com/citrix-openstack/project-config/tree/xenserver-trusty/nodepool/scripts on those instances. The responsibilities of those scripts are:

After nodepool ran those scripts, it will take a snapshot of that node, so that further instances could be launched quicker. Unfortunately the upstream nodepool is not prepared for this lifecycle, so we are running a custom version of nodepool.

The second service is citrix-ci, which will get nodes from the pool and run https://github.com/stackforge/xenapi-os-testing/blob/master/run_tests.sh on them. This script will customise the cached version of devstack-gate.

The third service is citrix-ci-gerritwatch that is listening for gerrit events and communicates with citrix-ci.

Main box

This is the instance which orchestrates the execution of tests.

  • Authentication via ssh keys. For access, join the XenAPI team meeting on IRC.
  • All the components are deployed to this instance.
  • 166.78.153.192
  • created via jenkins job at Citrix

openstack-citrix-ci

  • to update:
    • Stop all its services
cd /root/src/openstack-citrix-ci
git pull
pip install -e .
    • Start the required services
  • configuration file: /root/osci.config

service: citrix-ci-gerritwatch

This service watches the gerrit stream and adds jobs to the queue

  • Logs: /var/log/citrix-ci-gerritwatch.log
  • (Re)start: (re)start citrix-ci-gerritwatch

service: citrix-ci

This service progresses jobs through the lifecycle (see below)

  • Logs: /var/log/citrix-ci.log
  • (Re)start: (re)start citrix-ci
  • three threads:
    • main (run through state machine, see below)
    • collect results (long blocking process, so its split out so main stuff makes progress -- service net?)
    • delete node (go to collected, delete is a pain, tries up to to 10 mins, need to fix the delete process!!!!!)

Utilities

  • osci-check-connection
    • checks to node, to xenserver, then logs uploaded to swift from both
  • osci-manage
    • what citrix-ci service runs
    • runs main lifecycle
    • can also manually add a job to the queue
  • osci-upload
    • upload logs from local host directory up to swift
    • called from osci-manage (via python not cli)
  • osci-watch-gerrit
    • what citrix-ci-gerrit-watch runs
    • reads gerrit stream and adds jobs to DB
  • osci-create-dbschema
    • creates job DB
  • osci-run-tests
    • e.g. osci-run-tests print user host ref
    • calls out to host to run tests
    • used (via python not cli) by osci-manage
  • osci-view
    • prints out the job DB in useful ways

To report status:

  • osci-view is called and content uploaded to swift
  • /src/openstack-citrix-ci/upload-ci-status

nodepool

The ssh-keys given to created xenserver boxes (nodes) are configured in the jenkins job that runs the above script to create the xenserver-ci box.

service: nodepool

Provisions VMs to use in the tests

  • Logs: /var/log/nodepool/nodepool.log, /var/log/nodepool/debug.log
  • (Re)start: killall nodepool; rm /var/run/nodepool/nodepool.pid; start nodepool

Utilities

to get information/control the nodepool service.

  • To list the images:
nodepool image-list

To see how its all doing:

nodepool list

To claim a node:

nodepool hold id

project-config

These scripts are used by nodepool to prepare the nodes. Please see that nodepool's configuration refers to the location of these scripts.

Useful commands

  • osci-view list: Gives current queue, what is running etc. Shouldn't have jobs in here that are 'older' than 2 hours unless they are 'Finished'.
  • nodepool list: Gives a list of the currently available nodes. Should have some nodes that are 'Ready' or 'Building'
  • eval `ssh-agent`; ssh-add ~/.ssh/citrix_gerrit; osci-manage -c 12345/1; ssh-agent -k: Queue job 12345, patchset 1

VM lifecycle

  • Queued -> Running: citrix-ci job has got a new node from nodepool (nodepool list will show it as 'held') does osci-run-tests to hand over to xenapi-os-testing
  • Running -> Collecting: Job has finished; citrix-ci has changed state to Collecting - waiting on log collection thread
  • Collecting -> Collected: Log collection thread has posted logs to swift and updated job with logs URL
  • Collected -> Finished: Citrix-ci has posted to gerrit and the job is now complete
  • <anything> -> Obsolete: a new job for the same change (recheck or new patchset) has been added

Code


TODO list

  • start using stackforge http://git.openstack.org/cgit/stackforge/xenapi-os-testing/
  • reduce number of excluded tests, using above stackforge integration
  • stop forking infra projects, where possible
  • consider moving to zuul, talk to turbo hipster folks
  • create new environment to test out config changes
  • create system to construct dev environments
  • trial out neutron based tests (with quark?)
  • BobBall to send johnthetubaguy an example on how to deploy the Main Box