Skip to content

Commit

Permalink
Replace obj_dict field in rabbitmq create message with just fq_name
Browse files Browse the repository at this point in the history
Currently, we populate the entire obj_dict in rabbitmq create and delete
messages. For create, there is no need to send the entire object. Just
fq name is sufficient because it is used by control node and schema
transformer to build their cache of uuid to fq_name mapping.

We will retain the obj_dict for delete messages because there is no way
for the clients to read the data if needed.

Also streamlined some of the internal methods to take just a uuid
instead of a dict containing a uuid.

Change-Id: If47ed704b50669569ef24d302fc805f0e233f480
Closes-Bug: 1670530
  • Loading branch information
Sachin Bansal committed Mar 9, 2017
1 parent 8343023 commit bf17d8b
Show file tree
Hide file tree
Showing 12 changed files with 193 additions and 414 deletions.
2 changes: 1 addition & 1 deletion src/config/api-server/tests/test_kombu.py
Expand Up @@ -164,7 +164,7 @@ def _publish(args):
self.username, self.password, self.vhost, 0,
False)
gevent.sleep(0)
kc.dbe_create_publish("network", [], {})
kc.dbe_create_publish("network", [], {'fq_name': ['vn1']})
_lock.wait()

# check if message is not missed out by publish error
Expand Down
57 changes: 23 additions & 34 deletions src/config/api-server/vnc_addr_mgmt.py
Expand Up @@ -527,10 +527,10 @@ def _uuid_to_obj_dict(self, req_obj_type, obj_uuid, req_fields=None):

(ok, obj_dict) = db_conn.dbe_read(
obj_type=req_obj_type,
obj_ids={'uuid':obj_uuid},
obj_id=obj_uuid,
obj_fields=req_fields)
return (ok, obj_dict)
#end _uuid_to_obj_dict
# end _uuid_to_obj_dict

def _fq_name_to_obj_dict(self, req_obj_type, fq_name, req_fields=None):
db_conn = self._get_db_conn()
Expand Down Expand Up @@ -689,12 +689,12 @@ def net_create_req(self, obj_dict):
obj_dict, should_persist=True)
# end net_create_req

def net_create_notify(self, obj_ids, obj_dict):
def net_create_notify(self, obj_id, obj_dict):
db_conn = self._get_db_conn()
try:
(ok, result) = db_conn.dbe_read(
'virtual_network',
obj_ids={'uuid': obj_ids['uuid']},
obj_id=obj_id,
obj_fields=['fq_name', 'network_ipam_refs'])
except cfgm_common.exceptions.NoIdError:
return
Expand All @@ -705,9 +705,8 @@ def net_create_notify(self, obj_ids, obj_dict):
return

vn_dict = result
vn_uuid = obj_ids['uuid']
vn_fq_name_str = ':'.join(vn_dict['fq_name'])
self._create_net_subnet_objs(vn_fq_name_str, vn_uuid, vn_dict,
self._create_net_subnet_objs(vn_fq_name_str, obj_id, vn_dict,
should_persist=False)
# end net_create_notify

Expand Down Expand Up @@ -757,12 +756,12 @@ def net_update_req(self, vn_fq_name, db_vn_dict, req_vn_dict, obj_uuid=None):
should_persist=True)
# end net_update_req

def net_update_notify(self, obj_ids):
def net_update_notify(self, obj_id):
db_conn = self._get_db_conn()
try:
(ok, result) = db_conn.dbe_read(
obj_type='virtual_network',
obj_ids={'uuid': obj_ids['uuid']},
obj_id=obj_id,
obj_fields=['fq_name', 'network_ipam_refs'])
except cfgm_common.exceptions.NoIdError:
return
Expand All @@ -774,8 +773,7 @@ def net_update_notify(self, obj_ids):

vn_dict = result
vn_fq_name_str = ':'.join(vn_dict['fq_name'])
vn_uuid = obj_ids['uuid']
self._create_net_subnet_objs(vn_fq_name_str, vn_uuid, vn_dict,
self._create_net_subnet_objs(vn_fq_name_str, obj_id, vn_dict,
should_persist=False)
# end net_update_notify

Expand All @@ -795,10 +793,9 @@ def net_delete_req(self, obj_dict):
pass
# end net_delete_req

def net_delete_notify(self, obj_ids, obj_dict):
def net_delete_notify(self, obj_id, obj_dict):
try:
vn_uuid = obj_dict['uuid']
del self._subnet_objs[vn_uuid]
del self._subnet_objs[obj_id]
except KeyError:
pass
# end net_delete_notify
Expand Down Expand Up @@ -1000,8 +997,7 @@ def _check_subnet_delete(self, subnets_set, vn_dict):
instip_refs = vn_dict.get('instance_ip_back_refs') or []
for ref in instip_refs:
try:
(ok, result) = db_conn.dbe_read(
'instance_ip', {'uuid': ref['uuid']})
(ok, result) = db_conn.dbe_read('instance_ip', ref['uuid'])
except cfgm_common.exceptions.NoIdError:
continue
if not ok:
Expand All @@ -1024,8 +1020,7 @@ def _check_subnet_delete(self, subnets_set, vn_dict):
fip_pool_refs = vn_dict.get('floating_ip_pools') or []
for ref in fip_pool_refs:
try:
(ok, result) = db_conn.dbe_read(
'floating_ip_pool', {'uuid': ref['uuid']})
(ok, result) = db_conn.dbe_read('floating_ip_pool', ref['uuid'])
except cfgm_common.exceptions.NoIdError:
continue
if not ok:
Expand All @@ -1039,7 +1034,7 @@ def _check_subnet_delete(self, subnets_set, vn_dict):
for floating_ip in floating_ips:
try:
(read_ok, read_result) = db_conn.dbe_read(
'floating_ip', {'uuid': floating_ip['uuid']})
'floating_ip', floating_ip['uuid'])
except cfgm_common.exceptions.NoIdError:
continue
if not read_ok:
Expand All @@ -1064,8 +1059,7 @@ def _check_subnet_delete(self, subnets_set, vn_dict):
aip_pool_refs = vn_dict.get('alias_ip_pools') or []
for ref in aip_pool_refs:
try:
(ok, result) = db_conn.dbe_read(
'alias_ip_pool', {'uuid': ref['uuid']})
(ok, result) = db_conn.dbe_read('alias_ip_pool', ref['uuid'])
except cfgm_common.exceptions.NoIdError:
continue
if not ok:
Expand All @@ -1081,7 +1075,7 @@ def _check_subnet_delete(self, subnets_set, vn_dict):
# new subnet_list
try:
(read_ok, read_result) = db_conn.dbe_read(
'alias_ip', {'uuid': floating_ip['uuid']})
'alias_ip', floating_ip['uuid'])
except cfgm_common.exceptions.NoIdError:
continue
if not read_ok:
Expand Down Expand Up @@ -1136,8 +1130,7 @@ def ipam_check_subnet_delete(self, db_ipam_dict, req_ipam_dict):
for ref in vn_refs:
vn_id = ref.get('uuid')
try:
(ok, read_result) = db_conn.dbe_read('virtual_network',
{'uuid':vn_id})
(ok, read_result) = db_conn.dbe_read('virtual_network', vn_id)
except cfgm_common.exceptions.NoIdError:
continue
if not ok:
Expand Down Expand Up @@ -1668,9 +1661,9 @@ def ipam_create_req(self, obj_dict):
should_persist=True)
# end ipam_create_req

def ipam_create_notify(self, obj_ids, obj_dict):
def ipam_create_notify(self, obj_id, obj_dict):
if obj_dict.get('ipam_subnet_method') == 'flat-subnet':
self._create_ipam_subnet_objs(obj_ids['uuid'], obj_dict,
self._create_ipam_subnet_objs(obj_id, obj_dict,
should_persist=False)
# end ipam_create_notify

Expand All @@ -1695,10 +1688,9 @@ def ipam_delete_req(self, obj_dict):
pass
# end ipam_delete_req

def ipam_delete_notify(self, obj_ids, obj_dict):
def ipam_delete_notify(self, obj_id, obj_dict):
try:
ipam_uuid = obj_dict['uuid']
del self._subnet_objs[ipam_uuid]
del self._subnet_objs[obj_id]
except KeyError:
pass
# end ipam_delete_notify
Expand Down Expand Up @@ -1751,12 +1743,10 @@ def ipam_update_req(self, ipam_fq_name, db_ipam_dict, req_ipam_dict,
should_persist=True)
# end ipam_update_req

def ipam_update_notify(self, obj_ids):
def ipam_update_notify(self, obj_id):
db_conn = self._get_db_conn()
try:
(ok, result) = db_conn.dbe_read(
'network_ipam',
obj_ids={'uuid': obj_ids['uuid']})
(ok, result) = db_conn.dbe_read('network_ipam', obj_id=obj_id)
except cfgm_common.exceptions.NoIdError:
return

Expand All @@ -1766,8 +1756,7 @@ def ipam_update_notify(self, obj_ids):
return

ipam_dict = result
ipam_uuid = obj_ids['uuid']
self._create_ipam_subnet_objs(ipam_uuid, ipam_dict,
self._create_ipam_subnet_objs(obj_id, ipam_dict,
should_persist=False)
# end ipam_update_notify

Expand Down

0 comments on commit bf17d8b

Please sign in to comment.