From 7f1d298e91e5623a2e5dad6fd891fcfcbea3921f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20de=20Saint=20Martin?= <cedric.dsm@tiolive.com>
Date: Wed, 5 Nov 2014 13:44:43 +0000
Subject: [PATCH] slapos.core: Change Base_getHateoasMaster about 'me' link.

---
 slapos/slap/slap.py | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/slapos/slap/slap.py b/slapos/slap/slap.py
index 77e221563..8f2fc8f23 100644
--- a/slapos/slap/slap.py
+++ b/slapos/slap/slap.py
@@ -837,7 +837,13 @@ class HateoasNavigator(object):
 
   # XXX rename to be more generic
   def _hateoasGetPerson(self):
-    person_link = self._hateoasGetMaster()['_links']['action_object_jump']['href']
+    hateoas_master = self._hateoasGetMaster()
+    # XXX how to properly get URLs from URNs?
+    person_path = self.getPathFromUrn(hateoas_master['_links']['me']['href'])
+    hateoas_master_url = hateoas_master['_links']['self']['href']
+    root_url = hateoas_master_url[:hateoas_master_url.rfind('/') + 1]
+    person_link = '%s%s' % (root_url, person_path)
+
     result = self.GET(person_link)
     return json.loads(result)
 
@@ -871,6 +877,14 @@ class HateoasNavigator(object):
     else:
       raise NotFoundError('Action %s not found.' % title)
 
+  def getPathFromUrn(self, urn):
+    urn_schema = 'urn:jio:get:'
+    try:
+      _, url = urn.split(urn_schema)
+    except ValueError:
+      return
+    return str(url)
+
   # XXX remove me
   def _hateoas_getActionObjectSlap(self, action_object_slap_list, action_title):
     return self.hateoasGetLinkFromLinks(action_object_slap_list, action_title)
-- 
2.30.9