ACC SHELL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>
AddOnProduct
</title>
<style type="text/css">body { background-color: #c8c8c8 }
h1 { color: #e00000 }
table { width: 100%/ border: none }
img { border: 0px }
.sigbox { background-color: #ffc080; border: solid thin #f96500 }
.sig { font: larger monospace }
.padtbl { background-color: #ffc080; padding: 10px; margin: 10px }
/* arrow */
.a { color: #606060 }
/* type, parameter */
.t, .p { color: #c05000 }
.pbox { width: 20% }
.descbox { }
.right { align: right }
.header {}
.footer { clear: both}
.menu { width: 10%; float: left }
.main { width: 90%; float: left }
</style>
</head>
<body>
<div class="header">
<i>YaST2 Developers Documentation:</i>
<a href="index.html">
<b>
AddOnProduct
</b>
</a>
<img class="right" alt="" src="/usr/share/doc/packages/yast2-devtools/images/yast2-mini.png" />
<hr />
</div>
<div class="menu">
<img alt="YaST" src="/usr/share/doc/packages/yast2-devtools/images/yast2-half.png" />
<br />
<br />
<a href="index.html">functions</a>
<br />
<a href="files.html">files</a>
<br />
<a href="intro.html">intro</a>
</div>
<div class="main">
<div class="sigbox">
<table class="padtbl">
<tr>
<td>
<h1>
AddOnProduct
</h1>
</td>
<td class="filecell">
AddOnProduct.ycp
</td>
</tr>
<tr>
<td>
This module provides integration of the add-on products
</td>
</tr>
<tr>
<td>
<ul>
<li> Jiri Srain <jsrain@suse.de></li>
<li> Lukas Ocilka <locilka@suse.cz></li>
</ul>
</td>
</tr>
<tr>
<td>
<p>This module has an unstable interface.</p>
</td>
</tr>
</table>
<table class="padtbl">
<tr>
<td>
<h1>Imports</h1>
<ul>
<li>Directory</li>
<li>FileUtils</li>
<li>FileUtils</li>
<li>Icon</li>
<li>InstShowInfo</li>
<li>Label</li>
<li>Language</li>
<li>Mode</li>
<li>Mode</li>
<li>PackageCallbacks</li>
<li>PackagesProposal</li>
<li>Popup</li>
<li>ProductControl</li>
<li>ProductFeatures</li>
<li>ProductLicense</li>
<li>Report</li>
<li>Stage</li>
<li>String</li>
<li>URL</li>
<li>Wizard</li>
<li>WorkflowManager</li>
<li>XML</li>
</ul>
<h1>Structures</h1>
<ul>
<li>
<a href="#"></a>
</li>
<li>
<a href="#"></a>
</li>
<li>
<a href="#$[">$[</a>
</li>
<li>
<a href="#$["src_id|media|filename" : "/path/to/the/file"]">$["src_id|media|filename" : "/path/to/the/file"]</a>
</li>
<li>
<a href="#This is an XML file created from exported map:">This is an XML file created from exported map:</a>
</li>
<li>
<a href="#add_on_products = [">add_on_products = [</a>
</li>
</ul>
<h1>Global Variables</h1>
<ul>
<li>
<a href="#add_on_products">add_on_products</a>
</li>
<li>
<a href="#last_ret">last_ret</a>
</li>
<li>
<a href="#src_id">src_id</a>
</li>
</ul>
<h1>Global Functions</h1>
<ul>
<li>
<a href="#AcceptedLicenseAndInfoFile">AcceptedLicenseAndInfoFile (integer src_id)</a>
</li>
<li>
<a href="#AddOnMode">AddOnMode (integer source_id)</a>
</li>
<li>
<a href="#AddPreselectedAddOnProducts">AddPreselectedAddOnProducts (string filelist)</a>
</li>
<li>
<a href="#Disintegrate">Disintegrate (integer srcid)</a>
</li>
<li>
<a href="#DoInstall">DoInstall ()</a>
</li>
<li>
<a href="#Export">Export ()</a>
</li>
<li>
<a href="#GetAbsoluteURL">GetAbsoluteURL (string base_url, string url)</a>
</li>
<li>
<a href="#GetCachedFileFromSource">GetCachedFileFromSource (integer src_id, integer media, string filename, string sod, boolean optional)</a>
</li>
<li>
<a href="#Integrate">Integrate (integer srcid)</a>
</li>
<li>
<a href="#PrepareForRegistration">PrepareForRegistration (integer src_id)</a>
</li>
<li>
<a href="#ProcessRegistration">ProcessRegistration ()</a>
</li>
<li>
<a href="#ReIntegrateFromScratch">ReIntegrateFromScratch ()</a>
</li>
<li>
<a href="#ReadTmpExportFilename">ReadTmpExportFilename ()</a>
</li>
<li>
<a href="#RegisterAddOnProduct">RegisterAddOnProduct (integer src_id)</a>
</li>
<li>
<a href="#RemoveRegistrationFlag">RemoveRegistrationFlag (integer src_id)</a>
</li>
<li>
<a href="#RereadAllSCRAgents">RereadAllSCRAgents ()</a>
</li>
<li>
<a href="#SetPreselectedAddOnProductsType">SetPreselectedAddOnProductsType (string type)</a>
</li>
<li>
<a href="#TmpExportFilename">TmpExportFilename ()</a>
</li>
<li>
<a href="#UpdateInstSys">UpdateInstSys (string filename)</a>
</li>
</ul>
<h1>Local Variables</h1>
<ul>
<li>
<a href="#addons_requesting_registration">addons_requesting_registration</a>
</li>
<li>
<a href="#patterns_preselected_by_addon">patterns_preselected_by_addon</a>
</li>
<li>
<a href="#source_file_cache">source_file_cache</a>
</li>
<li>
<a href="#src_cache_id">src_cache_id</a>
</li>
<li>
<a href="#system_proposals_prepared">system_proposals_prepared</a>
</li>
<li>
<a href="#system_workflows_prepared">system_workflows_prepared</a>
</li>
</ul>
<h1>Local Functions</h1>
<ul>
<li>
<a href="#CleanY2Update">CleanY2Update ()</a>
</li>
<li>
<a href="#GetMode">GetMode ()</a>
</li>
<li>
<a href="#HandleProductPATTERNS">HandleProductPATTERNS (integer srcid)</a>
</li>
<li>
<a href="#ParsePlainAddOnProductsFile">ParsePlainAddOnProductsFile (string parse_file, string base_url)</a>
</li>
<li>
<a href="#SetMode">SetMode (string new_mode)</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<p />
<div class="sigbox">
<span class="sig" id="src_cache_id">local
<b>src_cache_id
<span class="a"> -> </span>
<span class="t">integer</span>
</b>
</span>
</div>
<p>
ID for cache in the inst-sys</p>
<div class="sigbox">
<span class="sig" id="system_proposals_prepared">local
<b>system_proposals_prepared
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
System proposals have already been prepared for merging?</p>
<div class="sigbox">
<span class="sig" id="system_workflows_prepared">local
<b>system_workflows_prepared
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
System workflows have already been prepared for merging?</p>
<div class="sigbox">
<span class="sig" id="add_on_products">global
<b>add_on_products
<span class="a"> -> </span>
<span class="t">list<map<string,any> ></span>
</b>
</span>
</div>
<p>
List of all selected repositories</p>
<p>Structure
<b>
<a id="add_on_products = [">add_on_products = [</a>
</b>
</p>
<pre>
$[
"media" : 4, // ID of the source
"product_dir" : "/",
"product" : "openSUSE version XX.Y",
"autoyast_product" : "'PRODUCT' tag for AutoYaST Export",
],
...
]</pre>
<div class="sigbox">
<span class="sig" id="src_id">global
<b>src_id
<span class="a"> -> </span>
<span class="t">integer</span>
</b>
</span>
</div>
<p>
ID of currently added repository for the add-on product</p>
<div class="sigbox">
<span class="sig" id="last_ret">global
<b>last_ret
<span class="a"> -> </span>
<span class="t">symbol</span>
</b>
</span>
</div>
<p>
return value of last step in the product adding workflow</p>
<div class="sigbox">
<span class="sig" id="source_file_cache">local
<b>source_file_cache
<span class="a"> -> </span>
<span class="t">map <string, string></span>
</b>
</span>
</div>
<p></p>
<p>Structure
<b>
<a id="$["src_id|media|filename" : "/path/to/the/file"]">$["src_id|media|filename" : "/path/to/the/file"]</a>
</b>
</p>
<pre></pre>
<div class="sigbox">
<span class="sig" id="GetCachedFileFromSource">global
<b>GetCachedFileFromSource (integer src_id, integer media, string filename, string sod, boolean optional)
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Downloads a requested file, caches it and returns path to that cached file.
If a file is alerady cached, just returns the path to a cached file.
Parameter 'sod' defines whether a file is 'signed' (file + file.asc) or 'digested'
(file digest mentioned in signed content file).</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">src_id</span>
</td>
<td class="descbox"></td>
</tr>
<tr>
<td class="pbox">
<span class="p">media</span>
</td>
<td class="descbox"></td>
</tr>
<tr>
<td class="pbox">
<span class="p">filename</span>
</td>
<td class="descbox"></td>
</tr>
<tr>
<td class="pbox">
<span class="p">sod</span>
</td>
<td class="descbox"></td>
</tr>
<tr>
<td class="pbox">
<span class="p">optional</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">path to a cached file
</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Example</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><pre>
// content file is usually signed with content.asc
AddOnProduct::GetCachedFileFromSource (8, 1, "/content", "signed", false);
// the other files are usually digested in content file
AddOnProduct::GetCachedFileFromSource (8, 1, "/images/images.xml", "digested", true);</pre></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="GetMode">local
<b>GetMode ()
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Returns the current add-on installation mode.</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">current mode</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#SetMode()">SetMode()</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="SetMode">local
<b>SetMode (string new_mode)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Sets internal add-on installation mode to either "installation" or "update".
Mode is used later when deciding which part of the installation.xml to use.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">new_mode</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#GetMode();">GetMode();</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="AddOnMode">global
<b>AddOnMode (integer source_id)
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Returns whether add-on product got as parameter (source id)
replaces some already installed add-on or whether it is a new
installation. Repositories and target have to be initialized.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">source_id</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="GetAbsoluteURL">global
<b>GetAbsoluteURL (string base_url, string url)
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Returns an absolute URL from base + relative url.
Relative URL needs to start with 'reulrl://' othewise
it is not considered being relative and it's returned
as it is (just the relative_url parameter).</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">base_url</span>
</td>
<td class="descbox"></td>
</tr>
<tr>
<td class="pbox">
<span class="p">url</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">absolute_url
</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Example</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><pre>
AddOnProduct::GetAbsoluteURL (
"http://www.example.org/some%20dir/another%20dir",
"relurl://../AnotherProduct/"
) -> "http://www.example.org/some%20dir/AnotherProduct/"
AddOnProduct::GetAbsoluteURL (
"username:password@ftp://www.example.org/dir/",
"relurl://./Product_CD1/"
) -> "username:password@ftp://www.example.org/dir/Product_CD1/"</pre></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="UpdateInstSys">global
<b>UpdateInstSys (string filename)
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Adapts the inst-sys from the tarball</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">filename</span>
</td>
<td class="descbox">string the filename with the tarball to use to the update</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true on success</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RereadAllSCRAgents">global
<b>RereadAllSCRAgents ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
New add-on product might add also new agents.
Functions Rereads all available agents.</p>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#bugzilla #239055, #245508">bugzilla #239055, #245508</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="CleanY2Update">local
<b>CleanY2Update ()
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Remove the /y2update directory from the system</p>
<div class="sigbox">
<span class="sig" id="AcceptedLicenseAndInfoFile">global
<b>AcceptedLicenseAndInfoFile (integer src_id)
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Show /media.1/info.txt file in a pop-up message if such file exists.
Show license if such exists and return whether users accepts it.
Returns 'nil' when did not succed.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">src_id</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">whether the license has been accepted</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="addons_requesting_registration">local
<b>addons_requesting_registration
<span class="a"> -> </span>
<span class="t">list <integer></span>
</b>
</span>
</div>
<p>
Contains list of repository IDs that request registration</p>
<div class="sigbox">
<span class="sig" id="ProcessRegistration">global
<b>ProcessRegistration ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Returns whether registration is requested by at least one of
used Add-On products.</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">if requested</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RemoveRegistrationFlag">global
<b>RemoveRegistrationFlag (integer src_id)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Add-On product might have been added into products requesting
registration. This pruduct has been removed (during configuring
list of add-on products).</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">src_id</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="PrepareForRegistration">global
<b>PrepareForRegistration (integer src_id)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Checks whether the content file of the add-on has a flag REGISTERPRODUCT
set to "true" or "yes". If it has, product is added into list of pruducts
that need registration. Cached content file is used if possible.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">src_id</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="RegisterAddOnProduct">global
<b>RegisterAddOnProduct (integer src_id)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Calls registration client if needed.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">src_id</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="DoInstall">global
<b>DoInstall ()
<span class="a"> -> </span>
<span class="t">symbol</span>
</b>
</span>
</div>
<p>
Do installation of the add-on product within an installed system
srcid is got via AddOnProduct::src_id</p>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">the result symbol from wizard sequencer</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="patterns_preselected_by_addon">local
<b>patterns_preselected_by_addon
<span class="a"> -> </span>
<span class="t">map <integer, list <string> ></span>
</b>
</span>
</div>
<p>
Every Add-On can preselect some patterns.
Only patterns that are not selected/installed yet will be used.</p>
<p>Structure
<b>
<a id="$[">$[</a>
</b>
</p>
<pre>
src_id : [
"pattern_1", "pattern_2", "pattern_6"
]
]</pre>
<div class="sigbox">
<span class="sig" id="HandleProductPATTERNS">local
<b>HandleProductPATTERNS (integer srcid)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Function checks whether the product content file contains
PATTERNS tag and pre-selects patterns listed there.</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">srcid</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="Integrate">global
<b>Integrate (integer srcid)
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Integrate the add-on product to the installation workflow, including
preparations for 2nd stage and inst-sys update</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">srcid</span>
</td>
<td class="descbox">integer the ID of the repository</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true on success</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="Disintegrate">global
<b>Disintegrate (integer srcid)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Opposite to Integrate()</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">srcid</span>
</td>
<td class="descbox">integer the ID of the repository</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="ReIntegrateFromScratch">global
<b>ReIntegrateFromScratch ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Some product(s) were removed, reintegrating their control files from scratch.</p>
<div class="sigbox">
<span class="sig" id="SetPreselectedAddOnProductsType">global
<b>SetPreselectedAddOnProductsType (string type)
<span class="a"> -> </span>
<span class="t">void</span>
</b>
</span>
</div>
<p>
Sets an add_on_products file type ("plain" or "xml")
</p>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">type</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#FATE #303675">FATE #303675</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="ParsePlainAddOnProductsFile">local
<b>ParsePlainAddOnProductsFile (string parse_file, string base_url)
<span class="a"> -> </span>
<span class="t">list <map></span>
</b>
</span>
</div>
<p>
Reads temporary add_on_products file, parses supported products,
merges base URL if products use relative URL and returns list of
maps defining additional products to add.</p>
<p>Structure
<b>
<a id=""></a>
</b>
</p>
<pre>
[
// product defined with URL and additional path (typically "/")
$["url":(string) url, "path":(string) path]
// additional list of products to install
// media URL can contain several products at once
$["url":(string) url, "path":(string) path, "install_products":(list <string>) pti]
]</pre>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">parse_file</span>
</td>
<td class="descbox"></td>
</tr>
<tr>
<td class="pbox">
<span class="p">base_url</span>
</td>
<td class="descbox"></td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">of products to add
</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#FATE #303675">FATE #303675</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="AddPreselectedAddOnProducts">global
<b>AddPreselectedAddOnProducts (string filelist)
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Auto-integrate add-on products in specified file (usually add_on_products file)</p>
<p>Structure
<b>
<a id=""></a>
</b>
</p>
<pre>
Format of /add_on_products.xml file on media root:
&lt;?xml version="1.0"?>
<add_on_products xmlns="http://www.suse.com/1.0/yast2ns"
xmlns:config="http://www.suse.com/1.0/configns">
<product_items config:type="list">
<product_item>
&lt;!-- Product name visible in UI when offered to user (optional item) -->
<name>Add-on Name to Display</name>
&lt;!-- Product URL (mandatory item) -->
<url>http://product.repository/url/</url>
&lt;!-- Product path, default is "/" (optional item) -->
<path>/relative/product/path</path>
&lt;!--
List of products to install from media, by default all products
from media are installed (optional item)
-->
<install_products config:type="list">
&lt;!--
Product to install - matching the metadata product 'name'
(mandatory to fully define 'install_products')
-->
<product>Product-ID-From-Repository</product>
<product>...</product>
</install_products>
&lt;!--
If set to 'true', user is asked whether to install this product,
default is 'false' (optional)
-->
<ask_user config:type="boolean">true</ask_user>
&lt;!--
Connected to 'ask_user', sets the default status of product,
default is 'false' (optional)
-->
<selected config:type="boolean">true</selected>
</product_item>
<product_item>
...
</product_item>
</product_items>
</add_on_products></pre>
<dl>
<dt>
<b>Parameters:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="p">filelist</span>
</td>
<td class="descbox">string a file containing a list of add-on products to integrate</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">true on exit
</td>
</tr>
</table>
</dd>
</dl>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#FATE #303675: Support several add-ons on standard medium">FATE #303675: Support several add-ons on standard medium</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="Export">global
<b>Export ()
<span class="a"> -> </span>
<span class="t">map</span>
</b>
</span>
</div>
<p>
Returns map describing all used add-ons.</p>
<p>Structure
<b>
<a id="This is an XML file created from exported map:">This is an XML file created from exported map:</a>
</b>
</p>
<pre>
<add-on>
<add_on_products config:type="list">
<listentry>
<media_url>ftp://server.name/.../</media_url>
<product>NEEDS_TO_MATCH_"PRODUCT"_TAG_FROM_content_FILE!</product>
<product_dir>/</product_dir>
</listentry>
...
</add_on_products>
</add-on></pre>
<dl>
<dt>
<b>Return value:</b>
</dt>
<dd>
<table>
<tr>
<td class="pbox">
<span class="t" />
</td>
<td class="descbox">
</td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="TmpExportFilename">global
<b>TmpExportFilename ()
<span class="a"> -> </span>
<span class="t">string</span>
</b>
</span>
</div>
<p>
Returns the path where Add-Ons configuration is stored during the fist stage installation.
This path reffers to the installed system.</p>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#bugzilla #187558">bugzilla #187558</a></td>
</tr>
</table>
</dd>
</dl>
<div class="sigbox">
<span class="sig" id="ReadTmpExportFilename">global
<b>ReadTmpExportFilename ()
<span class="a"> -> </span>
<span class="t">boolean</span>
</b>
</span>
</div>
<p>
Reads the Add-Ons configuration stored on disk during the first stage installation.</p>
<dl>
<dt>
<b>See</b>
</dt>
<dd>
<table>
<tr>
<td align="left" valign="top"><a href="#bugzilla #187558">bugzilla #187558</a></td>
</tr>
</table>
</dd>
</dl>
</div>
<div class="footer">
<hr />
<i>YaST2 Developers Documentation</i>
<img class="right" alt="" src="/usr/share/doc/packages/yast2-devtools/images/yast2-mini.png" />
</div>
</body>
</html>
ACC SHELL 2018