PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 3 pe(,@sddlmZddlZddlZddlZddlZddlZddlZddlZyddl m Z Wnddl m Z YnXy ddl Z Wnddl jZ YnXy ddlZWnddlZYnXd ddZGdddeZd d ZdS) )PluginN)sha1)shacCsJ|dkr i}|j|ddt|d}tt|j|d|||jdS)N__main__)__file____name__rbexec)updateopenr compilereadclose)filepathglobalslocalsfr+/usr/lib/fm-agent/library/plugin_manager.py execfile3s  rc@sPeZdZddZddZddZddZd d Zed d Z d dZ ddZ dS) PluginManagerc Gstj|jj|_||_||_||_|j||_ d|_ d|_ i|_ t jj|jrtj}|j|jxf|jD]Z}y|jdd}Wnd}YnXd|i|j |<x$|j|D]\}}||j ||<qWqlWdS)NagentdebugF)logging getLogger __class__rlogdb config_file directories _load_pluginsplugins _metadata_hashed_metadataconfigospathexists configparser ConfigParserr sectionsgetitems)selfrrrtextkeyrkvrrr__init__%s&   zPluginManager.__init__cCs|jjdd}|r||d<dS)Ndem wifi_results)r$r+)r-r3Z dem_configrrradd_dem_wifi_results=sz"PluginManager.add_dem_wifi_resultsc Cs8|jd}tjdd}d}|jdd}|jdd}yHtj|}d|jkrf|jjdjdd}|j|j |j Wn(t k r|j j dtjd SX|dkr0yPtj|j}x>|jD]2} | jd r|j jd | |j| ||d7}qWWn*t k r,|j j dtjYnXn|dkryTtj|j} xB| jD]6} | jd rR|j jd | | j| ||d7}qRWWn*t k r|j j dtjYnXnR|dkr|j jd |tjd|jtjj||f|d7}n|j j d||r$|j jd|tjd|jd S)zu Grab the remote url and extract the contents, putting them in the appropiate plugin folder. F)deleter./zcontent-dispositionzUnable to download URL: %sNtartgzz.pyz Installing plugin %sz"Unable to extract tar contents: %szipz"Unable to extract zip contents: %spyzcp %s %sz5Unable to install Agent Plugin, unknown extension: %sz Installed %s Agent pluginszrm -f %sr=r=r=)r9r:)rtempfileZNamedTemporaryFilespliturllib2urlopeninfo getheaderwriter r Exceptionrerror traceback format_exctarfiler nameZgetnamesendswithextractzipfileZZipFileZnamelistr%systemr&join) r-urlbase_custom_plugin_dirrZ num_installedZextfnamertfilezrrrinstall_remote_pluginsBsT               z$PluginManager.install_remote_pluginsc Cs4y|jjdijd}d}t|ddr|j|kr|jjdd}y|jd|}Wn<|jdkrx|jdkrxdd i}n|jj d |dSYnX|j |j|}|jj|ji}|jd d }|r|j ||j|j |}n|j |j|j |}|dk r||9}Wn4tk r.|jjd |j|jtjfdSX|S)Nr server_key:r5docker_containersZdockerzstatus.runningZStateZdeletedz#Could not find container with id %sscaleg?z%s/%s check failed: %sr=)r$r+getattrrXr?rplugin_textkeyresource_textkeyrrFr!Z check_dockeroptioncheckrE exceptionrGrH) r-scheduleZself_key container container_idpluginr$r[valuerrrr`ws6      zPluginManager.checkc sid}tjjjrftj}|jjy|jdd}Wnd}YnX|rftt t j |j d}fdd}xJ|D]@}t |tr~t|tr~t|dr~|j|kr~|jdkr~||j<q~WS) Nrplugin_blacklist,c 3sxD]}jjd|xtj|D]}y|d ddksF|dkrHw(tjj||}i}i}tjddkrzt|||n t |||xt |j D] }|VqWjj d|Wq(t k rtjdd\}}jjd|jj |w(Yq(Xq(Wjjd tqWdS) NzLooking in directory %rz.pyz __init__.pyrz Loaded %rz#Error importing plugin %s, skippingzLoaded %d plugins)rrBr%listdirr&rOsys version_inforZexecfilelistvaluesrrEexc_infolen)Z plugin_dirrJZ plugin_file f_globalsf_localsobjrTe)rr!r-rrplugin_file_checkers,    z8PluginManager._load_plugins..plugin_file_checkerr.ZTEMPLATE_PLUGIN)r%r&r'rr(r)r r+rpmapstrstripr? isinstancetype issubclassrhasattrr.)r-rrhrrxrvr)rr!r-rr s$  "   zPluginManager._load_pluginsc Cs|jdkri}xt|jjD]}|jj|ji}yt|j|}Wn|j j d|jwYnX|j j dt t|j |jt|d|j}||f||j<qW||_|jS)Nzerror getting metadata from %rzgot %d textkeys for %rlabel)r"rpr!rqr$r+r.format_metadata get_metadatarrarBrskeysr\)r-metadatarer$metarrrrrs zPluginManager.metadatac Cs|jdkrg}xvt|jjD]d\}\}}g}x6t|jD]&\}}tt|}|jt||fqrIrMhashlibrrr@Zurllib.requestrequestr)r(robjectrrrrrrs.    f