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