openvswitch_db : Handle column value conversion and idempotency in no_key case (#43869)

* change column value to string. handle idempotency in no key case

* fix unit test failures in baseline
This commit is contained in:
Deepak Agrawal 2018-08-10 10:31:03 +05:30 committed by GitHub
parent 2974df9d5e
commit 8eaebf86b6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 11 deletions

View file

@ -120,15 +120,14 @@ def map_obj_to_commands(want, have, module):
"%(col)s" "%(col)s"
commands.append(templatized_command % module.params) commands.append(templatized_command % module.params)
else: else:
if want == have:
# Nothing to commit
return commands
if module.params['key'] is None: if module.params['key'] is None:
templatized_command = "%(ovs-vsctl)s -t %(timeout)s set %(table)s %(record)s " \ templatized_command = "%(ovs-vsctl)s -t %(timeout)s set %(table)s %(record)s " \
"%(col)s=%(value)s" "%(col)s=%(value)s"
commands.append(templatized_command % module.params) commands.append(templatized_command % module.params)
elif 'key' not in have.keys(): else:
templatized_command = "%(ovs-vsctl)s -t %(timeout)s add %(table)s %(record)s " \
"%(col)s %(key)s=%(value)s"
commands.append(templatized_command % module.params)
elif want['value'] != have['value']:
templatized_command = "%(ovs-vsctl)s -t %(timeout)s set %(table)s %(record)s " \ templatized_command = "%(ovs-vsctl)s -t %(timeout)s set %(table)s %(record)s " \
"%(col)s:%(key)s=%(value)s" "%(col)s:%(key)s=%(value)s"
commands.append(templatized_command % module.params) commands.append(templatized_command % module.params)
@ -171,7 +170,7 @@ def map_config_to_obj(module):
obj['key'] = module.params['key'] obj['key'] = module.params['key']
obj['value'] = col_value_to_dict[module.params['key']] obj['value'] = col_value_to_dict[module.params['key']]
else: else:
obj['value'] = col_value.strip() obj['value'] = str(col_value.strip())
return obj return obj
@ -199,7 +198,7 @@ def main():
'record': {'required': True}, 'record': {'required': True},
'col': {'required': True}, 'col': {'required': True},
'key': {'required': False}, 'key': {'required': False},
'value': {'required': True}, 'value': {'required': True, 'type': 'str'},
'timeout': {'default': 5, 'type': 'int'}, 'timeout': {'default': 5, 'type': 'int'},
} }

View file

@ -70,7 +70,8 @@
table: Bridge table: Bridge
record: br-test record: br-test
col: stp_enable col: stp_enable
value: true value: 'true'
become: yes
register: result register: result
- assert: - assert:
@ -82,7 +83,8 @@
table: Bridge table: Bridge
record: br-test record: br-test
col: stp_enable col: stp_enable
value: true value: 'true'
become: yes
register: result register: result
- assert: - assert:
@ -96,6 +98,7 @@
record: br-test record: br-test
col: other_config col: other_config
value: true value: true
become: yes
register: result register: result
- assert: - assert:

View file

@ -114,8 +114,8 @@ class TestOpenVSwitchDBModule(TestOpenVSwitchModule):
value='True')) value='True'))
self.execute_module( self.execute_module(
changed=True, changed=True,
commands=['/usr/bin/ovs-vsctl -t 5 add Bridge test-br other_config' commands=['/usr/bin/ovs-vsctl -t 5 set Bridge test-br other_config'
' disable-in-band=True'], ':disable-in-band=True'],
test_name='test_openvswitch_db_present_adds_key') test_name='test_openvswitch_db_present_adds_key')
def test_openvswitch_db_present_updates_key(self): def test_openvswitch_db_present_updates_key(self):