Support bulk deletion for delete commands in identityv3
Support bulk deletion for delete commands in the list below identity/v3/consumer identity/v3/credential identity/v3/domain identity/v3/ec2creds identity/v3/endpoint identity/v3/federation_protocol identity/v3/identity_provider identity/v3/mapping identity/v3/policy identity/v3/region identity/v3/service_provider identity/v3/service The unit test in identityv3 need to be refactored, so I add some functional tests instead. I will add all unit tests at one time after the refactor completed. Change-Id: I82367570f59817b47c87b6c7bfeae95ccfe5c50e Closes-Bug: #1592906
This commit is contained in:
parent
55c1c575d6
commit
60639d76a7
@ -24,17 +24,17 @@ Create new consumer
|
|||||||
consumer delete
|
consumer delete
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Delete consumer
|
Delete consumer(s)
|
||||||
|
|
||||||
.. program:: consumer delete
|
.. program:: consumer delete
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
os consumer delete
|
os consumer delete
|
||||||
<consumer>
|
<consumer> [<consumer> ...]
|
||||||
|
|
||||||
.. describe:: <consumer>
|
.. describe:: <consumer>
|
||||||
|
|
||||||
Consumer to delete
|
Consumer(s) to delete
|
||||||
|
|
||||||
consumer list
|
consumer list
|
||||||
-------------
|
-------------
|
||||||
|
@ -43,17 +43,17 @@ Create new domain
|
|||||||
domain delete
|
domain delete
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Delete domain
|
Delete domain(s)
|
||||||
|
|
||||||
.. program:: domain delete
|
.. program:: domain delete
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
os domain delete
|
os domain delete
|
||||||
<domain>
|
<domain> [<domain> ...]
|
||||||
|
|
||||||
.. describe:: <domain>
|
.. describe:: <domain>
|
||||||
|
|
||||||
Domain to delete (name or ID)
|
Domain(s) to delete (name or ID)
|
||||||
|
|
||||||
domain list
|
domain list
|
||||||
-----------
|
-----------
|
||||||
|
@ -34,14 +34,14 @@ Create new federation protocol
|
|||||||
federation protocol delete
|
federation protocol delete
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
Delete federation protocol
|
Delete federation protocol(s)
|
||||||
|
|
||||||
.. program:: federation protocol delete
|
.. program:: federation protocol delete
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
os federation protocol delete
|
os federation protocol delete
|
||||||
--identity-provider <identity-provider>
|
--identity-provider <identity-provider>
|
||||||
<federation-protocol>
|
<federation-protocol> [<federation-protocol> ...]
|
||||||
|
|
||||||
.. option:: --identity-provider <identity-provider>
|
.. option:: --identity-provider <identity-provider>
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ Delete federation protocol
|
|||||||
|
|
||||||
.. describe:: <federation-protocol>
|
.. describe:: <federation-protocol>
|
||||||
|
|
||||||
Federation protocol to delete (name or ID)
|
Federation protocol(s) to delete (name or ID)
|
||||||
|
|
||||||
federation protocol list
|
federation protocol list
|
||||||
------------------------
|
------------------------
|
||||||
|
@ -49,17 +49,17 @@ Create new identity provider
|
|||||||
identity provider delete
|
identity provider delete
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
Delete identity provider
|
Delete identity provider(s)
|
||||||
|
|
||||||
.. program:: identity provider delete
|
.. program:: identity provider delete
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
os identity provider delete
|
os identity provider delete
|
||||||
<identity-provider>
|
<identity-provider> [<identity-provider> ...]
|
||||||
|
|
||||||
.. describe:: <identity-provider>
|
.. describe:: <identity-provider>
|
||||||
|
|
||||||
Identity provider to delete
|
Identity provider(s) to delete
|
||||||
|
|
||||||
identity provider list
|
identity provider list
|
||||||
----------------------
|
----------------------
|
||||||
|
@ -30,18 +30,18 @@ Create new mapping
|
|||||||
mapping delete
|
mapping delete
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Delete mapping
|
Delete mapping(s)
|
||||||
|
|
||||||
.. program:: mapping delete
|
.. program:: mapping delete
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
os mapping delete
|
os mapping delete
|
||||||
<mapping>
|
<mapping> [<mapping> ...]
|
||||||
|
|
||||||
.. _mapping_delete-mapping:
|
.. _mapping_delete-mapping:
|
||||||
.. describe:: <mapping>
|
.. describe:: <mapping>
|
||||||
|
|
||||||
Mapping to delete
|
Mapping(s) to delete
|
||||||
|
|
||||||
mapping list
|
mapping list
|
||||||
------------
|
------------
|
||||||
|
@ -27,17 +27,17 @@ Create new policy
|
|||||||
policy delete
|
policy delete
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Delete policy
|
Delete policy(s)
|
||||||
|
|
||||||
.. program:: policy delete
|
.. program:: policy delete
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
os policy delete
|
os policy delete
|
||||||
<policy>
|
<policy> [<policy> ...]
|
||||||
|
|
||||||
.. describe:: <policy>
|
.. describe:: <policy>
|
||||||
|
|
||||||
Policy to delete
|
Policy(s) to delete
|
||||||
|
|
||||||
policy list
|
policy list
|
||||||
-----------
|
-----------
|
||||||
|
@ -33,18 +33,18 @@ Create new region
|
|||||||
region delete
|
region delete
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Delete region
|
Delete region(s)
|
||||||
|
|
||||||
.. program:: region delete
|
.. program:: region delete
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
os region delete
|
os region delete
|
||||||
<region-id>
|
<region-id> [<region-id> ...]
|
||||||
|
|
||||||
.. _region_delete-region-id:
|
.. _region_delete-region-id:
|
||||||
.. describe:: <region-id>
|
.. describe:: <region-id>
|
||||||
|
|
||||||
Region ID to delete
|
Region ID(s) to delete
|
||||||
|
|
||||||
region list
|
region list
|
||||||
-----------
|
-----------
|
||||||
|
@ -48,17 +48,17 @@ Create new service provider
|
|||||||
service provider delete
|
service provider delete
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
Delete service provider
|
Delete service provider(s)
|
||||||
|
|
||||||
.. program:: service provider delete
|
.. program:: service provider delete
|
||||||
.. code:: bash
|
.. code:: bash
|
||||||
|
|
||||||
os service provider delete
|
os service provider delete
|
||||||
<service-provider>
|
<service-provider> [<service-provider> ...]
|
||||||
|
|
||||||
.. describe:: <service-provider>
|
.. describe:: <service-provider>
|
||||||
|
|
||||||
Service provider to delete
|
Service provider(s) to delete
|
||||||
|
|
||||||
service provider list
|
service provider list
|
||||||
---------------------
|
---------------------
|
||||||
|
@ -43,6 +43,18 @@ class DomainTests(common.IdentityTests):
|
|||||||
raw_output = self.openstack('domain delete %s' % domain_name)
|
raw_output = self.openstack('domain delete %s' % domain_name)
|
||||||
self.assertEqual(0, len(raw_output))
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
|
def test_domain_multi_delete(self):
|
||||||
|
domain_1 = self._create_dummy_domain(add_clean_up=False)
|
||||||
|
domain_2 = self._create_dummy_domain(add_clean_up=False)
|
||||||
|
# cannot delete enabled domain, disable it first
|
||||||
|
raw_output = self.openstack('domain set --disable %s' % domain_1)
|
||||||
|
self.assertEqual(0, len(raw_output))
|
||||||
|
raw_output = self.openstack('domain set --disable %s' % domain_2)
|
||||||
|
self.assertEqual(0, len(raw_output))
|
||||||
|
raw_output = self.openstack(
|
||||||
|
'domain delete %s %s' % (domain_1, domain_2))
|
||||||
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
def test_domain_delete_failure(self):
|
def test_domain_delete_failure(self):
|
||||||
domain_name = self._create_dummy_domain()
|
domain_name = self._create_dummy_domain()
|
||||||
# cannot delete enabled domain
|
# cannot delete enabled domain
|
||||||
|
@ -28,6 +28,13 @@ class EndpointTests(common.IdentityTests):
|
|||||||
'endpoint delete %s' % endpoint_id)
|
'endpoint delete %s' % endpoint_id)
|
||||||
self.assertEqual(0, len(raw_output))
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
|
def test_endpoint_multi_delete(self):
|
||||||
|
endpoint_1 = self._create_dummy_endpoint(add_clean_up=False)
|
||||||
|
endpoint_2 = self._create_dummy_endpoint(add_clean_up=False)
|
||||||
|
raw_output = self.openstack(
|
||||||
|
'endpoint delete %s %s' % (endpoint_1, endpoint_2))
|
||||||
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
def test_endpoint_list(self):
|
def test_endpoint_list(self):
|
||||||
endpoint_id = self._create_dummy_endpoint()
|
endpoint_id = self._create_dummy_endpoint()
|
||||||
raw_output = self.openstack('endpoint list')
|
raw_output = self.openstack('endpoint list')
|
||||||
|
@ -26,6 +26,13 @@ class IdentityProviderTests(common.IdentityTests):
|
|||||||
% identity_provider)
|
% identity_provider)
|
||||||
self.assertEqual(0, len(raw_output))
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
|
def test_idp_multi_delete(self):
|
||||||
|
idp_1 = self._create_dummy_idp(add_clean_up=False)
|
||||||
|
idp_2 = self._create_dummy_idp(add_clean_up=False)
|
||||||
|
raw_output = self.openstack(
|
||||||
|
'identity provider delete %s %s' % (idp_1, idp_2))
|
||||||
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
def test_idp_show(self):
|
def test_idp_show(self):
|
||||||
identity_provider = self._create_dummy_idp(add_clean_up=True)
|
identity_provider = self._create_dummy_idp(add_clean_up=True)
|
||||||
raw_output = self.openstack('identity provider show %s'
|
raw_output = self.openstack('identity provider show %s'
|
||||||
|
@ -27,6 +27,13 @@ class RegionTests(common.IdentityTests):
|
|||||||
raw_output = self.openstack('region delete %s' % region_id)
|
raw_output = self.openstack('region delete %s' % region_id)
|
||||||
self.assertEqual(0, len(raw_output))
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
|
def test_region_multi_delete(self):
|
||||||
|
region_1 = self._create_dummy_region(add_clean_up=False)
|
||||||
|
region_2 = self._create_dummy_region(add_clean_up=False)
|
||||||
|
raw_output = self.openstack(
|
||||||
|
'region delete %s %s' % (region_1, region_2))
|
||||||
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
def test_region_list(self):
|
def test_region_list(self):
|
||||||
raw_output = self.openstack('region list')
|
raw_output = self.openstack('region list')
|
||||||
items = self.parse_listing(raw_output)
|
items = self.parse_listing(raw_output)
|
||||||
|
@ -25,6 +25,13 @@ class ServiceTests(common.IdentityTests):
|
|||||||
raw_output = self.openstack('service delete %s' % service_name)
|
raw_output = self.openstack('service delete %s' % service_name)
|
||||||
self.assertEqual(0, len(raw_output))
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
|
def test_service_multi_delete(self):
|
||||||
|
service_1 = self._create_dummy_service(add_clean_up=False)
|
||||||
|
service_2 = self._create_dummy_service(add_clean_up=False)
|
||||||
|
raw_output = self.openstack(
|
||||||
|
'service delete %s %s' % (service_1, service_2))
|
||||||
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
def test_service_list(self):
|
def test_service_list(self):
|
||||||
self._create_dummy_service()
|
self._create_dummy_service()
|
||||||
raw_output = self.openstack('service list')
|
raw_output = self.openstack('service list')
|
||||||
|
@ -26,6 +26,13 @@ class ServiceProviderTests(common.IdentityTests):
|
|||||||
% service_provider)
|
% service_provider)
|
||||||
self.assertEqual(0, len(raw_output))
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
|
def test_sp_multi_delete(self):
|
||||||
|
sp1 = self._create_dummy_sp(add_clean_up=False)
|
||||||
|
sp2 = self._create_dummy_sp(add_clean_up=False)
|
||||||
|
raw_output = self.openstack(
|
||||||
|
'service provider delete %s %s' % (sp1, sp2))
|
||||||
|
self.assertEqual(0, len(raw_output))
|
||||||
|
|
||||||
def test_sp_show(self):
|
def test_sp_show(self):
|
||||||
service_provider = self._create_dummy_sp(add_clean_up=True)
|
service_provider = self._create_dummy_sp(add_clean_up=True)
|
||||||
raw_output = self.openstack('service provider show %s'
|
raw_output = self.openstack('service provider show %s'
|
||||||
|
@ -15,13 +15,19 @@
|
|||||||
|
|
||||||
"""Identity v3 Consumer action implementations"""
|
"""Identity v3 Consumer action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from openstackclient.i18n import _
|
from openstackclient.i18n import _
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CreateConsumer(command.ShowOne):
|
class CreateConsumer(command.ShowOne):
|
||||||
"""Create new consumer"""
|
"""Create new consumer"""
|
||||||
|
|
||||||
@ -44,22 +50,37 @@ class CreateConsumer(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteConsumer(command.Command):
|
class DeleteConsumer(command.Command):
|
||||||
"""Delete consumer"""
|
"""Delete consumer(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteConsumer, self).get_parser(prog_name)
|
parser = super(DeleteConsumer, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'consumer',
|
'consumer',
|
||||||
metavar='<consumer>',
|
metavar='<consumer>',
|
||||||
help=_('Consumer to delete'),
|
nargs='+',
|
||||||
|
help=_('Consumer(s) to delete'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
consumer = utils.find_resource(
|
result = 0
|
||||||
identity_client.oauth1.consumers, parsed_args.consumer)
|
for i in parsed_args.consumer:
|
||||||
identity_client.oauth1.consumers.delete(consumer.id)
|
try:
|
||||||
|
consumer = utils.find_resource(
|
||||||
|
identity_client.oauth1.consumers, i)
|
||||||
|
identity_client.oauth1.consumers.delete(consumer.id)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete consumer with name or "
|
||||||
|
"ID '%(consumer)s': %(e)s")
|
||||||
|
% {'consumer': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.consumer)
|
||||||
|
msg = (_("%(result)s of %(total)s consumers failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListConsumer(command.Lister):
|
class ListConsumer(command.Lister):
|
||||||
|
@ -15,13 +15,19 @@
|
|||||||
|
|
||||||
"""Identity v3 Credential action implementations"""
|
"""Identity v3 Credential action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from openstackclient.i18n import _
|
from openstackclient.i18n import _
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CreateCredential(command.ShowOne):
|
class CreateCredential(command.ShowOne):
|
||||||
"""Create credential command"""
|
"""Create credential command"""
|
||||||
|
|
||||||
@ -72,20 +78,35 @@ class CreateCredential(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteCredential(command.Command):
|
class DeleteCredential(command.Command):
|
||||||
"""Delete credential command"""
|
"""Delete credential(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteCredential, self).get_parser(prog_name)
|
parser = super(DeleteCredential, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'credential',
|
'credential',
|
||||||
metavar='<credential-id>',
|
metavar='<credential-id>',
|
||||||
help=_('ID of credential to delete'),
|
nargs='+',
|
||||||
|
help=_('ID of credential(s) to delete'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
identity_client.credentials.delete(parsed_args.credential)
|
result = 0
|
||||||
|
for i in parsed_args.credential:
|
||||||
|
try:
|
||||||
|
identity_client.credentials.delete(i)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete credentials with "
|
||||||
|
"ID '%(credential)s': %(e)s")
|
||||||
|
% {'credential': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.credential)
|
||||||
|
msg = (_("%(result)s of %(total)s credential failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListCredential(command.Lister):
|
class ListCredential(command.Lister):
|
||||||
|
@ -19,6 +19,7 @@ import logging
|
|||||||
|
|
||||||
from keystoneauth1 import exceptions as ks_exc
|
from keystoneauth1 import exceptions as ks_exc
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@ -88,22 +89,36 @@ class CreateDomain(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteDomain(command.Command):
|
class DeleteDomain(command.Command):
|
||||||
"""Delete domain"""
|
"""Delete domain(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteDomain, self).get_parser(prog_name)
|
parser = super(DeleteDomain, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'domain',
|
'domain',
|
||||||
metavar='<domain>',
|
metavar='<domain>',
|
||||||
help=_('Domain to delete (name or ID)'),
|
nargs='+',
|
||||||
|
help=_('Domain(s) to delete (name or ID)'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
domain = utils.find_resource(identity_client.domains,
|
result = 0
|
||||||
parsed_args.domain)
|
for i in parsed_args.domain:
|
||||||
identity_client.domains.delete(domain.id)
|
try:
|
||||||
|
domain = utils.find_resource(identity_client.domains, i)
|
||||||
|
identity_client.domains.delete(domain.id)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete domain with name or "
|
||||||
|
"ID '%(domain)s': %(e)s")
|
||||||
|
% {'domain': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.domain)
|
||||||
|
msg = (_("%(result)s of %(total)s domains failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListDomain(command.Lister):
|
class ListDomain(command.Lister):
|
||||||
|
@ -12,7 +12,10 @@
|
|||||||
|
|
||||||
"""Identity v3 EC2 Credentials action implementations"""
|
"""Identity v3 EC2 Credentials action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@ -20,6 +23,9 @@ from openstackclient.i18n import _
|
|||||||
from openstackclient.identity import common
|
from openstackclient.identity import common
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def _determine_ec2_user(parsed_args, client_manager):
|
def _determine_ec2_user(parsed_args, client_manager):
|
||||||
"""Determine a user several different ways.
|
"""Determine a user several different ways.
|
||||||
|
|
||||||
@ -113,7 +119,8 @@ class DeleteEC2Creds(command.Command):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'access_key',
|
'access_key',
|
||||||
metavar='<access-key>',
|
metavar='<access-key>',
|
||||||
help=_('Credentials access key'),
|
nargs='+',
|
||||||
|
help=_('Credentials access key(s)'),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--user',
|
'--user',
|
||||||
@ -126,7 +133,21 @@ class DeleteEC2Creds(command.Command):
|
|||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
client_manager = self.app.client_manager
|
client_manager = self.app.client_manager
|
||||||
user = _determine_ec2_user(parsed_args, client_manager)
|
user = _determine_ec2_user(parsed_args, client_manager)
|
||||||
client_manager.identity.ec2.delete(user, parsed_args.access_key)
|
result = 0
|
||||||
|
for i in parsed_args.access_key:
|
||||||
|
try:
|
||||||
|
client_manager.identity.ec2.delete(user, i)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete EC2 credentials with "
|
||||||
|
"access key '%(access_key)s': %(e)s")
|
||||||
|
% {'access_key': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.access_key)
|
||||||
|
msg = (_("%(result)s of %(total)s EC2 keys failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListEC2Creds(command.Lister):
|
class ListEC2Creds(command.Lister):
|
||||||
|
@ -15,7 +15,10 @@
|
|||||||
|
|
||||||
"""Identity v3 Endpoint action implementations"""
|
"""Identity v3 Endpoint action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@ -23,6 +26,9 @@ from openstackclient.i18n import _
|
|||||||
from openstackclient.identity import common
|
from openstackclient.identity import common
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_service_name(service):
|
def get_service_name(service):
|
||||||
if hasattr(service, 'name'):
|
if hasattr(service, 'name'):
|
||||||
return service.name
|
return service.name
|
||||||
@ -93,22 +99,37 @@ class CreateEndpoint(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteEndpoint(command.Command):
|
class DeleteEndpoint(command.Command):
|
||||||
"""Delete endpoint"""
|
"""Delete endpoint(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteEndpoint, self).get_parser(prog_name)
|
parser = super(DeleteEndpoint, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'endpoint',
|
'endpoint',
|
||||||
metavar='<endpoint-id>',
|
metavar='<endpoint-id>',
|
||||||
help=_('Endpoint to delete (ID only)'),
|
nargs='+',
|
||||||
|
help=_('Endpoint(s) to delete (ID only)'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
endpoint_id = utils.find_resource(identity_client.endpoints,
|
result = 0
|
||||||
parsed_args.endpoint).id
|
for i in parsed_args.endpoint:
|
||||||
identity_client.endpoints.delete(endpoint_id)
|
try:
|
||||||
|
endpoint_id = utils.find_resource(
|
||||||
|
identity_client.endpoints, i).id
|
||||||
|
identity_client.endpoints.delete(endpoint_id)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete endpoint with "
|
||||||
|
"ID '%(endpoint)s': %(e)s")
|
||||||
|
% {'endpoint': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.endpoint)
|
||||||
|
msg = (_("%(result)s of %(total)s endpoints failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListEndpoint(command.Lister):
|
class ListEndpoint(command.Lister):
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@ -71,14 +72,15 @@ class CreateProtocol(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteProtocol(command.Command):
|
class DeleteProtocol(command.Command):
|
||||||
"""Delete federation protocol"""
|
"""Delete federation protocol(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteProtocol, self).get_parser(prog_name)
|
parser = super(DeleteProtocol, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'federation_protocol',
|
'federation_protocol',
|
||||||
metavar='<federation-protocol>',
|
metavar='<federation-protocol>',
|
||||||
help=_('Federation protocol to delete (name or ID)'),
|
nargs='+',
|
||||||
|
help=_('Federation protocol(s) to delete (name or ID)'),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--identity-provider',
|
'--identity-provider',
|
||||||
@ -92,8 +94,22 @@ class DeleteProtocol(command.Command):
|
|||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
identity_client.federation.protocols.delete(
|
result = 0
|
||||||
parsed_args.identity_provider, parsed_args.federation_protocol)
|
for i in parsed_args.federation_protocol:
|
||||||
|
try:
|
||||||
|
identity_client.federation.protocols.delete(
|
||||||
|
parsed_args.identity_provider, i)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete federation protocol "
|
||||||
|
"with name or ID '%(protocol)s': %(e)s")
|
||||||
|
% {'protocol': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.federation_protocol)
|
||||||
|
msg = (_("%(result)s of %(total)s federation protocols failed"
|
||||||
|
" to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListProtocols(command.Lister):
|
class ListProtocols(command.Lister):
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@ -93,21 +94,35 @@ class CreateIdentityProvider(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteIdentityProvider(command.Command):
|
class DeleteIdentityProvider(command.Command):
|
||||||
"""Delete identity provider"""
|
"""Delete identity provider(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteIdentityProvider, self).get_parser(prog_name)
|
parser = super(DeleteIdentityProvider, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'identity_provider',
|
'identity_provider',
|
||||||
metavar='<identity-provider>',
|
metavar='<identity-provider>',
|
||||||
help=_('Identity provider to delete'),
|
nargs='+',
|
||||||
|
help=_('Identity provider(s) to delete'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
identity_client.federation.identity_providers.delete(
|
result = 0
|
||||||
parsed_args.identity_provider)
|
for i in parsed_args.identity_provider:
|
||||||
|
try:
|
||||||
|
identity_client.federation.identity_providers.delete(i)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete identity providers with "
|
||||||
|
"name or ID '%(provider)s': %(e)s")
|
||||||
|
% {'provider': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.identity_provider)
|
||||||
|
msg = (_("%(result)s of %(total)s identity providers failed"
|
||||||
|
" to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListIdentityProvider(command.Lister):
|
class ListIdentityProvider(command.Lister):
|
||||||
|
@ -111,21 +111,35 @@ class CreateMapping(command.ShowOne, _RulesReader):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteMapping(command.Command):
|
class DeleteMapping(command.Command):
|
||||||
"""Delete mapping"""
|
"""Delete mapping(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteMapping, self).get_parser(prog_name)
|
parser = super(DeleteMapping, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'mapping',
|
'mapping',
|
||||||
metavar='<mapping>',
|
metavar='<mapping>',
|
||||||
help=_('Mapping to delete'),
|
nargs='+',
|
||||||
|
help=_('Mapping(s) to delete'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
|
result = 0
|
||||||
|
for i in parsed_args.mapping:
|
||||||
|
try:
|
||||||
|
identity_client.federation.mappings.delete(i)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete mapping with name or "
|
||||||
|
"ID '%(mapping)s': %(e)s")
|
||||||
|
% {'mapping': i, 'e': e})
|
||||||
|
|
||||||
identity_client.federation.mappings.delete(parsed_args.mapping)
|
if result > 0:
|
||||||
|
total = len(parsed_args.mapping)
|
||||||
|
msg = (_("%(result)s of %(total)s mappings failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListMapping(command.Lister):
|
class ListMapping(command.Lister):
|
||||||
|
@ -15,13 +15,19 @@
|
|||||||
|
|
||||||
"""Identity v3 Policy action implementations"""
|
"""Identity v3 Policy action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from openstackclient.i18n import _
|
from openstackclient.i18n import _
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CreatePolicy(command.ShowOne):
|
class CreatePolicy(command.ShowOne):
|
||||||
"""Create new policy"""
|
"""Create new policy"""
|
||||||
|
|
||||||
@ -55,20 +61,35 @@ class CreatePolicy(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeletePolicy(command.Command):
|
class DeletePolicy(command.Command):
|
||||||
"""Delete policy"""
|
"""Delete policy(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeletePolicy, self).get_parser(prog_name)
|
parser = super(DeletePolicy, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'policy',
|
'policy',
|
||||||
metavar='<policy>',
|
metavar='<policy>',
|
||||||
help=_('Policy to delete'),
|
nargs='+',
|
||||||
|
help=_('Policy(s) to delete'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
identity_client.policies.delete(parsed_args.policy)
|
result = 0
|
||||||
|
for i in parsed_args.policy:
|
||||||
|
try:
|
||||||
|
identity_client.policies.delete(i)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete policy with name or "
|
||||||
|
"ID '%(policy)s': %(e)s")
|
||||||
|
% {'policy': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.policy)
|
||||||
|
msg = (_("%(result)s of %(total)s policys failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListPolicy(command.Lister):
|
class ListPolicy(command.Lister):
|
||||||
|
@ -13,13 +13,19 @@
|
|||||||
|
|
||||||
"""Identity v3 Region action implementations"""
|
"""Identity v3 Region action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from openstackclient.i18n import _
|
from openstackclient.i18n import _
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CreateRegion(command.ShowOne):
|
class CreateRegion(command.ShowOne):
|
||||||
"""Create new region"""
|
"""Create new region"""
|
||||||
|
|
||||||
@ -60,21 +66,35 @@ class CreateRegion(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteRegion(command.Command):
|
class DeleteRegion(command.Command):
|
||||||
"""Delete region"""
|
"""Delete region(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteRegion, self).get_parser(prog_name)
|
parser = super(DeleteRegion, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'region',
|
'region',
|
||||||
metavar='<region-id>',
|
metavar='<region-id>',
|
||||||
help=_('Region ID to delete'),
|
nargs='+',
|
||||||
|
help=_('Region ID(s) to delete'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
|
result = 0
|
||||||
|
for i in parsed_args.region:
|
||||||
|
try:
|
||||||
|
identity_client.regions.delete(i)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete region with "
|
||||||
|
"ID '%(region)s': %(e)s")
|
||||||
|
% {'region': i, 'e': e})
|
||||||
|
|
||||||
identity_client.regions.delete(parsed_args.region)
|
if result > 0:
|
||||||
|
total = len(parsed_args.region)
|
||||||
|
msg = (_("%(result)s of %(total)s regions failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListRegion(command.Lister):
|
class ListRegion(command.Lister):
|
||||||
|
@ -15,7 +15,10 @@
|
|||||||
|
|
||||||
"""Identity v3 Service action implementations"""
|
"""Identity v3 Service action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
@ -23,6 +26,9 @@ from openstackclient.i18n import _
|
|||||||
from openstackclient.identity import common
|
from openstackclient.identity import common
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CreateService(command.ShowOne):
|
class CreateService(command.ShowOne):
|
||||||
"""Create new service"""
|
"""Create new service"""
|
||||||
|
|
||||||
@ -75,23 +81,36 @@ class CreateService(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteService(command.Command):
|
class DeleteService(command.Command):
|
||||||
"""Delete service"""
|
"""Delete service(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteService, self).get_parser(prog_name)
|
parser = super(DeleteService, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'service',
|
'service',
|
||||||
metavar='<service>',
|
metavar='<service>',
|
||||||
help=_('Service to delete (type, name or ID)'),
|
nargs='+',
|
||||||
|
help=_('Service(s) to delete (type, name or ID)'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
identity_client = self.app.client_manager.identity
|
identity_client = self.app.client_manager.identity
|
||||||
|
result = 0
|
||||||
|
for i in parsed_args.service:
|
||||||
|
try:
|
||||||
|
service = common.find_service(identity_client, i)
|
||||||
|
identity_client.services.delete(service.id)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete consumer with type, "
|
||||||
|
"name or ID '%(service)s': %(e)s")
|
||||||
|
% {'service': i, 'e': e})
|
||||||
|
|
||||||
service = common.find_service(identity_client, parsed_args.service)
|
if result > 0:
|
||||||
|
total = len(parsed_args.service)
|
||||||
identity_client.services.delete(service.id)
|
msg = (_("%(result)s of %(total)s services failed "
|
||||||
|
"to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListService(command.Lister):
|
class ListService(command.Lister):
|
||||||
|
@ -13,13 +13,19 @@
|
|||||||
|
|
||||||
"""Service Provider action implementations"""
|
"""Service Provider action implementations"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
from osc_lib import exceptions
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from openstackclient.i18n import _
|
from openstackclient.i18n import _
|
||||||
|
|
||||||
|
|
||||||
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CreateServiceProvider(command.ShowOne):
|
class CreateServiceProvider(command.ShowOne):
|
||||||
"""Create new service provider"""
|
"""Create new service provider"""
|
||||||
|
|
||||||
@ -81,21 +87,35 @@ class CreateServiceProvider(command.ShowOne):
|
|||||||
|
|
||||||
|
|
||||||
class DeleteServiceProvider(command.Command):
|
class DeleteServiceProvider(command.Command):
|
||||||
"""Delete service provider"""
|
"""Delete service provider(s)"""
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(DeleteServiceProvider, self).get_parser(prog_name)
|
parser = super(DeleteServiceProvider, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'service_provider',
|
'service_provider',
|
||||||
metavar='<service-provider>',
|
metavar='<service-provider>',
|
||||||
help=_('Service provider to delete'),
|
nargs='+',
|
||||||
|
help=_('Service provider(s) to delete'),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
service_client = self.app.client_manager.identity
|
service_client = self.app.client_manager.identity
|
||||||
service_client.federation.service_providers.delete(
|
result = 0
|
||||||
parsed_args.service_provider)
|
for i in parsed_args.service_provider:
|
||||||
|
try:
|
||||||
|
service_client.federation.service_providers.delete(i)
|
||||||
|
except Exception as e:
|
||||||
|
result += 1
|
||||||
|
LOG.error(_("Failed to delete service provider with "
|
||||||
|
"name or ID '%(provider)s': %(e)s")
|
||||||
|
% {'provider': i, 'e': e})
|
||||||
|
|
||||||
|
if result > 0:
|
||||||
|
total = len(parsed_args.service_provider)
|
||||||
|
msg = (_("%(result)s of %(total)s service providers failed"
|
||||||
|
" to delete.") % {'result': result, 'total': total})
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
|
||||||
|
|
||||||
class ListServiceProvider(command.Lister):
|
class ListServiceProvider(command.Lister):
|
||||||
|
@ -83,7 +83,7 @@ class TestConsumerDelete(TestOAuth1):
|
|||||||
identity_fakes.consumer_id,
|
identity_fakes.consumer_id,
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('consumer', identity_fakes.consumer_id),
|
('consumer', [identity_fakes.consumer_id]),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ class TestDomainDelete(TestDomain):
|
|||||||
self.domain.id,
|
self.domain.id,
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('domain', self.domain.id),
|
('domain', [self.domain.id]),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
@ -273,7 +273,7 @@ class TestEndpointDelete(TestEndpoint):
|
|||||||
identity_fakes.endpoint_id,
|
identity_fakes.endpoint_id,
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('endpoint', identity_fakes.endpoint_id),
|
('endpoint', [identity_fakes.endpoint_id]),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ class TestIdentityProviderDelete(TestIdentityProvider):
|
|||||||
identity_fakes.idp_id,
|
identity_fakes.idp_id,
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('identity_provider', identity_fakes.idp_id),
|
('identity_provider', [identity_fakes.idp_id]),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ class TestMappingDelete(TestMapping):
|
|||||||
identity_fakes.mapping_id
|
identity_fakes.mapping_id
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('mapping', identity_fakes.mapping_id)
|
('mapping', [identity_fakes.mapping_id])
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ class TestProtocolDelete(TestProtocol):
|
|||||||
identity_fakes.protocol_id
|
identity_fakes.protocol_id
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('federation_protocol', identity_fakes.protocol_id),
|
('federation_protocol', [identity_fakes.protocol_id]),
|
||||||
('identity_provider', identity_fakes.idp_id),
|
('identity_provider', identity_fakes.idp_id),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
@ -153,7 +153,7 @@ class TestRegionDelete(TestRegion):
|
|||||||
identity_fakes.region_id,
|
identity_fakes.region_id,
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('region', identity_fakes.region_id),
|
('region', [identity_fakes.region_id]),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ class TestServiceDelete(TestService):
|
|||||||
identity_fakes.service_name,
|
identity_fakes.service_name,
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('service', identity_fakes.service_name),
|
('service', [identity_fakes.service_name]),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ class TestServiceProviderDelete(TestServiceProvider):
|
|||||||
service_fakes.sp_id,
|
service_fakes.sp_id,
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('service_provider', service_fakes.sp_id),
|
('service_provider', [service_fakes.sp_id]),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
8
releasenotes/notes/bug-1592906-ad67ce8736f3cd48.yaml
Normal file
8
releasenotes/notes/bug-1592906-ad67ce8736f3cd48.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Support bulk deletion for identity v3 commands: ``consumer``,
|
||||||
|
``credential``, ``domain``, ``ec2creds``, ``endpoint``,
|
||||||
|
``federation_protocol``, ``identity_provider``, ``mapping``,
|
||||||
|
``policy``, ``region``, ``service_provider`` and ``service``.
|
||||||
|
[Bug `1592906 <https://bugs.launchpad.net/bugs/1592906>`_]
|
Loading…
Reference in New Issue
Block a user