Hello Michele, with minor changes I applied your patch as:
https://git.fedorahosted.org/cgit/spacewalk.git/commit/?id=c68a1c68ed10bf34844e83659f7acff9c05970d3 Thank you! -- Tomas Lestach Red Hat Satellite Engineering, Red Hat ----- Original Message ----- > From: "Michele Baldessari" <mich...@acksyn.org> > To: spacewalk-devel@redhat.com > Sent: Monday, December 2, 2013 1:56:22 PM > Subject: [Spacewalk-devel] [PATCH] Add new setSoftwareList API with nobase > and ignoremissing parameters > > 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 > _______________________________________________ Spacewalk-devel mailing list Spacewalk-devel@redhat.com https://www.redhat.com/mailman/listinfo/spacewalk-devel