[Spacewalk-list] perl api user.create

Rom r.vandepoel at gmail.com
Mon Jul 16 08:20:14 UTC 2018


Hi all,

I took a shoot at a systemgroup.create with less more parameters as such
and it returned the very same error:

%sgdetails = (  name => "m15_test_api",
>                 description => "creation groupe via api");
>
> my $sgcreate = $client->call('systemgroup.create', $session,
> $sgdetails{name}, $sgdetails{description});
>

Despite having seen in previous user list interaction (
https://www.redhat.com/archives/spacewalk-list/2009-September/msg00117.html)
where perl hashes were directly used like in my test script, it seems to be
returning badly the contains between { }:

[2018-07-16 09:50:53,586] ERROR - REQUESTED FROM: 10.24.128.105 CALL:
systemgroup.create(rvandepoel, {name=m15_test_api, description=creation
groupe via api}) CALLER: (rvandepoel) TIME: 0.006 seconds

And indeed, if I am calling each element instead of addressing the @args
parts with the hash, and voila, working:

%sgdetails = (  name => "m15_test_api",
>                 description => "creation groupe via api");
>
> my $sgcreate = $client->call('systemgroup.create', $session,
> $sgdetails{name}, $sgdetails{description});
>

[2018-07-16 09:54:13,863] INFO  - REQUESTED FROM: 10.24.128.105 CALL:
> auth.login(rvandepoel, ********) CALLER: (rvandepoel) TIME: 0.077 seconds
> [2018-07-16 09:54:13,901] INFO  - REQUESTED FROM: 10.24.128.105 CALL:
> systemgroup.create(rvandepoel, m15_test_api, creation groupe via api)
> CALLER: (rvandepoel) TIME: 0.018 seconds
> [2018-07-16 09:54:13,960] INFO  - REQUESTED FROM: 10.24.128.105 CALL:
> auth.logout(2821x9d781f69660f753daa69814623a246890fe111ca6e398c54892e80e2f15a832a)
> CALLER: (rvandepoel) TIME: 0.005 seconds
>

Also, reading through the issue with type in XML RPC, I also tried the
following which is working too:

$sgname = "name="."m15_test2_api";
> $sgdesc = "description="."creation groupe via api";
> my $sgcreate = $client->call('systemgroup.create', $session, $sgname,
> $sgdesc);
>

[2018-07-16 10:10:08,575] INFO  - REQUESTED FROM: 10.24.128.105 CALL:
> auth.login(rvandepoel, ********) CALLER: (rvandepoel) TIME: 0.102 seconds
> [2018-07-16 10:10:08,604] INFO  - REQUESTED FROM: 10.24.128.105 CALL:
> systemgroup.create(rvandepoel, name=m15_test2_api, description=creation
> groupe via api) CALLER: (rvandepoel) TIME: 0.009 seconds
> [2018-07-16 10:10:08,621] INFO  - REQUESTED FROM: 10.24.128.105 CALL:
> auth.logout(2822x55955c62befecc13c9888ff3a0c8af11caf900c66e0f4ec4c557dabdc7d0df08)
> CALLER: (rvandepoel) TIME: 0.005 seconds
>

Am I doing something wrong or is there an issue with the way hashes are
formatted and sent the API.

Thanks for your help,
Romuald



On Sat, Jul 14, 2018 at 12:43 AM Rom <r.vandepoel at gmail.com> wrote:

> Dear SpaceWalkers,
>
> I am prototyping a perl script to create a spacewalk user but I am blocked
> with an error that I can't figure out how to fix.
> I would definitely appreciate some help.
>
> Here is the script:
>
> #!/usr/bin/perl
>> use Frontier::Client;
>> my $HOST = 'spacewalk';
>> my $user = 'rvandepoel';
>> my $pass = 'myverysecretpassword';
>> my $client = new Frontier::Client(url => "http://$HOST/rpc/api", debug
>> => 1);
>> my $session = $client->call('auth.login',$user, $pass);
>> %userdetails = ( 'desiredLogin' => 'tvvvvv',
>>           'desiredPassword' =>  'xxxxx at yyyyy',
>>           'firstName' => 'ttttt',
>>           'lastName' => 'vvvvv',
>>           'email' => 'ttttt.vvvvv at ourdomain.ext',
>>           );
>> my $createuser = $client->call('user.create', $session, \%userdetails);
>> $client->call('auth.logout', $session);
>
>
> Here is the debug output from the script:
>
> ---- request ----
>>
>> <?xml version="1.0"?>
>>
>> <methodCall>
>>
>> <methodName>auth.login</methodName>
>>
>> <params>
>>
>> <param><value><string>rvandepoel</string></value></param>
>>
>> <param><value><string>myverysecretpassword</string></value></param>
>>
>> </params>
>>
>> </methodCall>
>>
>> ---- response ----
>>
>> <?xml version="1.0"
>>> encoding="UTF-8"?><methodResponse><params><param><value><string>2807x0e46953a64079e6d8b67a10cf2f6dbef4ba11a5fe6e60605aac4b6d4cd795c44</string></value></param></params></methodResponse>----
>>> request ----
>>
>> <?xml version="1.0"?>
>>
>> <methodCall>
>>
>> <methodName>user.create</methodName>
>>
>> <params>
>>
>>
>>> <param><value><string>2807x0e46953a64079e6d8b67a10cf2f6dbef4ba11a5fe6e60605aac4b6d4cd795c44</string></value></param>
>>
>> <param><value><struct>
>>
>> <member><name>email</name><value><string>ttttt.vvvvv at ourdomain.ext
>>> </string></value></member>
>>
>>
>>> <member><name>firstName</name><value><string>ttttt</string></value></member>
>>
>>
>>> <member><name>desiredLogin</name><value><string>tvvvvv</string></value></member>
>>
>> <member><name>desiredPassword</name><value><string>xxxxx at yyyyy
>>> </string></value></member>
>>
>>
>>> <member><name>lastName</name><value><string>vvvvv</string></value></member>
>>
>> </struct></value>
>>
>> </param>
>>
>> </params>
>>
>> </methodCall>
>>
>> ---- response ----
>>
>> Fault returned from XML RPC Server, fault code -1:
>>> redstone.xmlrpc.XmlRpcFault: Could not find method: create in class:
>>> com.redhat.rhn.frontend.xmlrpc.user.UserHandler with params:
>>> [com.redhat.rhn.domain.user.legacy.UserImpl, redstone.xmlrpc.XmlRpcStruct]
>>
>> <?xml version="1.0"
>>> encoding="UTF-8"?><methodResponse><fault><value><struct><member><name>faultCode</name><value><int>-1</int></value></member><member><name>faultString</name><value><string>redstone.xmlrpc.XmlRpcFault:
>>> Could not find method: create in class:
>>> com.redhat.rhn.frontend.xmlrpc.user.UserHandler with params:
>>> [com.redhat.rhn.domain.user.legacy.UserImpl,
>>> redstone.xmlrpc.XmlRpcStruct]</string></value></member></struct></value></fault></methodResponse>
>>
>>
>
> Here is the output of /var/log/rhn/rhn_web_api.log
>
> [2018-07-14 00:26:34,859] INFO  - REQUESTED FROM: 10.24.128.105 CALL:
>> auth.login(rvandepoel, ********) CALLER: (rvandepoel) TIME: 0.058 seconds
>
> [2018-07-14 00:26:34,886] ERROR - REQUESTED FROM: 10.24.128.105 CALL:
>> user.create(rvandepoel, {firstName=ttttt, lastName=vvvvv,
>> desiredPassword=xxxxx at yyyyy, email=ttttt.vvvvv at ourdomain.ext,
>> desiredLogin=tvvvvv}) CALLER: (rvandepoel) TIME: 0.004 seconds
>> redstone.xmlrpc.XmlRpcFault: Could not find method: create in class:
>> com.redhat.rhn.frontend.xmlrpc.user.UserHandler with params:
>> [com.redhat.rhn.domain.user.legacy.UserImpl, redstone.xmlrpc.XmlRpcStruct]
>>         at
>> com.redhat.rhn.frontend.xmlrpc.BaseHandler.findMethods(BaseHandler.java:260)
>>         at
>> com.redhat.rhn.frontend.xmlrpc.BaseHandler.invoke(BaseHandler.java:117)
>>         at
>> redstone.xmlrpc.XmlRpcDispatcher.dispatch(XmlRpcDispatcher.java:123)
>>         at
>> com.redhat.rhn.frontend.xmlrpc.RhnXmlRpcServer.execute(RhnXmlRpcServer.java:54)
>>         at
>> com.redhat.rhn.frontend.xmlrpc.XmlRpcServlet.doPost(XmlRpcServlet.java:162)
>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
>>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>         at
>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>         at
>> com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
>>         at
>> com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>         at
>> com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:67)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>         at
>> com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:101)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>         at
>> com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:57)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>         at
>> com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:97)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
>>         at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
>>         at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
>>         at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
>>         at
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
>>         at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>>         at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>         at
>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
>>         at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
>>         at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>>         at
>> org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193)
>>         at
>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
>>         at
>> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
>>         at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>>         at
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>>         at java.lang.Thread.run(Thread.java:745)
>>
>
> Any idea why this is failing?
>
> Thanks a lot for your precious help,
> Rom;)
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/spacewalk-list/attachments/20180716/f9a79734/attachment.htm>


More information about the Spacewalk-list mailing list