
These were deprecated in Newton: aaebeb05a03e34281a091dc6dfc4672b01cdfbbb The 'find network' convenience helper when booting a server only works with neutron now, and assumes the 'network' endpoint is in the service catalog. The functional tests are changed to use python-neutronclient for listing and finding the network to use. At this point, we don't have any nova-network CI jobs that will work with novaclient, so the non-voting mitaka nova-network job is also being removed in change I63b36fb8acc5c9a273e6adcb271df16d0f71031e. As noted in the release note, the only remaining pure nova-network CLI/API that will work is for listing virtual interfaces, which is only implemented for nova-network within Nova. The functional tests for this API are removed since we don't have any nova-network CI jobs that will test it besides unit tests. Long-term we'll likely deprecate the os-virtual-interfaces API as well and replace it with the os-interface API. Change-Id: I8c520100a0016eed3959619c71dae037ebd72939
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
# Copyright 2012 OpenStack Foundation
|
|
# 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.
|
|
|
|
"""
|
|
Network interface.
|
|
"""
|
|
from novaclient import base
|
|
from novaclient import exceptions
|
|
from novaclient.i18n import _
|
|
|
|
|
|
class Network(base.Resource):
|
|
"""
|
|
A network as defined in the Networking (Neutron) API.
|
|
"""
|
|
HUMAN_ID = True
|
|
NAME_ATTR = "name"
|
|
|
|
def __repr__(self):
|
|
return "<Network: %s>" % self.name
|
|
|
|
|
|
class NeutronManager(base.Manager):
|
|
"""A manager for name -> id lookups for neutron networks.
|
|
|
|
This uses neutron directly from service catalog. Do not use it
|
|
for anything else besides that. You have been warned.
|
|
"""
|
|
|
|
resource_class = Network
|
|
|
|
def find_network(self, name):
|
|
"""Find a network by name (user provided input)."""
|
|
|
|
with self.alternate_service_type(
|
|
'network', allowed_types=('network',)):
|
|
|
|
matches = self._list('/v2.0/networks?name=%s' % name, 'networks')
|
|
|
|
num_matches = len(matches)
|
|
if num_matches == 0:
|
|
msg = "No %s matching %s." % (
|
|
self.resource_class.__name__, name)
|
|
raise exceptions.NotFound(404, msg)
|
|
elif num_matches > 1:
|
|
msg = (_("Multiple %(class)s matches found for "
|
|
"'%(name)s', use an ID to be more specific.") %
|
|
{'class': self.resource_class.__name__.lower(),
|
|
'name': name})
|
|
raise exceptions.NoUniqueMatch(msg)
|
|
else:
|
|
matches[0].append_request_ids(matches.request_ids)
|
|
return matches[0]
|