Use interfaces_client from tempest-lib

The files below have been migrated to tempest-lib

 * interfaces_client.py: I758cf64ba1e6f760a60ed253cb9a8c9bc75ba73b
 * interfaces.py: I758cf64ba1e6f760a60ed253cb9a8c9bc75ba73b
 * test_interfaces_client.py: I758cf64ba1e6f760a60ed253cb9a8c9bc75ba73b

Now Tempest-lib provides those as stable interfaces. So Tempest should
start using those from lib and remove its own copy.

Change-Id: I0d488b89f4f75df55fb7490771d7cb8766ec275e
diff --git a/tempest/api_schema/response/compute/v2_1/interfaces.py b/tempest/api_schema/response/compute/v2_1/interfaces.py
deleted file mode 100644
index 130775b..0000000
--- a/tempest/api_schema/response/compute/v2_1/interfaces.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 2014 NEC Corporation.  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.
-
-from tempest.api_schema.response.compute.v2_1 import parameter_types
-
-interface_common_info = {
-    'type': 'object',
-    'properties': {
-        'port_state': {'type': 'string'},
-        'fixed_ips': {
-            'type': 'array',
-            'items': {
-                'type': 'object',
-                'properties': {
-                    'subnet_id': {
-                        'type': 'string',
-                        'format': 'uuid'
-                    },
-                    'ip_address': parameter_types.ip_address
-                },
-                'additionalProperties': False,
-                'required': ['subnet_id', 'ip_address']
-            }
-        },
-        'port_id': {'type': 'string', 'format': 'uuid'},
-        'net_id': {'type': 'string', 'format': 'uuid'},
-        'mac_addr': parameter_types.mac_address
-    },
-    'additionalProperties': False,
-    'required': ['port_state', 'fixed_ips', 'port_id', 'net_id', 'mac_addr']
-}
-
-get_create_interfaces = {
-    'status_code': [200],
-    'response_body': {
-        'type': 'object',
-        'properties': {
-            'interfaceAttachment': interface_common_info
-        },
-        'additionalProperties': False,
-        'required': ['interfaceAttachment']
-    }
-}
-
-list_interfaces = {
-    'status_code': [200],
-    'response_body': {
-        'type': 'object',
-        'properties': {
-            'interfaceAttachments': {
-                'type': 'array',
-                'items': interface_common_info
-            }
-        },
-        'additionalProperties': False,
-        'required': ['interfaceAttachments']
-    }
-}
-
-delete_interface = {
-    'status_code': [202]
-}
diff --git a/tempest/clients.py b/tempest/clients.py
index 2566d79..101e12d 100644
--- a/tempest/clients.py
+++ b/tempest/clients.py
@@ -38,6 +38,7 @@
 from tempest_lib.services.compute.images_client import ImagesClient
 from tempest_lib.services.compute.instance_usage_audit_log_client import \
     InstanceUsagesAuditLogClient
+from tempest_lib.services.compute.interfaces_client import InterfacesClient
 from tempest_lib.services.compute.limits_client import LimitsClient
 from tempest_lib.services.compute.migrations_client import MigrationsClient
 from tempest_lib.services.compute.networks_client import NetworksClient \
@@ -69,8 +70,6 @@
 from tempest.services import botoclients
 from tempest.services.compute.json.floating_ips_client import \
     FloatingIPsClient as ComputeFloatingIPsClient
-from tempest.services.compute.json.interfaces_client import \
-    InterfacesClient
 from tempest.services.compute.json.keypairs_client import KeyPairsClient
 from tempest.services.compute.json.security_group_rules_client import \
     SecurityGroupRulesClient
diff --git a/tempest/services/compute/json/interfaces_client.py b/tempest/services/compute/json/interfaces_client.py
deleted file mode 100644
index fe076d8..0000000
--- a/tempest/services/compute/json/interfaces_client.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2013 IBM Corp.
-# 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.
-
-from oslo_serialization import jsonutils as json
-
-from tempest.api_schema.response.compute.v2_1 import interfaces as schema
-from tempest.common import service_client
-
-
-class InterfacesClient(service_client.ServiceClient):
-
-    def list_interfaces(self, server_id):
-        resp, body = self.get('servers/%s/os-interface' % server_id)
-        body = json.loads(body)
-        self.validate_response(schema.list_interfaces, resp, body)
-        return service_client.ResponseBody(resp, body)
-
-    def create_interface(self, server_id, **kwargs):
-        post_body = {'interfaceAttachment': kwargs}
-        post_body = json.dumps(post_body)
-        resp, body = self.post('servers/%s/os-interface' % server_id,
-                               body=post_body)
-        body = json.loads(body)
-        self.validate_response(schema.get_create_interfaces, resp, body)
-        return service_client.ResponseBody(resp, body)
-
-    def show_interface(self, server_id, port_id):
-        resp, body = self.get('servers/%s/os-interface/%s' % (server_id,
-                                                              port_id))
-        body = json.loads(body)
-        self.validate_response(schema.get_create_interfaces, resp, body)
-        return service_client.ResponseBody(resp, body)
-
-    def delete_interface(self, server_id, port_id):
-        resp, body = self.delete('servers/%s/os-interface/%s' % (server_id,
-                                                                 port_id))
-        self.validate_response(schema.delete_interface, resp, body)
-        return service_client.ResponseBody(resp, body)
diff --git a/tempest/tests/common/test_service_clients.py b/tempest/tests/common/test_service_clients.py
index 272eba4..43f9bf5 100644
--- a/tempest/tests/common/test_service_clients.py
+++ b/tempest/tests/common/test_service_clients.py
@@ -18,7 +18,6 @@
 
 from tempest.services.baremetal.v1.json import baremetal_client
 from tempest.services.compute.json import floating_ips_client
-from tempest.services.compute.json import interfaces_client
 from tempest.services.compute.json import security_group_rules_client
 from tempest.services.compute.json import server_groups_client
 from tempest.services.compute.json import servers_client
@@ -87,7 +86,6 @@
         test_clients = [
             baremetal_client.BaremetalClient,
             floating_ips_client.FloatingIPsClient,
-            interfaces_client.InterfacesClient,
             security_group_rules_client.SecurityGroupRulesClient,
             server_groups_client.ServerGroupsClient,
             servers_client.ServersClient,
diff --git a/tempest/tests/services/compute/test_interfaces_client.py b/tempest/tests/services/compute/test_interfaces_client.py
deleted file mode 100644
index 235585a..0000000
--- a/tempest/tests/services/compute/test_interfaces_client.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 2015 NEC Corporation.  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.
-
-from tempest.services.compute.json import interfaces_client
-from tempest.tests import fake_auth_provider
-from tempest.tests.services.compute import base
-
-
-class TestInterfacesClient(base.BaseComputeServiceTest):
-    # Data Values to be used for testing #
-    FAKE_INTERFACE_DATA = {
-        "fixed_ips": [{
-            "ip_address": "192.168.1.1",
-            "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef"
-            }],
-        "mac_addr": "fa:16:3e:4c:2c:30",
-        "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6",
-        "port_id": "ce531f90-199f-48c0-816c-13e38010b442",
-        "port_state": "ACTIVE"}
-
-    FAKE_SHOW_DATA = {
-        "interfaceAttachment": FAKE_INTERFACE_DATA}
-    FAKE_LIST_DATA = {
-        "interfaceAttachments": [FAKE_INTERFACE_DATA]}
-
-    FAKE_SERVER_ID = "ec14c864-096e-4e27-bb8a-2c2b4dc6f3f5"
-    FAKE_PORT_ID = FAKE_SHOW_DATA['interfaceAttachment']['port_id']
-    func2mock = {
-        'delete': 'tempest.common.service_client.ServiceClient.delete',
-        'get': 'tempest.common.service_client.ServiceClient.get',
-        'post': 'tempest.common.service_client.ServiceClient.post'}
-
-    def setUp(self):
-        super(TestInterfacesClient, self).setUp()
-        fake_auth = fake_auth_provider.FakeAuthProvider()
-        self.client = interfaces_client.InterfacesClient(fake_auth,
-                                                         "compute",
-                                                         "regionOne")
-
-    def _test_interface_operation(self, operation="create", bytes_body=False):
-        response_code = 200
-        expected_op = self.FAKE_SHOW_DATA
-        mock_operation = self.func2mock['get']
-        params = {'server_id': self.FAKE_SERVER_ID,
-                  'port_id': self.FAKE_PORT_ID}
-        if operation == 'list':
-            expected_op = self.FAKE_LIST_DATA
-            function = self.client.list_interfaces
-            params = {'server_id': self.FAKE_SERVER_ID}
-        elif operation == 'show':
-            function = self.client.show_interface
-        elif operation == 'delete':
-            expected_op = {}
-            mock_operation = self.func2mock['delete']
-            function = self.client.delete_interface
-            response_code = 202
-        else:
-            function = self.client.create_interface
-            mock_operation = self.func2mock['post']
-
-        self.check_service_client_function(
-            function, mock_operation, expected_op,
-            bytes_body, response_code, **params)
-
-    def test_list_interfaces_with_str_body(self):
-        self._test_interface_operation('list')
-
-    def test_list_interfaces_with_bytes_body(self):
-        self._test_interface_operation('list', True)
-
-    def test_show_interface_with_str_body(self):
-        self._test_interface_operation('show')
-
-    def test_show_interface_with_bytes_body(self):
-        self._test_interface_operation('show', True)
-
-    def test_delete_interface_with_str_body(self):
-        self._test_interface_operation('delete')
-
-    def test_delete_interface_with_bytes_body(self):
-        self._test_interface_operation('delete', True)
-
-    def test_create_interface_with_str_body(self):
-        self._test_interface_operation()
-
-    def test_create_interface_with_bytes_body(self):
-        self._test_interface_operation(bytes_body=True)