Skip to content

Commit

Permalink
Improve appstreams context selection (bsc#1231459)
Browse files Browse the repository at this point in the history
Signed-off-by: Pascal Arlt <[email protected]>
  • Loading branch information
parlt91 committed Oct 16, 2024
1 parent f1df4e6 commit 2597aad
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ FROM rhnserverchannel sc
INNER JOIN suseappstreampackage sasp ON sasp.module_id = sas.id
LEFT JOIN suseserverappstream ssa ON ssa.name = sas.name
AND ssa.stream = sas.stream
AND ssa.context = sas.context
AND ssa.arch = sas.arch
AND ssa.server_id = sc.server_id
WHERE ssa.id IS NULL
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Improve appstreams context selection (bsc#1231459)
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
--
-- Copyright (c) 2024 SUSE LLC
--
-- This software is licensed to you under the GNU General Public License,
-- version 2 (GPLv2). There is NO WARRANTY for this software, express or
-- implied, including the implied warranties of MERCHANTABILITY or FITNESS
-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
-- along with this software; if not, see
-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
--
-- Red Hat trademarks are not licensed under GPLv2. No permission is
-- granted to use or replicate Red Hat trademarks that are incorporated
-- in this software or its documentation.
--
CREATE OR REPLACE VIEW suseServerAppStreamHiddenPackagesView AS

-- If a package is part of any appstream,
-- and this appstream is not enabled in
-- a server, it should appear here.
SELECT DISTINCT sasp.package_id AS pid, sc.server_id AS sid
FROM rhnserverchannel sc
INNER JOIN suseappstream sas ON sas.channel_id = sc.channel_id
INNER JOIN suseappstreampackage sasp ON sasp.module_id = sas.id
LEFT JOIN suseserverappstream ssa ON ssa.name = sas.name
AND ssa.stream = sas.stream
AND ssa.context = sas.context
AND ssa.arch = sas.arch
AND ssa.server_id = sc.server_id
WHERE ssa.id IS NULL

UNION

-- If a package is part of an enabled appstream, all the packages
-- whose name matches with appstream api need to be filtered out
-- except the packages that are part of the enabled appstream.
SELECT DISTINCT p.id AS pid, server_stream.server_id AS sid
FROM suseServerAppstream server_stream
INNER JOIN suseAppstream appstream ON appstream.name = server_stream.name
AND appstream.stream = server_stream.stream
AND appstream.arch = server_stream.arch
INNER JOIN suseAppstreamApi api ON api.module_id = appstream.id
inner join rhnPackageName pn ON pn.name = api.rpm
inner join rhnPackage p ON p.name_id = pn.id
WHERE NOT EXISTS (
SELECT package_id
FROM suseServerAppStreamPackageView
WHERE server_id = server_stream.server_id
AND package_id = p.id
);

20 changes: 20 additions & 0 deletions susemanager-utils/susemanager-sls/src/modules/appstreams.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,26 @@ def _get_module_info(module_names):
return []

module_info_output = result.stdout.splitlines()
active_modules = []
while True:
start = next(
(i for i, e in enumerate(module_info_output)
if "[a]" in e), -1
)
if start != -1 and module_info_output[start].startswith("Stream"):
end = next(
(i for i, e in enumerate(module_info_output[start:-1])
if e.startswith("Name")), -1
)
if end != -1:
active_modules+=module_info_output[start-1:end+start]
module_info_output = module_info_output[end+start:-1]
else:
active_modules+=module_info_output[start-1:end]
module_info_output=active_modules
break
else:
break

nsvca_info_list = []
current_module_info = []
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Improve appstreams context selection (bsc#1231459)

0 comments on commit 2597aad

Please sign in to comment.