tree aa7856d4f009a3fa9be65ca065af4dd065c18c53
parent 9c9453f78d76f623f494dce8b9422b18f3defdc0
author Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> 1386765145 +0900
committer Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> 1386768141 +0900

Fix the scope to share a server between tests

In test_server_actions.py, one server is created in setUpClass()
and the server would be shared between all tests.
If the server status is not 'ACTIVE' before each test, rebuild_
server() deletes it and rebuilds a server again.

The server_id scope which is passed to rebuild_server() is class
variable not instance variable. In addition, the server_id scope
which is stored with the return value of rebuild_server() is
instance variable like the following:

  [[instance]]                         [[class]]
  self.server_id = self.rebuild_server(self.server_id)

If we need to rebuild a server, the server_id, which is passed to
rebuild_server(), cannot be changed due to its scope. As the result,
many server creations happens in each test.
Then it causes "Quota exceeded" exception.

This patch fixes the scope of server_id for sharing the same server
between each tests.

Change-Id: I72b4aa73a6c77cce3a8e777d4f78913fb0986f66
Closes-Bug: #1257641
