add --domain argument to v3 project set

Currently argument 'domain' is not supported by command 'os project
set', but it is required by keystone v3 update project API to match
the domain id.

Closes-Bug: #1460122
Change-Id: I1b32f67f78b369f6134a74cdf9a4811b7539d44b
This commit is contained in:
Guojian Shao 2015-05-29 11:50:30 -04:00
parent 211c14c638
commit 542f587364
3 changed files with 29 additions and 0 deletions
doc/source/command-objects
openstackclient
identity/v3
tests/identity/v3

@ -124,6 +124,12 @@ Set project properties
Set project name Set project name
.. option:: --domain <domain>
Domain owning :ref:`\<project\> <project_set-project>` (name or ID)
.. versionadded:: 3
.. option:: --description <description> .. option:: --description <description>
Set project description Set project description

@ -241,6 +241,11 @@ class SetProject(command.Command):
metavar='<name>', metavar='<name>',
help='Set project name', help='Set project name',
) )
parser.add_argument(
'--domain',
metavar='<domain>',
help='Domain owning <project> (name or ID)',
)
parser.add_argument( parser.add_argument(
'--description', '--description',
metavar='<description>', metavar='<description>',
@ -271,6 +276,7 @@ class SetProject(command.Command):
identity_client = self.app.client_manager.identity identity_client = self.app.client_manager.identity
if (not parsed_args.name if (not parsed_args.name
and not parsed_args.domain
and not parsed_args.description and not parsed_args.description
and not parsed_args.enable and not parsed_args.enable
and not parsed_args.property and not parsed_args.property
@ -285,6 +291,8 @@ class SetProject(command.Command):
kwargs = {} kwargs = {}
if parsed_args.name: if parsed_args.name:
kwargs['name'] = parsed_args.name kwargs['name'] = parsed_args.name
if parsed_args.domain:
kwargs['domain'] = parsed_args.domain
if parsed_args.description: if parsed_args.description:
kwargs['description'] = parsed_args.description kwargs['description'] = parsed_args.description
if parsed_args.enable: if parsed_args.enable:

@ -618,10 +618,12 @@ class TestProjectSet(TestProject):
def test_project_set_name(self): def test_project_set_name(self):
arglist = [ arglist = [
'--name', 'qwerty', '--name', 'qwerty',
'--domain', identity_fakes.domain_id,
identity_fakes.project_name, identity_fakes.project_name,
] ]
verifylist = [ verifylist = [
('name', 'qwerty'), ('name', 'qwerty'),
('domain', identity_fakes.domain_id),
('enable', False), ('enable', False),
('disable', False), ('disable', False),
('project', identity_fakes.project_name), ('project', identity_fakes.project_name),
@ -634,6 +636,7 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'name': 'qwerty', 'name': 'qwerty',
'domain': identity_fakes.domain_id,
} }
# ProjectManager.update(project, name=, domain=, description=, # ProjectManager.update(project, name=, domain=, description=,
# enabled=, **kwargs) # enabled=, **kwargs)
@ -644,10 +647,12 @@ class TestProjectSet(TestProject):
def test_project_set_description(self): def test_project_set_description(self):
arglist = [ arglist = [
'--domain', identity_fakes.domain_id,
'--description', 'new desc', '--description', 'new desc',
identity_fakes.project_name, identity_fakes.project_name,
] ]
verifylist = [ verifylist = [
('domain', identity_fakes.domain_id),
('description', 'new desc'), ('description', 'new desc'),
('enable', False), ('enable', False),
('disable', False), ('disable', False),
@ -660,6 +665,7 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'domain': identity_fakes.domain_id,
'description': 'new desc', 'description': 'new desc',
} }
self.projects_mock.update.assert_called_with( self.projects_mock.update.assert_called_with(
@ -669,10 +675,12 @@ class TestProjectSet(TestProject):
def test_project_set_enable(self): def test_project_set_enable(self):
arglist = [ arglist = [
'--domain', identity_fakes.domain_id,
'--enable', '--enable',
identity_fakes.project_name, identity_fakes.project_name,
] ]
verifylist = [ verifylist = [
('domain', identity_fakes.domain_id),
('enable', True), ('enable', True),
('disable', False), ('disable', False),
('project', identity_fakes.project_name), ('project', identity_fakes.project_name),
@ -684,6 +692,7 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'domain': identity_fakes.domain_id,
'enabled': True, 'enabled': True,
} }
self.projects_mock.update.assert_called_with( self.projects_mock.update.assert_called_with(
@ -693,10 +702,12 @@ class TestProjectSet(TestProject):
def test_project_set_disable(self): def test_project_set_disable(self):
arglist = [ arglist = [
'--domain', identity_fakes.domain_id,
'--disable', '--disable',
identity_fakes.project_name, identity_fakes.project_name,
] ]
verifylist = [ verifylist = [
('domain', identity_fakes.domain_id),
('enable', False), ('enable', False),
('disable', True), ('disable', True),
('project', identity_fakes.project_name), ('project', identity_fakes.project_name),
@ -708,6 +719,7 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'domain': identity_fakes.domain_id,
'enabled': False, 'enabled': False,
} }
self.projects_mock.update.assert_called_with( self.projects_mock.update.assert_called_with(
@ -717,11 +729,13 @@ class TestProjectSet(TestProject):
def test_project_set_property(self): def test_project_set_property(self):
arglist = [ arglist = [
'--domain', identity_fakes.domain_id,
'--property', 'fee=fi', '--property', 'fee=fi',
'--property', 'fo=fum', '--property', 'fo=fum',
identity_fakes.project_name, identity_fakes.project_name,
] ]
verifylist = [ verifylist = [
('domain', identity_fakes.domain_id),
('property', {'fee': 'fi', 'fo': 'fum'}), ('property', {'fee': 'fi', 'fo': 'fum'}),
('project', identity_fakes.project_name), ('project', identity_fakes.project_name),
] ]
@ -732,6 +746,7 @@ class TestProjectSet(TestProject):
# Set expected values # Set expected values
kwargs = { kwargs = {
'domain': identity_fakes.domain_id,
'fee': 'fi', 'fee': 'fi',
'fo': 'fum', 'fo': 'fum',
} }