MT#56231 repoapi: refactor PPA removal logic

* move it to GerritRepoInfo Manager

Change-Id: Iffabece2f11e444f4bd7e3ab144f552687f9396a
master
Victor Seva 2 years ago
parent 06b409b7ea
commit 44e869875d

@ -12,10 +12,46 @@
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
import structlog
from django.db import models
from django_extensions.db.fields import CreationDateTimeField
from django_extensions.db.fields import ModificationDateTimeField
from ..tasks import jenkins_remove_project
from ..utils import jenkins_remove_ppa
logger = structlog.get_logger(__name__)
class GerritRepoInfoManager(models.Manager):
def review_removed(self, ppa, gerrit_change, projectname, jbi_id=None):
qs = self.get_queryset().filter(param_ppa=ppa)
structlog.contextvars.bind_contextvars(
ppa=ppa,
gerrit_change=gerrit_change,
)
try:
gri = qs.get(gerrit_change=gerrit_change)
gri.delete()
logger.info("removed gri")
except GerritRepoInfo.DoesNotExist:
logger.info("gri already gone")
pass
ppa_count = qs.count()
project_ppa_count = qs.filter(projectname=projectname).count()
if ppa_count == 0:
logger.info("trigger ppa removal")
jenkins_remove_ppa(ppa)
elif project_ppa_count == 0 and jbi_id is not None:
logger.info("remove source+packages from ppa")
jenkins_remove_project.delay(jbi_id)
else:
logger.info(
"nothing to do here",
ppa_count=ppa_count,
project_ppa_count=project_ppa_count,
)
class GerritRepoInfo(models.Model):
param_ppa = models.CharField(max_length=50, null=False)
@ -23,6 +59,7 @@ class GerritRepoInfo(models.Model):
projectname = models.CharField(max_length=100)
created = CreationDateTimeField()
modified = ModificationDateTimeField()
objects = GerritRepoInfoManager()
class Meta:
unique_together = ["param_ppa", "gerrit_change"]

@ -17,10 +17,9 @@ from django.apps import apps
from django.db.models.signals import post_save
from django.dispatch import receiver
from . import utils
from .models.wni import NoteInfo
from .tasks import get_jbi_files
from .tasks import jenkins_remove_project
from .utils import get_next_release
from .utils import regex_mrXXX
from release_dashboard.utils.build import is_ngcp_project
@ -72,37 +71,13 @@ def gerrit_repo_del(instance):
if instance.param_ppa == "$ppa":
logger.warn("ppa unset, skip removal")
return
structlog.contextvars.bind_contextvars(
instance=str(instance),
branch=instance.param_branch,
ppa=instance.param_ppa,
gerrit_change=instance.gerrit_change,
)
GerritRepoInfo = apps.get_model("repoapi", "GerritRepoInfo")
gri = GerritRepoInfo.objects
try:
ppa = gri.get(
param_ppa=instance.param_ppa, gerrit_change=instance.gerrit_change
)
ppa.delete()
logger.info("removed ppa")
except GerritRepoInfo.DoesNotExist:
logger.info("ppa already gone")
pass
qs = gri.filter(param_ppa=instance.param_ppa)
ppa_count = qs.count()
project_ppa_count = qs.filter(projectname=instance.projectname).count()
if ppa_count == 0:
utils.jenkins_remove_ppa(instance.param_ppa)
elif project_ppa_count == 0:
logger.info("remove source+packages from ppa")
jenkins_remove_project.delay(instance.id)
else:
logger.info(
"nothing to do here",
ppa_count=ppa_count,
project_ppa_count=project_ppa_count,
)
GerritRepoInfo.objects.review_removed(
instance.param_ppa,
instance.gerrit_change,
instance.projectname,
instance.id,
)
@receiver(
@ -157,7 +132,7 @@ def tracker_release_target(instance, note: NoteInfo):
if regex_mrXXX.search(branch):
release = branch
else:
release = utils.get_next_release(branch)
release = get_next_release(branch)
if release:
note.set_target_release(release)

@ -19,8 +19,8 @@ from repoapi.models import JenkinsBuildInfo
from repoapi.test.base import BaseTest
@patch("repoapi.signals.jenkins_remove_project")
@patch("repoapi.utils.jenkins_remove_ppa")
@patch("repoapi.models.gri.jenkins_remove_project")
@patch("repoapi.models.gri.jenkins_remove_ppa")
class GerritRepoInfoTestCase(BaseTest):
def get_defaults(self):
defaults = {

@ -58,7 +58,7 @@ class TasksTestCase(BaseTest):
@override_settings(JBI_BASEDIR=FIXTURES_PATH)
@patch("repoapi.tasks.jenkins_remove_project_ppa")
@patch("repoapi.utils.jenkins_remove_ppa")
@patch("repoapi.models.gri.jenkins_remove_ppa")
class TaskGerritRepoTest(BaseTest):
default_params = {
"gerrit_patchset": "44323",

@ -53,7 +53,7 @@ class WorkfrontNoteTestCase(BaseTest):
return defaults
@patch("tracker.utils.workfront_set_release_target")
@patch("repoapi.utils.get_next_release")
@patch("repoapi.signals.get_next_release")
@patch("tracker.utils.workfront_note_send")
def test_note_gerrit(self, wns, gnr, wsrt):
param = self.get_defaults()
@ -82,7 +82,7 @@ class WorkfrontNoteTestCase(BaseTest):
wns.assert_called_once_with("0001", msg)
@patch("tracker.utils.workfront_set_release_target")
@patch("repoapi.utils.get_next_release")
@patch("repoapi.signals.get_next_release")
@patch("tracker.utils.workfront_note_send")
def test_note_merge(self, wns, gnr, wsrt):
param = self.get_defaults()
@ -142,7 +142,7 @@ class WorkfrontNoteTestCase(BaseTest):
wns.assert_called_with("0001", msg)
@patch("tracker.utils.workfront_set_release_target")
@patch("repoapi.utils.get_next_release")
@patch("repoapi.signals.get_next_release")
@patch("tracker.utils.workfront_note_send")
def test_note_commit(self, wns, gnr, wsrt):
param = self.get_non_gerrit_defaults()
@ -168,7 +168,7 @@ class WorkfrontNoteTestCase(BaseTest):
wns.assert_not_called()
@patch("tracker.utils.workfront_set_release_target")
@patch("repoapi.utils.get_next_release")
@patch("repoapi.signals.get_next_release")
@patch("tracker.utils.workfront_note_send")
def test_note_commit_mrXX(self, wns, gnr, wsrt):
param = self.get_non_gerrit_defaults()
@ -196,7 +196,7 @@ class WorkfrontNoteTestCase(BaseTest):
wns.assert_not_called()
@patch("tracker.utils.workfront_set_release_target")
@patch("repoapi.utils.get_next_release")
@patch("repoapi.signals.get_next_release")
@patch("tracker.utils.workfront_note_send")
def test_note_commit_mrXXX(self, wns, gnr, wsrt):
param = self.get_non_gerrit_defaults()
@ -222,7 +222,7 @@ class WorkfrontNoteTestCase(BaseTest):
wns.assert_not_called()
@patch("tracker.utils.workfront_set_release_target")
@patch("repoapi.utils.get_next_release")
@patch("repoapi.signals.get_next_release")
@patch("tracker.utils.workfront_note_send")
def test_note_commit_next_distri(self, wns, gnr, wsrt):
param = self.get_non_gerrit_defaults()
@ -251,7 +251,7 @@ class WorkfrontNoteTestCase(BaseTest):
wns.assert_not_called()
@patch("tracker.utils.workfront_set_release_target")
@patch("repoapi.utils.get_next_release")
@patch("repoapi.signals.get_next_release")
@patch("tracker.utils.workfront_note_send")
def test_note_commit_non_ngcp(self, wns, gnr, wsrt):
param = self.get_non_gerrit_defaults()

Loading…
Cancel
Save