Allow user to unset share network params

It is impossible to unset some value from share network if it was set.
Allow user to set share network params (name, description, neutron_net_id,
neutron_subnet_id) to empty value.

Closes-bug: #1446695

Change-Id: I43315d49a3b721db9619812656702c1865155338
This commit is contained in:
Julia Varlamova 2015-08-19 07:42:33 -04:00
parent 80eac1e73c
commit d6ad3710b1
4 changed files with 32 additions and 8 deletions

View File

@ -316,7 +316,7 @@ class ManilaCLIClient(base.CLIClient):
data['--neutron_subnet_id'] = neutron_subnet_id
cmd = ''
for key, value in data.items():
cmd += "%(k)s='%(v)s' " % dict(k=key, v=value)
cmd += "%(k)s=%(v)s " % dict(k=key, v=value)
return cmd
@not_found_wrapper

View File

@ -14,6 +14,7 @@
# under the License.
import ddt
import six
from tempest_lib.common.utils import data_utils
from tempest_lib import exceptions as tempest_lib_exc
@ -101,6 +102,11 @@ class ShareNetworksReadWriteTest(base.BaseTestCase):
{'nova_net_id': 'fake_nova_net_id'},
{'neutron_net_id': 'fake_neutron_net_id',
'neutron_subnet_id': 'fake_neutron_subnet_id'},
{'name': '""'},
{'description': '""'},
{'nova_net_id': '""'},
{'neutron_net_id': '""'},
{'neutron_subnet_id': '""'},
)
def test_create_update_share_network(self, net_data):
sn = self.create_share_network(cleanup_in_class=False)
@ -114,7 +120,9 @@ class ShareNetworksReadWriteTest(base.BaseTestCase):
'neutron_net_id': 'None',
'neutron_subnet_id': 'None',
}
expected_data.update(net_data)
update_values = dict([(k, v) for k, v in six.iteritems(net_data)
if v != '""'])
expected_data.update(update_values)
for k, v in expected_data.items():
self.assertEqual(v, update[k])

View File

@ -689,7 +689,17 @@ class ShellTest(test_utils.TestCase):
'--name': 'fake_name',
'--neutron_net_id': 'fake_neutron_net_id',
'--neutron_subnet_id': 'fake_neutron_subnet_id',
'--nova_net_id': 'fake_nova_net_id'})
'--nova_net_id': 'fake_nova_net_id'},
{'--name': '""'},
{'--description': '""'},
{'--nova_net_id': '""'},
{'--neutron_net_id': '""'},
{'--neutron_subnet_id': '""'},
{'--description': '""',
'--name': '""',
'--neutron_net_id': '""',
'--neutron_subnet_id': '""',
'--nova_net_id': '""'},)
def test_share_network_update(self, data):
cmd = 'share-network-update 1111'
expected = dict()

View File

@ -18,6 +18,8 @@ try:
except ImportError:
from urllib.parse import urlencode # noqa
import six
from manilaclient import base
from manilaclient import exceptions
from manilaclient.openstack.common.apiclient import base as common_base
@ -127,17 +129,21 @@ class ShareNetworkManager(base.ManagerWithFind):
:rtype: :class:`ShareNetwork`
"""
values = {}
if neutron_net_id:
if neutron_net_id is not None:
values['neutron_net_id'] = neutron_net_id
if neutron_subnet_id:
if neutron_subnet_id is not None:
values['neutron_subnet_id'] = neutron_subnet_id
if nova_net_id:
if nova_net_id is not None:
values['nova_net_id'] = nova_net_id
if name:
if name is not None:
values['name'] = name
if description:
if description is not None:
values['description'] = description
for k, v in six.iteritems(values):
if v == '':
values[k] = None
if not values:
msg = "Must specify fields to be updated"
raise exceptions.CommandError(msg)