summaryrefslogtreecommitdiff
path: root/builder_logic.py
diff options
context:
space:
mode:
Diffstat (limited to 'builder_logic.py')
-rw-r--r--builder_logic.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/builder_logic.py b/builder_logic.py
new file mode 100644
index 0000000..8f3b56c
--- /dev/null
+++ b/builder_logic.py
@@ -0,0 +1,59 @@
+import subprocess
+
+ORCHE_URL = 'http://127.0.0.1:8080/'
+BUILD_SCRIPT = 'bild_a_system.sh'
+DEPLOY_SCRIPT = 'deploy_a_system.sh'
+DEFINITIONS_DIR='/home/patrickdarley/definitions'
+
+whitelist = [
+ 'clusters/tlsa.morph',
+ 'systems/base-system-x86_64-generic.morph',
+ 'strata/build-essential.morph',
+ 'strata/core.morph',
+ 'strata/foundation.morph',
+ 'strata/bsp-x86_64-generic.morph',
+ ]
+
+def files_changed():
+ ''' return a list of files changed in latest commit to definitions'''
+ import os
+ owd = os.getcwd()
+ os.chdir(DEFINITIONS_DIR)
+ cmd = ['git', 'diff', '--name-only', 'HEAD~1', 'HEAD']
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
+ out, err = p.communicate()
+ os.chdir(owd)
+ return out.split()
+
+def find_systems_affected_by_change():
+ # TODO for each file changed, separate into chunks, strata, systems and clusters
+ # TODO for each strata get it's system
+ pass
+
+def find_clusters_affected_by_change():
+ changed systems = find_systems_affected_by_change()
+ # TODO for each system get it's custers
+
+def build(system):
+ return subprocess.call(['sh','%s' % BUILD_SCRIPT, '%s' % system])
+
+def deploy(cluster):
+ return subprocess.call(['sh','%s' % DEPLOY_SCRIPT, '%s' % cluster])
+
+def trigger_testing(build_id):
+ import requests
+ global url
+ url = '%sbuild_complete' % ORCHE_URL
+ payload = {'artefact':build_id}
+ r = requests.post(url,data=payload)
+ return r.ok
+
+if __name__ == '__main__':
+ _files_changed = files_changed()
+ for f in _files_changed:
+ if f in whitelist:
+ build_exit_val = build('systems/base-system-x86_64-generic.morph')
+ if build_exit_val: exit(build_exit_val)
+ deploy_exit_val = deploy('clusters/tlsa.morph')
+ if deploy_exit_val: exit(deploy_exit_val)
+ exit(trigger_testing())