i'dWc@s3dZddlZddlZddlZddlZddlZddlZddlmZddl m Z m Z dZ dZ dZdZd Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZde fdYZde fdYZde fdYZde fdYZ de fdYZ!d e fd!YZ"d"e fd#YZ#d$e fd%YZ$d&e fd'YZ%d(e fd)YZ&d*e fd+YZ'd,e fd-YZ(d.e fd/YZ)d0e fd1YZ*d2e fd3YZ+d4e fd5YZ,d6e fd7YZ-d8e fd9YZ.d:e fd;YZ/d<e fd=YZ0d>e fd?YZ1d@e fdAYZ2dBe2fdCYZ3dDe2fdEYZ4dFe2fdGYZ5dHe fdIYZ6dJe fdKYZ7dS(Ls Transfer checkpoint data objects. These objects are stored in the data object cache (DOC) and used by the transfer checkpoints. iN(tetree(t DataObjectt ParsingErrortactiont app_callbacktcontentst cpio_argstinstalltIPStips_argst purge_historyt reject_listtsizet software_datat svr4_argst transformttypet uninstallt update_indexcCs |dkr|S|jdkS(sYConvert a string from any capitalized version of true/false to True and False tTrueN(tNonet capitalize(tconv_strt default_val((sinfo.pyt convert_to_TF:s tSoftwarecBskeZdZdZdZdZdZd ddZdZ e dZ e d Z e d Z RS( skSubclass of DataObject to contain the transfer checkpoint information in the Data Object Cache. tsoftwaretnameRsAMissing value for %s name element in the manifestRcCs5tt|jtj||_|j|_dS(s}Initialize the DataObject object with name software and create a transfer object with the specified name. N(tsuperRt__init__tSOFTWARE_LABELt_nametuppert tran_type(tselfRR((sinfo.pyRNs cCsftjtj}|jdk r:|jtj|jn|jdk rb|jtj |jn|S(sbMethod to create the xml software element with its associated name (optional). N( RtElementRRRRtsettSOFTWARE_NAME_LABELR!tSOFTWARE_TYPE_LABEL(R"telement((sinfo.pytto_xmlVs cCs|jtjkrtStS(s Returns True if element has: - tag software - a valid transfer type Returns false otherwise. (ttagRRtFalseR(tclsR'((sinfo.pyt can_handleascCst|jtj|jtj}|jtj}|d krTtdn|j}x|D]}|jtkrg|dkrt }|jt j }|d krt j }nt }t } x|jD]} | j d krttjdn| jt jkr3|j| j jdq| jt jkr| j| j jdqqW||_||_| |_n|dkrt}|jtj}|jtj} |d krtj }ntj|dd} | |_||_| d k rft| |_qfnJ|dkrt}|jtj}|d kr[tj }ntj|dd}||_||_n|jdkrt}|jtj }|d krtj }ntj|dd} t!| d krtd n||_| |_nQ|jd krft"}|jt"j#}|d krZt"j }n||_n|j$|gqgqgW|S( s)Method to create the DOC software elements3No type specified for software node in the manifestRs" tCPIOtsw_typetSVR4tarchivetARCHIVEisJExactly one deployable object name value is required for software archivestcloneN(%RtgetR%R&RRt getchildrenR)t SOFTWARE_DATAtIPSSpectIPS_ACTION_LABELtINSTALLtlistttexttSOFTWARE_DATA_NAME_ERRORtIPS_NAME_LABELtappendtstriptIPS_REJECT_LABELRRR tCPIOSpectCPIOSPEC_ACTION_LABELtCPIOSPEC_SIZE_LABELt get_namelisttintR tSVR4SpectSVR4_ACTION_LABELtlowert ArchiveSpectARCHIVE_ACTION_LABELtlent CloneSpectCLONE_ACTION_LABELtinsert_children(R+R't chkpt_objtvalt sub_elementtsubt transfer_objRtpkg_listR tchildR t file_listtobj_list((sinfo.pytfrom_xmlns                                     cCsr|jdd}g|D]-}|jdk r@|jjdnd^q}d|krnttj|n|S(s6Get list of textual components of software_data name elements Input: sw_data - software_data element sw_type - string containing name of software 'type' Returns: list of name elements' text fields Raises: ParsingError if name element exists with no text R)Rs" N(t iterchildrenR:RR>RRR;(R+tsw_dataR.tnamesRt name_list((sinfo.pyRCs 7 N(t__name__t __module__t__doc__RR%R&R;RRR(t classmethodR,RWRC(((sinfo.pyRDs  btSourcecBsDeZdZdZdZdZedZedZRS(smSubclass of DataObject to contain the information needed to determine the source for the transfer tsourcecCstt|jtjdS(N(RR`Rt SOURCE_LABEL(R"((sinfo.pyRscCstjtj}|S(s'Method to create the xml source element(RR#R`Rb(R"R'((sinfo.pyR(scCs|jtjkS(sp Returns True if element has: - tag = source Returns false otherwise. (R)R`Rb(R+R'((sinfo.pyR,scCs t}|S(sNMethod to create the DOC source element from the xml tree. (R`(R+R'tobj((sinfo.pyRWs ( R\R]R^RbRR(R_R,RW(((sinfo.pyR`s    t DestinationcBsDeZdZdZdZdZedZedZRS(srSubclass of DataObject to contain the information needed to determine the destination for the transfer t destinationcCstt|jtjdS(N(RRdRtDESTINATION_LABEL(R"((sinfo.pyRscCstjtj}|S(s,Method to create the xml destination element(RR#RdRf(R"R'((sinfo.pyR( scCs|jtjkS(st Returns True if element has: - tag = destination Returns false otherwise. (R)RdRf(R+R'((sinfo.pyR,scCs t}|S(s2Method to create the doc element from the xml tree(Rd(R+R'Rc((sinfo.pyRWs ( R\R]R^RfRR(R_R,RW(((sinfo.pyRds    tDircBsJeZdZdZdZdZdZedZedZ RS(suSubclass of DataObject to contain the information needed to determine the directory path for the transfer tdirtpathcCs&tt|jtj||_dS(N(RRgRt DIR_LABELtdir_path(R"Ri((sinfo.pyR'scCs,tjtj}|jtj|j|S(s$Method to create the xml dir element(RR#RgRjR$tDIR_PATH_LABELRk(R"R'((sinfo.pyR(+scCs|jtjkS(st Returns True if element has: - tag = destination Returns false otherwise. (R)RgRj(R+R'((sinfo.pyR,2scCst|jtj}|S(s2Method to create the doc element from the xml tree(RgR3Rl(R+R'Rc((sinfo.pyRW;s( R\R]R^RjRlRR(R_R,RW(((sinfo.pyRg s   tFilecBsYeZdZdZdZdddgZdZdZedZ edZ RS( suSubclass of DataObject to contain the information needed to determine the uri of the Unified Archive file tfileturithttpthttpscCs&tt|jtj||_dS(N(RRmRt FILE_LABELtfile_uri(R"Ro((sinfo.pyRJscCs,tjtj}|jtj|j|S(s%Method to create the xml file element(RR#RmRrR$tFILE_URI_LABELRs(R"R'((sinfo.pyR(NscCs|jtjkS(s` Returns True if element has tag: "file" Returns False otherwise. (R)RmRr(R+R'((sinfo.pyR,UscCsh|jtj}tj|dd}|jtjkrOtd|jnttj|}|S(s2Method to create the doc element from the xml treetschemeRns"Unrecognised File uri scheme: '%s'(R3RmRtturlparseRutFILE_SUPPORTED_SCHEMESRt urlunparse(R+R'RoturipRc((sinfo.pyRW]s( R\R]R^RrRtRwRR(R_R,RW(((sinfo.pyRmBs  tImagecBseeZdZdZdZdZdZdZdZe dZ dZ e d Z e d ZRS( ssSubclass of DataObject to contain the information needed to determine the destination image attributes. timagetssl_keytssl_certtimg_rootRtindexcCs8tt|jtj||_||_||_dS(N(RRzRt IMAGE_LABELR~RR(R"R~RR((sinfo.pyRus  cCstjtj}|jtj}|rtj|djkrd|j tj|djtjntj |djkr|j tj |djtj qn|j dk r|j tj |j n|j tj|j|j tjt|j|S(s&Method to create the xml image elementiN(RR#RzRt get_childrentArgst ARGS_LABELtIMAGE_SSL_KEY_LABELtarg_dictR$tIMAGE_SSL_CERT_LABELR~RtIMAGE_IMG_ROOT_LABELtIMAGE_ACTION_LABELRtIMAGE_INDEX_LABELtstrR(R"R'targ_info((sinfo.pyR({s  cCs|jtjkS(sn Returns True if element has: - tag = image Returns False otherwise. (R)RzR(R+R'((sinfo.pyR,sc Cs|jtj}|jtj}|jtj}t|t}t|jtj|jtj|}i}|r||tjRR(R+R'RRRRZRUR((sinfo.pyRWs      N(R\R]R^RRRRRRARRBR8RRRR(R_R,RW(((sinfo.pyR@$s  AtP5ISpeccBsMeZdZdZdZedZdZedZ edZ RS(sYSubclass of DataObject to contain the IPS P5i transfer checkpoint information RR cCs&tt|jtj||_dS(N(RRRtP5I_TRANSFER_LABELR (R"R ((sinfo.pyRscCstjtj}|S(sjMethod to transfer the data object cache IPS P5I checkpoint information to xml format. (RR#RtP5I_SOFTWARE_DATA_LABEL(R"R'((sinfo.pyR(scCstS(sAlways returns False Creation of a P5ISpec should be handled in Software object's can_handle and from_xml() (R*(R+R'((sinfo.pyR,scCs t}|S(s_Method to transfer the IPS P5I checkpoint xml data to the data object cache (R(R+R'Rc((sinfo.pyRWs ( R\R]R^RRR*RR(R_R,RW(((sinfo.pyRs   R6cBsweZdZdZdZdZdZdZdZdZ d d d d e dZ d Z ed Zed ZRS( sSubclass of DataObject to contain the IPS transfer checkpoint information. The following attributes are available: action The transfer action performed. Valid actions: install, uninstall, and transform contents A list containing packages to be transferred or removed. app_callback: Holds the value for an application callback purge_history : boolean to indicate if the history should be purged. (False) RR RRtrejectRRcCsJtt|jtj||_||_||_||_||_dS(N( RR6RtIPS_TRANSFER_LABELRRR RR (R"RRR RR ((sinfo.pyRs     cCstjtj}|jtjkr=|jtjtjn+|jtjkrh|jtjtjnx/|j D]$}tj |tj }||_ qrW|j dk rx2|j D]$}tj |tj}||_ qWn|S(sfMethod to transfer the data object cache IPS checkpoint information to xml format. N(RR#R6tIPS_SOFTWARE_DATA_LABELRR8R$R7RRRR<R:R RR?(R"R'tpkgRP((sinfo.pyR(s   cCstS(s) Always returns False (R*(R+R'((sinfo.pyR,scCst}|jtj}|dkr3tj}nt}t}xp|jD]b}|jtjkr|j |j j dqR|jtj krR|j |j j dqRqRW||_ ||_||_|S(s[Method to transfer the IPS checkpoint xml data to the data object cache s" N(R6R3R7RR8R9R4R)R<R=R:R>R?RRR (R+R'RRRRSR RT((sinfo.pyRWs         N(R\R]R^RRR7R<R?R8RRR*RR(R_R,RW(((sinfo.pyR6s   RHcBseZdZdZdZdZdZdZdZdZ dZ d d d e d d d d Z d Zed Zed ZRS(sSubclass of DataObject to contain the archive transfer checkpoint information. The following attributes are available: action The transfer action performed. Valid actions: install contents A list containing deployable objects to be transferred app_callback: Holds the value for an application callback purge_history : boolean to indicate if the history should be purged. (False) RRR RR}R|tssl_caRcCs\tt|jtj||_||_||_||_||_||_ ||_ dS(N( RRHRtARCHIVE_TRANSFER_LABELRRRR tkeytcerttca_cert(R"RRRR RRR((sinfo.pyR%s      cCstjtj}|jtjtj|jrJ|jtj|jn|j rl|jtj |j n|jr|jtj |j nx/|j D]$}tj|tj}||_qW|S(sjMethod to transfer the data object cache archive checkpoint information to xml format. (RR#RHtARCHIVE_SOFTWARE_DATA_LABELR$RIR8RtARCHIVE_SSL_KEY_LABELRtARCHIVE_SSL_CERT_LABELtARCHIVE_SSL_CA_LABELRRRtARCHIVE_NAME_LABELR:(R"R'RcRP((sinfo.pyR(1s      cCstS(s) Always returns False (R*(R+R'((sinfo.pyR,Csc Cs|jtj}|dkr*tj}n|jtj}|jtj}|jtj}g}|j}x'|D]}|j |j j dqyWt||dd|||} | S(s_Method to transfer the ARCHIVE checkpoint xml data to the data object cache s" N( R3RHRIRR8RRRR4R=R:R>( R+R'RR|R}RRRZRRR((sinfo.pyRWJs     N(R\R]R^RIRRRRRRR8RR*RR(R_R,RW(((sinfo.pyRHs RKcBsbeZdZdZdZdZdZdZd d dZ dZ e dZ e d Z RS( sSubclass of DataObject encoding the clone transfer checkpoint information. The following attributes are available: action The transfer action performed. Valid actions: install contents The boot environment to clone, default is the active BE RRR RRcCs/tt|jtj||_||_dS(N(RRKRtCLONE_TRANSFER_LABELRR(R"RR((sinfo.pyRqs cCs^tjtj}|jtjtjx/|jD]$}tj|tj }||_ q2W|S(shMethod to transfer the data object cache clone checkpoint information to xml format. ( RR#RKtCLONE_SOFTWARE_DATA_LABELR$RLR8RRtCLONE_NAME_LABELR:(R"R'RcRP((sinfo.pyR(vs   cCstS(sAlways returns False (R*(R+R'((sinfo.pyR,scCsb|jtj}|dkr*tj}ng|jD]}|jjd^q7}t||S(s]Method to transfer the clone checkpoint xml data to the data object cache s" N(R3RKRLRR8R4R:R>(R+R'RtnR((sinfo.pyRWs   +N(R\R]R^RLRRRR8RRR(R_R,RW(((sinfo.pyRKcs REcBsheZdZdZdZdZdZdZdZd d dZ dZ e d Z e d ZRS( sUSubclass of DataObject to contain the SVR4 transfer checkpoint information. The following attributes are available: action The transfer action performed. Valid actions: install, uninstall, and transform contents A list containing packages to be transferred or removed. R RRRRRcCs/tt|jtj||_||_dS(N(RRERtSVR4_TRANSFER_LABELRR(R"RR((sinfo.pyRs cCs^tjtj}|jtj|jx/|jD]$}tj|t j }||_ q2W|S(sgMethod to transfer the data object cache SVR4 checkpoint information to xml format. ( RR#RERR$RFRRRRR%R:(R"R'tsvr4_pkgRP((sinfo.pyR(s   cCstS(s) Always returns False (R*(R+R'((sinfo.pyR,scCs|jtj}t}|dkr0d}ng}|j}x'|D]}|j|jjdqIW||_||_ |S(s\Method to transfer the SVR4 checkpoint xml data to the data object cache Rs" N( R3RERFRR4R=R:R>RR(R+R'RRRRSRZR((sinfo.pyRWs       N(R\R]R^RRRFtSVR4_NAME_LABELR8RRRR(R_R,RW(((sinfo.pyREs RcBsMeZdZdZdZddZdZedZ edZ RS(sVSubclass of Args to contain the transfer implementation specific arguments RRcCs&tt|jtj||_dS(N(RRRRR(R"R((sinfo.pyRscCs2tjtj}|jtjt|j|S(s%Method to create the xml args element(RR#RRR$tARGS_DICT_LABELRR(R"R'((sinfo.pyR(scCs|jtjkS(sw Returns True if element has: - tag = destination Returns false otherwise. (R)RR(R+R'((sinfo.pyR,scCst|jtj}|S(s2Method to create the doc element from the xml tree(RR3R(R+R'Rc((sinfo.pyRWsN( R\R]R^RRRRR(R_R,RW(((sinfo.pyRs   t PublishercBsMeZdZdZdZddZdZedZ edZ RS(sXSubclass of DataObject to contain the information needed for IPS publishers. t publisherRcCs&tt|jtj||_dS(N(RRRtPUBLISHER_LABELR(R"tpublisher_name((sinfo.pyRscCs8tjtj}|jr4|jtj|jn|S(s&Method to create xml publisher element(RR#RRRR$tPUB_NAME_LABEL(R"R'((sinfo.pyR(s cCs|jtjkS(sq Returns True if element has: - tag = publisher Returns False otherwise (R)RR(R+R'((sinfo.pyR,scCs"|jtj}t|}|S(sVMethod to transfer the publisher xml data to the data object cache (R3RR(R+R'RRc((sinfo.pyRWs N( R\R]R^RRRRR(R_R,RW(((sinfo.pyRs   tBootEnvcBsMeZdZdZdZddZdZedZ edZ RS(s=Contains optional boot environment source for Clone transferstboot_envRcCs&tt|jtj||_dS(N(RRRt BOOTENV_LABELtbootenv(R"t bootenv_name((sinfo.pyRscCs8tjtj}|jr4|jtj|jn|S(s%Method to create xml boot_env element(RR#RRRR$tBOOTENV_NAME_LABEL(R"R'((sinfo.pyR("s cCs|jtjkS(sp Returns True if element has: - tag = boot_env Returns False otherwise (R)RR(R+R'((sinfo.pyR,)scCs"|jtj}t|}|S(sUMethod to transfer the boot_env xml data to the data object cache (R3RR(R+R'RRc((sinfo.pyRW2s N( R\R]R^RRRRR(R_R,RW(((sinfo.pyRs   tOrigincBsMeZdZdZdZddZdZedZ edZ RS(sUSubclass of DataObject to contain the information needed for IPS Origins. toriginRcCs&tt|jtj||_dS(N(RRRt ORIGIN_LABELR(R"t origin_name((sinfo.pyRCscCs,tjtj}|jtj|j|S(s#Method to create xml origin element(RR#RRR$tORIGIN_NAME_LABELR(R"R'((sinfo.pyR(GscCs|jtjkS(sn Returns True if element has: - tag = origin Returns False otherwise (R)RR(R+R'((sinfo.pyR,MscCs"|jtj}t|}|S(sSMethod to transfer the origin xml data to the data object cache (R3RR(R+R'RRc((sinfo.pyRWVs N( R\R]R^RRRRR(R_R,RW(((sinfo.pyR<s   tMirrorcBsMeZdZdZdZddZdZedZ edZ RS(sUSubclass of DataObject to contain the information needed for IPS Mirrors. tmirrorRcCs&tt|jtj||_dS(N(RRRt MIRROR_LABELR(R"t mirror_name((sinfo.pyRgscCs8tjtj}|jr4|jtj|jn|S(s#Method to create xml mirror element(RR#RRRR$tMIRROR_NAME_LABEL(R"R'((sinfo.pyR(ks cCs|jtjkS(sn Returns True if element has: - tag = mirror Returns False otherwise (R)RR(R+R'((sinfo.pyR,rscCs"|jtj}t|}|S(sVMethod to transfer the publisher xml data to the data object cache (R3RR(R+R'RRc((sinfo.pyRW{s N( R\R]R^RRRRR(R_R,RW(((sinfo.pyR`s   tCredcBsYeZdZdZdddgZdZdZdZedZ ed Z RS( s^Subclass of DataObject to contain the information needed to store the credentials. t credentialsRpRqtftps /etc/certs/CAcCstt|jtjdS(N(RRRt CRED_LABEL(R"((sinfo.pyRscCstjtj}|S(s(Method to create xml credentials element(RR#RR(R"R'((sinfo.pyR(scCs|jtjkS(ss Returns True if element has: - tag = credentails Returns False otherwise (R)RR(R+R'((sinfo.pyR,scCs t}|S(sXMethod to transfer the credentials xml data to the data object cache (R(R+R'Rc((sinfo.pyRWs ( R\R]R^Rt PROTOCOLSt CA_CERTS_DIRRR(R_R,RW(((sinfo.pyRs   t KeyOrCertcBseZdZdZdZdZd edZdZ dZ e dZ e dZ d d dZd d Zd ZRS( saSubclass of DataObject to contain the information needed for IPS inlined credentials. tRcCsDtt|j|j||_||_||_t|_dS(N( RRRt ELEMENT_NAMEtvalueRthide_credentialR9t _saved_copies(R"RRR((sinfo.pyRs    cCsNxG|jD]<}tjj|r |jjd|tj|q q WdS(sDestructor method to ensure any downloaded certs are deleted from the system before the object gets garbage collected sDeleting credential: N(RtosRitexiststloggertdebugtunlink(R"tdel_copy((sinfo.pyt__del__scCs`tj|j}|jr4|jtj|jn(|jrPd|j|_n |j |_|S(sMethod to create xml elements***** %s Hidden ****( RR#RRR$RtSRCRR:R(R"R'((sinfo.pyR(s   cCs|j|jkS(s,Returns True if tag is ELEMENT_NAME (R)R(R+R'((sinfo.pyR,scCs(|jtj}||j|}|S(sPMethod to transfer the key xml data to the data object cache (R3RRR:(R+R'RRc((sinfo.pyRWsc Csztjd}|rTtjj| rTtj|dtj||j|j n2|rtj |dtj||j|j ntj d}|r6|j j d|tjj||}t|dP}xF|jdD]5}|j}|dkr qn|j|dqWWdQXtj ||Stj|} tjj| j} t| d kr{td ntjj|| }|j j d | |j jd | j| jtjkr|j jd | | jftj|||j nf| jdks!| jdkr]| jjd sF| jjdr*ttjd} | j} WdQX| dkst| d krtdn| jdd } | jd}|j jd||d ftj!d|d d|d| jdddf} tj| ||j qi|j jd| | jft"j#| j|n t$dtj ||S(s'Retrieves the SSL credentials for a secure software source in the manifest (eg. an IPS publisher or Unified Archive. The manifest credential might point an NFS file (/path), a URI (http://), a relative URI (./path), or be inlined. If it is an inlined credential then the inlined_filename will have a value. Otherwise the filename is retrieved from the basename of cred. Input: value - The SSL credendial to be stored (Key, Cert or CA_Cert) basedir - The directory in which to store credentials. inlined_filename - Filename to use for credential objects that have inlined values from the manifest. Returns: The full path of the saved credential file trootiis!Saving inlined credential file %stws RNis$A credential file must be specified.sSaving credential file %ssurl scheme = ..%s..sDownloading %s from %sRnt/t.t service_lists)Unable to read services for relative patht:s!A relative download of %s from %sRpisCopying %s from %ss*Unsupported credential file protocol type.(%tpwdtgetpwnamRRiRtmakedirstsolaris_installt secure_chowntpw_uidtpw_gidt secure_chmodtumaskRtinfotjoinRtsplittlstriptwriteRvtbasenameRJt ValueErrorRRuRRtnetloctdownload_filest startswithtsystem_temp_pathtreadRRxtshutiltcopyfiletIOError(R"Rtbasedirtinlined_filenameRtold_masktfullpath_filenametfobjtlineturltfilenametfptservicest ourservicetservice_components((sinfo.pyt__save_credentialsj       %      cCsd}|dkrtj}n|jr?|j|j|}ne|jrt|trd|d}nd|j|j f}|j|j|d|}n t d||j kr|j j |nt j|d|S(sSave an SSL credential to local storage Input: basedir - The directory in which to store credentials. Returns: The full path of the saved credential file s_ca.pems inlined_%s.%sRsOCredential that contains neither a source nor an inlined value can not be savediN(RRRRt_KeyOrCert__save_credentialRRtCA_CertRtFILE_EXTRRR=RR (R"RtcredfileR"((sinfo.pytsave_credential:s        cCsZxG|jD]<}tjj|r |jjd|tj|q q Wt|_dS(sremoves a credential filesDeleting credential: N(RRRiRRRRR9(R"R((sinfo.pytremove_credential\s N(R\R]R^RR*RRRRRR(R_R,RWR(R,R-(((sinfo.pyRs  [ "tKeycBseZdZdZdZRS(sXSubclass of KeyOrCert to contain the information needed for IPS inlined Key. R(R\R]R^RR*(((sinfo.pyR.fstCertcBseZdZdZdZRS(sYSubclass of KeyOrCert to contain the information needed for IPS inlined Cert. Rtcrt(R\R]R^RR*(((sinfo.pyR/nsR)cBseZdZdZdZRS(s\Subclass of KeyOrCert to contain the information needed for IPS inlined CA cert. RR0(R\R]R^RR*(((sinfo.pyR)vst HTTPAuthTokencBsGeZdZdZedZdZedZedZ RS(soSubclass of DataObject to contain the information needed to retrieve Glance stored Unified Archives thttp_auth_tokencCs/tt|jtj||_||_dS(N(RR1RtHTTP_AUTH_TOKEN_LABELR2t hide_token(R"R2R4((sinfo.pyRs  cCs>tjtj}|jr.d|j|_n |j|_|S(s)Method to create the xml property elements***** %s Hidden ****(RR#R1R3R4R:R2(R"R'((sinfo.pyR(s   cCs|jtjkS(sq Returns True if element has: - tag = property Returns False otherwise. (R)R1R3(R+R'((sinfo.pyR,scCs|j}t|}|S(s2Method to create the DOC element from the xml tree(R:R1(R+R'R2Rc((sinfo.pyRWs  ( R\R]R^R3RRR(R_R,RW(((sinfo.pyR1~s    t CmdOptionscBsVeZdZdZdZdZedZedZdZ dZ RS(sqSubclass of DataObject to contain the information needed to run set-publisher with arbitrary options. t cmd_optionscCs&tt|jtj||_dS(N(RR5RtCMD_OPTIONS_LABELtoptions(R"R8((sinfo.pyRscCs"tjtj}|j|_|S(s,Method to create the xml cmd_options element(RR#R5R7R8R:(R"R'((sinfo.pyR(s cCs|jtjkS(ss Returns True if element has: - tag = cmd_options Return False otherwise. (R)R5R7(R+R'((sinfo.pyR,scCs|j}t|}|S(s2Method to create the DOC element from the xml tree(R:R5(R+R'R8Rc((sinfo.pyRWs  cCs#|jdk rtj|jSgS(s9Returns a list of arguments suitable for passing to PopenN(R8RtshlexR(R"((sinfo.pyt get_arg_listscCsd|jj|jfS(Ns%s: %s(t __class__R\R8(R"((sinfo.pyt__repr__s( R\R]R^R7RR(R_R,RWR:R<(((sinfo.pyR5s    (8R^RRR9RRvRtlxmlRtsolaris_install.data_objectRRtACTIONt APP_CALLBACKtCONTENTSt CPIO_ARGSR8RtIPS_ARGSt PURGE_HISTORYt REJECT_LISTtSIZER5t SVR4_ARGSRtTYPERt UPDATE_INDEXRRR`RdRgRmRzRRRR@RR6RHRKRERRRRRRRR.R/R)R1R5(((sinfo.pytsh        "(D*'%z$PQ3=!%#$&$(