aboutsummaryrefslogtreecommitdiff
blob: 0ed4be137a17f9c408a8b8797f45924fb32b652f (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
98
99
100
101
102
103
104
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

from portage.versions import catpkgsplit

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.plugins import steps

class GetDataGentooCiProject(BuildStep):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    @defer.inlineCallbacks
    def run(self):
        self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
        self.project_data = yield self.gentooci.db.projects.getProjectByName(self.gentooci.config.project['project']['update_db'])
        if self.project_data is None:
            log.err('No data for project in the database')
            return FAILURE
        self.profile_repository_data = yield self.gentooci.db.repositorys.getRepositoryByUuid(self.project_data['profile_repository_uuid'])
        if self.profile_repository_data is None:
            log.err('No data for profile repository in the database')
            return FAILURE
        if not isinstance(self.getProperty("change_data"), dict):
            return FAILURE
        print(self.project_data)
        print(self.profile_repository_data)
        print(self.getProperty("change_data"))
        print(self.getProperty("repository"))
        repository = False
        self.repository_data = False
        if self.getProperty("repository").endswith('.git'):
            for v in self.getProperty("repository").split('/'):
                if v.endswith('.git'):
                    repository = v[:-4]
        if repository:
            self.repository_data = yield self.gentooci.db.repositorys.getRepositoryByName(repository)
        if self.getProperty("change_data")['repository'] != self.repository_data['name']:
            log.msg("%s don't match" % self.getProperty("change_data")['repository'])
            return FAILURE
        self.setProperty("project_data", self.project_data, 'project_data')
        self.setProperty("profile_repository_data", self.profile_repository_data, 'profile_repository_data')
        self.setProperty("repository_data", self.repository_data, 'repository_data')
        return SUCCESS

class TriggerUpdateRepositorys(BuildStep):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    name = 'TriggerUpdateRepositorys'
    description = 'Running'
    descriptionDone = 'Ran'
    descriptionSuffix = None
    haltOnFailure = True
    flunkOnFailure = True

    @defer.inlineCallbacks
    def run(self):
        yield self.build.addStepsAfterCurrentStep([
            steps.Trigger(
                        schedulerNames=['update_repo_check'],
                        waitForFinish=True,
                        updateSourceStamp=False,
                        set_properties={
                            'profile_repository_uuid' : self.getProperty("profile_repository_data")['uuid'],
                            'repository_uuid' : self.getProperty("repository_data")['uuid'],
                            'commit_time' : self.getProperty("change_data")['timestamp'],
                        }
            )
        ])
        return SUCCESS

class TriggerCheckForCPV(BuildStep):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    name = 'TriggerCheckForCPV'
    description = 'Running'
    descriptionDone = 'Ran'
    descriptionSuffix = None
    haltOnFailure = True
    flunkOnFailure = True

    @defer.inlineCallbacks
    def run(self):
        yield self.build.addStepsAfterCurrentStep([
            steps.Trigger(
                schedulerNames=['update_cpv_data'],
                waitForFinish=False,
                updateSourceStamp=False,
                set_properties={
                    'project_data' : self.getProperty("project_data"),
                    'repository_data' : self.getProperty("repository_data"),
                    'change_data' : self.getProperty("change_data"),
                }
            )
        ])
        return SUCCESS