Add unit tests
[pharos.git] / tools / pharos-dashboard / src / jenkins / tasks.py
index 7c03782..ea986c1 100644 (file)
@@ -10,6 +10,7 @@
 
 from celery import shared_task
 
+from dashboard.models import Resource
 from jenkins.models import JenkinsSlave, JenkinsStatistic
 from .adapter import *
 
@@ -20,14 +21,28 @@ def sync_jenkins():
 
 
 def update_jenkins_slaves():
+    JenkinsSlave.objects.all().update(active=False)
+
     jenkins_slaves = get_all_slaves()
     for slave in jenkins_slaves:
         jenkins_slave, created = JenkinsSlave.objects.get_or_create(name=slave['displayName'],
                                                                     url=get_slave_url(slave))
+        jenkins_slave.active = True
         jenkins_slave.ci_slave = is_ci_slave(slave['displayName'])
         jenkins_slave.dev_pod = is_dev_pod(slave['displayName'])
         jenkins_slave.status = get_slave_status(slave)
 
+        # if this is a new slave and a pod, check if there is a resource for it, create one if not
+        if  created and 'pod' in slave['displayName']:
+            # parse resource name from slave name
+            # naming example: orange-pod1, resource name: Orange POD 1
+            tokens = slave['displayName'].split('-')
+            name = tokens[0].capitalize() + ' POD '# company name
+            name += tokens[1][3:] # remove 'pod'
+            resource, created = Resource.objects.get_or_create(name=name)
+            resource.slave = jenkins_slave
+            resource.save()
+
         last_job = get_jenkins_job(jenkins_slave.name)
         if last_job is not None:
             last_job = parse_job(last_job)