From 4cb39d61fe1f788edc4e85328a0841705aa87122 Mon Sep 17 00:00:00 2001 From: Federico Ressi Date: Thu, 21 Mar 2019 11:55:36 +0100 Subject: [PATCH] Add fixture to create neutron client. Change-Id: I4307d71fd4f9f05af430cfe627dcda0e3ab6c5bc --- tobiko/openstack/neutron/__init__.py | 19 ++++++++ tobiko/openstack/neutron/client.py | 36 ++++++++++++++ tobiko/tests/openstack/neutron/__init__.py | 0 tobiko/tests/openstack/neutron/test_client.py | 47 +++++++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 tobiko/openstack/neutron/__init__.py create mode 100644 tobiko/openstack/neutron/client.py create mode 100644 tobiko/tests/openstack/neutron/__init__.py create mode 100644 tobiko/tests/openstack/neutron/test_client.py diff --git a/tobiko/openstack/neutron/__init__.py b/tobiko/openstack/neutron/__init__.py new file mode 100644 index 000000000..ce0ec890a --- /dev/null +++ b/tobiko/openstack/neutron/__init__.py @@ -0,0 +1,19 @@ +# Copyright 2019 Red Hat +# +# 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 __future__ import absolute_import + +from tobiko.openstack.neutron import client + +get_neutron_client = client.get_neutron_client +NeutronClientFixture = client.NeutronClientFixture diff --git a/tobiko/openstack/neutron/client.py b/tobiko/openstack/neutron/client.py new file mode 100644 index 000000000..635f33098 --- /dev/null +++ b/tobiko/openstack/neutron/client.py @@ -0,0 +1,36 @@ +# Copyright 2019 Red Hat +# +# 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 __future__ import absolute_import + +from neutronclient.v2_0 import client as neutronclient + +from tobiko.openstack import client as _client + + +class NeutronClientFixture(_client.OpenstackClientFixture): + + def init_client(self, session): + return neutronclient.Client(session=session) + + +CLIENTS = _client.OpenstackClientManager(init_client=NeutronClientFixture) + + +def get_neutron_client(session=None, shared=True, init_client=None, + manager=None): + manager = manager or CLIENTS + client = manager.get_client(session=session, shared=shared, + init_client=init_client) + client.setUp() + return client.client diff --git a/tobiko/tests/openstack/neutron/__init__.py b/tobiko/tests/openstack/neutron/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tobiko/tests/openstack/neutron/test_client.py b/tobiko/tests/openstack/neutron/test_client.py new file mode 100644 index 000000000..22d099cca --- /dev/null +++ b/tobiko/tests/openstack/neutron/test_client.py @@ -0,0 +1,47 @@ +# Copyright 2019 Red Hat +# +# 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 __future__ import absolute_import + +from neutronclient.v2_0 import client as neutronclient + +from tobiko.openstack import keystone +from tobiko.openstack import neutron +from tobiko.tests.openstack import base +from tobiko.tests.openstack import test_client + + +class NeutronClientFixtureTest(test_client.OpenstackClientFixtureTest): + + def create_client(self, session=None): + return neutron.NeutronClientFixture(session=session) + + +class GetNeutronClientTest(base.OpenstackTest): + + def test_get_neutron_client(self, session=None, shared=True): + client1 = neutron.get_neutron_client(session=session, shared=shared) + client2 = neutron.get_neutron_client(session=session, shared=shared) + if shared: + self.assertIs(client1, client2) + else: + self.assertIsNot(client1, client2) + self.assertIsInstance(client1, neutronclient.Client) + self.assertIsInstance(client2, neutronclient.Client) + + def test_get_neutron_client_with_not_shared(self): + self.test_get_neutron_client(shared=False) + + def test_get_neutron_client_with_session(self): + session = keystone.get_keystone_session() + self.test_get_neutron_client(session=session)