X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplc%2Fplaggregate.py;h=5c0606ce4309af4db690d0c849ff8657e357040a;hb=ae732ce47c7a8802a56d0761cf73e5053eece448;hp=1fed4558a54a08248b39a9fb1f64d93019ab216a;hpb=a998bf400c1ef152daa4979fec49ee5dfa0d7ff3;p=sfa.git diff --git a/sfa/plc/plaggregate.py b/sfa/plc/plaggregate.py index 1fed4558..5c0606ce 100644 --- a/sfa/plc/plaggregate.py +++ b/sfa/plc/plaggregate.py @@ -1,6 +1,7 @@ #!/usr/bin/python from sfa.util.xrn import Xrn, hrn_to_urn, urn_to_hrn, urn_to_sliver_id from sfa.util.sfatime import epochparse +from sfa.util.sfalogging import logger from sfa.rspecs.rspec import RSpec from sfa.rspecs.elements.hardware_type import HardwareType @@ -23,17 +24,16 @@ class PlAggregate: def __init__(self, driver): self.driver = driver - self.user_options = {} def get_sites(self, filter={}): sites = {} - for site in self.driver.GetSites(filter): + for site in self.driver.shell.GetSites(filter): sites[site['site_id']] = site return sites def get_interfaces(self, filter={}): interfaces = {} - for interface in self.driver.GetInterfaces(filter): + for interface in self.driver.shell.GetInterfaces(filter): iface = Interface() if interface['bwlimit']: interface['bwlimit'] = str(int(interface['bwlimit'])/1000) @@ -85,14 +85,14 @@ class PlAggregate: def get_node_tags(self, filter={}): node_tags = {} - for node_tag in self.driver.GetNodeTags(filter): + for node_tag in self.driver.shell.GetNodeTags(filter): node_tags[node_tag['node_tag_id']] = node_tag return node_tags def get_pl_initscripts(self, filter={}): pl_initscripts = {} filter.update({'enabled': True}) - for initscript in self.driver.GetInitScripts(filter): + for initscript in self.driver.shell.GetInitScripts(filter): pl_initscripts[initscript['initscript_id']] = initscript return pl_initscripts @@ -108,7 +108,7 @@ class PlAggregate: slice_urn = hrn_to_urn(slice_xrn, 'slice') slice_hrn, _ = urn_to_hrn(slice_xrn) slice_name = hrn_to_pl_slicename(slice_hrn) - slices = self.driver.GetSlices(slice_name) + slices = self.driver.shell.GetSlices(slice_name) if not slices: return (slice, slivers) slice = slices[0] @@ -122,7 +122,7 @@ class PlAggregate: slivers[node_id]= sliver # sort sliver attributes by node id - tags = self.driver.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']}) + tags = self.driver.shell.GetSliceTags({'slice_tag_id': slice['slice_tag_ids']}) for tag in tags: # most likely a default/global sliver attribute (node_id == None) if tag['node_id'] not in slivers: @@ -146,7 +146,7 @@ class PlAggregate: filter['boot_state'] = 'boot' filter.update({'peer_id': None}) - nodes = self.driver.GetNodes(filter) + nodes = self.driver.shell.GetNodes(filter) site_ids = [] interface_ids = [] @@ -183,8 +183,10 @@ class PlAggregate: rspec_node['component_name'] = node['hostname'] rspec_node['component_manager_id'] = Xrn(self.driver.hrn, 'authority+cm').get_urn() rspec_node['authority_id'] = hrn_to_urn(PlXrn.site_hrn(self.driver.hrn, site['login_base']), 'authority+sa') - rspec_node['boot_state'] = node['boot_state'] - rspec_node['exclusive'] = 'False' + # do not include boot state ( element) in the manifest rspec + if not slice: + rspec_node['boot_state'] = node['boot_state'] + rspec_node['exclusive'] = 'false' rspec_node['hardware_types']= [HardwareType({'name': 'plab-pc'}), HardwareType({'name': 'pc'})] # only doing this because protogeni rspec needs @@ -194,7 +196,7 @@ class PlAggregate: # assumes that sites, interfaces and tags have already been prepared. site = sites_dict[node['site_id']] if site['longitude'] and site['latitude']: - location = Location({'longitude': site['longitude'], 'latitude': site['latitude']}) + location = Location({'longitude': site['longitude'], 'latitude': site['latitude'], 'country': 'unknown'}) rspec_node['location'] = location rspec_node['interfaces'] = [] if_count=0 @@ -203,6 +205,9 @@ class PlAggregate: interface['ipv4'] = interface['ip'] interface['component_id'] = PlXrn(auth=self.driver.hrn, interface='node%s:eth%s' % (node['node_id'], if_count)).get_urn() + # interfaces in the manifest need a client id + if slice: + interface['client_id'] = "%s:%s" % (node['node_id'], if_id) rspec_node['interfaces'].append(interface) if_count+=1