;ò
øÐ3@c           @   s£   d  k  Z  d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d k l Z l Z l	 Z	 d k
 l Z d  k Z d  k Z d „  Z d e f d „  ƒ  YZ d  S(   N(   s   rhnAppletExceptions   rhnAppletRPCFaults   rhnAppletNetworkException(   s   rhnAppletSourcec         C   s  |  d j p |  d d j o t Sn yÁ t i |  d d ƒ \ } } t i | d d ƒ \ } } t i | d ƒ } | d | !}
 | | d } t i |
 d ƒ } |
 | d } |
 d | !}	 t i |	 d ƒ } |	 | d } |	 d | !} Wn t i d	 |  ƒ t Sn X| | | | | f Sd
 S(   so   Parse one line of a yum header.info file, and extract the
       (name, version, release, arch, epoch) from it.s    i    s   #s   :i   s   =s   .s   -s   failed to parse yum line: %sN(   s   lines   Nones   strings   splits   es   lins   packages   rfinds   idxs   nvrs   as   rs   nvs   vs   ns	   rhn_utilss	   log_debug(   s   lines   as   es   idxs   packages   lins   ns   rs   vs   nvs   nvr(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   split_nvrae   s&     s   rhnAppletYumc           B   st   t  Z d  Z d „  Z d „  Z d „  Z d „  Z e d „ Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z RS(   sÆ   Class for handling updates from a Yum repository. Tries to reuse
       most of the HTTP/HTTPS/Proxy code from rhnlib. Handles 304 HTTP
       code to not reload or recompute for non-modified lists.c	   	      C   sš   t  i |  d | d | d | ƒ| |  _ | |  _ | |  _ | |  _
 | |  _ t i | | | ƒ g  |  _ d |  _ t |  _ t |  _ d |  _ |  i ƒ  d  S(   Ns   urls   releases   archi    (   s   rhnAppletSources   __init__s   selfs   urls   releases   archs   __arch__s   __release__s   __server_url__s   labels	   __label__s   refresh_callbacks   __refresh_callback__s   rhn_applet_protocolss   init_connectionss	   proxy_urls   proxy_usernames   proxy_passwords   __latest_packages__s   __latest_packages_mtime__s   Nones   __last_modified__s   __data__s   _rhnAppletYum__nb_errorss   _rhnAppletYum__get_data_store(	   s   selfs   urls   refresh_callbacks   labels   releases   archs	   proxy_urls   proxy_usernames   proxy_password(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   __init__9   s    										c         C   s   d |  i |  i f Sd  S(   Ns   %s @ %s(   s   selfs	   __label__s   __server_url__(   s   self(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   nameM   s    c         C   s   |  i d j Sd  S(   Ni    (   s   selfs   _rhnAppletYum__nb_errors(   s   self(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   in_errorP   s    c         C   s   t  i | | | ƒ d  S(   N(   s   rhn_applet_protocolss   init_connectionss	   proxy_urls   proxy_usernames   proxy_password(   s   selfs	   proxy_urls   proxy_usernames   proxy_password(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys	   set_proxyS   s    c         C   s=   | d d j o | d } n | d } t i | | ƒ Sd S(   s¨   load the headers. Does not change self so that it can be 
	   extracted easilly. returns the data and the new lastmodified
	   string or NULL if no update has been madeiÿÿÿÿs   /s   /headers/header.infos   headers/header.infoN(   s   urls   rhn_applet_protocolss   requests   lastmodified(   s   selfs   urls   lastmodified(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   _load_header_infoW   s
     
c         C   sk  yz t  i  ƒ  } t  i  ƒ  d d d } |  i t j o t |  _ n |  i |  i |  i ƒ } | t j o | \ } } n Wnk |  i d |  _ |  i d j o@ | |  _ |  i | ƒ d  k } t i d | i | i f ƒ n d  Sn Xd |  _ | |  _ |  i | ƒ | t j o t i d ƒ d  Sn |  i | ƒ } | |  _ | |  _ | |  _ |  i ƒ  |  i ƒ  d  S(   Ni   i<   i   i   s   failed to load url: %s : %si    s   not updated, use cached copy(   s   times   last_checkins   next_checkins   selfs   __data__s   Nones   __last_modified__s   _load_header_infos   __server_url__s   fetchs   datas   last_modifieds   _rhnAppletYum__nb_errorss   __last_checkin__s   set_next_checkings   syss	   rhn_utilss	   log_debugs   exc_types	   exc_values!   _rhnAppletYum__build_package_lists   pkglists   __latest_packages__s   inc_change_numbers   _rhnAppletYum__save_data_store(   s   selfs   syss   pkglists   last_checkins   last_modifieds   next_checkins   datas   fetch(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   _do_refreshd   s:    		!					
c         C   s)   |  i t j o |  i ƒ  n |  i Sd  S(   N(   s   selfs   __data__s   Nones   _do_refreshs   __latest_packages__(   s   self(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   latest_packages   s    c         C   s†   t  i | ƒ } | d j o d Sn | d j p1 | d j p$ | d j p | d j p
 | d j o | d j o d Sq~ n d Sd  S(   Ni    s   kernels
   kernel-smps
   kernel-umls   kernel-unsupporteds   glibci   (   s   rpms	   archscores   as   scores   n(   s   selfs   ns   as   score(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   __check_architecture”   s    Ac         C   s%  g  }	 xt i | d ƒ D] } yð | i ƒ  } t | ƒ \ } } } } } |  i | | ƒ o w n | d | d | }
 | t j p
 | d j o |
 d } n |
 d | } |	 i h  d | <d | <d | <d | <d	 |
 <d
 | <d d <d d <d d <ƒ Wq q Xq W|	 Sd  S(   Ns   
s   -s   0s   :s   names   versions   releases   epochs   nvrs   nevrs	   errata_ids    s   errata_synopsiss   errata_advisory(   s   pkglists   strings   splits   datas   lines   strips   split_nvraes   ns   vs   rs   as   es   selfs!   _rhnAppletYum__check_architectures   nvrs   Nones   nevrs   append(   s   selfs   datas   as   es   nevrs   ns   rs   vs   lines   pkglists   nvr(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   __build_package_listž   s      bc   
      C   sÇ  t  i t i ƒ  ƒ d } | d } y t i | ƒ } WnI y# t i | d ƒ t i | ƒ } Wq‚ t i	 d | ƒ d  Sq‚ Xn Xt i
 | t i ƒ oU t i	 d | ƒ y! t i | ƒ t i | d ƒ Wqï t i	 d | ƒ d  Sqï Xn | d |  i d } y t i | ƒ } Wn t i	 d | ƒ d  Sn Xy=t | d	 ƒ } | i ƒ  i ƒ  }	 | i ƒ  i ƒ  } |	 d
 |  i j p | |  i j oE t i	 d | ƒ y t i | ƒ Wn t i	 d | ƒ n Xd  Sn | i ƒ  i ƒ  } | i ƒ  } | i ƒ  |  i | ƒ } | d j o t |  _ n
 | |  _ | |  _ | |  _ t i	 d t  | ƒ |  i f ƒ t i	 d | ƒ WnM t! j
 oA } t i	 d | t# | ƒ f ƒ y t i | ƒ WqÃqÃXn Xd  S(   Ni   s   /.rhn-appletiÀ  s   Failed to create dir %ss   File %s not a directorys   /s   .yums   Cache %s not availables   rs   Yum channel cache for %ss"   File %s corrupted or wrong channels   Failed to remove %ss    s   found %d packages for %ss   last_modified : %ss5   can't open for reading %s: %s, trying to remove it...($   s   pwds   getpwuids   oss   getuids   files   stats   statinfos   mkdirs	   rhn_utilss	   log_debugs   S_ISDIRs   ST_MODEs   unlinks   selfs	   __label__s   opens   fds   readlines   strips   stores   urls   __server_url__s   last_modifieds   reads   datas   closes!   _rhnAppletYum__build_package_lists   pkglists   Nones   __last_modified__s   __data__s   __latest_packages__s   lens	   Exceptions   es   str(
   s   selfs   es   files   urls   datas   last_modifieds   fds   statinfos   pkglists   store(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   __get_data_store³   sj    
$
			 c         C   só  |  i t j o d  Sn t i t i ƒ  ƒ d } | d } y t i | ƒ } WnI y# t i
 | d ƒ t i | ƒ } Wqš t i d | ƒ d  Sqš Xn Xt i | t i ƒ oU t i d | ƒ y! t i | ƒ t i
 | d ƒ Wqt i d | ƒ d  SqXn | d |  i d } y t | d ƒ } | i d	 |  i |  i f ƒ |  i t j o | i d
 ƒ n | i d |  i ƒ | i |  i ƒ | i ƒ  WnM t j
 oA } t i d | t | ƒ f ƒ y t i | ƒ WqëqëXn Xd  Sd  S(   Ni   s   /.rhn-appletiÀ  s   Failed to create dir %ss   File %s not a directorys   /s   .yums   ws   Yum channel cache for %s
%s
s   
s   %s
s.   Cannot write to %s: %s, trying to remove it...(   s   selfs   __data__s   Nones   pwds   getpwuids   oss   getuids   files   stats   statinfos   mkdirs	   rhn_utilss	   log_debugs   S_ISDIRs   ST_MODEs   unlinks	   __label__s   opens   fds   writes   __server_url__s   __last_modified__s   closes	   Exceptions   es   str(   s   selfs   es   files   fds   statinfo(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   __save_data_store÷   sJ    
	(   s   __name__s
   __module__s   __doc__s   __init__s   names   in_errors	   set_proxys   Nones   _load_header_infos   _do_refreshs   latest_packagess!   _rhnAppletYum__check_architectures!   _rhnAppletYum__build_package_lists   _rhnAppletYum__get_data_stores   _rhnAppletYum__save_data_store(    (    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   rhnAppletYum4   s    					+		
		D(   s   strings   oss   times   pwds   stats   rpms	   rhn_utilss   rhnAppletExceptions   rhnAppletRPCFaults   rhnAppletNetworkExceptions   rhn_applet_sources   rhnAppletSources   rhn_applet_protocolss   rhn_applet_versions   split_nvraes   rhnAppletYum(   s   stats   strings   rhnAppletExceptions   rhnAppletSources   oss   split_nvraes   rhnAppletYums   rhn_applet_versions   rhnAppletNetworkExceptions   pwds   rhnAppletRPCFaults   times   rhn_applet_protocolss   rpms	   rhn_utils(    (    s0   /data/usr-share/rhn/rhn_applet/rhn_applet_yum.pys   ?   s   											