blob: 73733f1d87ae89c0ad896c88a0aec42b544e98ce (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
from twisted.internet import defer
from twisted.python import log
from buildbot.process.buildstep import BuildStep
from buildbot.process.results import SUCCESS
from buildbot.process.results import FAILURE
from buildbot.process.results import SKIPPED
from buildbot.plugins import steps, util
class SetupPropertys(BuildStep):
name = 'Setup propertys for clean db'
description = 'Running'
descriptionSuffix = None
haltOnFailure = True
flunkOnFailure = True
def __init__(self, **kwargs):
super().__init__(**kwargs)
@defer.inlineCallbacks
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
aftersteps_list = []
# Check on deleted ebuild on package
deleted_ebuilds_data = yield self.gentooci.db.versions.getEbuildsByPackage(self.getProperty("package_data")['uuid'], deleted=True)
# check if older then X days
#FIXME: set days in config and move the check to db side
days = 30
days_in_s = 86400 * days
now = int(self.master.reactor.seconds())
for ebuild_data in deleted_ebuilds_data:
no_bug = True
# check if older the days
if ebuild_data['deleted_at'] < (now - days_in_s):
print(f"Ebuild : {ebuild_data['uuid']} will be removed")
# get build_data for deleted_ebuild_data['uuid']
build_data_list = yield self.gentooci.db.builds.getBuildsByVersionUuid(ebuild_data['uuid'])
print(build_data_list)
for build_data in build_data_list:
if build_data['bug_id'] == 0:
# get buildsets
print(f"Build : {build_data['id']} will be removed")
yield self.build.addStepsAfterCurrentStep([RemoveBuildFromDb(build_data)])
else:
no_bug = False
if no_bug:
yield self.build. addStepsAfterLastStep([RemoveEbuildFromDb(ebuild_data)])
return SUCCESS
class RemoveEbuildFromDb(BuildStep):
name = 'Clean ebuild from db'
description = 'Running'
descriptionSuffix = None
haltOnFailure = True
flunkOnFailure = True
def __init__(self, ebuild_data, **kwargs):
self.ebuild_data = ebuild_data
super().__init__(**kwargs)
@defer.inlineCallbacks
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
yield self.gentooci.db.versions.removeVersionKeyword(self.ebuild_data['uuid'])
yield self.gentooci.db.versions.removeVersionMetadata(self.ebuild_data['uuid'])
yield self.gentooci.db.versions.removeVersion(self.ebuild_data['uuid'])
self.descriptionDone = f"Ebuild : {self.ebuild_data['uuid']} will be removed"
return SUCCESS
class RemoveBuildFromDb(BuildStep):
name = 'Clean builds from db'
description = 'Running'
descriptionSuffix = None
haltOnFailure = True
flunkOnFailure = True
def __init__(self, build_data, **kwargs):
self.build_data = build_data
super().__init__(**kwargs)
@defer.inlineCallbacks
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
if self.build_data['buildbot_build_id'] != 0:
self.descriptionDone = f"BuildBot Build : {self.build_data['buildbot_build_id']} will be removed"
bb_build_data = yield self.master.db.builds.getBuild(self.build_data['buildbot_build_id'])
# remove buildbot data on db
# remove steps and logs
yield self.master.db.logs.deleteLogChunks(self.build_data['buildbot_build_id'])
# remove propertys
# get buildsets
# remove build_data
yield self.gentooci.db.builds.removeBuild(self.build_data['id'])
return SUCCESS
|