5 # NodeManager plugin - first step of handling omf_controlled slices
8 Overwrites the 'resctl' tag of slivers controlled by OMF so sm.py does the right thing
18 ### xxx this should not be version-dependent
19 service_name='omf-resctl-5.3'
21 def start(options, conf):
22 logger.log("omf_resctl: plugin starting up...")
24 def GetSlivers(data, conf = None, plc = None):
25 if 'accounts' not in data:
26 logger.log_missing_data("omf_resctl.GetSlivers",'accounts')
30 xmpp_server=data['xmpp']['server']
32 # disabled feature - bailing out
33 # xxx might need to clean up more deeply..
36 for sliver in data['slivers']:
38 for chunk in sliver['attributes']:
39 if chunk['tagname']=='omf_control':
41 yaml="/vservers/%s/etc/omf-resctl/omf-resctl.yaml"%name
43 # read template and replace
44 template=file(template).read()
45 yaml_contents=template\
46 .replace('@XMPP_SERVER@',xmpp_server)\
47 .replace('@NODE_HRN@','default')\
48 .replace('@SLICE_NAME@',name)
49 changes=tools.replace_file_with_string(yaml,yaml_contents)
51 sp=subprocess.Popen(['vserver',name,'exec','service',service_name,'restart'],
52 stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
53 (output,retcod)=sp.communicate()
54 logger.log("omf_resctl: %s: restarted resource controller (retcod=%r)"%(name,retcod))
55 logger.log("omf_resctl: got output\n%s"%output)
57 logger.log("omf_resctl: %s: omf_control'ed sliver has no change" % name)