Re: [openstack-dev] [Neutron LBaaS] Need help with LBaaS drivers

2014-04-02 Thread Oleg Bondarev
Hi Vijay,

Currently you may follow two ways in writing an LBaaS driver:
1) write it from scratch (like Radware, Netscaler, Embrane drivers) -
in this case your driver should inherit
abstract_driver.LoadBalancerAbstractDriver
and
will be running on Neutron service process, LBaaS agent won't be used.
So you should restart not q-lbaas but q-svc process in order for new
driver to be used and it should work with the steps you've described.

2) leverage
neutron/services/loadbalancer/drivers/common/agent_drive_base.py framework
and in fact write only device driver which inheritits

neutron.services.loadbalancer.agent.agent_device_driver.AgentDeviceDriver.
This is how HAProxy driver is implemented, please see
neutron/services/loadbalancer/drivers/haproxy/plugin_driver.py
and namespace_driver.py (this is device driver).
Along with updating service_provider in neutron.conf you should also
add your device driver to lbaas_agent.ini file (again please check how it
is done for haproxy)
In this case your driver will be running on LBaaS agent and you should
restart both q-svc and q-lbaas.

Generally, the second approach is preferable as it's better scalable and
provides you a built-in async mechanism.

Thanks,
Oleg


On Wed, Apr 2, 2014 at 5:44 AM, Vijay B os.v...@gmail.com wrote:

 Hi,


 I'm trying to understand how LBaaS drivers work and so am attempting to
 write a dummy driver that does nothing for now, but instead of loading my
 dummy driver, neutron always loads the HAProxy namespace driver. These are
 the steps I followed:


 1) I created a new directory neutron/services/loadbalancer/drivers/dummy/,
 and in that directory I put in a new file dummy_driver.py, which
 basically has a class class
 DummyPluginDriver(abstract_driver.LoadBalancerAbstractDriver):

 and has empty __init__(), create_vip(), delete_vip() etc functions.


 2) I'm testing using a devstack setup, so I also edited the
 /etc/neutron/neutron.conf file, commenting out the default loadbalancer
 driver entry for HAProxy, and added a line for my dummy driver as follows:



 service_provider=LOADBALANCER:Dummy:neutron.services.loadbalancer.drivers.dummy.dummy_driver.DummyPluginDriver:default



 3) I created a /etc/neutron/services/loadbalancer/dummy/lbaas_agent.ini
 directory/file

 I simply copied over the haproxy's lbaas_agent.ini file and changed
 [haproxy] to [dummy]

 and then I restarted the q-lbaas service using cd /opt/stack/neutron 
 python /usr/local/bin/neutron-lbaas-agent --config-file
 /etc/neutron/neutron.conf
 --config-file=/etc/neutron/services/loadbalancer/dummy/lbaas_agent.ini



 However, I see that the default HAProxyNS driver is still being loaded

 When I put a breakpoint in loadbalancer/agent/agent_manager.py:86, I see
 this (relevant text marked in red):



 2014-03-31 13:47:16.998 DEBUG neutron.common.utils [-] Reloading cached
 file /etc/neutron/policy.json from (pid=28405) read_cached_file
 /opt/stack/neutron/neutron/common/utils.py:53

 2014-03-31 13:47:16.998 DEBUG neutron.policy [-] Loading policies from
 file: /etc/neutron/policy.json from (pid=28405) _set_rules
 /opt/stack/neutron/neutron/policy.py:89

 
 /opt/stack/neutron/neutron/services/loadbalancer/agent/agent_manager.py(86)_load_drivers()

 - self.device_drivers = {}

 (Pdb) l

  81 # pool_id-device_driver_name mapping used to store known
 instances

  82 self.instance_mapping = {}

  83

  84 def _load_drivers(self):

  85 import pdb; pdb.set_trace()

  86  - self.device_drivers = {}

  87 for driver in self.conf.device_driver:

  88 try:

  89 driver_inst = importutils.import_object(

  90 driver,

  91 self.conf,

 (Pdb) self.conf.device_driver


 ['neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver']

 (Pdb)


 I'm not sure what I'm doing wrong - am I missing something that needs to
 be done within the dummy driver itself? (in dummy_driver.py?). Should I
 register some opts or similar?


 Any help would be much appreciated!



 Thanks,

 Regards,

 Vijay

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Neutron LBaaS] Need help with LBaaS drivers

2014-04-02 Thread Vijay B
Hi VijayV, Oleg!

Thanks for the pointers! It turns out I had to put in an __init__.py in the
dummy/ directory, else the driver wouldn't get loaded. Now I see newer
issues, and am trying to fix those. I'll ping back on how that goes and if
I have any questions..

Cheers!
Regards,
Vijay


On Wed, Apr 2, 2014 at 1:34 AM, Oleg Bondarev obonda...@mirantis.comwrote:

 Hi Vijay,

 Currently you may follow two ways in writing an LBaaS driver:
 1) write it from scratch (like Radware, Netscaler, Embrane drivers) -
 in this case your driver should inherit 
 abstract_driver.LoadBalancerAbstractDriver
 and
 will be running on Neutron service process, LBaaS agent won't be used.
 So you should restart not q-lbaas but q-svc process in order for new
 driver to be used and it should work with the steps you've described.

 2) leverage
 neutron/services/loadbalancer/drivers/common/agent_drive_base.py framework
 and in fact write only device driver which inheritits

 neutron.services.loadbalancer.agent.agent_device_driver.AgentDeviceDriver.
 This is how HAProxy driver is implemented, please see
 neutron/services/loadbalancer/drivers/haproxy/plugin_driver.py
 and namespace_driver.py (this is device driver).
 Along with updating service_provider in neutron.conf you should also
 add your device driver to lbaas_agent.ini file (again please check how it
 is done for haproxy)
 In this case your driver will be running on LBaaS agent and you should
 restart both q-svc and q-lbaas.

 Generally, the second approach is preferable as it's better scalable and
 provides you a built-in async mechanism.

 Thanks,
 Oleg


 On Wed, Apr 2, 2014 at 5:44 AM, Vijay B os.v...@gmail.com wrote:

 Hi,


 I'm trying to understand how LBaaS drivers work and so am attempting to
 write a dummy driver that does nothing for now, but instead of loading my
 dummy driver, neutron always loads the HAProxy namespace driver. These are
 the steps I followed:


 1) I created a new directory
 neutron/services/loadbalancer/drivers/dummy/, and in that directory I
 put in a new file dummy_driver.py, which basically has a class class
 DummyPluginDriver(abstract_driver.LoadBalancerAbstractDriver):

 and has empty __init__(), create_vip(), delete_vip() etc functions.


 2) I'm testing using a devstack setup, so I also edited the
 /etc/neutron/neutron.conf file, commenting out the default loadbalancer
 driver entry for HAProxy, and added a line for my dummy driver as follows:



 service_provider=LOADBALANCER:Dummy:neutron.services.loadbalancer.drivers.dummy.dummy_driver.DummyPluginDriver:default



 3) I created a /etc/neutron/services/loadbalancer/dummy/lbaas_agent.ini
 directory/file

 I simply copied over the haproxy's lbaas_agent.ini file and changed
 [haproxy] to [dummy]

 and then I restarted the q-lbaas service using cd /opt/stack/neutron 
 python /usr/local/bin/neutron-lbaas-agent --config-file
 /etc/neutron/neutron.conf
 --config-file=/etc/neutron/services/loadbalancer/dummy/lbaas_agent.ini



 However, I see that the default HAProxyNS driver is still being loaded

 When I put a breakpoint in loadbalancer/agent/agent_manager.py:86, I see
 this (relevant text marked in red):



 2014-03-31 13:47:16.998 DEBUG neutron.common.utils [-] Reloading cached
 file /etc/neutron/policy.json from (pid=28405) read_cached_file
 /opt/stack/neutron/neutron/common/utils.py:53

 2014-03-31 13:47:16.998 DEBUG neutron.policy [-] Loading policies from
 file: /etc/neutron/policy.json from (pid=28405) _set_rules
 /opt/stack/neutron/neutron/policy.py:89

 
 /opt/stack/neutron/neutron/services/loadbalancer/agent/agent_manager.py(86)_load_drivers()

 - self.device_drivers = {}

 (Pdb) l

  81 # pool_id-device_driver_name mapping used to store known
 instances

  82 self.instance_mapping = {}

  83

  84 def _load_drivers(self):

  85 import pdb; pdb.set_trace()

  86  - self.device_drivers = {}

  87 for driver in self.conf.device_driver:

  88 try:

  89 driver_inst = importutils.import_object(

  90 driver,

  91 self.conf,

 (Pdb) self.conf.device_driver


 ['neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver']

 (Pdb)


 I'm not sure what I'm doing wrong - am I missing something that needs to
 be done within the dummy driver itself? (in dummy_driver.py?). Should I
 register some opts or similar?


 Any help would be much appreciated!



  Thanks,

 Regards,

 Vijay

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev



 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org
 http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


___
OpenStack-dev 

[openstack-dev] [Neutron LBaaS] Need help with LBaaS drivers

2014-04-01 Thread Vijay B
Hi,


I'm trying to understand how LBaaS drivers work and so am attempting to
write a dummy driver that does nothing for now, but instead of loading my
dummy driver, neutron always loads the HAProxy namespace driver. These are
the steps I followed:


1) I created a new directory neutron/services/loadbalancer/drivers/dummy/,
and in that directory I put in a new file dummy_driver.py, which basically
has a class class
DummyPluginDriver(abstract_driver.LoadBalancerAbstractDriver):

and has empty __init__(), create_vip(), delete_vip() etc functions.


2) I'm testing using a devstack setup, so I also edited the
/etc/neutron/neutron.conf file, commenting out the default loadbalancer
driver entry for HAProxy, and added a line for my dummy driver as follows:


service_provider=LOADBALANCER:Dummy:neutron.services.loadbalancer.drivers.dummy.dummy_driver.DummyPluginDriver:default



3) I created a /etc/neutron/services/loadbalancer/dummy/lbaas_agent.ini
directory/file

I simply copied over the haproxy's lbaas_agent.ini file and changed
[haproxy] to [dummy]

and then I restarted the q-lbaas service using cd /opt/stack/neutron 
python /usr/local/bin/neutron-lbaas-agent --config-file
/etc/neutron/neutron.conf
--config-file=/etc/neutron/services/loadbalancer/dummy/lbaas_agent.ini



However, I see that the default HAProxyNS driver is still being loaded

When I put a breakpoint in loadbalancer/agent/agent_manager.py:86, I see
this (relevant text marked in red):



2014-03-31 13:47:16.998 DEBUG neutron.common.utils [-] Reloading cached
file /etc/neutron/policy.json from (pid=28405) read_cached_file
/opt/stack/neutron/neutron/common/utils.py:53

2014-03-31 13:47:16.998 DEBUG neutron.policy [-] Loading policies from
file: /etc/neutron/policy.json from (pid=28405) _set_rules
/opt/stack/neutron/neutron/policy.py:89


/opt/stack/neutron/neutron/services/loadbalancer/agent/agent_manager.py(86)_load_drivers()

- self.device_drivers = {}

(Pdb) l

 81 # pool_id-device_driver_name mapping used to store known
instances

 82 self.instance_mapping = {}

 83

 84 def _load_drivers(self):

 85 import pdb; pdb.set_trace()

 86  - self.device_drivers = {}

 87 for driver in self.conf.device_driver:

 88 try:

 89 driver_inst = importutils.import_object(

 90 driver,

 91 self.conf,

(Pdb) self.conf.device_driver

['neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver']

(Pdb)


I'm not sure what I'm doing wrong - am I missing something that needs to be
done within the dummy driver itself? (in dummy_driver.py?). Should I
register some opts or similar?


Any help would be much appreciated!



Thanks,

Regards,

Vijay
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Neutron LBaaS] Need help with LBaaS drivers

2014-04-01 Thread Vijay Venkatachalam

Answered Inline!

From: Vijay B [mailto:os.v...@gmail.com]
Sent: Wednesday, April 2, 2014 7:14 AM
To: OpenStack Development Mailing List (not for usage questions)
Subject: [openstack-dev] [Neutron LBaaS] Need help with LBaaS drivers


Hi,



I'm trying to understand how LBaaS drivers work and so am attempting to write a 
dummy driver that does nothing for now, but instead of loading my dummy driver, 
neutron always loads the HAProxy namespace driver. These are the steps I 
followed:



1) I created a new directory neutron/services/loadbalancer/drivers/dummy/, and 
in that directory I put in a new file dummy_driver.py, which basically has a 
class class DummyPluginDriver(abstract_driver.   ):

and has empty __init__(), create_vip(), delete_vip() etc functions.



 Fine



2) I'm testing using a devstack setup, so I also edited the 
/etc/neutron/neutron.conf file, commenting out the default loadbalancer driver 
entry for HAProxy, and added a line for my dummy driver as follows:



service_provider=LOADBALANCER:Dummy:neutron.services.loadbalancer.drivers.dummy.dummy_driver.DummyPluginDriver:default

 Fine. You should see you driver getting loaded when the neutron service is 
 started.



3) I created a /etc/neutron/services/loadbalancer/dummy/lbaas_agent.ini 
directory/file

I simply copied over the haproxy's lbaas_agent.ini file and changed [haproxy] 
to [dummy]

and then I restarted the q-lbaas service using cd /opt/stack/neutron  python 
/usr/local/bin/neutron-lbaas-agent --config-file /etc/neutron/neutron.conf 
--config-file=/etc/neutron/services/loadbalancer/dummy/lbaas_agent.ini



  You have to do this only if you are planning on an Agent for your driver.



 If you plan to run an agent, create a device_driver entry in the .ini file.



 Like 
 device_driver=neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver



However, I see that the default HAProxyNS driver is still being loaded

When I put a breakpoint in loadbalancer/agent/agent_manager.py:86, I see this 
(relevant text marked in red):





2014-03-31 13:47:16.998 DEBUG neutron.common.utils [-] Reloading cached file 
/etc/neutron/policy.json from (pid=28405) read_cached_file 
/opt/stack/neutron/neutron/common/utils.py:53

2014-03-31 13:47:16.998 DEBUG neutron.policy [-] Loading policies from file: 
/etc/neutron/policy.json from (pid=28405) _set_rules 
/opt/stack/neutron/neutron/policy.py:89

 /opt/stack/neutron/neutron/services/loadbalancer/agent/agent_manager.py(86)_load_drivers()

- self.device_drivers = {}

(Pdb) l

 81 # pool_id-device_driver_name mapping used to store known 
instances

 82 self.instance_mapping = {}

 83

 84 def _load_drivers(self):

 85 import pdb; pdb.set_trace()

 86  - self.device_drivers = {}

 87 for driver in self.conf.device_driver:

 88 try:

 89 driver_inst = importutils.import_object(

 90 driver,

 91 self.conf,

(Pdb) self.conf.device_driver

['neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver']

(Pdb)


 HaproxyNSDriver is default entry. You could check in 
 ./neutron/neutron/services/loadbalancer/agent/agent_manager.py



I'm not sure what I'm doing wrong - am I missing something that needs to be 
done within the dummy driver itself? (in dummy_driver.py?). Should I register 
some opts or similar?



Any help would be much appreciated!





Thanks,

Regards,

Vijay
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev