diff --git a/.project b/.project
index 9ae3f8e..97bb307 100644
--- a/.project
+++ b/.project
@@ -5,7 +5,13 @@
+
+ org.python.pydev.PyDevBuilder
+
+
+
+ org.python.pydev.pythonNature
diff --git a/.pydevproject b/.pydevproject
new file mode 100644
index 0000000..2b04565
--- /dev/null
+++ b/.pydevproject
@@ -0,0 +1,5 @@
+
+
+ Default
+ python interpreter
+
diff --git a/_scripts/get_resources.py b/_scripts/get_resources.py
new file mode 100755
index 0000000..f35a176
--- /dev/null
+++ b/_scripts/get_resources.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python3
+import kubernetes as k8s
+
+from pint import UnitRegistry
+from collections import defaultdict
+
+__all__ = ["compute_allocated_resources"]
+
+
+def compute_allocated_resources():
+ ureg = UnitRegistry()
+ ureg.load_definitions('kubernetes_units.txt')
+
+ Q_ = ureg.Quantity
+ data = {}
+
+ # doing this computation within a k8s cluster
+ k8s.config.load_kube_config()
+ core_v1 = k8s.client.CoreV1Api()
+
+# print("Listing pods with their IPs:")
+# ret = core_v1.list_pod_for_all_namespaces(watch=False)
+# for i in ret.items:
+# print("%s\t%s\t%s" % (i.status.pod_ip, i.metadata.namespace, i.metadata.name))
+
+ for node in core_v1.list_node().items:
+
+ stats = {}
+ node_name = node.metadata.name
+ allocatable = node.status.allocatable
+ max_pods = int(int(allocatable["pods"]) * 1.5)
+# print("{} ALLOC: {} MAX_PODS: {}".format(node_name,allocatable,max_pods))
+ field_selector = ("status.phase!=Succeeded,status.phase!=Failed," +
+ "spec.nodeName=" + node_name)
+
+ stats["cpu_alloc"] = Q_(allocatable["cpu"])
+ stats["mem_alloc"] = Q_(allocatable["memory"])
+
+ pods = core_v1.list_pod_for_all_namespaces(limit=max_pods,
+ field_selector=field_selector).items
+
+ # compute the allocated resources
+ cpureqs, cpulmts, memreqs, memlmts = [], [], [], []
+ for pod in pods:
+ for container in pod.spec.containers:
+ res = container.resources
+ reqs = defaultdict(lambda: 0, res.requests or {})
+ lmts = defaultdict(lambda: 0, res.limits or {})
+ cpureqs.append(Q_(reqs["cpu"]))
+ memreqs.append(Q_(reqs["memory"]))
+ cpulmts.append(Q_(lmts["cpu"]))
+ memlmts.append(Q_(lmts["memory"]))
+
+ stats["cpu_req"] = sum(cpureqs)
+ stats["cpu_lmt"] = sum(cpulmts)
+ stats["cpu_req_per"] = (stats["cpu_req"] / stats["cpu_alloc"] * 100)
+ stats["cpu_lmt_per"] = (stats["cpu_lmt"] / stats["cpu_alloc"] * 100)
+
+ stats["mem_req"] = sum(memreqs)
+ stats["mem_lmt"] = sum(memlmts)
+ stats["mem_req_per"] = (stats["mem_req"] / stats["mem_alloc"] * 100)
+ stats["mem_lmt_per"] = (stats["mem_lmt"] / stats["mem_alloc"] * 100)
+
+ data[node_name] = stats
+
+ return data
+
+if __name__ == "__main__":
+ # execute only if run as a script
+ print(compute_allocated_resources())
+
+
+
\ No newline at end of file
diff --git a/_scripts/kubernetes_units.txt b/_scripts/kubernetes_units.txt
new file mode 100644
index 0000000..6a73f51
--- /dev/null
+++ b/_scripts/kubernetes_units.txt
@@ -0,0 +1,20 @@
+# memory units
+
+kmemunits = 1 = [kmemunits]
+Ki = 1024 * kmemunits
+Mi = Ki^2
+Gi = Ki^3
+Ti = Ki^4
+Pi = Ki^5
+Ei = Ki^6
+
+# cpu units
+
+kcpuunits = 1 = [kcpuunits]
+m = 1/1000 * kcpuunits
+k = 1000 * kcpuunits
+M = k^2
+G = k^3
+T = k^4
+P = k^5
+E = k^6