Posted on June 5, 2017 1:47 pm
 |  Asked by Daniel Ginsburg
 |  791 views
0
0
Print Friendly, PDF & Email

Hi, I’m trying to run HelloWorld.py agent straight from the tutorial on Github. I have created the mount profile as described in the tutorial:

gentName:HelloWorld.py-%sliceId

Include: EosSdk_acl.include
Include: EosSdk_agent.include
Include: EosSdk_class_map.include
Include: EosSdk_decap_group.include
Include: EosSdk_directflow.include
Include: EosSdk_eth_intf.include
Include: EosSdk_eth_lag_intf.include
Include: EosSdk_eth_phy_intf.include
Include: EosSdk_fib.include
Include: EosSdk_hardware_table.include
Include: EosSdk_intf.include
Include: EosSdk_IntfMgrHelper.include
Include: EosSdk_ip_intf.include
Include: EosSdk_ip_route.include
Include: EosSdk_lldp.include
Include: EosSdk_mac_table.include
Include: EosSdk_mlag.include
Include: EosSdk_mpls_route.include
Include: EosSdk_neighbor_table.include
Include: EosSdk_nexthop_group.include
Include: EosSdk_policy_map.include
Include: EosSdk_subintf.include
Include: EosSdk_system.include
Include: EosSdk_vrf.include
Include: EosSdk_GOpenFlow.include
Include: EosSdk_bfd_session.include

When I try to run it (whether from configuration: daemon HelloWorld.., or from the shell, it terminates with the following output

Connection from (3866) to Sysdb (pid:1708) at tbl://sysdb/+n closed by peer (EOF)
 countOfStreamAdapters=1 countOfMessagesAttemptedToRead=25 countOfMessagesDeserialized=25 countOfMessagesMissingEidPrefix=24 lastMessageMissingEidPrefix=25 countOfMessagesMissingAidPrefix=1 lastMessageMissingAidPrefix=3 countOfMessagesMissingPayloadLenPrefix=16 lastMessageMissingPayloadLenPrefix=24 countOfBytesDeserializedHeaderSize=165 countOfBytesDeserializedPayloadSize=166 countOfBytesTraversedInHandleReadable=523 flowOutMountRequests=0 inputMount::mountsInProgress=0 outputMount::mountsInProgress=0
 countOfMessagesCheckpointedCopied=25 countOfMessagesCopied=0 lastMessageCopied=0 countOfMessagesAborted=0 lastMessageAborted=0 countOfMessagesCommitted=25 lastMessageCommited=25 countOfMessagesMissingEidPrefix=24 lastMessageMissingEidPrefix=25 countOfMessagesMissingAidPrefix=1 lastMessageMissingAidPrefix=3 countOfMessagesMissingPayloadLenPrefix=16 lastMessageMissingPayloadLenPrefix=24 countOfMessagesWithDelegatedAid=0 lastMessageWithDelegatedAid=0 countOfMessagesCreatedFlowOut=1 lastMessageCreatedFlowOut=3 txBytes=527 alOutWrittenBytes=467 countOfPayloadBytesCommitted=362 countOfBytesMostRecentlySent=51 countOfCallsSendMsg=2 countOfCallsSendMsgAcrossMultipleBufferBlocks=0 lastCallSendMsgAcrossMultipleBufferBlocks=0 countOfReturnsSendMsgError=0 lastReturnSendMsgError=0 countOfReturnsSendMsgPartialMessage=0 lastReturnSendMsgPartialMessage=0 countOfCallsRecvMsg=2 countOfReturnsRecvMsgError=1 lastReturnRecvMsgError=2 countOfReturnsRecvMsgPartialMessage=0 lastReturnRecvMsgPartialMessage=0 countOfBytesMostRecentlyReceived=523
maxClockNotifTime=0 avgClockNotifTime=0.000000 maxActivitiesPerCycle=5 avgActivitiesPerCycle=0.114582 maxQueuedActivitiesPerCycle=5 avgQueuedActivitiesPerCycle=0.097020 maxIOWaitTime=0 avgIOWaitTime=0.003147 maxActivityTime=0 avgActivityTime=0.000006 maxFdsPerCycle=1 avgFdsPerCycle=0.058237 maxRemoteMountStat()->peerName= maxRemoteMountStat()->time=0.000000 maxRemoteMountStat()->mountName= avgRemoteMountTime=0.000000 mountRemoteCompleteCount=0 mountRemoteRequestCount=0 maxMountStat()->peerName= maxMountStat()->time=0.000000 maxMountStat()->mountName avgMountTime=0.000000 mountCompleteCount=0 mountRequestCount=1 maxFlowOutCount=1 totalFlowOutCount=1 currentFlowOutCount=0 avgFlowOutRunTime=0 maxFlowOutRunTime=0 activityMgrLoopCounter=12 tacElEntityRefCount=0 entityFlowOutVersionChangeCount=0
Exiting because NboAttrLog connection has closed.

Any hints?

0
Posted by Tamas Plugor
Answered on August 4, 2017 3:07 pm

Hi Daniel,

Sorry for the late reply!

When you configured the daemon and did the no shutdown, did you receive an error message like below: 

This is an EosSdk application

Full agent name is ‘HelloWorld-HelloWorld’

! Standard profile name ‘/usr/lib/SysdbMountProfiles/HelloWorld.py’ not found ?

 

If so, please try to copy the .py to that folder and see if it solves the issue. You can always open a case with TAC at support@ if you have any issues, we are more than happy to help.

Thanks,

Tamas.

 

0
Posted by Tamas Plugor
Answered on August 8, 2017 12:25 pm

Hi Daniel,

I assume you are running 4.18.x. The issue is most probably due to a parser error.

If you do a “bash sudo cat /var/log/message” you should see the following error message:

Sysdb: %FWK-3-SOCKET_CLOSE_LOCAL: Closing connection to HelloWorld-HelloWorld at tbl://sysdb/-93 (error in agent profile: /usr/lib/SysdbMountProfiles/HelloWorld.py[line 1, offset 20]: error: 5:  In agent title,  near ‘.’, Expecting end of agent title line.#012)
 

This means that the parser has some issues with the title in  /usr/lib/SysdbMountProfiles/HelloWorld.py and is expecting the end of agent title line after the dot ‘.’

If you check out the first line in the file you’ll see the following

up452…12:06:25#bash

Arista Networks EOS shell

[admin@up452 ~]$ cd /usr/lib/SysdbMountProfiles/

[admin@up452 SysdbMountProfiles]$ cat HelloWorld.py

agentName:HelloWorld.py-%sliceId

 

Here we have to delete the “.py” extension, you can edit the file with vi or nano or you can use sed as well.

After changing it you’d need to do a reboot (simplest option) or do a warmstart with 

“bash sudo nohup service ProcMgr restart &” to reinitialize the agents

 

After reconnecting to the switch and issuing ‘show daemon’ your agent should be running

up452…12:06:14#show daemon

Agent: HelloWorld (running)

No configuration options stored.

Status:

Data           Value

————– —————————

greeting       Welcome! What is your name?

 

The reason why the “.py” extension was added to that mountprofile was probably because of the Mount Profile creating script you saw on github like below:

bin=/mnt/flash/HelloWorld # <<<=== adapt this line if needed
name=$(basename $bin)
dest=/usr/lib/SysdbMountProfiles/$name
source="/usr/lib/SysdbMountProfiles/EosSdkAll"
cat $source | sed "1s/agentName[ ]*:.*/agentName:${name}-%sliceId/" > /tmp/tmp_$name
delta=$(cmp /tmp/tmp_$name $source)
if [ "$?" = "0" ]; then
  echo "Error: something is wrong"
else
  sudo mv /tmp/tmp_$name $dest
fi

I’m guessing you’ve put Helloworld.py in the first line which caused the issue.

***Note: you only have to do the warm start if you make changes to the profile, it you do it from scratch without the .py it should work without any restarts.***

Hope it helps! 

Thanks,

Tamas

0
Posted by Jon Nicholson
Answered on August 8, 2017 12:53 pm

Thanks to TAC I’ve had an answer to this, the problem appears to be with the daemon having the .py extension.

I renamed my daemon to remove the .py extension & updated the SysdbMountProfile and it’s all working now.

 

Post your Answer

You must be logged in to post an answer.