X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fbonfire.py;fp=sfa%2Fclient%2Fbonfire.py;h=5f026737c1e78139be430bb512108b971a72fd64;hb=bb53c09f5512d5fdefaaa99b8053f485e22a4f3e;hp=0000000000000000000000000000000000000000;hpb=9eba9ad0796e65b1ddcf7b2671431bee304f6bc0;p=sfa.git
diff --git a/sfa/client/bonfire.py b/sfa/client/bonfire.py
new file mode 100644
index 00000000..5f026737
--- /dev/null
+++ b/sfa/client/bonfire.py
@@ -0,0 +1,101 @@
+#tested with federica 18
+#yum -y install python-pip
+#pip install requests
+import requests
+import xml.etree.ElementTree as ET
+
+# helping functions
+# ########################################################## #
+def callcurl(url):
+ r = requests.get(url, verify=False, auth=('nlebreto', 'GDRU_23tc$'))
+ if r.status_code == 200:
+ return r.text
+
+def buildpagehttp(part1, part2):
+ res = []
+ for page in locations:
+ res.append(part1 + page + "/" + part2)
+ return res
+
+def boucle(itemname, xmltree, hashrspec, name):
+ for item in xmltree.findall(itemname):
+ hashrspec[name.text][itemname] = item.text
+
+def jfedfeat(bonfires, pageurl):
+ pageforstatus = callcurl(pageurl)
+ xmlreduit = ET.fromstring(pageforstatus)
+ hashrspec = {}
+ itemshost = ["DISK_USAGE", "MEM_USAGE", "CPU_USAGE", "MAX_DISK", "MAX_MEM", "MAX_CPU",
+ "FREE_DISK", "FREE_MEM", "FREE_CPU", "FREE_MEM", "FREE_CPU", "USED_DISK",
+ "USED_MEM", "USED_CPU", "RUNNING_VMS"
+ ]
+ # retrieve info for xml tree
+ for host in xmlreduit.findall('HOST'):
+ for name in host.findall('NAME'):
+ hashrspec[name.text] = {"name" : name.text}
+ for hostshare in host.findall('HOST_SHARE'):
+ for itemshostname in itemshost:
+ boucle(itemshostname, hostshare, hashrspec, name)
+ # jfed feature
+ for clef in hashrspec:
+ bonfires.append("" +
+ " " +
+ " " +
+ " " +
+ " " +
+ " " +
+ " ")
+ for infohost in itemshost:
+ bonfires.append(" ")
+ bonfires.append("")
+
+def remove_needless_txt(txt):
+ txt=txt.replace("\n","\n")
+ txt=txt.replace("\n","\n")
+ return txt
+
+# parameters
+# ########################################################## #
+locations = ["fr-inria", "be-ibbt", "uk-epcc"]
+urlnetworks = buildpagehttp("https://api.integration.bonfire.grid5000.fr/locations/", "networks")
+urlstorages = buildpagehttp("https://api.integration.bonfire.grid5000.fr/locations/", "storages")
+urlcomputes = buildpagehttp("https://api.integration.bonfire.grid5000.fr/locations/", "computes")
+
+# main code
+# ########################################################## #
+
+# list for all bonfire resources
+def bonsources():
+ bonfires = []
+ bonfires.append("")
+ manag_exp = remove_needless_txt(callcurl("https://api.bonfire-project.eu/managed_experiments"))
+ bonfires.append(manag_exp)
+ bonfires.append("")
+ jfedfeat(bonfires, "http://frontend.bonfire.grid5000.fr/one-status.xml")
+# jfedfeat(bonfires, "http://bonfire.epcc.ed.ac.uk/logs/one-status.xml")
+ jfedfeat(bonfires, "http://bonfire.psnc.pl/one-status.xml")
+ jfedfeat(bonfires, "http://nebulosus.rus.uni-stuttgart.de/one-status.xml")
+ bonfires.append("")
+ for xmlnetworks in urlnetworks:
+ bonfires.append(remove_needless_txt(callcurl(xmlnetworks)))
+ bonfires.append("")
+ for xmlstorages in urlstorages:
+ bonfires.append(remove_needless_txt(callcurl(xmlstorages)))
+ bonfires.append("")
+ for xmlcomputes in urlcomputes:
+ bonfires.append(remove_needless_txt(callcurl(xmlcomputes)))
+ bonfires.append("")
+ exp = callcurl("https://api.integration.bonfire.grid5000.fr/experiments")
+ rexp = remove_needless_txt(exp)
+ bonfires.append(rexp)
+ bonfires.append("")
+ reserv = callcurl("https://api.integration.bonfire.grid5000.fr/locations/fr-inria/reservations")
+ rreserv = remove_needless_txt(reserv)
+ bonfires.append(rreserv)
+ bonfires.append("")
+ bonfires.append("")
+ bonfires = "\n".join(bonfires)
+ bonfires = bonfires.replace("\n\n","")
+ return bonfires