You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@community.apache.org by se...@apache.org on 2015/10/02 01:08:23 UTC

svn commit: r1706331 - /comdev/reporter.apache.org/trunk/readjira.py

Author: sebb
Date: Thu Oct  1 23:08:23 2015
New Revision: 1706331

URL: http://svn.apache.org/viewvc?rev=1706331&view=rev
Log:
Also fetch projects.json

Modified:
    comdev/reporter.apache.org/trunk/readjira.py

Modified: comdev/reporter.apache.org/trunk/readjira.py
URL: http://svn.apache.org/viewvc/comdev/reporter.apache.org/trunk/readjira.py?rev=1706331&r1=1706330&r2=1706331&view=diff
==============================================================================
--- comdev/reporter.apache.org/trunk/readjira.py (original)
+++ comdev/reporter.apache.org/trunk/readjira.py Thu Oct  1 23:08:23 2015
@@ -1,5 +1,19 @@
 #!/usr/bin/env python
 
+"""
+   Refreshes the data/JSON/*.json files
+
+   For each .json file found under data/JSON (apart from projects.json) it recreates the file.
+   Also refreshes data/JIRA/projects.json
+   It does not use the contents of projects.json to refresh the files, because not all of the entries are needed.
+   However, once a file has been added to the directory, it will be kept up to date.
+
+   It sleeps(2) between fetches.
+   
+   This script is run under cron, so does not check the age of any files.
+   It is assumed that the job is run as frequently as necessary to keep the files updated
+"""
+
 import re, os, json, urllib2, base64, time
 from os import listdir
 from os.path import isfile, join, dirname, abspath
@@ -9,34 +23,55 @@ from inspect import getsourcefile
 MYHOME = dirname(abspath(getsourcefile(lambda:0))) # automatically work out home location so can run the code anywhere
 mypath = "%s/data/JIRA" % MYHOME
 print("Scanning mypath=%s" % mypath)
-myfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
+myfiles = [ f for f in listdir(mypath) if f.endswith(".json") and isfile(join(mypath,f)) ]
 
 jirapass = ""
 with open("%s/data/jirapass.txt" % MYHOME, "r") as f:
     jirapass = f.read().strip()
     f.close()
 
+base64string = base64.encodestring('%s:%s' % ('githubbot', jirapass))[:-1]
+
+def getProjects():
+    """Update the list of projects in data/JIRA/projects.json"""
+    PROJECT_JSON = "%s/data/JIRA/projects.json" % MYHOME
+    x = {}
+    jiras = []
+    mtime = 0
+    print("Refresh %s" % PROJECT_JSON)
+    try:
+        req = urllib2.Request("https://issues.apache.org/jira/rest/api/2/project.json")
+        req.add_header("Authorization", "Basic %s" % base64string)
+        x = json.load(urllib2.urlopen(req))
+        with open(PROJECT_JSON, "w") as f:
+            json.dump(x, f, indent=1)
+            f.close()
+            print("Created %s" % PROJECT_JSON)
+    except Exception as e:
+        print("Err: could not refresh %s: %s" % (PROJECT_JSON, e))
+        pass
+
 def getJIRAS(project):
-    refresh = True
-    if refresh:
-        base64string = base64.encodestring('%s:%s' % ('githubbot', jirapass))[:-1]
-
-        try:
-            req = urllib2.Request("""https://issues.apache.org/jira/rest/api/2/search?jql=project%20=%20""" + project + """%20AND%20created%20%3E=%20-91d""")
-            req.add_header("Authorization", "Basic %s" % base64string)
-            cdata = json.loads(urllib2.urlopen(req).read())
-            req = urllib2.Request("""https://issues.apache.org/jira/rest/api/2/search?jql=project%20=%20""" + project + """%20AND%20resolved%20%3E=%20-91d""")
-            req.add_header("Authorization", "Basic %s" % base64string)
-            rdata = json.loads(urllib2.urlopen(req).read())
-            with open("%s/data/JIRA/%s.json" % (MYHOME, project), "w") as f:
-                json.dump([cdata['total'], rdata['total'], project], f, indent=1)
-                f.close()
-            return cdata['total'], rdata['total'], project
-        except Exception as err:
-            with open("%s/data/JIRA/%s.json" % (MYHOME, project), "w") as f:
-                json.dump([0,0,None], f, indent=1)
-                f.close()
-            return 0,0, None
+    try:
+        req = urllib2.Request("""https://issues.apache.org/jira/rest/api/2/search?jql=project%20=%20""" + project + """%20AND%20created%20%3E=%20-91d""")
+        req.add_header("Authorization", "Basic %s" % base64string)
+        cdata = json.loads(urllib2.urlopen(req).read())
+        req = urllib2.Request("""https://issues.apache.org/jira/rest/api/2/search?jql=project%20=%20""" + project + """%20AND%20resolved%20%3E=%20-91d""")
+        req.add_header("Authorization", "Basic %s" % base64string)
+        rdata = json.loads(urllib2.urlopen(req).read())
+        with open("%s/data/JIRA/%s.json" % (MYHOME, project), "w") as f:
+            json.dump([cdata['total'], rdata['total'], project], f, indent=1)
+            f.close()
+        return cdata['total'], rdata['total'], project
+    except Exception as err:
+        print("Failed to get data for %s: %s " % (project, err))
+        with open("%s/data/JIRA/%s.json" % (MYHOME, project), "w") as f:
+            json.dump([0,0,None], f, indent=1)
+            f.close()
+        return 0,0, None
+
+
+getProjects()
 
 for project in myfiles:
     jiraname = project.replace(".json", "")