#Tc@sddkZddkZddkZddkZddkZddklZeiZddk i i Z ddk i iZddki iZddki iZddkiZddkiZddkiZddkiZddkiZddk i!Z!ddk"i#Z#ddkl$Z$l%Z%ddk&l'Z'ddk(l)Z)dZ*dZ+dZ,d Z-d Z.d Z/d Z0hd e*6e1e06d e+6e2e,6e1e-6e2e.6ei3e%6e1e/6Z4hhdd 6e*6hdd 6e+6Z5dZ6hei7i8ei7i9ddde66ei7i8dddd6Z:dddZ;dZ<dZ=dZ>he?d6Z@dZAdeiBfdYZCdeDfd YZEd!eDfd"YZFdS(#iN(tglobal_settings(t DictPropertytSIGNATURE_POLICY(t DebugValues(tTransportFailuress be-policyscontent-update-policysflush-content-cache-on-successsmirror-discoverys send-uuidsuse-system-reposcheck-certificate-revocationtdefaults create-backuptalwayssca-pathtetctopenssltcertstCAstrust-anchor-directoryii<t cfg_cachet disabled_authtDEFAULTtNoneit ImageConfigc(Bs'eZdZheiddgeiddeidgeiddeideideidd e eid d e eid d e eie d e e eie d e e geid dgeid deiddeeiddeeideiddeeiddeeiddeeiddeeiddeeidddgd ddeeiddeeiddeeidd ddeeidd eedeeiddeeid deeid!deeid"deggd#6eiddeidgeiddeideideied$d d%d&d'gd e eeied$d d(d'gd e eeie d e e eied e eeie d e e eied$eeiiegd eeie d e e eie!d e"e!eid)d eeid*eie#d e e#eid+geid,dei$d-d.eigeid/dei$d-d.eigeid0dei$d1ei$d2d.ei%ei$d3d.eid$d4d5d6d7gd d6ei$d8d.ei%ei$d9d.eid$d4d5d6d7gd d6geid dgeid deiddeeiddeeideid:eiddeeiddeei&d;deeiddeeid<deei&d=deeiddeeiddeeid>ed$eeiiegd eeid?eid@eidAeidBeidCeidddgd ddeeiddeeiddeeidd ddeeidd eedeeiddeeid deeid!deeid"degeidDdeie'i(deeie'i)deeie'i*d e ggdE6Z+e,i-d_e dFZ/dGZ0dHZ1dIZ2dJZ3dKZ4dLZ5dMZ6dNZ7dOZ8dPZ9dQZ:dRZ;dSZ<e,i-dTZ=dUZ>dVZ?e dWZ@dXZAdYZBdZZCd[ZDeEe3e4e5e7e8e9e6d\d]d^eDZFRS(`sAn ImageConfig object is a collection of configuration information: URLs, publishers, properties, etc. that allow an Image to operate.tfiltert propertiestimagetversiontpropertyspublisher-search-orderspreferred-authoritysdisplay-coprightsRsrequire-optionals pursue-latesttvariants ^authority_.*taliast value_maptprefixtdisabledtuuidtmirrorstorigintssl_certtssl_keysrepo.collection_typetcoret supplementalsrepo.descriptionsrepo.legal_uriss repo.namespackage repositorysrepo.refresh_secondssrepo.registeredsrepo.registration_urisrepo.related_urissrepo.sort_policyitalloweds always-news create-backups when-requiredRstrust-anchor-directoryssignature-required-namest dehydratedtfacets ^facet\..*t prop_typetinherited_facett mediatorss ^[A-Za-z0-9\-]+\.implementation$s(^[A-Za-z0-9\-]+\.implementation-version$s'^[A-Za-z0-9\-]+\.implementation-source$tsitetvendortlocaltsystems^[A-Za-z0-9\-]+\.version$s ^[A-Za-z0-9\-]+\.version-source$tstickyt mirror_infotoriginst origin_infos property.%ss!property.signature-required-namestintermediate_certstapproved_ca_certstrevoked_ca_certstsigning_ca_certss ^linked_.*ic Cs||_h|_t|_ti|_h|_ti |_ h|_ ||_ t ii||d|id|d|dS(s 'write_sysrepo_proxy' is a boolean, set to 'True' if this ImageConfig should write the special publisher.SYSREPO_PROXY token to the backing FileConfig in place of any actual proxies used at runtime.t definitionst overridesRN(t_ImageConfig__imgroott_ImageConfig__publisherstFalset_ImageConfig__validateR#tFacetstfacetsR&RtVariantstvariantstlinked_childrentwrite_sysrepo_proxytcfgt FileConfigt__init__t_ImageConfig__defs(tselft cfgpathnametimgrootR4Rt sysrepo_proxy((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyRAs      cCsd|i|ifS(Ns%s %s(R6RB(RC((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyt__str__&scCs|i|=dS(s6External functional interface - use property interfaceN(t publishers(RCR((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pytremove_publisher)scCs|idd}|i|y|i|}Wn"tj oti|nX|o|i|d|n|i|||idd|dS(sChange the publisher search order by moving the publisher 'being_moved' relative to the publisher 'staying put.' The boolean 'after' determins whether 'being_moved' is placed before or after 'staying_put'.Rspublisher-search-orderiN(t get_propertytremovetindext ValueErrortapxtMoveRelativeToUnknowntinsertt set_property(RCt being_movedt staying_puttaftertsotind((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pytchange_publisher_search_order-s cCs |i|S(s)Accessor method for publishers dictionary(R6(RCR((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyt__get_publisher@scCsG|idd}||jo|idd|n||i| p| o |&q?qDnXg}'xt?i@tAi@D]r}(|i+d&}!y|!iB|(})Wntij o qanX|)iCt/jo|'i!|(|!i|(qaqaWz?ytiDiE|Wn$t<i>j o|pqnXWd'x!|'D]}(|id&|(t/q WXnd'S(+sWrite the image configuration.RR#tR%R&R{s linked_.*s linked_%ss authority_%sRRR0R1RR+RRRR.R,turitproxyRR-Rtcollection_typet descriptiont legal_urisRwtrefresh_secondst registeredtregistration_urit related_urist sort_policysrepo.%ss property.s property.%sRN(saliassprefixsapproved_ca_certssrevoked_ca_certssdisabledssticky(soriginssmirrors( Rs descriptionRsnameRRRRR(FR^R?R_R<RQR:R)Rtquotet inheritedR&RcR~RRRR=RkRRt PROP_PATHt PROP_RECURSER6RtgetattrRtUnknownPropertyErrort repositoryR-RRRtproxiestappendRR>t publishert SYSREPO_PROXYt client_uuidRtaddt isinstancetlistt get_sectionRtlenRRtRRRRRRRtportableRKtEnvironmentErrorterrnotENOENTRNt_convert_errortPermissionsExceptionRuReRpRJRR@R(*RCR|tfRtmvaluesRtmvaluetpnameRRRRRRRRRvRstrepotptot repouri_listt prop_nametplisttrtpurit_[1]R[Rgt unique_pvaltitemt_[2]tcfg_keytsecobjtkeytvaltda_pathtetexcRRwtpropobj((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyR'sP   $  $     %                       )   +     "     cCst}x@tititigD]&}||jodS||||s RRRRRRR+tpropsR1R0(scollection_types sort_policy(RRRRRcRRRtRRktREPO_REFRESH_SECONDS_DEFAULTRt Repositoryt add_origint add_mirrorRtProxyURIRtanyt SSL_SCHEMESt RepositoryURIt PublisherRRQ("RCtsnametsec_idxR-RRR.R,t repouri_infoRstorigRturi_infoRRRRRt repo_dataRRRtattrRRRRturi_listtinfo_mapt repo_add_funcRRtrepouriR((Rs</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyR3s                   cCswy|idt}Wntij odSX|djo6|idd}|ptitdqsndS(s5Check that properties are consistent with each other.RNs require-namesssignature-required-namessKAt least one name must be provided for the signature-required-names policy.(RJRR?tPropertyConfigErrorRNtInvalidPropertyValuet_(RCtpolvaltsignames((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyt__validate_propertiess    cCs|ii||S(s"Support getdefault() on properties(R6R(RCRwR((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyt__publisher_getdefaultstdocs6A dict mapping publisher prefixes to publisher objectst fgetdefaultN(Gt__name__t __module__t__doc__R?tPropertySectiontPropInttPropListt PropPublishertPropBoolRR7tFLUSH_CONTENT_CACHERpt SEND_UUIDtPropertySectionTemplatet _val_map_nonetPropUUIDtPropPubURIListt PropPubURItPropertyt PropDefinedRkRt BE_POLICYtCONTENT_UPDATE_POLICYtMIRROR_DISCOVERYRRt sigpolicytPolicytpoliciesRttUSE_SYSTEM_REPORRutCHECK_CERTIFICATE_REVOCATIONtPropertyTemplatet PropVersiontPropPubURIDictionaryListRRRRRBtmisct EmptyDictRRARGRIRWt_ImageConfig__get_publishert_ImageConfig__set_publishert_ImageConfig__del_publishert_ImageConfig__publisher_itert!_ImageConfig__publisher_iteritemst_ImageConfig__publisher_keyst_ImageConfig__publisher_valuesRoRlRJR}RQRRRRRt"_ImageConfig__publisher_getdefaultRRH(((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyResJ                                                                  %            q  '     tNullSystemPublishercBsVeZdZddedfZdZdZdZdZdZ d Z RS( s[Dummy system publisher object for use when an image doesn't use a system publisher.spublisher-search-ordersproperty.proxied-urlsssignature-required-namescCsQh|_tg}|iD]}||gfq~|_tt|ittNotImplementedError(RCRvRw((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyRJs  cCsF|djo,||ijo||i|<|idStdS(NR(R=R>t)_NullSystemPublisher__validate_propertiesR?(RCRvRwR((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyRQs   cCswy|idt}Wntij odSX|djo6|idd}|ptitdqsndS(s5Check that properties are consistent with each other.RNs require-namesssignature-required-namessKAt least one name must be provided for the signature-required-names policy.(RJRR?R RNRR(RCRR((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyRs    csr|idgjo tn|d}tfd|Dp tnii|idS(s$Set multiple properties at one time.Rc3s"x|]}|ijVqWdS(N(R=(RR(RC(s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pys s N(ReR?tallR>RR@(RCRR((RCs</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyRs   ( RRRRR=RARRJRQR@R(((s</usr/lib/python2.6/vendor-packages/pkg/client/imageconfig.pyR<s     t BlendedConfigc BseZdZdZedZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZedZedZdZdZeeeZdZdZeeeZdZdZeeeZdZdZdZ e!i"dZ#dZ$dZ%dZ&dZ'dZ(d Z)d!Z*e+e$e%e&e(e)e*e'd"d#Z,RS($sgClass which handles combining the system repository configuration with the image configuration.cCs||_||_d|_tii|d}tii|ot|d}n t }t df|_ t |_ |o5y;tid|_|iidpd|i|_nWntj oy(tidd}tidd} Wnmtij o^} y.tidd }d }tidd } Wqbtij o} tiqbXnXd || f|_nXti|id t } | ipty|i| \} } Wn%tj o||_t|_ qXyyti|Wnwt j ok} | i!t!i"joLt#|di$i%}z|~}|i&WdQXt|d|_qunXWnMt j oA} | i!t!i't!i(fjot |_t|_ qnXt|ddt |_x=| D]5}|i) ptd|i*||ii+|i*sn        " x@