Filter sequences output by release or cluster
It will be more usefull to get sequences for release or for cluster Change-Id: Ia2efc30050283da5653a1bbc23aeaf9f4de6a13b Partial-Bug: 1620620
This commit is contained in:
parent
80cc133047
commit
a022fd74ac
|
@ -14,6 +14,8 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import web
|
||||
|
||||
from nailgun.api.v1.handlers.base import TransactionExecutorHandler
|
||||
|
||||
from nailgun.api.v1.handlers.base import CollectionHandler
|
||||
|
@ -67,6 +69,31 @@ class SequenceCollectionHandler(CollectionHandler):
|
|||
validator = validators.SequenceValidator
|
||||
collection = objects.DeploymentSequenceCollection
|
||||
|
||||
@handle_errors
|
||||
@serialize
|
||||
def GET(self):
|
||||
""":returns: Collection of JSONized Sequence objects by release.
|
||||
|
||||
:http: * 200 (OK)
|
||||
:http: * 404 (Release or Cluster is not found)
|
||||
"""
|
||||
|
||||
release = self._get_release()
|
||||
if release:
|
||||
return self.collection.get_for_release(release)
|
||||
return self.collection.all()
|
||||
|
||||
def _get_release(self):
|
||||
params = web.input(release=None, cluster=None)
|
||||
if params.cluster:
|
||||
return self.get_object_or_404(
|
||||
objects.Cluster, id=params.cluster
|
||||
).release
|
||||
if params.release:
|
||||
return self.get_object_or_404(
|
||||
objects.Release, id=params.release
|
||||
)
|
||||
|
||||
|
||||
class SequenceExecutorHandler(TransactionExecutorHandler):
|
||||
"""Handler to execute deployment sequence."""
|
||||
|
|
|
@ -59,3 +59,8 @@ class DeploymentSequence(NailgunObject):
|
|||
class DeploymentSequenceCollection(NailgunCollection):
|
||||
|
||||
single = DeploymentSequence
|
||||
|
||||
@classmethod
|
||||
def get_for_release(cls, release):
|
||||
"""Get all sequences are associated with release."""
|
||||
return cls.filter_by(None, release_id=release.id)
|
||||
|
|
|
@ -91,6 +91,38 @@ class TestSequencesHandler(base.BaseIntegrationTest):
|
|||
)
|
||||
self.assertIsNone(sequence)
|
||||
|
||||
def test_get_list_of_sequences_by_release(self):
|
||||
self._create_sequence('test')
|
||||
resp = self.app.get(
|
||||
reverse('SequenceCollectionHandler') +
|
||||
"?release={0}".format(self.release.id),
|
||||
headers=self.default_headers
|
||||
)
|
||||
sequences = resp.json_body
|
||||
self.assertEqual('test', sequences[0]['name'])
|
||||
|
||||
def test_get_list_of_sequences_by_cluster(self):
|
||||
cluster = self.env.create(
|
||||
cluster_kwargs={'release_id': self.release.id}
|
||||
)
|
||||
self._create_sequence('test')
|
||||
resp = self.app.get(
|
||||
reverse('SequenceCollectionHandler') +
|
||||
"?cluster={0}".format(cluster.id),
|
||||
headers=self.default_headers
|
||||
)
|
||||
sequences = resp.json_body
|
||||
self.assertEqual('test', sequences[0]['name'])
|
||||
|
||||
def test_get_list_of_all_sequences(self):
|
||||
self._create_sequence('test')
|
||||
resp = self.app.get(
|
||||
reverse('SequenceCollectionHandler'),
|
||||
headers=self.default_headers
|
||||
)
|
||||
sequences = resp.json_body
|
||||
self.assertEqual('test', sequences[0]['name'])
|
||||
|
||||
|
||||
class TestSequenceExecutorHandler(base.BaseIntegrationTest):
|
||||
|
||||
|
|
Loading…
Reference in New Issue