Add tests of fixed_ips in the attach interfaces nova API

The attach interfaces API of nova does not specify port_id or
fixed_ips in tempests.
So, need to check these behavior in tempests.

This patch include test case of fixed_ips.

Change-Id: I88e1960a5706b00d37e79ce93cb86a62420ae0fa
Closes-bug: #1525813
diff --git a/tempest/api/compute/servers/test_attach_interfaces.py b/tempest/api/compute/servers/test_attach_interfaces.py
index 4fb4e9a..8201363 100644
--- a/tempest/api/compute/servers/test_attach_interfaces.py
+++ b/tempest/api/compute/servers/test_attach_interfaces.py
@@ -13,6 +13,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import netaddr
 import time
 
 from tempest.api.compute import base
@@ -44,6 +45,8 @@
     def setup_clients(cls):
         super(AttachInterfacesTestJSON, cls).setup_clients()
         cls.client = cls.os.interfaces_client
+        cls.networks_client = cls.os.networks_client
+        cls.subnets_client = cls.os.subnets_client
         cls.ports_client = cls.os.ports_client
 
     def wait_for_interface_status(self, server, port_id, status):
@@ -120,6 +123,22 @@
         self._check_interface(iface, port_id=port_id)
         return iface
 
+    def _test_create_interface_by_fixed_ips(self, server, ifs):
+        network_id = ifs[0]['net_id']
+        ip_list = [
+            ifs[n]['fixed_ips'][0]['ip_address'] for n in range(0, len(ifs))]
+        ip = str(netaddr.IPAddress(sorted(ip_list)[-1]) + 1)
+
+        fixed_ips = [{'ip_address': ip}]
+        iface = self.client.create_interface(
+            server['id'], net_id=network_id,
+            fixed_ips=fixed_ips)['interfaceAttachment']
+        self.addCleanup(self.ports_client.delete_port, iface['port_id'])
+        iface = self.wait_for_interface_status(
+            server['id'], iface['port_id'], 'ACTIVE')
+        self._check_interface(iface, fixed_ip=ip)
+        return iface
+
     def _test_show_interface(self, server, ifs):
         iface = ifs[0]
         _iface = self.client.show_interface(
@@ -182,6 +201,9 @@
         iface = self._test_create_interface_by_port_id(server, ifs)
         ifs.append(iface)
 
+        iface = self._test_create_interface_by_fixed_ips(server, ifs)
+        ifs.append(iface)
+
         _ifs = (self.client.list_interfaces(server['id'])
                 ['interfaceAttachments'])
         self._compare_iface_list(ifs, _ifs)