diff --git a/vmware_nsx/extensions/routersize.py b/vmware_nsx/extensions/routersize.py index 6ede0e0f17..2a3be102ea 100644 --- a/vmware_nsx/extensions/routersize.py +++ b/vmware_nsx/extensions/routersize.py @@ -20,7 +20,7 @@ ROUTER_SIZE = 'router_size' VALID_EDGE_SIZES = ['compact', 'large', 'xlarge', 'quadlarge'] EXTENDED_ATTRIBUTES_2_0 = { 'routers': { - ROUTER_SIZE: {'allow_post': True, 'allow_put': False, + ROUTER_SIZE: {'allow_post': True, 'allow_put': True, 'validate': {'type:values': VALID_EDGE_SIZES}, 'default': constants.ATTR_NOT_SPECIFIED, 'is_visible': True}, diff --git a/vmware_nsx/plugins/nsx_v/drivers/exclusive_router_driver.py b/vmware_nsx/plugins/nsx_v/drivers/exclusive_router_driver.py index 40a834d10e..fccf4c8cc0 100644 --- a/vmware_nsx/plugins/nsx_v/drivers/exclusive_router_driver.py +++ b/vmware_nsx/plugins/nsx_v/drivers/exclusive_router_driver.py @@ -67,6 +67,16 @@ class RouterExclusiveDriver(router_driver.RouterBaseDriver): context, router_id, self.get_type(), r['admin_state_up']) if 'name' in r: self.edge_manager.rename_lrouter(context, router_id, r['name']) + if r.get('router_size'): + edge_id = edge_utils.get_router_edge_id(context, router_id) + with locking.LockManager.get_lock(edge_id): + edge_cfg = self.vcns.get_edge(edge_id)[1] + if edge_cfg.get('appliances'): + edge_cfg['appliances']['applianceSize'] = r['router_size'] + self.vcns.update_edge(edge_id, edge_cfg, async=False) + nsxv_db.update_nsxv_router_binding( + context.session, router_id, + appliance_size=r['router_size']) return self.plugin.get_router(context, router_id) def detach_router(self, context, router_id, router):