<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Now I’ve changed:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">my @chanel = <FILE2>;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">...<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">And <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">$client->call('system.config.addChannels', $session, $record, \@chanel, $client->boolean($isDir));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">And the error is:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Fault returned from XML RPC Server, fault code -1: redstone.xmlrpc.XmlRpcFault: unhandled internal exception: Could not find config channel with label=Spacewalk_cli2.6_RH6_64<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">But that is the channel label……sniff<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D"><o:p> </o:p></span></b></p>
<p class="MsoNormal"><span lang="PT" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D">Cumprimentos,<o:p></o:p></span></p>
<p class="MsoNormal"><b><span lang="PT" style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D">Tânia Marques Valente<o:p></o:p></span></b></p>
<p class="MsoNormal"><span lang="PT" style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#1F497D">Serviço Unix</span><span lang="PT" style="font-size:8.0pt;color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="PT" style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#1F4E79">SSI UOS4 –</span><span lang="PT" style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#1F497D"> Gestão de Sistemas Distríbuidos<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="PT" style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#1F497D">Grupo Caixa Geral de Depósitos<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="PT" style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#1F497D">Tel: (351) 217619271<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:8.0pt;font-family:"Arial",sans-serif;color:#1F497D">Ext: 559271<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="PT" style="color:#1F497D"><a href="mailto:tania.marques.valente@cgd.pt"><span lang="EN-US">tania.marques.valente@cgd.pt</span></a></span><span style="color:#1F497D"><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b>From:</b> Tânia Agulhas Marques Valente [EE] (SSI) <br>
<b>Sent:</b> 18 de dezembro de 2017 10:48<br>
<b>To:</b> 'spacewalk-list@redhat.com' <spacewalk-list@redhat.com><br>
<b>Subject:</b> Question about perl with API <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hello<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I am trying to make a perl script to add a child channel to a client system in Spacewalk.<o:p></o:p></p>
<p class="MsoNormal">I am relatively new with perl , managed to already make some that really help me a lot and I wanted to go further.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">But I am getting an error and it seems I am not getting nowhere. Maybe someone can help me.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The script is:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">#!/usr/bin/perl<o:p></o:p></p>
<p class="MsoNormal">use Frontier::Client;<o:p></o:p></p>
<p class="MsoNormal">use Data::Dumper;<o:p></o:p></p>
<p class="MsoNormal">use warnings;<o:p></o:p></p>
<p class="MsoNormal">use 5.010;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">my $num_args = $#ARGV + 1;<o:p></o:p></p>
<p class="MsoNormal">if ( $num_args < 2 ){<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">print "\nInsufficient Arguments !AddSystemToChannel.pl ficheiro_com_systems_IDs channel\n" ;<o:p></o:p></p>
<p class="MsoNormal">exit;<o:p></o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">my $HOST = 'spaceserver';<o:p></o:p></p>
<p class="MsoNormal">my $user = 'username';<o:p></o:p></p>
<p class="MsoNormal">my $pass = 'user_pass';<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">my $file=$ARGV[0];<o:p></o:p></p>
<p class="MsoNormal">my $channel=$ARGV[1];<o:p></o:p></p>
<p class="MsoNormal">my $client = new Frontier::Client(url => "<a href="http://$HOST/rpc/api">http://$HOST/rpc/api</a>");<o:p></o:p></p>
<p class="MsoNormal">my $session = $client->call('auth.login',$user, $pass);<o:p></o:p></p>
<p class="MsoNormal">my $isDir = 1;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">open (FILE, $file) or print "O ficheiro $file não existe";<o:p></o:p></p>
<p class="MsoNormal">open (FILE2, $channel) or print "O ficheiro $channel não existe";<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">while (!eof(FILE) and !eof(FILE2)) {<o:p></o:p></p>
<p class="MsoNormal">my $record = <FILE>;<o:p></o:p></p>
<p class="MsoNormal">my $chanel = <FILE2>;<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">#$bb = $client->call('channel.listMyChannels', $session);<o:p></o:p></p>
<p class="MsoNormal">#foreach my $chanelsAll (@$bb) {<o:p></o:p></p>
<p class="MsoNormal">#my $label = $chanelsAll->{'label'};<o:p></o:p></p>
<p class="MsoNormal">#my $idchanels = $chanelsAll->{'id'};<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">$systemInChanel = $client->call('system.config.addChannels', $session, $record, $chanel, $client->boolean($isDir));<o:p></o:p></p>
<p class="MsoNormal">&checkRetVal("Set config channel (s): $record",$systemInChanel);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">}<o:p></o:p></p>
<p class="MsoNormal">$client->call('auth.logout', $session);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I pass two arguments, that are files. Just for test “file” has a client ID (1000010378) and “file2” has the name of the chilchanel (spacewalk_cli2.6_rh6_64).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The error I get is:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Fault returned from XML RPC Server, fault code -1: com.redhat.rhn.common.translation.TranslationException: Could not find translator for class java.lang.String to interface java.util.List<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I assumed there is something wrong with $chanel, since that is the string and $record is an integer. Both must be arrays, and that’s why I make a list in a file and pass it on command line (even though this test only have an entry on each
 file/list), I have used this before in other scripts and it worked, so I am getting to a dead end I believe because of my lack of knowledge in perl. But you must have an objective to write a script so I am learning when I need it.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Maybe someone already used this API call and can help me.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Arial",sans-serif;color:#1F497D"><o:p> </o:p></span></b></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>