Source code for atmo.clusters.queries
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at http://mozilla.org/MPL/2.0/.
from django.db import models
[docs]class EMRReleaseQuerySet(models.QuerySet):
"""
A Django queryset for the :class:`~atmo.clusters.models.EMRRelease` model.
"""
[docs] def natural_sort_by_version(self):
"""
Sorts this queryset by the EMR version naturally (human-readable).
"""
return self.extra(
select={
'natural_version': "string_to_array(version, '.')::int[]",
},
).order_by('-natural_version')
[docs] def active(self):
return self.filter(
is_active=True,
)
[docs] def stable(self):
"""
The EMR releases that are considered stable.
"""
return self.filter(
is_experimental=False,
is_deprecated=False,
is_active=True,
)
[docs] def experimental(self):
"""
The EMR releases that are considered experimental.
"""
return self.filter(
is_experimental=True,
is_active=True,
)
[docs] def deprecated(self):
"""
The EMR releases that are deprecated.
"""
return self.filter(
is_deprecated=True,
is_active=True,
)
[docs]class ClusterQuerySet(models.QuerySet):
"""A Django queryset that filters by cluster status.
Used by the :class:`~atmo.clusters.models.Cluster` model.
"""
[docs] def active(self):
"""
The clusters that have an active status.
"""
return self.filter(
most_recent_status__in=self.model.ACTIVE_STATUS_LIST,
)
[docs] def terminated(self):
"""
The clusters that have an terminated status.
"""
return self.filter(
most_recent_status__in=self.model.TERMINATED_STATUS_LIST,
)
[docs] def failed(self):
"""
The clusters that have an failed status.
"""
return self.filter(
most_recent_status__in=self.model.FAILED_STATUS_LIST,
)