from __future__ import with_statement
import re
import socket
-from sfa.util.namespace import get_authority, hrn_to_pl_slicename
+from sfa.util.xrn import get_authority
+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
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:
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)
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()
return n
# Add a new slice tag
- def add_tag(self, tagname, value, node = None, role_id = 40):
+ def add_tag(self, tagname, value, node = None, role_id = 30):
tt = self.network.lookupTagType(tagname)
if not tt.permit_update(role_id):
raise InvalidRSpec("permission denied to modify '%s' tag" % tagname)
return tag
# Update a slice tag if it exists, else add it
- def update_tag(self, tagname, value, node = None, role_id = 40):
+ def update_tag(self, tagname, value, node = None, role_id = 30):
tag = self.get_tag(tagname, node)
if tag:
if not tag.permit_update(role_id, value):
tag = self.add_tag(tagname, value, node, role_id)
return tag
- def update_multi_tag(self, tagname, value, node = None, role_id = 40):
+ def update_multi_tag(self, tagname, value, node = None, role_id = 30):
tags = self.get_multi_tag(tagname, node)
for tag in tags:
if tag and tag.value == value:
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:
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
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:
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':
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:
Write any slice tags that have been added or modified back to the DB
"""
for tag in self.getSliceTags():
- if tag.category == 'slice/rspec' and not tag.was_updated() and tag.permit_update(None, 40):
+ if tag.category == 'slice/rspec' and not tag.was_updated() and tag.permit_update(None, 30):
# The user wants to delete this tag
tag.delete()