From de9813c6c596243d920a2b7552189a29fecb2fb2 Mon Sep 17 00:00:00 2001
From: Anthony Young <sleepsonthefloor@gmail.com>
Date: Tue, 24 Jan 2012 11:20:51 -0800
Subject: [PATCH] Implement virtual interfaces servers api

 * Needed for openstackx dep removal
 * No cli provided in this patch

Change-Id: I873aed9e6887018db6169fffec79fc19ffc743be
---
 novaclient/v1_1/client.py             |  3 +++
 novaclient/v1_1/virtual_interfaces.py | 33 +++++++++++++++++++++++++++
 tests/v1_1/fakes.py                   |  8 +++++++
 3 files changed, 44 insertions(+)
 create mode 100644 novaclient/v1_1/virtual_interfaces.py

diff --git a/novaclient/v1_1/client.py b/novaclient/v1_1/client.py
index f6c165aa4..90714b844 100644
--- a/novaclient/v1_1/client.py
+++ b/novaclient/v1_1/client.py
@@ -10,6 +10,7 @@ from novaclient.v1_1 import quotas
 from novaclient.v1_1 import security_group_rules
 from novaclient.v1_1 import security_groups
 from novaclient.v1_1 import servers
+from novaclient.v1_1 import virtual_interfaces
 from novaclient.v1_1 import volumes
 from novaclient.v1_1 import volume_snapshots
 from novaclient.v1_1 import zones
@@ -56,6 +57,8 @@ class Client(object):
         self.security_groups = security_groups.SecurityGroupManager(self)
         self.security_group_rules = \
             security_group_rules.SecurityGroupRuleManager(self)
+        self.virtual_interfaces = \
+            virtual_interfaces.VirtualInterfaceManager(self)
 
         # Add in any extensions...
         if extensions:
diff --git a/novaclient/v1_1/virtual_interfaces.py b/novaclient/v1_1/virtual_interfaces.py
new file mode 100644
index 000000000..64593e018
--- /dev/null
+++ b/novaclient/v1_1/virtual_interfaces.py
@@ -0,0 +1,33 @@
+# Copyright 2012 OpenStack LLC.
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+"""
+Virtual Interfaces (1.1 extension).
+"""
+
+from novaclient import base
+
+
+class VirtualInterface(base.Resource):
+    def __repr__(self):
+        pass
+
+
+class VirtualInterfaceManager(base.ManagerWithFind):
+    resource_class = VirtualInterface
+
+    def list(self, instance_id):
+        return self._list('/servers/%s/os-virtual-interfaces' % instance_id,
+                          'virtual_interfaces')
diff --git a/tests/v1_1/fakes.py b/tests/v1_1/fakes.py
index 20a1a324a..d1dc7a45d 100644
--- a/tests/v1_1/fakes.py
+++ b/tests/v1_1/fakes.py
@@ -543,6 +543,14 @@ class FakeHTTPClient(base_client.HTTPClient):
         r = {'keypair': self.get_os_keypairs()[1]['keypairs'][0]}
         return (202, r)
 
+    #
+    # Virtual Interfaces
+    #
+    def get_servers_1234_os_virtual_interfaces(self, **kw):
+        return (200, {"virtual_interfaces": [
+            {'id': 'fakeid', 'mac_address': 'fakemac'}
+        ]})
+
     #
     # Quotas
     #