Skip to content

Commit

Permalink
MDBF-713 - Move scheduler helper functions
Browse files Browse the repository at this point in the history
  • Loading branch information
RazvanLiviuVarzaru committed Jun 21, 2024
1 parent 28b429d commit 0daf983
Show file tree
Hide file tree
Showing 2 changed files with 136 additions and 118 deletions.
141 changes: 122 additions & 19 deletions schedulers_definition.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,146 @@
from buildbot.plugins import *
from buildbot.plugins import schedulers, util

from constants import (builders_autobake, builders_big, builders_dockerlibrary,
builders_eco, builders_install, builders_upgrade,
builders_wordpress, github_status_builders,
supportedPlatforms)


####### SCHEDULER HELPER FUNCTIONS
@util.renderer
def getBranchBuilderNames(props):
mBranch = props.getProperty("master_branch")

builders = list(
filter(lambda x: x not in github_status_builders, supportedPlatforms[mBranch])
)

return builders


@util.renderer
def getProtectedBuilderNames(props):
mBranch = props.getProperty("master_branch")

builders = list(
filter(lambda x: x in supportedPlatforms[mBranch], github_status_builders)
)

return builders


@util.renderer
def getAutobakeBuilderNames(props):
builderName = props.getProperty("parentbuildername")
for b in builders_autobake:
if builderName in b:
return [b]
return []


@util.renderer
def getBigtestBuilderNames(props):
builderName = str(props.getProperty("parentbuildername"))

for b in builders_big:
if builderName in b:
return [b]
return []


@util.renderer
def getInstallBuilderNames(props):
builderName = str(props.getProperty("parentbuildername"))

for b in builders_install:
if builderName in b:
builders = [b]
if "rhel" in builderName:
builders.append(b.replace("rhel", "almalinux"))
return builders
return []


@util.renderer
def getUpgradeBuilderNames(props):
builderName = str(props.getProperty("parentbuildername"))

builds = []
for b in builders_upgrade:
if builderName in b:
if "rhel" in builderName:
builds.append(b.replace("rhel", "almalinux"))
builds.append(b)
return builds


@util.renderer
def getEcoBuilderNames(props):
builderName = str(props.getProperty("parentbuildername"))

builds = []
for b in builders_eco:
if builderName in b:
builds.append(b)
return builds


@util.renderer
def getDockerLibraryNames(props):
return builders_dockerlibrary[0]


@util.renderer
def getWordpressNames(props):
return builders_wordpress[0]

from utils import *

def getSchedulers():
l = []

l.append(schedulers.Triggerable(name="s_upstream_all",
builderNames=getBranchBuilderNames))
l.append(
schedulers.Triggerable(
name="s_upstream_all", builderNames=getBranchBuilderNames
)
)

schedulerProtectedBranches = schedulers.Triggerable(name="s_protected_branches",
builderNames=getProtectedBuilderNames)
schedulerProtectedBranches = schedulers.Triggerable(
name="s_protected_branches", builderNames=getProtectedBuilderNames
)
l.append(schedulerProtectedBranches)

schedulerPackages = schedulers.Triggerable(name="s_packages",
builderNames=getAutobakeBuilderNames)
schedulerPackages = schedulers.Triggerable(
name="s_packages", builderNames=getAutobakeBuilderNames
)
l.append(schedulerPackages)

schedulerBigtests = schedulers.Triggerable(name="s_bigtest",
builderNames=getBigtestBuilderNames)
schedulerBigtests = schedulers.Triggerable(
name="s_bigtest", builderNames=getBigtestBuilderNames
)
l.append(schedulerBigtests)

schedulerInstall = schedulers.Triggerable(name="s_install",
builderNames=getInstallBuilderNames)
schedulerInstall = schedulers.Triggerable(
name="s_install", builderNames=getInstallBuilderNames
)
l.append(schedulerInstall)

schedulerUpgrade = schedulers.Triggerable(name="s_upgrade",
builderNames=getUpgradeBuilderNames)
schedulerUpgrade = schedulers.Triggerable(
name="s_upgrade", builderNames=getUpgradeBuilderNames
)
l.append(schedulerUpgrade)

schedulerEco = schedulers.Triggerable(name="s_eco",
builderNames=getEcoBuilderNames)
schedulerEco = schedulers.Triggerable(name="s_eco", builderNames=getEcoBuilderNames)
l.append(schedulerEco)

schedulerDockerlibrary = schedulers.Triggerable(name="s_dockerlibrary",
builderNames=getDockerLibraryNames)
schedulerDockerlibrary = schedulers.Triggerable(
name="s_dockerlibrary", builderNames=getDockerLibraryNames
)
l.append(schedulerDockerlibrary)

l.append(schedulers.Triggerable(name="s_wordpress", builderNames=getWordpressNames))

l.append(schedulers.Triggerable(name="s_release_prep", builderNames=["release-prep"]))
l.append(
schedulers.Triggerable(name="s_release_prep", builderNames=["release-prep"])
)

return l
113 changes: 14 additions & 99 deletions utils.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
import fnmatch
import os
import re
import sys
import fnmatch
from datetime import timedelta, datetime
from pyzabbix import ZabbixAPI
from datetime import datetime, timedelta

import docker
from twisted.internet import defer
from buildbot.plugins import *
from buildbot.process.properties import Property, Properties
from buildbot.plugins import steps, util, worker
from buildbot.process.properties import Properties, Property
from buildbot.process.remotecommand import RemoteCommand
from buildbot.process.results import FAILURE
from buildbot.steps.shell import ShellCommand, Compile, Test, SetPropertyFromCommand
from buildbot.steps.mtrlogobserver import MTR, MtrLogObserver
from buildbot.steps.shell import (Compile, SetPropertyFromCommand,
ShellCommand, Test)
from buildbot.steps.source.github import GitHub
from buildbot.process.remotecommand import RemoteCommand
from constants import *
from pyzabbix import ZabbixAPI
from twisted.internet import defer

from constants import (DEVELOPMENT_BRANCH, builders_autobake, builders_big,
builders_eco, builders_galera_mtr, builders_install,
builders_upgrade, releaseBranches, savedPackageBranches)

private_config = {"private": {}}
exec(open("/srv/buildbot/master/master-private.cfg").read(), private_config, {})
Expand Down Expand Up @@ -273,7 +278,6 @@ def nextBuild(bldr, requests):
return requests[0]



def canStartBuild(builder, wfb, request):
worker = wfb.worker
if not "s390x" in worker.name:
Expand Down Expand Up @@ -469,16 +473,6 @@ def hasCompat(step):
return True


@util.renderer
def getDockerLibraryNames(props):
return builders_dockerlibrary[0]


@util.renderer
def getWordpressNames(props):
return builders_wordpress[0]


def hasDockerLibrary(step):
# Can only build with a saved package
if not savePackage(step):
Expand Down Expand Up @@ -573,85 +567,6 @@ def getArch(props):
return buildername.split("-")[0]


####### SCHEDULER HELPER FUNCTIONS
@util.renderer
def getBranchBuilderNames(props):
mBranch = props.getProperty("master_branch")

builders = list(
filter(lambda x: x not in github_status_builders, supportedPlatforms[mBranch])
)

return builders


@util.renderer
def getProtectedBuilderNames(props):
mBranch = props.getProperty("master_branch")

builders = list(
filter(lambda x: x in supportedPlatforms[mBranch], github_status_builders)
)

return builders


@util.renderer
def getAutobakeBuilderNames(props):
builderName = props.getProperty("parentbuildername")
for b in builders_autobake:
if builderName in b:
return [b]
return []


@util.renderer
def getBigtestBuilderNames(props):
builderName = str(props.getProperty("parentbuildername"))

for b in builders_big:
if builderName in b:
return [b]
return []


@util.renderer
def getInstallBuilderNames(props):
builderName = str(props.getProperty("parentbuildername"))

for b in builders_install:
if builderName in b:
builders = [b]
if "rhel" in builderName:
builders.append(b.replace("rhel", "almalinux"))
return builders
return []


@util.renderer
def getUpgradeBuilderNames(props):
builderName = str(props.getProperty("parentbuildername"))

builds = []
for b in builders_upgrade:
if builderName in b:
if "rhel" in builderName:
builds.append(b.replace("rhel", "almalinux"))
builds.append(b)
return builds


@util.renderer
def getEcoBuilderNames(props):
builderName = str(props.getProperty("parentbuildername"))

builds = []
for b in builders_eco:
if builderName in b:
builds.append(b)
return builds


##### Builder priority
# Prioritize builders. At this point, only the Windows builders need a higher priority
# since the others run on dedicated machines.
Expand Down

0 comments on commit 0daf983

Please sign in to comment.