Bug 1072073

Summary: [RFE] Unify architecture identification values for channel.software.create and channel.software.getDetails APIs
Product: [Community] Spacewalk Reporter: Stephen Herr <sherr>
Component: APIAssignee: Stephen Herr <sherr>
Status: CLOSED CURRENTRELEASE QA Contact: Red Hat Satellite QA List <satqe-list>
Severity: medium Docs Contact:
Priority: medium    
Version: 2.1CC: ahumbe, cperry, jwest, tlestach, xdmoon
Target Milestone: ---Keywords: FutureFeature, Triaged
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: spacewalk-java-2.2.8-1 Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: 735525 Environment:
Last Closed: 2014-07-17 08:41:28 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 737830, 1119298    

Description Stephen Herr 2014-03-03 20:41:55 UTC
+++ This bug was initially created as a clone of Bug #735525 +++

--- Additional comment from Ashish Humbe on 2014-02-20 05:28:29 EST ---

Hello Tomas and Cliff,

Actually title is not very clear, here issue is that:

The channel.software.getDetails API return the arch_name without 'channel-' string but while creating channel using channel.software.create API it need the channel architecture starting with 'channel-' . 

So customer think that the return values of the API and the values passed to the API for similar functionality should be equivalent.  

Thanks,
Ashish

--- Additional comment from Ashish Humbe on 2014-02-20 06:29:40 EST ---


# spacewalk-api --server=<server> channel.software.getDetails "%session%"  clone-rhel-test 

$result = {
            'end_of_life' => '',
            'summary' => 'clone-rhel-test',
            'id' => '129',
            'arch_name' => 'x86_64',
            'name' => 'clone-rhel-test',
            'label' => 'clone-rhel-test',
          };

As per API documentation parameters for channel.software.create API :

Method: create
Description:
Creates a software channel

Parameters:

    string sessionKey
    string label - label of the new channel
    string name - name of the new channel
    string summary - summary of the channel
    string archLabel - the label of the architecture the channel corresponds to
        channel-ia32 - For 32 bit channel architecture
        channel-ia64 - For 64 bit channel architecture
        channel-sparc - For Sparc channel architecture
        channel-alpha - For Alpha channel architecture
        channel-s390 - For s390 channel architecture
        channel-s390x - For s390x channel architecture
        channel-iSeries - For i-Series channel architecture
        channel-pSeries - For p-Series channel architecture
        channel-x86_64 - For x86_64 channel architecture

while using these API calls in one script need manual changes to architecture parameter. 

Thanks,
Ashish

--- Additional comment from Tomas Lestach on 2014-02-20 07:37:42 EST ---

Ah, I see. Thanks for the notice, Ashish.

channel.software.create expects architecture label as parameter and
channel.software.getDetails returns architecture name among the channel properties.

I agree, this isn't very consistent, however it's quite common to use 'label' (that's typically unique in Spacewalk) as lookup field and then to use 'name' (as more human readable/friendly field) when presenting the information within the getDetails API.

# select label, name from rhnChannelArch;
           label           |     name      
---------------------------+---------------
 channel-ia32              | IA-32
 channel-ia64              | IA-64
 channel-sparc             | Sparc
 channel-alpha             | Alpha
 channel-s390              | s390
 channel-s390x             | s390x
 channel-iSeries           | iSeries
 channel-pSeries           | pSeries
 channel-x86_64            | x86_64
 channel-ppc               | PPC
 channel-sparc-sun-solaris | Sparc Solaris
 channel-i386-sun-solaris  | i386 Solaris
 channel-arm               | ARM soft. FP
 channel-armhfp            | ARM hard. FP
(14 rows)

The good thing is the architecture name is unique in rhnChannelArch table as well.


This change would however break a lot of existing customer scripts.

--- Additional comment from Stephen Herr on 2014-03-03 15:14:28 EST ---

My proposed solution:
The channel.software.getDetails method in addition to returning 'arch_name' => 'x86_64' (for example) should also return 'arch_label' => 'channel-x86_64'.

Since it's a purely additive change it would not break any existing scripts, and it would give users the string they need to directly plug into channel.software.create.

Comment 1 Stephen Herr 2014-03-03 20:51:14 UTC
3073ccd5138542746606afae963c8ba6c4165f8c

Comment 2 Tomas Lestach 2014-03-04 06:43:32 UTC
> The channel.software.getDetails method in addition to returning 'arch_name'
> => 'x86_64' (for example) should also return 'arch_label' =>
> 'channel-x86_64'.

Right. Thank you.

Comment 3 Milan Zázrivec 2014-07-17 08:41:28 UTC
Spacewalk 2.2 has been released:

    https://fedorahosted.org/spacewalk/wiki/ReleaseNotes22