mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge pull request #31786 from isbm/isbm-zypper-list-products-sles11
Bugfix: zypper doesn't detect base product on SLE11 series
This commit is contained in:
commit
2f28c166dd
4 changed files with 70 additions and 21 deletions
|
@ -1372,7 +1372,7 @@ def list_products(all=False, refresh=False):
|
|||
for prd in doc.getElementsByTagName('product-list')[0].getElementsByTagName('product'):
|
||||
p_nfo = dict()
|
||||
for k_p_nfo, v_p_nfo in prd.attributes.items():
|
||||
p_nfo[k_p_nfo] = k_p_nfo not in ['isbase', 'installed'] and v_p_nfo or v_p_nfo == 'true'
|
||||
p_nfo[k_p_nfo] = k_p_nfo not in ['isbase', 'installed'] and v_p_nfo or v_p_nfo in ['true', '1']
|
||||
p_nfo['eol'] = prd.getElementsByTagName('endoflife')[0].getAttribute('text')
|
||||
p_nfo['eol_t'] = int(prd.getElementsByTagName('endoflife')[0].getAttribute('time_t'))
|
||||
p_nfo['description'] = " ".join(
|
||||
|
|
37
tests/unit/modules/zypp/zypper-products-sle11sp3.xml
Normal file
37
tests/unit/modules/zypp/zypper-products-sle11sp3.xml
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?xml version='1.0'?>
|
||||
<stream>
|
||||
<message type="info">Refreshing service 'nu_novell_com'.</message>
|
||||
<message type="info">Loading repository data...</message>
|
||||
<message type="info">Reading installed packages...</message>
|
||||
<product-list>
|
||||
<product name="SUSE_SLES" version="11.3" release="1.138" epoch="0" arch="x86_64" productline="" registerrelease="" vendor="SUSE LINUX Products GmbH, Nuernberg, Germany" summary="SUSE Linux Enterprise Server 11 SP3" shortname="" flavor="" isbase="0" repo="nu_novell_com:SLES11-SP3-Pool" installed="0"><endoflife time_t="0" text="1970-01-01T01:00:00+0100"/>0x7ffdb538e948<description>SUSE Linux Enterprise offers a comprehensive
|
||||
suite of products built on a single code base.
|
||||
The platform addresses business needs from
|
||||
the smallest thin-client devices to the world’s
|
||||
most powerful high-performance computing
|
||||
and mainframe servers. SUSE Linux Enterprise
|
||||
offers common management tools and technology
|
||||
certifications across the platform, and
|
||||
each product is enterprise-class.</description></product>
|
||||
<product name="SUSE_SLES-SP4-migration" version="11.3" release="1.4" epoch="0" arch="x86_64" productline="" registerrelease="" vendor="SUSE LINUX Products GmbH, Nuernberg, Germany" summary="SUSE_SLES Service Pack 4 Migration Product" shortname="" flavor="" isbase="0" repo="nu_novell_com:SLES11-SP3-Updates" installed="0"><endoflife time_t="0" text="1970-01-01T01:00:00+0100"/>0x7ffdb538e948<description>SUSE Linux Enterprise offers a comprehensive
|
||||
suite of products built on a single code base.
|
||||
The platform addresses business needs from
|
||||
the smallest thin-client devices to the world’s
|
||||
most powerful high-performance computing
|
||||
and mainframe servers. SUSE Linux Enterprise
|
||||
offers common management tools and technology
|
||||
certifications across the platform, and
|
||||
each product is enterprise-class.</description></product>
|
||||
<product name="SUSE_SLES" version="11.3" release="1.201" epoch="0" arch="x86_64" productline="" registerrelease="" vendor="SUSE LINUX Products GmbH, Nuernberg, Germany" summary="SUSE Linux Enterprise Server 11 SP3" shortname="" flavor="" isbase="0" repo="nu_novell_com:SLES11-SP3-Updates" installed="0"><endoflife time_t="0" text="1970-01-01T01:00:00+0100"/>0x7ffdb538e948<description>SUSE Linux Enterprise offers a comprehensive
|
||||
suite of products built on a single code base.
|
||||
The platform addresses business needs from
|
||||
the smallest thin-client devices to the world’s
|
||||
most powerful high-performance computing
|
||||
and mainframe servers. SUSE Linux Enterprise
|
||||
offers common management tools and technology
|
||||
certifications across the platform, and
|
||||
each product is enterprise-class.</description></product>
|
||||
<product name="SUSE-Manager-Server" version="2.1" release="1.2" epoch="0" arch="x86_64" productline="" registerrelease="" vendor="SUSE LINUX Products GmbH, Nuernberg, Germany" summary="SUSE Manager Server" shortname="" flavor="cd" isbase="0" repo="nu_novell_com:SUSE-Manager-Server-2.1-Pool" installed="0"><endoflife time_t="0" text="1970-01-01T01:00:00+0100"/>0x7ffdb538e948<description>SUSE Manager Server appliance</description></product>
|
||||
<product name="SUSE-Manager-Server" version="2.1" release="1.2" epoch="0" arch="x86_64" productline="manager" registerrelease="" vendor="SUSE LINUX Products GmbH, Nuernberg, Germany" summary="SUSE Manager Server" shortname="" flavor="cd" isbase="1" repo="@System" installed="1"><endoflife time_t="0" text="1970-01-01T01:00:00+0100"/>0x7ffdb538e948<description>SUSE Manager Server appliance</description></product>
|
||||
</product-list>
|
||||
</stream>
|
|
@ -150,26 +150,38 @@ class ZypperTestCase(TestCase):
|
|||
'''
|
||||
List products test.
|
||||
'''
|
||||
ref_out = {
|
||||
'retcode': 0,
|
||||
'stdout': get_test_data('zypper-products.xml')
|
||||
}
|
||||
with patch.dict(zypper.__salt__, {'cmd.run_all': MagicMock(return_value=ref_out)}):
|
||||
products = zypper.list_products()
|
||||
self.assertEqual(len(products), 5)
|
||||
self.assertEqual(['SLES', 'SLES', 'SUSE-Manager-Proxy', 'SUSE-Manager-Server', 'sle-manager-tools-beta'],
|
||||
sorted([prod['name'] for prod in products]))
|
||||
self.assertIn('SUSE LLC <https://www.suse.com/>', [product['vendor'] for product in products])
|
||||
self.assertEqual([False, False, False, False, True],
|
||||
sorted([product['isbase'] for product in products]))
|
||||
self.assertEqual([False, False, False, False, True],
|
||||
sorted([product['installed'] for product in products]))
|
||||
self.assertEqual(['0', '0', '0', '0', '0'],
|
||||
sorted([product['release'] for product in products]))
|
||||
self.assertEqual([False, False, False, False, u'sles'],
|
||||
sorted([product['productline'] for product in products]))
|
||||
self.assertEqual([1509408000, 1522454400, 1522454400, 1730332800, 1730332800],
|
||||
sorted([product['eol_t'] for product in products]))
|
||||
for filename, test_data in {
|
||||
'zypper-products-sle12sp1.xml': {
|
||||
'name': ['SLES', 'SLES', 'SUSE-Manager-Proxy',
|
||||
'SUSE-Manager-Server', 'sle-manager-tools-beta'],
|
||||
'vendor': 'SUSE LLC <https://www.suse.com/>',
|
||||
'release': ['0', '0', '0', '0', '0'],
|
||||
'productline': [False, False, False, False, 'sles'],
|
||||
'eol_t': [1509408000, 1522454400, 1522454400, 1730332800, 1730332800],
|
||||
'isbase': [False, False, False, False, True],
|
||||
'installed': [False, False, False, False, True],
|
||||
},
|
||||
'zypper-products-sle11sp3.xml': {
|
||||
'name': ['SUSE-Manager-Server', 'SUSE-Manager-Server',
|
||||
'SUSE_SLES', 'SUSE_SLES', 'SUSE_SLES-SP4-migration'],
|
||||
'vendor': 'SUSE LINUX Products GmbH, Nuernberg, Germany',
|
||||
'release': ['1.138', '1.2', '1.2', '1.201', '1.4'],
|
||||
'productline': [False, False, False, False, 'manager'],
|
||||
'eol_t': [0, 0, 0, 0, 0],
|
||||
'isbase': [False, False, False, False, True],
|
||||
'installed': [False, False, False, False, True],
|
||||
}}.items():
|
||||
ref_out = {
|
||||
'retcode': 0,
|
||||
'stdout': get_test_data(filename)
|
||||
}
|
||||
|
||||
with patch.dict(zypper.__salt__, {'cmd.run_all': MagicMock(return_value=ref_out)}):
|
||||
products = zypper.list_products()
|
||||
self.assertEqual(len(products), 5)
|
||||
self.assertIn(test_data['vendor'], [product['vendor'] for product in products])
|
||||
for kwd in ['name', 'isbase', 'installed', 'release', 'productline', 'eol_t']:
|
||||
self.assertEqual(test_data[kwd], sorted([prod[kwd] for prod in products]))
|
||||
|
||||
def test_refresh_db(self):
|
||||
'''
|
||||
|
|
Loading…
Add table
Reference in a new issue