from PLC.Keys import Key, Keys
from PLC.SliceTags import SliceTag, SliceTags
from PLC.InitScripts import InitScript, InitScripts
+from PLC.Leases import Lease, Leases
+from PLC.Timestamp import Duration
from PLC.Methods.GetSliceFamily import GetSliceFamily
+from PLC.Accessors.Accessors_standard import *
+
# XXX used to check if slice expiration time is sane
MAXINT = 2L**31-1
return slivers
-class v43GetSlivers(Method):
+class GetSlivers(Method):
"""
Returns a struct containing information about the specified node
(or calling node, if called by a node and node_id_or_hostname is
'timestamp': Parameter(int, "Timestamp of this call, in seconds since UNIX epoch"),
'node_id': Node.fields['node_id'],
'hostname': Node.fields['hostname'],
- 'networks': [Interface.fields],
+ 'interfaces': [Interface.fields],
'groups': [NodeGroup.fields['groupname']],
'conf_files': [ConfFile.fields],
'initscripts': [InitScript.fields],
'tagname': SliceTag.fields['tagname'],
'value': SliceTag.fields['value']
}]
- }]
+ }],
+ 'xmpp': {'server':Parameter(str,"hostname for the XMPP server"),
+ 'user':Parameter(str,"username for the XMPP server"),
+ 'password':Parameter(str,"username for the XMPP server"),
+ },
+ 'leases': [ { 'slice_id' : Lease.fields['slice_id'],
+ 't_from' : Lease.fields['t_from'],
+ 't_until' : Lease.fields['t_until'],
+ }],
}
def call(self, auth, node_id_or_hostname = None):
raise PLCInvalidArgument, "Not a local node"
# Get interface information
- networks = Interfaces(self.api, node['interface_ids'])
+ interfaces = Interfaces(self.api, node['interface_ids'])
# Get node group information
nodegroups = NodeGroups(self.api, node['nodegroup_ids']).dict('groupname')
personsitekeys=get_all_admin_keys(self.api)
accounts.append({'name':'root','keys':personsitekeys})
+ hrn = GetNodeHrn(self.api).call(auth,node['node_id'])
+
+ # XMPP config for omf federation
+ try:
+ if not self.api.config.PLC_OMF_ENABLED:
+ raise Exception,"OMF disabled"
+ xmpp={'server':self.api.config.PLC_OMF_XMPP_SERVER,
+ 'user':self.api.config.PLC_OMF_XMPP_USER,
+ 'password':self.api.config.PLC_OMF_XMPP_PASSWORD,
+ }
+ except:
+ xmpp={'server':None,'user':None,'password':None}
+
node.update_last_contact()
+ # expose leases
+ lease_exposed_fields = [ 'slice_id', 't_from', 't_until', ]
+ leases=None
+ if node['node_type'] == 'reservable':
+ # expose the leases for the next 12 hours
+ leases = [ dict ( [ (k,l[k]) for k in lease_exposed_fields ] )
+ for l in Leases (self.api, {'node_id':node['node_id'],
+ 'clip': (timestamp, timestamp+12*Duration.HOUR)}) ]
+
return {
'timestamp': timestamp,
'node_id': node['node_id'],
'hostname': node['hostname'],
- 'networks': networks,
+ 'interfaces': interfaces,
'groups': groups,
'conf_files': conf_files.values(),
'initscripts': initscripts,
'slivers': slivers,
- 'accounts': accounts
+ 'accounts': accounts,
+ 'xmpp':xmpp,
+ 'hrn':hrn,
+ 'leases':leases,
}
-
-class v42GetSlivers(v43GetSlivers):
- """
- Legacy wrapper for v43GetSlivers.
- """
-
- def call(self, auth, node_id_or_hostname = None):
- result = v43GetSlivers.call(self,auth,node_id_or_hostname)
- networks = result['networks']
-
- for i in range(0,len(networks)):
- network = networks[i]
- if network.has_key("interface_id"):
- network['nodenetwork_id']=network['interface_id']
- if network.has_key("interface_tag_ids"):
- network['nodenetwork_setting_ids']=network['interface_tag_ids']
- networks[i]=network
-
- result['networks']=networks
- return result
-
-class GetSlivers(v42GetSlivers):
- """
- Returns a struct containing information about the specified node
- (or calling node, if called by a node and node_id_or_hostname is
- not specified), including the current set of slivers bound to the
- node.
-
- All of the information returned by this call can be gathered from
- other calls, e.g. GetNodes, GetInterfaces, GetSlices, etc. This
- function exists almost solely for the benefit of Node Manager.
- """
-
- pass