Remove cells v1 and extension commands and APIs
The following CLIs and their backing API bindings which have been deprecated since 20.0.0 Train release have now been removed. - list-extensions - cell-capacities - cell-show Change-Id: I8e6edf1e4c1bf12d51ed993363129b4f4c3aa36c
This commit is contained in:
parent
48634ed51e
commit
364cad4191
@ -108,13 +108,6 @@ nova usage
|
|||||||
``boot``
|
``boot``
|
||||||
Boot a new server.
|
Boot a new server.
|
||||||
|
|
||||||
``cell-capacities``
|
|
||||||
Get cell capacities for all cells or a given
|
|
||||||
cell.
|
|
||||||
|
|
||||||
``cell-show``
|
|
||||||
Show details of a given cell.
|
|
||||||
|
|
||||||
``clear-password``
|
``clear-password``
|
||||||
Clear the admin password for a server from the
|
Clear the admin password for a server from the
|
||||||
metadata server. This action does not actually
|
metadata server. This action does not actually
|
||||||
@ -309,10 +302,6 @@ nova usage
|
|||||||
``list``
|
``list``
|
||||||
List servers.
|
List servers.
|
||||||
|
|
||||||
``list-extensions``
|
|
||||||
List all the os-api extensions that are
|
|
||||||
available.
|
|
||||||
|
|
||||||
``list-secgroup``
|
``list-secgroup``
|
||||||
List Security Group(s) of a server.
|
List Security Group(s) of a server.
|
||||||
|
|
||||||
@ -1131,38 +1120,6 @@ quality of service support, microversion ``2.72`` is required.
|
|||||||
Requested hypervisor hostname to create servers. Admin only by default.
|
Requested hypervisor hostname to create servers. Admin only by default.
|
||||||
(Supported by API versions '2.74' - '2.latest')
|
(Supported by API versions '2.74' - '2.latest')
|
||||||
|
|
||||||
.. _nova_cell-capacities:
|
|
||||||
|
|
||||||
nova cell-capacities
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
usage: nova cell-capacities [--cell <cell-name>]
|
|
||||||
|
|
||||||
Get cell capacities for all cells or a given cell.
|
|
||||||
|
|
||||||
**Optional arguments:**
|
|
||||||
|
|
||||||
``--cell <cell-name>``
|
|
||||||
Name of the cell to get the capacities.
|
|
||||||
|
|
||||||
.. _nova_cell-show:
|
|
||||||
|
|
||||||
nova cell-show
|
|
||||||
--------------
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
usage: nova cell-show <cell-name>
|
|
||||||
|
|
||||||
Show details of a given cell.
|
|
||||||
|
|
||||||
**Positional arguments:**
|
|
||||||
|
|
||||||
``<cell-name>``
|
|
||||||
Name of the cell.
|
|
||||||
|
|
||||||
.. _nova_clear-password:
|
.. _nova_clear-password:
|
||||||
|
|
||||||
nova clear-password
|
nova clear-password
|
||||||
@ -2372,18 +2329,6 @@ present in the failure domain.
|
|||||||
unlocked servers. (Supported by API versions
|
unlocked servers. (Supported by API versions
|
||||||
'2.73' - '2.latest')
|
'2.73' - '2.latest')
|
||||||
|
|
||||||
|
|
||||||
.. _nova_list-extensions:
|
|
||||||
|
|
||||||
nova list-extensions
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
usage: nova list-extensions
|
|
||||||
|
|
||||||
List all the os-api extensions that are available.
|
|
||||||
|
|
||||||
.. _nova_list-secgroup:
|
.. _nova_list-secgroup:
|
||||||
|
|
||||||
nova list-secgroup
|
nova list-secgroup
|
||||||
|
@ -85,13 +85,6 @@ class SimpleReadOnlyNovaClientTest(base.ClientTestBase):
|
|||||||
def test_admin_help(self):
|
def test_admin_help(self):
|
||||||
self.nova('help')
|
self.nova('help')
|
||||||
|
|
||||||
def test_admin_list_extensions(self):
|
|
||||||
output = self.nova('list-extensions', merge_stderr=True)
|
|
||||||
self.assertIn(
|
|
||||||
'The API extension interface has been deprecated. This command '
|
|
||||||
'will be removed in the first major release after '
|
|
||||||
'the Nova server 20.0.0 Train release.', output)
|
|
||||||
|
|
||||||
def test_agent_list(self):
|
def test_agent_list(self):
|
||||||
self.nova('agent-list')
|
self.nova('agent-list')
|
||||||
self.nova('agent-list', flags='--debug')
|
self.nova('agent-list', flags='--debug')
|
||||||
|
@ -328,53 +328,6 @@ class FakeSessionClient(base_client.SessionClient):
|
|||||||
"md5hash": "add6bb58e139be103324d04d82d8f546",
|
"md5hash": "add6bb58e139be103324d04d82d8f546",
|
||||||
'id': 1}})
|
'id': 1}})
|
||||||
|
|
||||||
#
|
|
||||||
# List all extensions
|
|
||||||
#
|
|
||||||
|
|
||||||
def get_extensions(self, **kw):
|
|
||||||
exts = [
|
|
||||||
{
|
|
||||||
"alias": "NMN",
|
|
||||||
"description": "Multiple network support",
|
|
||||||
"links": [],
|
|
||||||
"name": "Multinic",
|
|
||||||
"namespace": ("http://docs.openstack.org/"
|
|
||||||
"compute/ext/multinic/api/v1.1"),
|
|
||||||
"updated": "2011-06-09T00:00:00+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alias": "OS-DCF",
|
|
||||||
"description": "Disk Management Extension",
|
|
||||||
"links": [],
|
|
||||||
"name": "DiskConfig",
|
|
||||||
"namespace": ("http://docs.openstack.org/"
|
|
||||||
"compute/ext/disk_config/api/v1.1"),
|
|
||||||
"updated": "2011-09-27T00:00:00+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alias": "OS-EXT-SRV-ATTR",
|
|
||||||
"description": "Extended Server Attributes support.",
|
|
||||||
"links": [],
|
|
||||||
"name": "ExtendedServerAttributes",
|
|
||||||
"namespace": ("http://docs.openstack.org/"
|
|
||||||
"compute/ext/extended_status/api/v1.1"),
|
|
||||||
"updated": "2011-11-03T00:00:00+00:00"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alias": "OS-EXT-STS",
|
|
||||||
"description": "Extended Status support",
|
|
||||||
"links": [],
|
|
||||||
"name": "ExtendedStatus",
|
|
||||||
"namespace": ("http://docs.openstack.org/"
|
|
||||||
"compute/ext/extended_status/api/v1.1"),
|
|
||||||
"updated": "2011-11-03T00:00:00+00:00"
|
|
||||||
},
|
|
||||||
]
|
|
||||||
return (200, FAKE_RESPONSE_HEADERS, {
|
|
||||||
"extensions": exts,
|
|
||||||
})
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Limits
|
# Limits
|
||||||
#
|
#
|
||||||
@ -2296,34 +2249,6 @@ class FakeSessionClient(base_client.SessionClient):
|
|||||||
def post_servers_uuid6_action(self, **kw):
|
def post_servers_uuid6_action(self, **kw):
|
||||||
return 202, {}, {}
|
return 202, {}, {}
|
||||||
|
|
||||||
def get_os_cells_child_cell(self, **kw):
|
|
||||||
cell = {'cell': {
|
|
||||||
'username': 'cell1_user',
|
|
||||||
'name': 'cell1',
|
|
||||||
'rpc_host': '10.0.1.10',
|
|
||||||
'info': {
|
|
||||||
'username': 'cell1_user',
|
|
||||||
'rpc_host': '10.0.1.10',
|
|
||||||
'type': 'child',
|
|
||||||
'name': 'cell1',
|
|
||||||
'rpc_port': 5673},
|
|
||||||
'type': 'child',
|
|
||||||
'rpc_port': 5673,
|
|
||||||
'loaded': True
|
|
||||||
}}
|
|
||||||
return (200, FAKE_RESPONSE_HEADERS, cell)
|
|
||||||
|
|
||||||
def get_os_cells_capacities(self, **kw):
|
|
||||||
cell_capacities_response = {"cell": {"capacities": {"ram_free": {
|
|
||||||
"units_by_mb": {"8192": 0, "512": 13, "4096": 1, "2048": 3,
|
|
||||||
"16384": 0}, "total_mb": 7680}, "disk_free": {
|
|
||||||
"units_by_mb": {"81920": 11, "20480": 46, "40960": 23, "163840": 5,
|
|
||||||
"0": 0}, "total_mb": 1052672}}}}
|
|
||||||
return (200, FAKE_RESPONSE_HEADERS, cell_capacities_response)
|
|
||||||
|
|
||||||
def get_os_cells_child_cell_capacities(self, **kw):
|
|
||||||
return self.get_os_cells_capacities()
|
|
||||||
|
|
||||||
def get_os_migrations(self, **kw):
|
def get_os_migrations(self, **kw):
|
||||||
migration1 = {
|
migration1 = {
|
||||||
"created_at": "2012-10-29T13:42:02.000000",
|
"created_at": "2012-10-29T13:42:02.000000",
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
# Copyright 2013 Rackspace Hosting
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
import mock
|
|
||||||
|
|
||||||
from novaclient import api_versions
|
|
||||||
from novaclient.tests.unit import utils
|
|
||||||
from novaclient.tests.unit.v2 import fakes
|
|
||||||
|
|
||||||
CELL_V1_DEPRECATION_WARNING = (
|
|
||||||
'The cells v1 interface has been deprecated in Nova since 16.0.0 Pike '
|
|
||||||
'Release. This API binding will be removed in the first major release '
|
|
||||||
'after the Nova server 20.0.0 Train release.')
|
|
||||||
|
|
||||||
|
|
||||||
@mock.patch('warnings.warn')
|
|
||||||
class CellsExtensionTests(utils.TestCase):
|
|
||||||
def setUp(self):
|
|
||||||
super(CellsExtensionTests, self).setUp()
|
|
||||||
self.cs = fakes.FakeClient(api_versions.APIVersion("2.1"))
|
|
||||||
|
|
||||||
def test_get_cells(self, mock_warn):
|
|
||||||
cell_name = 'child_cell'
|
|
||||||
cell = self.cs.cells.get(cell_name)
|
|
||||||
self.assert_request_id(cell, fakes.FAKE_REQUEST_ID_LIST)
|
|
||||||
self.cs.assert_called('GET', '/os-cells/%s' % cell_name)
|
|
||||||
mock_warn.assert_called_once_with(CELL_V1_DEPRECATION_WARNING,
|
|
||||||
DeprecationWarning)
|
|
||||||
|
|
||||||
def test_get_capacities_for_a_given_cell(self, mock_warn):
|
|
||||||
cell_name = 'child_cell'
|
|
||||||
ca = self.cs.cells.capacities(cell_name)
|
|
||||||
self.assert_request_id(ca, fakes.FAKE_REQUEST_ID_LIST)
|
|
||||||
self.cs.assert_called('GET', '/os-cells/%s/capacities' % cell_name)
|
|
||||||
mock_warn.assert_called_once_with(CELL_V1_DEPRECATION_WARNING,
|
|
||||||
DeprecationWarning)
|
|
||||||
|
|
||||||
def test_get_capacities_for_all_cells(self, mock_warn):
|
|
||||||
ca = self.cs.cells.capacities()
|
|
||||||
self.assert_request_id(ca, fakes.FAKE_REQUEST_ID_LIST)
|
|
||||||
self.cs.assert_called('GET', '/os-cells/capacities')
|
|
||||||
mock_warn.assert_called_once_with(CELL_V1_DEPRECATION_WARNING,
|
|
||||||
DeprecationWarning)
|
|
@ -1,41 +0,0 @@
|
|||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
import mock
|
|
||||||
|
|
||||||
from novaclient import api_versions
|
|
||||||
from novaclient.tests.unit import utils
|
|
||||||
from novaclient.tests.unit.v2 import fakes
|
|
||||||
|
|
||||||
|
|
||||||
class ListExtensionsTests(utils.TestCase):
|
|
||||||
def setUp(self):
|
|
||||||
super(ListExtensionsTests, self).setUp()
|
|
||||||
self.cs = fakes.FakeClient(api_versions.APIVersion("2.1"))
|
|
||||||
|
|
||||||
@mock.patch('warnings.warn')
|
|
||||||
def test_list_extensions(self, mock_warn):
|
|
||||||
all_exts = self.cs.list_extensions.show_all()
|
|
||||||
self.assert_request_id(all_exts, fakes.FAKE_REQUEST_ID_LIST)
|
|
||||||
self.cs.assert_called('GET', '/extensions')
|
|
||||||
self.assertGreater(len(all_exts), 0)
|
|
||||||
warning_message = (
|
|
||||||
'The API extension interface has been deprecated since 12.0.0 '
|
|
||||||
'Liberty Release. This API binding will be removed in the first '
|
|
||||||
'major release after the Nova server 20.0.0 Train release.')
|
|
||||||
mock_warn.assert_called_once_with(warning_message, DeprecationWarning)
|
|
||||||
for r in all_exts:
|
|
||||||
mock_warn.reset_mock()
|
|
||||||
self.assertGreater(len(r.summary), 0)
|
|
||||||
mock_warn.assert_called_once_with(warning_message,
|
|
||||||
DeprecationWarning)
|
|
@ -3992,30 +3992,6 @@ class ShellTest(utils.TestCase):
|
|||||||
self.assert_called('GET', '/os-instance_usage_audit_log'
|
self.assert_called('GET', '/os-instance_usage_audit_log'
|
||||||
'/2016-12-10%2013%3A59%3A59.999999')
|
'/2016-12-10%2013%3A59%3A59.999999')
|
||||||
|
|
||||||
def test_cell_show(self):
|
|
||||||
_, err = self.run_command('cell-show child_cell')
|
|
||||||
self.assert_called('GET', '/os-cells/child_cell')
|
|
||||||
self.assertIn(
|
|
||||||
'The cells v1 interface has been deprecated. This command will be '
|
|
||||||
'removed in the first major release after the Nova server 20.0.0 '
|
|
||||||
'Train release.', err)
|
|
||||||
|
|
||||||
def test_cell_capacities_with_cell_name(self):
|
|
||||||
_, err = self.run_command('cell-capacities --cell child_cell')
|
|
||||||
self.assert_called('GET', '/os-cells/child_cell/capacities')
|
|
||||||
self.assertIn(
|
|
||||||
'The cells v1 interface has been deprecated. This command will be '
|
|
||||||
'removed in the first major release after the Nova server 20.0.0 '
|
|
||||||
'Train release.', err)
|
|
||||||
|
|
||||||
def test_cell_capacities_without_cell_name(self):
|
|
||||||
_, err = self.run_command('cell-capacities')
|
|
||||||
self.assert_called('GET', '/os-cells/capacities')
|
|
||||||
self.assertIn(
|
|
||||||
'The cells v1 interface has been deprecated. This command will be '
|
|
||||||
'removed in the first major release after the Nova server 20.0.0 '
|
|
||||||
'Train release.', err)
|
|
||||||
|
|
||||||
def test_migration_list(self):
|
def test_migration_list(self):
|
||||||
self.run_command('migration-list')
|
self.run_command('migration-list')
|
||||||
self.assert_called('GET', '/os-migrations')
|
self.assert_called('GET', '/os-migrations')
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
# Copyright 2013 Rackspace Hosting
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
from novaclient import base
|
|
||||||
from novaclient.i18n import _
|
|
||||||
|
|
||||||
CELL_V1_DEPRECATION_WARNING = _(
|
|
||||||
'The cells v1 interface has been deprecated in Nova since 16.0.0 Pike '
|
|
||||||
'Release. This API binding will be removed in the first major release '
|
|
||||||
'after the Nova server 20.0.0 Train release.')
|
|
||||||
|
|
||||||
|
|
||||||
class Cell(base.Resource):
|
|
||||||
"""DEPRECATED"""
|
|
||||||
def __repr__(self):
|
|
||||||
return "<Cell: %s>" % self.name
|
|
||||||
|
|
||||||
|
|
||||||
class CellsManager(base.Manager):
|
|
||||||
"""DEPRECATED"""
|
|
||||||
resource_class = Cell
|
|
||||||
|
|
||||||
def get(self, cell_name):
|
|
||||||
"""
|
|
||||||
DEPRECATED Get a cell.
|
|
||||||
|
|
||||||
:param cell_name: Name of the :class:`Cell` to get.
|
|
||||||
:rtype: :class:`Cell`
|
|
||||||
"""
|
|
||||||
warnings.warn(CELL_V1_DEPRECATION_WARNING, DeprecationWarning)
|
|
||||||
return self._get("/os-cells/%s" % cell_name, "cell")
|
|
||||||
|
|
||||||
def capacities(self, cell_name=None):
|
|
||||||
"""
|
|
||||||
DEPRECATED Get capacities for a cell.
|
|
||||||
|
|
||||||
:param cell_name: Name of the :class:`Cell` to get capacities for.
|
|
||||||
:rtype: :class:`Cell`
|
|
||||||
"""
|
|
||||||
warnings.warn(CELL_V1_DEPRECATION_WARNING, DeprecationWarning)
|
|
||||||
path = ["%s/capacities" % cell_name, "capacities"][cell_name is None]
|
|
||||||
return self._get("/os-cells/%s" % path, "cell")
|
|
@ -22,7 +22,6 @@ from novaclient.v2 import agents
|
|||||||
from novaclient.v2 import aggregates
|
from novaclient.v2 import aggregates
|
||||||
from novaclient.v2 import assisted_volume_snapshots
|
from novaclient.v2 import assisted_volume_snapshots
|
||||||
from novaclient.v2 import availability_zones
|
from novaclient.v2 import availability_zones
|
||||||
from novaclient.v2 import cells
|
|
||||||
from novaclient.v2 import flavor_access
|
from novaclient.v2 import flavor_access
|
||||||
from novaclient.v2 import flavors
|
from novaclient.v2 import flavors
|
||||||
from novaclient.v2 import hypervisors
|
from novaclient.v2 import hypervisors
|
||||||
@ -31,7 +30,6 @@ from novaclient.v2 import instance_action
|
|||||||
from novaclient.v2 import instance_usage_audit_log
|
from novaclient.v2 import instance_usage_audit_log
|
||||||
from novaclient.v2 import keypairs
|
from novaclient.v2 import keypairs
|
||||||
from novaclient.v2 import limits
|
from novaclient.v2 import limits
|
||||||
from novaclient.v2 import list_extensions
|
|
||||||
from novaclient.v2 import migrations
|
from novaclient.v2 import migrations
|
||||||
from novaclient.v2 import networks
|
from novaclient.v2 import networks
|
||||||
from novaclient.v2 import quota_classes
|
from novaclient.v2 import quota_classes
|
||||||
@ -167,11 +165,9 @@ class Client(object):
|
|||||||
# deprecated now, which is why it is not initialized by default.
|
# deprecated now, which is why it is not initialized by default.
|
||||||
self.assisted_volume_snapshots = \
|
self.assisted_volume_snapshots = \
|
||||||
assisted_volume_snapshots.AssistedSnapshotManager(self)
|
assisted_volume_snapshots.AssistedSnapshotManager(self)
|
||||||
self.cells = cells.CellsManager(self)
|
|
||||||
self.instance_action = instance_action.InstanceActionManager(self)
|
self.instance_action = instance_action.InstanceActionManager(self)
|
||||||
self.instance_usage_audit_log = \
|
self.instance_usage_audit_log = \
|
||||||
instance_usage_audit_log.InstanceUsageAuditLogManager(self)
|
instance_usage_audit_log.InstanceUsageAuditLogManager(self)
|
||||||
self.list_extensions = list_extensions.ListExtManager(self)
|
|
||||||
self.migrations = migrations.MigrationManager(self)
|
self.migrations = migrations.MigrationManager(self)
|
||||||
self.server_external_events = \
|
self.server_external_events = \
|
||||||
server_external_events.ServerExternalEventManager(self)
|
server_external_events.ServerExternalEventManager(self)
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
# Copyright 2011 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.
|
|
||||||
|
|
||||||
import warnings
|
|
||||||
|
|
||||||
from novaclient import base
|
|
||||||
from novaclient.i18n import _
|
|
||||||
|
|
||||||
EXTENSION_DEPRECATION_WARNING = _(
|
|
||||||
'The API extension interface has been deprecated since 12.0.0 Liberty '
|
|
||||||
'Release. This API binding will be removed in the first major release '
|
|
||||||
'after the Nova server 20.0.0 Train release.')
|
|
||||||
|
|
||||||
|
|
||||||
class ListExtResource(base.Resource):
|
|
||||||
"""DEPRECATED"""
|
|
||||||
@property
|
|
||||||
def summary(self):
|
|
||||||
"""DEPRECATED"""
|
|
||||||
warnings.warn(EXTENSION_DEPRECATION_WARNING, DeprecationWarning)
|
|
||||||
descr = self.description.strip()
|
|
||||||
if not descr:
|
|
||||||
return '??'
|
|
||||||
lines = descr.split("\n")
|
|
||||||
if len(lines) == 1:
|
|
||||||
return lines[0]
|
|
||||||
else:
|
|
||||||
return lines[0] + "..."
|
|
||||||
|
|
||||||
|
|
||||||
class ListExtManager(base.Manager):
|
|
||||||
"""DEPRECATED"""
|
|
||||||
resource_class = ListExtResource
|
|
||||||
|
|
||||||
def show_all(self):
|
|
||||||
"""DEPRECATED"""
|
|
||||||
warnings.warn(EXTENSION_DEPRECATION_WARNING, DeprecationWarning)
|
|
||||||
return self._list("/extensions", 'extensions')
|
|
@ -48,21 +48,6 @@ from novaclient.v2 import servers
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
CELL_V1_DEPRECATION_WARNING = _(
|
|
||||||
'The cells v1 interface has been deprecated. This command will be removed '
|
|
||||||
'in the first major release after the Nova server 20.0.0 Train release.')
|
|
||||||
|
|
||||||
EXTENSION_DEPRECATION_WARNING = _(
|
|
||||||
'The API extension interface has been deprecated. This command will be '
|
|
||||||
'removed in the first major release after the Nova server 20.0.0 Train '
|
|
||||||
'release.')
|
|
||||||
|
|
||||||
|
|
||||||
# NOTE(takashin): Remove this along with the deprecated commands in the first
|
|
||||||
# major python-novaclient release AFTER the nova server 20.0.0 Train release.
|
|
||||||
def _emit_deprecation_warning(message):
|
|
||||||
print(message, file=sys.stderr)
|
|
||||||
|
|
||||||
|
|
||||||
def emit_duplicated_image_with_warning(img, image_with):
|
def emit_duplicated_image_with_warning(img, image_with):
|
||||||
img_uuid_list = [str(image.id) for image in img]
|
img_uuid_list = [str(image.id) for image in img]
|
||||||
@ -4928,35 +4913,6 @@ def do_server_tag_delete_all(cs, args):
|
|||||||
server.delete_all_tags()
|
server.delete_all_tags()
|
||||||
|
|
||||||
|
|
||||||
@utils.arg(
|
|
||||||
'cell',
|
|
||||||
metavar='<cell-name>',
|
|
||||||
help=_('Name of the cell.'))
|
|
||||||
def do_cell_show(cs, args):
|
|
||||||
"""DEPRECATED Show details of a given cell."""
|
|
||||||
_emit_deprecation_warning(CELL_V1_DEPRECATION_WARNING)
|
|
||||||
cell = cs.cells.get(args.cell)
|
|
||||||
utils.print_dict(cell.to_dict())
|
|
||||||
|
|
||||||
|
|
||||||
@utils.arg(
|
|
||||||
'--cell',
|
|
||||||
metavar='<cell-name>',
|
|
||||||
help=_("Name of the cell to get the capacities."),
|
|
||||||
default=None)
|
|
||||||
def do_cell_capacities(cs, args):
|
|
||||||
"""DEPRECATED Get cell capacities for all cells or a given cell."""
|
|
||||||
_emit_deprecation_warning(CELL_V1_DEPRECATION_WARNING)
|
|
||||||
cell = cs.cells.capacities(args.cell)
|
|
||||||
print(_("Ram Available: %s MiB") % cell.capacities['ram_free']['total_mb'])
|
|
||||||
utils.print_dict(cell.capacities['ram_free']['units_by_mb'],
|
|
||||||
dict_property='Ram(MiB)', dict_value="Units")
|
|
||||||
print(_("\nDisk Available: %s MiB") %
|
|
||||||
cell.capacities['disk_free']['total_mb'])
|
|
||||||
utils.print_dict(cell.capacities['disk_free']['units_by_mb'],
|
|
||||||
dict_property='Disk(MiB)', dict_value="Units")
|
|
||||||
|
|
||||||
|
|
||||||
@utils.arg('server', metavar='<server>', help='Name or ID of server.')
|
@utils.arg('server', metavar='<server>', help='Name or ID of server.')
|
||||||
def do_force_delete(cs, args):
|
def do_force_delete(cs, args):
|
||||||
"""Force delete a server."""
|
"""Force delete a server."""
|
||||||
@ -5378,16 +5334,6 @@ def do_instance_action_list(cs, args):
|
|||||||
sortby_index=3)
|
sortby_index=3)
|
||||||
|
|
||||||
|
|
||||||
def do_list_extensions(cs, _args):
|
|
||||||
"""
|
|
||||||
DEPRECATED List all the os-api extensions that are available.
|
|
||||||
"""
|
|
||||||
_emit_deprecation_warning(EXTENSION_DEPRECATION_WARNING)
|
|
||||||
extensions = cs.list_extensions.show_all()
|
|
||||||
fields = ["Name", "Summary", "Alias", "Updated"]
|
|
||||||
utils.print_list(extensions, fields)
|
|
||||||
|
|
||||||
|
|
||||||
@utils.arg('host', metavar='<host>',
|
@utils.arg('host', metavar='<host>',
|
||||||
help='The hypervisor hostname (or pattern) to search for. '
|
help='The hypervisor hostname (or pattern) to search for. '
|
||||||
'WARNING: Use a fully qualified domain name if you only '
|
'WARNING: Use a fully qualified domain name if you only '
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
The following CLIs and their backing API bindings have been removed.
|
||||||
|
|
||||||
|
- ``nova list-extensions``
|
||||||
|
- ``nova cell-capacities``
|
||||||
|
- ``nova cell-show``
|
Loading…
Reference in New Issue
Block a user