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

Reply via email to