I don't know anything about pytutorial (it's not one of the mainlin NOX 
components), so I don't really know what to make of that.

You tried implementing getInterface() like below on your my_router class?
def getInterface (self):
  return str(my_router)

And the results were the same?

This is unrelated, but you also seem to be using a version of NOX that's over a 
year old.  The destiny branch in particular has many bug fixes.

-- Murphy

On Oct 10, 2011, at 7:40 PM, hzy wrote:

> Hi murphy:
> 
> Thank you for your reply, but I have added these codes in my component.
> This time I tried to invoke component pytutorial, so that you can get more 
> information in your computer. 
> 
> So I add following codes in discovery component.
> self._pytutorial = self.resolve("nox.coreapps.tutorial.pytutorial.pyturorial")
> print self._pytutorial.mac_to_port
> 
> 00478|pyrt|ERR:unable to invoke a Python event handler:
> Traceback (most recent call last):
>   File "./nox/lib/util.py", line 116, in f
>     event.total_len, buffer_id, packet)
>   File "./nox/netapps/discovery/discovery.py", line 166, in <lambda>
>     discovery.lldp_input_handler(self,dp,inport,reason,len,bid,packet),
>   File "./nox/netapps/discovery/discovery.py", line 316, in lldp_input_handler
>     print self._pytutorial.mac_to_port
> AttributeError: 'NoneType' object has no attribute 'mac_to_port'
> 
> I was confused.
> 
> In other hand, I accept your advise to handle discovery's Link_even. Since I 
> am a newbie, can you give me some advice how to deal with Link_event in my 
> component?
> 
> Best regards.
> 
> hzy
> 
> 2011/10/10 Murphy McCauley <jam...@nau.edu>
> Whoops.  I meant:
> 
> def getInterface (self):
>   return str(my_router)
> 
> Sorry about that!
> 
> -- Murphy
> 
> 
> On Oct 10, 2011, at 7:51 AM, Murphy McCauley wrote:
> 
>> So first off, maybe you have a reason, but in general, the hope is that you 
>> should have no reason to modify discovery.py.  Rather than modify 
>> discovery.py to explicitly call your component, hopefully you should be able 
>> to simply handle discovery's Link_event.
>> 
>> If you really do need to modify discovery.py to call your component 
>> explicitly, then as for why your code doesn't work, I don't think I have 
>> enough information to say.  Assuming that your paths are right (you have a 
>> directory/package called my_experiment) and that in my_router.py you have a 
>> class/component called my_router... my best guess is that you didn't 
>> implement getInterface() in my_router in the expected way.  Try adding the 
>> following to your my_router class:
>> 
>> def getInterface (self):
>>   return my_router
>> 
>> Hope that helps.
>> 
>> -- Murphy
>> 
>> On Oct 10, 2011, at 6:45 AM, hzy wrote:
>> 
>>> hi murpy:
>>> Thank you for your reply. it works now, but another problem comes up.
>>> This time I want the discovery component invoke the dic_all_path defined in 
>>> my modle.
>>> 
>>> So I add following codes in discovery component
>>> self._my_router = 
>>> self.resolve("nox.coreapps.my_experiment.my_router.my_router")
>>> print self._my_router.dic_all_path
>>> 
>>> I also tried these codes
>>> from nox.coreapps.my_experiment import my_router
>>> self._my_router = self.resolve(my_router.my_router
>>> print self._my_router.dic_all_path
>>> 
>>> 00206|pyrt|ERR:unable to invoke a Python event handler:
>>> Traceback (most recent call last):
>>>   File "./nox/lib/util.py", line 116, in f
>>>     event.total_len, buffer_id, packet)
>>>   File "./nox/netapps/discovery/discovery.py", line 163, in <lambda>
>>>     discovery.lldp_input_handler(self,dp,inport,reason,len,bid,packet),
>>>   File "./nox/netapps/discovery/discovery.py", line 312, in 
>>> lldp_input_handler
>>>     print self._my_router.dic_all_path
>>> AttributeError: 'NoneType' object has no attribute 'dic_all_path'
>>> 
>>> any ideas.
>>> best regards.
>>> 
>>> hzy
>>> 
>>> 
>>> 2011/10/9 Murphy McCauley <jam...@nau.edu>
>>> So, the discovery component is a class named "discovery" in a module named 
>>> "discovery" in a package named "discovery".  So it's... 
>>> discovery.discovery.discovery.  You've only got discovery.discovery.  I can 
>>> see how it's a bit confusing. :)
>>> 
>>> So try the following instead:
>>> self._discovery = self.resolve(discovery.discovery)
>>> 
>>> Or alternatively, do:
>>> self._discovery = self.resolve("nox.netapps.discovery.discovery.discovery")
>>> (In this case, you don't even need the import statement)
>>> 
>>> -- Murphy
>>> 
>>> On Oct 9, 2011, at 1:21 AM, hzy wrote:
>>> 
>>> > hi all:
>>> >
>>> > Inorder to find interconnected links in my topology, i would like to use 
>>> > discovery.py.
>>> > In my own component I want to check the adjacency_list which is a public 
>>> > attribute in discovery module.
>>> > How can I use discovery from my component.
>>> >
>>> > I add the following codes, but it doesn't work.
>>> >
>>> > from nox.netapps.discovery import discovery
>>> > self._discovery = self.resolve(discovery)
>>> > print self._discovery.adjacency_list
>>> >
>>> > File "./nox/coreapps/my_experiment/my_router.py", line 499, in 
>>> > datapath_join_callback
>>> >     print self._discovery.adjacency_list
>>> > AttributeError: 'NoneType' object has no attribute 'adjacency_list'
>>> >
>>> > any ideas?
>>> > thanks for advance.
>>> > best regards
>>> >
>>> > hzy
>>> > _______________________________________________
>>> > nox-dev mailing list
>>> > nox-dev@noxrepo.org
>>> > http://noxrepo.org/mailman/listinfo/nox-dev
>>> 
>>> 
>> 
> 
> 

_______________________________________________
nox-dev mailing list
nox-dev@noxrepo.org
http://noxrepo.org/mailman/listinfo/nox-dev

Reply via email to