dom = XMLParse(xml_path) parent = dom.createElement("parent") name = dom.createElement("name") txt = dom.createTextNode("hoge") name.appendChild(txt) parent.appendChild(name) dom.childNodes[0].appendChild(parent) xmlDesc = kvs.generateXML(dom) print xmlDesc id = u'1274235845' print kvs.getSnapshotXMLPath(id) print kvs.getXMLDesc(id) id = '1274235848' id = '1274235841' for domain in kvs.whichDomain(id): print kvs.getSnapshotXMLPath(id,domain=domain) print kvs.getXMLDesc(id,domain=domain) print kvs.getChildrenNames(id,domain=domain) """ names = kvs.listNames() preprint_r(names) names = kvs.listNames(all=True) preprint_r(names) kvs.refreshSnapshot() kvs.finish()
dom = XMLParse(xml_path) parent = dom.createElement("parent") name = dom.createElement("name") txt = dom.createTextNode("hoge") name.appendChild(txt) parent.appendChild(name) dom.childNodes[0].appendChild(parent) xmlDesc = kvs.generateXML(dom) print xmlDesc id = u'1274235845' print kvs.getSnapshotXMLPath(id) print kvs.getXMLDesc(id) id = '1274235848' id = '1274235841' for domain in kvs.whichDomain(id): print kvs.getSnapshotXMLPath(id,domain=domain) print kvs.getXMLDesc(id,domain=domain) print kvs.getChildrenNames(id,domain=domain) """ names = kvs.listNames() preprint_r(names) names = kvs.listNames(all=True) preprint_r(names) kvs.refreshSnapshot() kvs.finish()
def write_conf(dop, webobj=None, machine=None, modules=[], extra_args={}): """<comment-ja> @param dop: 辞書配列操作オブジェクト @param webobj: @param machine: @type dop: object dict_op @rtype: boolean @return: True or False </comment-ja> <comment-en> TODO: English Comment </comment-en> """ from karesansui.lib.file.configfile import ConfigFile if isinstance(dop,karesansui.lib.dict_op.DictOp) is False: return False if not os.path.exists(CONF_TMP_DIR): os.makedirs(CONF_TMP_DIR) r_chmod(CONF_TMP_DIR,0770) r_chown(CONF_TMP_DIR,KARESANSUI_USER) r_chgrp(CONF_TMP_DIR,KARESANSUI_GROUP) serial = time.strftime("%Y%m%d%H%M%S",time.localtime()) if len(modules) == 0: modules = dop.ModuleNames w_modules = [] w_files = [] for _module in modules: if _module in dop.ModuleNames: filename = "%s/%s.%s" % (CONF_TMP_DIR,_module,serial,) data = preprint_r(dop.getconf(_module),return_var=True) ConfigFile(filename).write(data+"\n") r_chmod(filename,0660) r_chown(filename,KARESANSUI_USER) r_chgrp(filename,KARESANSUI_GROUP) w_modules.append(_module) w_files.append(filename) if len(w_modules) == 0: return False options = { "module" : ":".join(w_modules), "input-file" : ":".join(w_files), } options["delete"] = None try: extra_args['pre-command'] options['pre-command'] = "b64:" + base64_encode(extra_args['pre-command']) except: pass try: extra_args['post-command'] options['post-command'] = "b64:" + base64_encode(extra_args['post-command']) except: pass try: options['include'] = extra_args['include'] except: pass #cmd_name = u"Write Settings - %s" % ":".join(w_modules) cmd_name = u"Write Settings" if type(webobj) == types.InstanceType: from karesansui.db.model._2pysilhouette import Job, JobGroup, \ JOBGROUP_TYPE from karesansui.db.access._2pysilhouette import jg_findby1, jg_save,corp from karesansui.db.access._2pysilhouette import save_job_collaboration from karesansui.db.access.machine2jobgroup import new as m2j_new from pysilhouette.command import dict2command _cmd = dict2command( "%s/%s" % (karesansui.config['application.bin.dir'], CONFIGURE_COMMAND_WRITE), options) _jobgroup = JobGroup(cmd_name, karesansui.sheconf['env.uniqkey']) _jobgroup.jobs.append(Job('%s command' % cmd_name, 0, _cmd)) _machine2jobgroup = m2j_new(machine=machine, jobgroup_id=-1, uniq_key=karesansui.sheconf['env.uniqkey'], created_user=webobj.me, modified_user=webobj.me, ) save_job_collaboration(webobj.orm, webobj.pysilhouette.orm, _machine2jobgroup, _jobgroup, ) """ _jobgroup.type = JOBGROUP_TYPE['PARALLEL'] if corp(webobj.orm, webobj.pysilhouette.orm,_machine2jobgroup, _jobgroup) is False: webobj.logger.debug("%s command failed. Return to timeout" % (cmd_name)) for filename in w_files: if os.path.exists(filename): os.unlink(filename) return False cmd_res = jobgroup.jobs[0].action_stdout """ else: from karesansui.lib.utils import execute_command opts_str = "" for x in options.keys(): if options[x] is None: opts_str += "--%s " % x else: opts_str += "--%s=%s " % (x, options[x]) _cmd = "%s/bin/%s %s" % (KARESANSUI_PREFIX, CONFIGURE_COMMAND_WRITE, opts_str.strip(),) command_args = _cmd.strip().split(" ") (rc,res) = execute_command(command_args) if rc != 0: for filename in w_files: if os.path.exists(filename): os.unlink(filename) return False cmd_res = "\n".join(res) """ for filename in w_files: if os.path.exists(filename): os.unlink(filename) """ return True
pass command_args = [PARSER_COMMAND_ROUTE, "del", type, target, "dev", device] (ret,res) = execute_command(command_args) if ret != 0: retval = False return retval """ """ if __name__ == '__main__': """Testing """ parser = staticrouteParser() preprint_r(parser.do_status()) parser.do_add("eth0","5.6.7.0","172.16.0.1") parser.do_del("eth0","5.6.7.0") preprint_r(parser.do_status()) conf_arr = parser.read_conf() preprint_r(conf_arr) dop = DictOp() dop.addconf("parser",conf_arr) dop.add("parser",["eth1","2.3.4.5/32"],"172.16.0.10") dop.add("parser",["eth1","2.3.4.6/32"],"172.16.0.10") dop.add("parser",["eth1","2.3.4.7/32"],"172.16.0.10") #dop.insert_order("parser",["eth1","2.3.4.5/32"],0,is_parent_parser=True) #dop.insert_order("parser",["eth1","2.3.4.6/32"],0,is_parent_parser=True) dop.insert_order("parser",["eth1","2.3.4.7/32"],1,is_parent_parser=True)
</domain> </arch> </guest> <guest> <os_type>hvm</os_type> <arch name='ppc'> <wordsize>32</wordsize> <emulator>/usr/bin/qemu-system-ppc</emulator> <machine>g3beige</machine> <machine>mpc8544ds</machine> <machine>bamboo</machine> <machine>ref405ep</machine> <machine>taihu</machine> <machine>mac99</machine> <machine>prep</machine> <machine>xenpv</machine> <domain type='qemu'> </domain> </arch> </guest> </capabilities> """ param = CapabilitiesConfigParam() param.load_xml_config(string) preprint_r(param.host) preprint_r(param.guest)
plugin = "cpu" plugin_instance = "0" type = "cpu" type_instance = "user" ds = "value" host = None host = "foo.example.com" from karesansui.lib.utils import preprint_r watch_data = query_watch_data(plugin, plugin_instance, type, type_instance, ds, host=host) preprint_r(watch_data) try: for column_name in watch_column: exec("%s = watch_data[0]['%s']" % ( column_name, column_name, )) exec("_var = %s" % (column_name, )) print "%s: %s" % (column_name, _var) macros = {"host": "localhost.localdomain"} print evaluate_macro(okay_mail_body, macros) except: print "Error: cannot get watch data." sys.exit(0)
'okay_mail_body', 'is_okay_script', 'is_okay_mail', 'notify_mail_from', 'notify_mail_to'] plugin = "cpu" plugin_instance = "0" type = "cpu" type_instance = "user" ds = "value" host = None host = "foo.example.com" from karesansui.lib.utils import preprint_r watch_data = query_watch_data(plugin,plugin_instance,type,type_instance,ds,host=host) preprint_r(watch_data) try: for column_name in watch_column: exec("%s = watch_data[0]['%s']" % (column_name,column_name,)) exec("_var = %s" % (column_name,)) print "%s: %s" % (column_name,_var) macros = {"host":"localhost.localdomain"} print evaluate_macro(okay_mail_body,macros) except: print "Error: cannot get watch data." sys.exit(0) pass
if action == "delete": dop.add('__',new_key,val) dop.delete('__',new_key) elif action == "set": dop.set('__',new_key,val) else: dop.add('__',new_key,val) if iscomment is True: dop.comment('__',new_key) #preprint_r(dop.getconf('__')) new_lines = self._value_to_lines(dop.getconf('__')) #print "\n".join(new_lines) return new_lines """ """ if __name__ == '__main__': """Testing """ parser = xmlLikeConfParser() parser.set_source_file("/etc/collectd.conf") conf_arr = parser.read_conf() dop = DictOp() dop.addconf("parser",conf_arr) conf_arr = dop.getconf("parser") preprint_r(conf_arr) parser.write_conf(conf_arr,dryrun=True)
# SubOpt1 gege # post # </View> # Option2 false # Option1 true # </Plugin> dop.cdp_set("dum",["Plugin","foobar","Option1"],"true") dop.cdp_set("dum",["Plugin","foobar","Option2"],"false") dop.cdp_set("dum",["Plugin","foobar","View","hoge","SubOpt1"],"gege") dop.cdp_set_pre_comment("dum",["Plugin","foobar","View","hoge","SubOpt1"],["","pre comment"]) dop.cdp_set_post_comment("dum",["Plugin","foobar","View","hoge","SubOpt1"],"post") # 'LoadPlugin target_replace' の値を取得 key = ["LoadPlugin","target_hoge"] dop.insert_order("dum",key) value = dop.cdp_get("dum",key) preprint_r(value) # 'LoadPlugin target_replace' の設定順を取得 key = ["LoadPlugin","target_hoge"] num = dop.order("dum",key) print num # '<Plugin foobar>' を 'LoadPlugin target_hoge' の前にする key = ["Plugin","foobar"] dop.insert_order("dum",key,num) # '<Plugin foobar>' を 'LoadPlugin target_hoge' の後に変更する dop.change_order("dum",key,num+1) # 'Foo' を 'Bar' の後に変更する num = dop.order("dum",['Foo'])
try: self.dop.addconf("parser",{}) self.dop.set("parser",[PARSER_HOSTS_CONF],conf_arr) #self.dop.preprint_r("parser") arr = self.dop.getconf("parser") self.parser.write_conf(arr,dryrun=dryrun) except: pass return retval """ """ if __name__ == '__main__': """Testing """ parser = hostsParser() dop = DictOp() dop.addconf("dum",parser.read_conf()) dop.add("dum",['key'],['value',[['comment foo','comment bar'],'comment hoge']]) print dop.cdp_get("dum",['key']) print dop.cdp_get_pre_comment("dum",['key']) print dop.cdp_get_post_comment("dum",['key']) print dop.cdp_set("dum",['key'],"value2") print dop.cdp_set_pre_comment("dum",['key'],["comment foo2","comment bar2","a"]) print dop.cdp_set_post_comment("dum",['key'],"comment fuga") conf = dop.getconf("dum") preprint_r(conf) parser.write_conf(conf,dryrun=True)
def send_mail(recipient=None, sender=None, server="localhost", port=25, message="", extra_message="", watch_name="", logfile="/dev/null"): retval = False func_name = sys._getframe(0).f_code.co_name append_line(logfile,"[%s] Entering function '%s'." % (func_name,func_name,)) smtp_server = server.split(":")[0] try: smtp_port = int(port) except: smtp_port = 25 try: socket_timeout except: socket_timeout = 30 if recipient is not None: append_line(logfile,"[%s] Connecting SMTP server" % (func_name,)) append_line(logfile,"[%s] smtp_server :%s" % (func_name,smtp_server,)) append_line(logfile,"[%s] smtp_port :%s" % (func_name,smtp_port,)) mail = MAIL_LIB(smtp_server,smtp_port) if socket_timeout is None: socket_timeout = 30 mail.set_timeout(int(socket_timeout)) mail.set_verbosity(0) if sender is None: mail.set_sender(DEFAULT_SENDER) else: mail.set_sender(sender) mail.encoding = "utf-8" mail.set_recipients(recipient.split(",")) append_line(logfile,"[%s] recipient :%s" % (func_name,recipient,)) # デフォルトのヘッダをセット headers = {} headers['Subject'] = re.sub("\%\{watch_name\}",watch_name,DEFAULT_SUBJECT) # カテゴリ用のヘッダとボディを上書きでセット rawbody = "" try: append_line(logfile,"[%s] message :%s" % (func_name,message,)) try: del headers["Content-Transfer-Encoding"] message = message.encode('utf-8') message = str(message) except: pass append_line(logfile,"[%s] lang %s" % (func_name,os.environ['LANG'])) extra_args = {"message":message} eml = emlParser().read_conf(extra_args=extra_args) parse_ret = preprint_r(eml,return_var=True) append_line(logfile,"[%s] parse_ret :%s" % (func_name,parse_ret,)) header = eml['@message']['value']['header']['value'] rawbody += eml['@message']['value']['rawbody']['value'] for _k,_v in header.iteritems(): headers[_k] = _v['value'] except: pass try: extra_message = extra_message.encode('utf-8') except: pass rawbody += "\n\n" + extra_message # Add footer rawbody += "\n\n" + "(brought to you by %s)" % AppName append_line(logfile,"[%s] rawbody :%s" % (func_name,rawbody,)) mail.set_body(rawbody) # 一旦メッセージを生成 mail.create_message() #preprint_r(mail.msg._headers) for _k,_v in headers.iteritems(): append_line(logfile,"[%s] Headers %-12s: %s" % (func_name,_k,_v)) try: del mail.msg[_k] except: pass if _k == "Subject": try: mail.set_subject(_v.encode('utf_8')) except: mail.set_subject(_v) else: mail.msg[_k] = _v try: del mail.msg["Content-Transfer-Encoding"] mail.msg["Content-Transfer-Encoding"] = "base64" except: pass for _header in mail.msg._headers: append_line(logfile,"[%s] Header %-12s: %s" % (func_name,_header[0],_header[1])) #sys.exit() try: mail.send() retval = True except MAIL_LIB_Exception, msg: append_line(logfile,"[%s] Error: %s" % (func_name,str(msg),)) except Exception: append_line(logfile,"[%s] Error: failed to send mail." % (func_name,))
pass command_args = [PARSER_COMMAND_ROUTE, "del", type, target, "dev", device] (ret,res) = execute_command(command_args) if ret != 0: retval = False return retval """ """ if __name__ == '__main__': """Testing """ parser = staticrouteParser() preprint_r(parser.do_status()) parser.do_add("eth0","5.6.7.0","172.16.0.1") parser.do_del("eth0","5.6.7.0") preprint_r(parser.do_status()) conf_arr = parser.read_conf() preprint_r(conf_arr) dop = DictOp() dop.addconf("parser",conf_arr) dop.add("parser",["eth1","2.3.4.5/32"],"172.16.0.10") dop.add("parser",["eth1","2.3.4.6/32"],"172.16.0.10") dop.add("parser",["eth1","2.3.4.7/32"],"172.16.0.10") #dop.insert_order("parser",["eth1","2.3.4.5/32"],0,is_parent_parser=True) #dop.insert_order("parser",["eth1","2.3.4.6/32"],0,is_parent_parser=True) dop.insert_order("parser",["eth1","2.3.4.7/32"],1,is_parent_parser=True)
dop.add('__', new_key, val) dop.delete('__', new_key) elif action == "set": dop.set('__', new_key, val) else: dop.add('__', new_key, val) if iscomment is True: dop.comment('__', new_key) #preprint_r(dop.getconf('__')) new_lines = self._value_to_lines(dop.getconf('__')) #print "\n".join(new_lines) return new_lines """ """ if __name__ == '__main__': """Testing """ parser = xmlLikeConfParser() parser.set_source_file("/etc/collectd.conf") conf_arr = parser.read_conf() dop = DictOp() dop.addconf("parser", conf_arr) conf_arr = dop.getconf("parser") preprint_r(conf_arr) parser.write_conf(conf_arr, dryrun=True)
def send_mail(recipient=None, sender=None, server="localhost", port=25, message="", extra_message="", watch_name="", logfile="/dev/null"): retval = False func_name = sys._getframe(0).f_code.co_name append_line(logfile, "[%s] Entering function '%s'." % ( func_name, func_name, )) smtp_server = server.split(":")[0] try: smtp_port = int(port) except: smtp_port = 25 try: socket_timeout except: socket_timeout = 30 if recipient is not None: append_line(logfile, "[%s] Connecting SMTP server" % (func_name, )) append_line(logfile, "[%s] smtp_server :%s" % ( func_name, smtp_server, )) append_line(logfile, "[%s] smtp_port :%s" % ( func_name, smtp_port, )) mail = MAIL_LIB(smtp_server, smtp_port) if socket_timeout is None: socket_timeout = 30 mail.set_timeout(int(socket_timeout)) mail.set_verbosity(0) if sender is None: mail.set_sender(DEFAULT_SENDER) else: mail.set_sender(sender) mail.encoding = "utf-8" mail.set_recipients(recipient.split(",")) append_line(logfile, "[%s] recipient :%s" % ( func_name, recipient, )) # デフォルトのヘッダをセット headers = {} headers['Subject'] = re.sub("\%\{watch_name\}", watch_name, DEFAULT_SUBJECT) # カテゴリ用のヘッダとボディを上書きでセット rawbody = "" try: append_line(logfile, "[%s] message :%s" % ( func_name, message, )) try: del headers["Content-Transfer-Encoding"] message = message.encode('utf-8') message = str(message) except: pass append_line(logfile, "[%s] lang %s" % (func_name, os.environ['LANG'])) extra_args = {"message": message} eml = emlParser().read_conf(extra_args=extra_args) parse_ret = preprint_r(eml, return_var=True) append_line(logfile, "[%s] parse_ret :%s" % ( func_name, parse_ret, )) header = eml['@message']['value']['header']['value'] rawbody += eml['@message']['value']['rawbody']['value'] for _k, _v in header.iteritems(): headers[_k] = _v['value'] except: pass try: extra_message = extra_message.encode('utf-8') except: pass rawbody += "\n\n" + extra_message # Add footer rawbody += "\n\n" + "(brought to you by %s)" % AppName append_line(logfile, "[%s] rawbody :%s" % ( func_name, rawbody, )) mail.set_body(rawbody) # 一旦メッセージを生成 mail.create_message() #preprint_r(mail.msg._headers) for _k, _v in headers.iteritems(): append_line(logfile, "[%s] Headers %-12s: %s" % (func_name, _k, _v)) try: del mail.msg[_k] except: pass if _k == "Subject": try: mail.set_subject(_v.encode('utf_8')) except: mail.set_subject(_v) else: mail.msg[_k] = _v try: del mail.msg["Content-Transfer-Encoding"] mail.msg["Content-Transfer-Encoding"] = "base64" except: pass for _header in mail.msg._headers: append_line( logfile, "[%s] Header %-12s: %s" % (func_name, _header[0], _header[1])) #sys.exit() try: mail.send() retval = True except MAIL_LIB_Exception, msg: append_line(logfile, "[%s] Error: %s" % ( func_name, str(msg), )) except Exception: append_line(logfile, "[%s] Error: failed to send mail." % (func_name, ))
</domain> </arch> </guest> <guest> <os_type>hvm</os_type> <arch name='ppc'> <wordsize>32</wordsize> <emulator>/usr/bin/qemu-system-ppc</emulator> <machine>g3beige</machine> <machine>mpc8544ds</machine> <machine>bamboo</machine> <machine>ref405ep</machine> <machine>taihu</machine> <machine>mac99</machine> <machine>prep</machine> <machine>xenpv</machine> <domain type='qemu'> </domain> </arch> </guest> </capabilities> """ param = CapabilitiesConfigParam() param.load_xml_config(string) preprint_r(param.host) preprint_r(param.guest)