hpc observer, wip
diff --git a/planetstack/hpc_observer/hpclib.py b/planetstack/hpc_observer/hpclib.py
new file mode 100644
index 0000000..e91a468
--- /dev/null
+++ b/planetstack/hpc_observer/hpclib.py
@@ -0,0 +1,103 @@
+import os
+import base64
+import sys
+
+if __name__ == '__main__':
+ sys.path.append("/opt/planetstack")
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
+
+from planetstack.config import Config
+from core.models import Service
+from hpc.models import HpcService
+from requestrouter.models import RequestRouterService
+from util.logger import Logger, logging
+
+logger = Logger(level=logging.INFO)
+
+class HpcLibrary:
+ def extract_slice_info(self, service):
+ """ Produce a dict that describes the slices for the CMI
+
+ slice_coblitz = <name of coblitz slice>
+ service_coblitz = <name of coblitz service>
+ hostname_coblitz = <name of first coblitz slice>
+ hostnames_coblitz = <name_of_first_cob_slice>,<name_of_second_cob_slice>,...
+
+ slice_cmi = <name of cmi slice>
+ ...
+ """
+
+ slicenames = {}
+ slicehosts = {}
+ for slice in service.service.all():
+ name = slice.name
+ if not ("_" in name):
+ continue
+
+ if "coblitz" in name:
+ slicenames["coblitz"] = name
+ slicehosts["coblitz"] = [sliver.node.name for sliver in slice.slivers.all()]
+ elif "cmi" in name:
+ slicenames["cmi"] = name
+ slicehosts["cmi"] = [sliver.node.name for sliver in slice.slivers.all()]
+ elif "dnsredir" in name:
+ slicenames["dnsredir"] = name
+ slicehosts["dnsredir"] = [sliver.node.name for sliver in slice.slivers.all()]
+ elif "dnsdemux" in name:
+ slicenames["dnsdemux"] = name
+ slicehosts["dnsdemux"] = [sliver.node.name for sliver in slice.slivers.all()]
+
+ base_hrn = None
+ if "coblitz" in slicenames:
+ base_hrn = slicenames["coblitz"].split("_")[0]
+
+ mapping = {}
+ mapping["base_hrn"] = base_hrn
+ for (k,v) in slicenames.items():
+ mapping["slice_" + k] = v
+ mapping["service_" + k] = v.split("_",1)[1]
+ for (k,v) in slicehosts.items():
+ mapping["hostname_" + k] = v[0]
+ mapping["hostnames_" + k] = ",".join(v)
+
+ return mapping
+
+ def write_slices_file(self, hpc_service, rr_service):
+ mapping = self.extract_slice_info(hpc_service)
+ rr_mapping = self.extract_slice_info(rr_service)
+
+ mapping.update(rr_mapping)
+
+ print mapping
+
+ fn = "/tmp/slices"
+
+ f = open(fn, "w")
+ f.write("""
+ENABLE_PLC=True
+ENABLE_PS=False
+BASE_HRN="%(base_hrn)s"
+RELEVANT_SERVICE_NAMES=['%(service_coblitz)s', '%(service_dnsredir)s', '%(service_dnsdemux)s']
+COBLITZ_SLICE_NAME="%(slice_coblitz)s"
+COBLITZ_SLICE_ID=1
+COBLITZ_PS_SLICE_NAME="%(slice_coblitz)s"
+DNSREDIR_SLICE_NAME="%(slice_dnsredir)s"
+DNSREDIR_SLICE_ID=2
+DNSREDIR_PS_SLICE_NAME="%(slice_dnsredir)s"
+DNSDEMUX_SLICE_NAME="%(slice_dnsdemux)s"
+DNSDEMUX_SLICE_ID=3
+DNSDEMUX_PS_SLICE_NAME="%(slice_dnsdemux)s"
+CMI_URL="http://%(hostname_cmi)s"
+CMI_HTTP_PORT="8004"
+CMI_HTTPS_PORT="8003"
+PUPPET_MASTER_HOSTNAME="%(hostname_cmi)s"
+PUPPET_MASTER_PORT="8140"
+""" % mapping)
+
+if __name__ == '__main__':
+ hpc_service = HpcService.objects.get()
+ rr_service = RequestRouterService.objects.get()
+ lib = HpcLibrary()
+ lib.write_slices_file(hpc_service, rr_service)
+
+