On Mar 11, 2015, at 12:27 AM, yatin kumbhare wrote:

Hi Ajay,

Good to know about two different context for Api-Server.

For a flow:
global_vrouter_configs_http_post() -> dbe_create()-> dbe_create_publish()
-> cfgm_common/vnc_kombu.py publish()  -> _publisher() -> publishes to producer 
(kombu.Producer) on fanout exchange -> self._consumer consumes it and execute 
callback function _subscribe -> then call back function
_dbe_subscribe_callback()-> _dbe_create_notification() -> _publish_update() -> 
_publish_to_ifmap() -> call_async_result() of cfgm_common/ifmap/client.py

The asynchronous flow will start from _consumer.

yes


On all config nodes, all API-servers (in HA/scaleout deployment), all the local 
Ifmap servers should have same data because of asynchronous context ?
yes. ifmap server runs standalone mode and local api-server pushes config info 
to it. so in effect all ifmap servers will have same info without them(ifmap 
servers) knowing there are 'n' instances.


the xml data <ifmap:publish> printed out in first mail, would be high-level 
data?
both the high-level (user-produced - e.g. neutron/webui via REST) and low-level 
(system-produced - e.g schema-transfomer,svc-monitor via REST) objects are 
populated in ifmap-server. ifmap-view shows all the info in ifmap server.

thanks
ajay

and what we see with schema_transformer/ifmap_view.py is low-level data?

Regards,
Yatin

On Wed, Mar 11, 2015 at 7:38 AM, Hampapur Ajay 
<[email protected]<mailto:[email protected]>> wrote:
Hi Yatin,

API-server has 2 contexts - a synchronous one (that receives a REST request, 
stores in DB, sends notification on rabbit and returns) and an asynchronous 
one(receives notification from rabbit, sends message to be sent to ifmap and 
returns). This is so that all API-servers (in HA/scaleout deployment) end up 
running same code in asynchronous context to populate their local ifmap.

The code that handles notifications from rabbit is at
https://github.com/Juniper/contrail-controller/blob/master/src/config/api-server/vnc_cfg_ifmap.py#L929

if you haven't already gone through
https://github.com/Juniper/contrail-controller/wiki/OpenContrail-Internal-Services
might be useful.

Thanks
ajay
On Mar 10, 2015, at 5:20 AM, yatin kumbhare wrote:

Hello Folks,

I'm trying to understand vnc_cfg_api_server code.

Api-server publish data to if-map server over http connection.

<ifmap:publish session-id="428807018-796627615-267532699-1939915597" ><update 
lifetime="forever" ><identity name="contrail:project:default-domain:demo" 
type="other" other-type-definition="extended" /><identity 
name="contrail:network-ipam:default-domain:demo:fake-ipam" type="other" 
other-type-definition="extended" /><metadata><contrail:project-network-ipam 
ifmap-cardinality="singleValue" 
></contrail:project-network-ipam></metadata></update></ifmap:publish>

Rabbitmq does create exchange/queue:
vnc_config.object-update / vnc_config.billy-8082

and publish data:
{'oper': 'CREATE', 'imid': 
'contrail:network-ipam:default-domain:demo:fake-ipam', 'uuid': 
'79e15bc3-6ed8-4572-95c0-9935c0cfddf9', 'parent_imid': 
'contrail:project:default-domain:demo', 'request-id': 
'req-d3b39091-12fa-4e6c-a840-8a0e29429645', 'type': 'network-ipam', 'obj_dict': 
{'fq_name': ['default-domain', 'demo', 'fake-ipam'], 'parent_uuid': 
'e90dbf97-6d78-4dad-bbb6-dbfa3385b2c8', 'ipam_method': None, 'parent_type': 
'project', 'network_ipam_mgmt': {'ipam_dns_method': 'default-dns-server', 
'ipam_dns_server': {'tenant_dns_server_address': {}, 'virtual_dns_server_name': 
None}}, 'id_perms': {u'enable': True, u'uuid': {'uuid_mslong': 
8782401643285595506L, 'uuid_lslong': 10790793163326873081L}, u'creator': None, 
u'created': '2015-03-10T11:15:36.873492', u'user_visible': True, 
u'last_modified': '2015-03-10T11:15:36.873492', u'permissions': {u'owner': 
u'cloud-admin', u'owner_access': 7, u'other_access': 7, u'group': 'admin', 
u'group_access': 7}, u'description': None}, 'display_name': 'fake-ipam', 
'virtual_DNS_refs': [], 'uuid': '79e15bc3-6ed8-4572-95c0-9935c0cfddf9'}}

I'm unable to locate the code, which is consumer for this rabbit message.

Can somebody please explain, the role of rabbitmq in config-node and reference 
to code?

Regards,
Yatin
_______________________________________________
Dev mailing list
[email protected]<mailto:[email protected]>
http://lists.opencontrail.org/mailman/listinfo/dev_lists.opencontrail.org



_______________________________________________
Dev mailing list
[email protected]
http://lists.opencontrail.org/mailman/listinfo/dev_lists.opencontrail.org

Reply via email to