diff --git a/nova/db/api.py b/nova/db/api.py index 67d8e7618..4acff8a99 100644 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -785,9 +785,12 @@ def network_delete_safe(context, network_id): return IMPL.network_delete_safe(context, network_id) -def network_disassociate(context, network_id): - """Disassociate the network from project or raise if it does not exist.""" - return IMPL.network_disassociate(context, network_id) +def network_disassociate(context, network_id, disassociate_host=True, + disassociate_project=True): + """Disassociate the network from project or host and raise if it does + not exist.""" + return IMPL.network_disassociate(context, network_id, disassociate_host, + disassociate_project) def network_get(context, network_id, project_only="allow_none"): diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 29c40bb69..ec85ddcef 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -2135,9 +2135,14 @@ def network_delete_safe(context, network_id): @require_admin_context -def network_disassociate(context, network_id): - network_update(context, network_id, {'project_id': None, - 'host': None}) +def network_disassociate(context, network_id, disassociate_host, + disassociate_project): + net_update = {} + if disassociate_project: + net_update['project_id'] = None + if disassociate_host: + net_update['host'] = None + network_update(context, network_id, net_update) @require_context