It is currently not possible via API to create a kickstart profile that sets either '--ignoremissing' or '--nobase' in the %packages section. Given that this is possible via WebUI, fix this gap for the environments that want to create their kickstarts via API only.
v2: - Implement a full new API via kickstart.profile.software.setSoftwareList() instead of tweaking kickstart.profile.setAdvancedOptions() --- .../profile/software/SoftwareHandler.java | 35 ++++++++++++++++++++++ .../profile/software/test/SoftwareHandlerTest.java | 25 ++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/software/SoftwareHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/software/SoftwareHandler.java index 7e41321..a7a0a00 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/software/SoftwareHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/software/SoftwareHandler.java @@ -102,6 +102,41 @@ public class SoftwareHandler extends BaseHandler { } /** + * Set the list of software packages for a kickstart profile. + * @param sessionKey An active session key + * @param ksLabel A kickstart profile label + * @param packageList A list of package names. + * @param ignoremissing The boolean value setting --ignoremissing in %packages line when true + * @param nobase The boolean value setting --nobase in the %packages line when true + * @return 1 on success. + * @throws FaultException + * @xmlrpc.doc Set the list of software packages for a kickstart profile. + * @xmlrpc.param #session_key() + * @xmlrpc.param #param_desc("string", "ksLabel", "The label of a kickstart + * profile.") + * @xmlrpc.param #param_desc("string[]", "packageList", "A list of package + * names to be set on the profile.") + * @xmlrpc.param #param_desc("boolean", "value", "Set --ignoremissing to true") + * @xmlrpc.param #param_desc("boolean", "value", "Set --nobase to true") + * @xmlrpc.returntype #return_int_success() + */ + public int setSoftwareList( + String sessionKey, + String ksLabel, + List<String> packageList, + Boolean ignoremissing, + Boolean nobase) { + + User user = getLoggedInUser(sessionKey); + checkKickstartPerms(user); + KickstartData ksdata = lookupKsData(ksLabel, user.getOrg()); + ksdata.setNoBase(nobase); + ksdata.setIgnoreMissing(ignoremissing); + KickstartFactory.saveKickstartData(ksdata); + return setSoftwareList(sessionKey, ksLabel, packageList); + } + + /** * Append the list of software packages to a kickstart profile. * @param sessionKey An active session key * @param ksLabel A kickstart profile label diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/software/test/SoftwareHandlerTest.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/software/test/SoftwareHandlerTest.java index 1efd4f8..e32d772 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/software/test/SoftwareHandlerTest.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/kickstart/profile/software/test/SoftwareHandlerTest.java @@ -66,6 +66,31 @@ public class SoftwareHandlerTest extends BaseHandlerTestCase { assertEquals(pkgFound, true); } + // Test API with nobase and ignoremissing + public void testSetSoftwareListWithParams() throws Exception { + + KickstartData ksProfile = KickstartDataTest.createKickstartWithProfile(admin); + + List<String> packages = new ArrayList<String>(); + packages.add("gcc"); + + int result = handler.setSoftwareList(adminKey, ksProfile.getLabel(), packages, true, true); + + boolean pkgFound = false; + for (Iterator<KickstartPackage> itr = ksProfile.getKsPackages().iterator(); + itr.hasNext();) { + KickstartPackage pkg = itr.next(); + if (pkg.getPackageName().getName().equals("gcc")) { + pkgFound = true; + } + } + assertEquals(1, result); + assertEquals(ksProfile.getKsPackages().size(), 1); + assertEquals(pkgFound, true); + assertEquals(ksProfile.getNoBase(), true); + assertEquals(ksProfile.getIgnoreMissing(), true); + } + public void testAppendToSoftwareList() throws Exception { KickstartData ksProfile = KickstartDataTest.createKickstartWithProfile(admin); -- 1.8.4.2 _______________________________________________ Spacewalk-devel mailing list Spacewalk-devel@redhat.com https://www.redhat.com/mailman/listinfo/spacewalk-devel