Merge branch 'master' of ssh://git.planet-lab.org/git/sfa
[sfa.git] / sfa / plc / network.py
index b157f13..41bae48 100644 (file)
@@ -2,7 +2,7 @@ from __future__ import with_statement
 import re
 import socket
 from sfa.util.xrn import get_authority
-from sfa.util.plxrn import hrn_to_pl_slicename
+from sfa.util.plxrn import hrn_to_pl_slicename, hostname_to_urn
 from sfa.util.faults import *
 from xmlbuilder import XMLBuilder
 from lxml import etree
@@ -50,6 +50,9 @@ class Node:
         self.iface_ids = node['interface_ids']
         self.sliver = None
         self.whitelist = node['slice_ids_whitelist']
+        auth = self.network.api.hrn
+        login_base = self.get_site().idtag
+        self.urn = hostname_to_urn(auth, login_base, self.hostname)
 
     def get_primary_iface(self):
         for id in self.iface_ids:
@@ -73,6 +76,8 @@ class Node:
         with xml.node(id = self.idtag):
             with xml.hostname:
                 xml << self.hostname
+            with xml.urn:
+                xml << self.urn
             iface = self.get_primary_iface()
             if iface:
                 iface.toxml(xml)
@@ -84,11 +89,11 @@ class Site:
     def __init__(self, network, site):
         self.network = network
         self.id = site['site_id']
-        self.idtag = "s%s" % self.id
         self.node_ids = site['node_ids']
         self.node_ids.sort()
         self.name = site['abbreviated_name']
         self.tag = site['login_base']
+        self.idtag = site['login_base']
         self.public = site['is_public']
         self.enabled = site['enabled']
         self.links = set()
@@ -213,7 +218,8 @@ class Slice:
 
 class Slicetag:
     newid = -1 
-    filter_fields = ['slice_tag_id','slice_id','tagname','value','node_id','category','min_role_id'] 
+#    filter_fields = ['slice_tag_id','slice_id','tagname','value','node_id','category','min_role_id'] 
+    filter_fields = ['slice_tag_id','slice_id','tagname','value','node_id','category'] 
     ignore_tags = ['hmac','ssh_key']
     def __init__(self, tag = None):
         if not tag:
@@ -224,7 +230,7 @@ class Slicetag:
         self.value = tag['value']
         self.node_id = tag['node_id']
         self.category = tag['category']
-        self.min_role_id = tag['min_role_id']
+#        self.min_role_id = tag['min_role_id']
         self.status = None
 
     # Create a new slicetag that will be written to the DB later
@@ -240,15 +246,16 @@ class Slicetag:
         else:
             self.node_id = None
         self.category = tt.category
-        self.min_role_id = tt.min_role_id
+#        self.min_role_id = tt.min_role_id
         self.status = "new"
 
     def permit_update(self, role_id, value = None):
         if value and self.value == value:
             return True
-        if role_id > self.min_role_id:
-            return False
-        return True
+        # xxx FIXME - the new model in PLCAPI has roles and not min_role_id
+        #if role_id > self.min_role_id:
+        #    return False
+        return False
         
     def change(self, value):
         if self.value != value:
@@ -289,7 +296,7 @@ class TagType:
         self.id = tagtype['tag_type_id']
         self.category = tagtype['category']
         self.tagname = tagtype['tagname']
-        self.min_role_id = tagtype['min_role_id']
+#        self.min_role_id = tagtype['min_role_id']
         self.multi = False
         self.in_rspec = False
         if self.category == 'slice/rspec':
@@ -298,9 +305,10 @@ class TagType:
             self.multi = True
 
     def permit_update(self, role_id):
-        if role_id > self.min_role_id:
-            return False
-        return True
+        # XXX FIXME ditto
+        #if role_id > self.min_role_id:
+        #    return False
+        return False
         
 
 class Network: