TT#134250 release_changed: add label field

Add label in order to group different builds from
daily-build-matrix-runner or daily-build-matrix-base-runner jobs

* add support for CARRIER vmtype

Change-Id: I0159a191c40c329532d7040bacb55ecfbf9f6f14
pull/4/head
Victor Seva 4 years ago
parent 93bf49fdf3
commit cf992ba677

@ -32,6 +32,7 @@
"USER": "jenkins",
"vmdone": "no",
"vmtype": "CE",
"vmversion": "mr8.5.1"
"vmversion": "mr8.5.1",
"buildlabel": "base"
}
}

@ -32,6 +32,7 @@
"USER": "jenkins",
"vmdone": "yes",
"vmtype": "CE",
"vmversion": "mr8.5.1"
"vmversion": "mr8.5.1",
"buildlabel": "base"
}
}

@ -1,14 +1,16 @@
- model: release_changed.releasechanged
pk: 1
fields:
version: mr8.4
vmtype: CE
result: FAILURE
date: 2020-09-09 08:50:01.671302+00:00
- model: release_changed.releasechanged
pk: 2
fields:
version: mr8.4
vmtype: PRO
result: SUCCESS
date: 2020-09-09 08:54:13.908608+00:00
- model: release_changed.releasechanged
pk: 1
fields:
version: mr8.4
vmtype: CE
result: FAILURE
label: base
date: 2020-09-09 08:50:01.671302+00:00
- model: release_changed.releasechanged
pk: 2
fields:
version: mr8.4
vmtype: PRO
result: SUCCESS
label: base
date: 2020-09-09 08:54:13.908608+00:00

@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.29 on 2021-07-30 11:54
from django.db import migrations
from django.db import models
class Migration(migrations.Migration):
dependencies = [("release_changed", "0001_initial")]
operations = [
migrations.AddField(
model_name="releasechanged",
name="label",
field=models.CharField(default="daily", max_length=128),
preserve_default=False,
),
migrations.AlterField(
model_name="releasechanged",
name="vmtype",
field=models.CharField(
choices=[
("CE", "spce"),
("PRO", "sppro"),
("CARRIER", "carrier"),
],
max_length=7,
),
),
migrations.AlterUniqueTogether(
name="releasechanged",
unique_together=set([("version", "vmtype", "label")]),
),
]

@ -28,7 +28,7 @@ from .conf import settings # noqa
class ReleaseChanged(models.Model):
VMTYPE_CHOICES = (("CE", "spce"), ("PRO", "sppro"))
VMTYPE_CHOICES = (("CE", "spce"), ("PRO", "sppro"), ("CARRIER", "carrier"))
RESULT_CHOICES = (
("ABORTED", "ABORTED"),
("FAILURE", "FAILURE"),
@ -37,14 +37,15 @@ class ReleaseChanged(models.Model):
("UNSTABLE", "UNSTABLE"),
)
version = models.CharField(max_length=64, null=False)
vmtype = models.CharField(max_length=3, null=False, choices=VMTYPE_CHOICES)
vmtype = models.CharField(max_length=7, null=False, choices=VMTYPE_CHOICES)
label = models.CharField(max_length=128, null=False)
result = models.CharField(
max_length=50, null=False, choices=RESULT_CHOICES
)
date = models.DateTimeField(auto_now=True)
class Meta:
unique_together = (("version", "vmtype"),)
unique_together = (("version", "vmtype", "label"),)
def __str__(self):
return "{0.vmtype}_{0.version}_{0.result}".format(self)
return "{0.label}_{0.vmtype}_{0.version}_{0.result}".format(self)

@ -34,12 +34,18 @@ def process_result(jbi_id, path_envVars):
ReleaseChanged.objects.filter(
version=info["vmversion"],
vmtype=info["vmtype"],
label=info["buildlabel"],
).delete()
logger.info("{}_{} deleted".format(info["vmtype"], info["vmversion"]))
logger.info(
"{}_{}_{} deleted".format(
info["vmtype"], info["vmversion"], info["buildlabel"]
)
)
return
r, created = ReleaseChanged.objects.get_or_create(
version=info["vmversion"],
vmtype=info["vmtype"],
label=info["buildlabel"],
defaults={"result": jbi.result},
)
if not created:
@ -49,5 +55,5 @@ def process_result(jbi_id, path_envVars):
changed = "*NOT*"
else:
changed = ""
msg = "setting {}_{} as {} changed, created:{}"
logger.info(msg.format(r.vmtype, r.version, changed, created))
msg = "setting {}_{}_{} as {} changed, created:{}"
logger.info(msg.format(r.vmtype, r.version, r.label, changed, created))

@ -20,9 +20,7 @@ from repoapi.test.base import BaseTest
class TestRest(BaseTest, APITestCase):
fixtures = [
"test_release_changed",
]
fixtures = ["test_release_changed"]
url = "release_changed:check"
@ -30,16 +28,16 @@ class TestRest(BaseTest, APITestCase):
super(TestRest, self).setUp()
def test_get_success(self):
url = reverse(self.url, args=["PRO", "mr8.4"])
url = reverse(self.url, args=["base", "PRO", "mr8.4"])
response = self.client.get(url, format="json")
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_get_not_success(self):
url = reverse(self.url, args=["CE", "mr8.4"])
url = reverse(self.url, args=["base", "CE", "mr8.4"])
response = self.client.get(url, format="json")
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_get_not_exist(self):
url = reverse(self.url, args=["CE", "mr8.5"])
url = reverse(self.url, args=["base", "CE", "mr8.5"])
response = self.client.get(url, format="json")
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

@ -38,34 +38,42 @@ class TasksTestCase(BaseTest):
jbi = JenkinsBuildInfo.objects.get(pk=1)
with patch("builtins.open", mock_open(read_data=DATA)):
tasks.process_result.delay(jbi.id, FILE_PATH)
r = ReleaseChanged.objects.get(version="mr8.5.1", vmtype="CE")
r = ReleaseChanged.objects.get(
label="base", version="mr8.5.1", vmtype="CE"
)
self.assertEqual("FAILED", r.result)
def test_process_modify(self):
r = ReleaseChanged.objects.create(
version="mr8.5.1", vmtype="CE", result="SUCCESS"
label="base", version="mr8.5.1", vmtype="CE", result="SUCCESS"
)
r_id = r.id
jbi = JenkinsBuildInfo.objects.get(pk=1)
with patch("builtins.open", mock_open(read_data=DATA)):
tasks.process_result.delay(jbi.id, FILE_PATH)
r = ReleaseChanged.objects.get(version="mr8.5.1", vmtype="CE")
r = ReleaseChanged.objects.get(
label="base", version="mr8.5.1", vmtype="CE"
)
self.assertEqual(r_id, r.id)
self.assertEqual("FAILED", r.result)
def test_process_done(self):
ReleaseChanged.objects.create(
version="mr8.5.1", vmtype="CE", result="FAILED"
label="base", version="mr8.5.1", vmtype="CE", result="FAILED"
)
jbi = JenkinsBuildInfo.objects.get(pk=1)
with patch("builtins.open", mock_open(read_data=DATA_DONE)):
tasks.process_result.delay(jbi.id, FILE_PATH)
rs = ReleaseChanged.objects.filter(version="mr8.5.1", vmtype="CE")
rs = ReleaseChanged.objects.filter(
label="base", version="mr8.5.1", vmtype="CE"
)
self.assertFalse(rs.exists())
def test_process_done_no_obj(self):
jbi = JenkinsBuildInfo.objects.get(pk=1)
with patch("builtins.open", mock_open(read_data=DATA_DONE)):
tasks.process_result.delay(jbi.id, FILE_PATH)
rs = ReleaseChanged.objects.filter(version="mr8.5.1", vmtype="CE")
rs = ReleaseChanged.objects.filter(
label="base", version="mr8.5.1", vmtype="CE"
)
self.assertFalse(rs.exists())

@ -25,7 +25,7 @@ urlpatterns = [
name="detail",
),
url(
r"^(?P<vmtype>[^/]+)/(?P<release>[^/]+)/$",
r"^(?P<label>[^/]+)/(?P<vmtype>[^/]+)/(?P<release>[^/]+)/$",
views.ReleaseChangedCheck.as_view(),
name="check",
),

@ -26,13 +26,13 @@ from .serializers import ReleaseChangedSerializer
class ReleaseChangedFilter(django_filters.FilterSet):
class Meta:
model = models.ReleaseChanged
fields = ["vmtype", "version", "result"]
order_by = ["version", "vmtype"]
fields = ["label", "vmtype", "version", "result"]
order_by = ["label", "version", "vmtype"]
class ReleaseChangedList(generics.ListCreateAPIView):
queryset = models.ReleaseChanged.objects.all().order_by(
"version", "vmtype"
"label", "version", "vmtype"
)
serializer_class = ReleaseChangedSerializer
filterset_class = ReleaseChangedFilter
@ -40,17 +40,19 @@ class ReleaseChangedList(generics.ListCreateAPIView):
class ReleaseChangedDetail(generics.RetrieveAPIView):
queryset = models.ReleaseChanged.objects.all().order_by(
"version", "vmtype"
"label", "version", "vmtype"
)
serializer_class = ReleaseChangedSerializer
class ReleaseChangedCheck(APIView):
def get(self, request, vmtype, release):
def get(self, request, label, vmtype, release):
r = get_object_or_404(
models.ReleaseChanged, vmtype=vmtype, version=release
models.ReleaseChanged, label=label, vmtype=vmtype, version=release
)
if r.result != "SUCCESS":
raise NotFound("VM {}_{} has to be built".format(vmtype, release))
raise NotFound(
"VM {}_{}_{} has to be built".format(label, vmtype, release)
)
serializer = ReleaseChangedSerializer(r, context={"request": request})
return Response(serializer.data)

Loading…
Cancel
Save