Ñò ¹µiVc @s£dZddkZddklZlZddklZlZlZddk l Z ddkl Z ddk l Z lZlZde fd „ƒYZd „ZdS( s3 OpenBoot Firmware firmware backend for pybootmgmt iÿÿÿÿN(ttesting_getpropttesting_setprop(tBootmgmtPropertyReadErrortBootmgmtPropertyWriteErrort!BootmgmtUnsupportedOperationError(tSystemFirmware(tpysol(tdi_find_prom_prop_boolt(di_prom_disklist_to_devfs_logical_tuplestdi_find_prom_prop_stringt OBPFirmwarecBsGeZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(c Cs€t|ƒ\}}|o|S|tijo<ytddƒSWqjtj o}td|ƒ‚qjXn|tijo_y4t|dƒ}|d jot dƒ‚n|SWqãtj o}td|ƒ‚qãXn |ti joúyt|dƒ}Wn!tj o}tdƒ‚nX|i d||fƒ|d jotdƒ‚n|i dƒ}yt |ƒ}Wn!tj o}tdƒ‚nX|i d||fƒg} |D]} | | d d q·~ } di| ƒS|tijott|ƒi|ƒSy/ti|ƒ} | d jod S| iiSWn.tj o"}td ||ifƒ‚nXtt|ƒi|ƒS(s<Returns values from /options, plus some properties. tgpts/packages/disk-labelsError accessing PROM propertiess/chosensProperty not supporteds%s from fw is `%s't sphyslog %s is `%s'iits"Couldn't read PROM option `%s': %sN(RRtPROP_GPT_SUPPORTEDRtIOErrorRtPROP_BOOT_RECOVERY_LISTR tNoneRtPROP_BOOT_POOL_LISTt_debugtsplitRtjointPROP_BOOT_DEVICEtsuperR tgetpropRtprom_getoptiontopio_utbtstrerror( tselftpropnametrettvaltioerrtpropvaltbp_proptbp_propstphyslog_tuplest_[1]telemtbplisttpromio((s'../../common/bootmgmt/backend/fw/obp.pyR)s^   ) cCsgt||ƒ}|odSyti||ƒWn1tj o%}td|||ifƒ‚nXdS(Ns0Couldn't write PROM option `%s' (value `%s'): %s(RRtprom_setoptionRRR(RRtvalueRR!((s'../../common/bootmgmt/backend/fw/obp.pytsetpropnscCsdS(N((RR((s'../../common/bootmgmt/backend/fw/obp.pytdelprop|scCsIyti||ƒWn.tj o"}td||ifƒ‚nXdS(Ns)Couldn't read secure PROM option `%s': %s(Rtprom_wankey_setRRR(RRt propvalueR!((s'../../common/bootmgmt/backend/fw/obp.pytset_secure_prop€s cCsTyti|ƒWn<tj o0}|itijotd|ƒ‚qPnXdS(NsiCouldn't delete secure PROM option `%s': Either there isn't enough space or the option could not be found(Rtprom_wankey_deleteRterrnotENOSPCR(RRR!((s'../../common/bootmgmt/backend/fw/obp.pytdelete_secure_propˆscCs+d}xtiƒD]}|d7}qW|S(s)Default is to return length == 0 ii(Rtprom_nextoption(Rtcountertx((s'../../common/bootmgmt/backend/fw/obp.pyt__len__’s  cCs tiƒS(s#Iterate on the empty list. (RR5(R((s'../../common/bootmgmt/backend/fw/obp.pyt__iter__šs( t__name__t __module__RR,R-R0R4R8R9(((s'../../common/bootmgmt/backend/fw/obp.pyR (s E    cCstS(N(R (((s'../../common/bootmgmt/backend/fw/obp.pytfirmware_backend s(t__doc__R2tbootmgmt.backend.fwRRtbootmgmtRRRtbootmgmt.bootinfoRRtbootmgmt.pysolRRR R R<(((s'../../common/bootmgmt/backend/fw/obp.pyts x