From e38be71ca44039b5f9fe603db99499f0aed4e15c Mon Sep 17 00:00:00 2001
From: Vladik Romanovsky <vromanso@redhat.com>
Date: Wed, 27 Apr 2016 10:28:54 -0400
Subject: [PATCH] objects: adding an update method to virtual_interface

Adding a save method to the virtual_interface object
and an update method to its database model.

Partially implements blueprint virt-device-role-tagging
Co-authored-by: Artom Lifshitz <alifshit@redhat.com>
Change-Id: I52673fc297cb578995be5c7a075c5693b0793bf5
---
 nova/db/api.py            | 5 +++++
 nova/db/sqlalchemy/api.py | 9 +++++++++
 2 files changed, 14 insertions(+)

diff --git a/nova/db/api.py b/nova/db/api.py
index 805189cfe..a120b069d 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -636,6 +636,11 @@ def virtual_interface_create(context, values):
     return IMPL.virtual_interface_create(context, values)
 
 
+def virtual_interface_update(context, address, values):
+    """Create a virtual interface record in the database."""
+    return IMPL.virtual_interface_update(context, address, values)
+
+
 def virtual_interface_get(context, vif_id):
     """Gets a virtual interface from the table."""
     return IMPL.virtual_interface_get(context, vif_id)
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 132847ae3..08ff0e154 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -1530,6 +1530,15 @@ def _virtual_interface_query(context):
     return model_query(context, models.VirtualInterface, read_deleted="no")
 
 
+@require_context
+@pick_context_manager_writer
+def virtual_interface_update(context, address, values):
+    vif_ref = virtual_interface_get_by_address(context, address)
+    vif_ref.update(values)
+    vif_ref.save(context.session)
+    return vif_ref
+
+
 @require_context
 @pick_context_manager_reader
 def virtual_interface_get(context, vif_id):