mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-15 17:40:50 -07:00
nso_config work around ordering issues (#36774)
Include dependencies when sorting entries to avoid issues with certain versions of NSO.
This commit is contained in:
parent
52627f3fa0
commit
e75989ec88
2 changed files with 162 additions and 17 deletions
|
@ -269,6 +269,48 @@ SCHEMA_DATA = {
|
|||
}
|
||||
}
|
||||
}
|
||||
''',
|
||||
'/test:deps': '''
|
||||
{
|
||||
"meta": {
|
||||
},
|
||||
"data": {
|
||||
"kind":"container",
|
||||
"name":"deps",
|
||||
"qname":"test:deps",
|
||||
"children": [
|
||||
{
|
||||
"kind": "leaf",
|
||||
"type": {
|
||||
"primitive": true,
|
||||
"name": "string"
|
||||
},
|
||||
"name": "a",
|
||||
"qname": "test:a",
|
||||
"deps": ["/test:deps/c"]
|
||||
},
|
||||
{
|
||||
"kind": "leaf",
|
||||
"type": {
|
||||
"primitive": true,
|
||||
"name": "string"
|
||||
},
|
||||
"name": "b",
|
||||
"qname": "test:b",
|
||||
"deps": ["/test:deps/a"]
|
||||
},
|
||||
{
|
||||
"kind": "leaf",
|
||||
"type": {
|
||||
"primitive": true,
|
||||
"name": "string"
|
||||
},
|
||||
"name": "c",
|
||||
"qname": "test:c"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
'''
|
||||
}
|
||||
|
||||
|
@ -476,6 +518,70 @@ class TestValueBuilder(unittest.TestCase):
|
|||
|
||||
self.assertEqual(0, len(calls))
|
||||
|
||||
@patch('ansible.module_utils.network.nso.nso.open_url')
|
||||
def test_sort_by_deps(self, open_url_mock):
|
||||
calls = [
|
||||
MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
|
||||
get_schema_response('/test:deps')
|
||||
]
|
||||
open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
|
||||
|
||||
parent = "/test:deps"
|
||||
schema_data = json.loads(
|
||||
SCHEMA_DATA['/test:deps'])
|
||||
schema = schema_data['data']
|
||||
|
||||
values = {
|
||||
'a': '1',
|
||||
'b': '2',
|
||||
'c': '3',
|
||||
}
|
||||
|
||||
vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc'))
|
||||
vb.build(parent, None, values, schema)
|
||||
self.assertEquals(3, len(vb.values))
|
||||
value = vb.values[0]
|
||||
self.assertEquals('{0}/c'.format(parent), value.path)
|
||||
self.assertEquals('3', value.value)
|
||||
value = vb.values[1]
|
||||
self.assertEquals('{0}/a'.format(parent), value.path)
|
||||
self.assertEquals('1', value.value)
|
||||
value = vb.values[2]
|
||||
self.assertEquals('{0}/b'.format(parent), value.path)
|
||||
self.assertEquals('2', value.value)
|
||||
|
||||
self.assertEqual(0, len(calls))
|
||||
|
||||
@patch('ansible.module_utils.network.nso.nso.open_url')
|
||||
def test_sort_by_deps_not_included(self, open_url_mock):
|
||||
calls = [
|
||||
MockResponse('new_trans', {}, 200, '{"result": {"th": 1}}'),
|
||||
get_schema_response('/test:deps')
|
||||
]
|
||||
open_url_mock.side_effect = lambda *args, **kwargs: mock_call(calls, *args, **kwargs)
|
||||
|
||||
parent = "/test:deps"
|
||||
schema_data = json.loads(
|
||||
SCHEMA_DATA['/test:deps'])
|
||||
schema = schema_data['data']
|
||||
|
||||
values = {
|
||||
'a': '1',
|
||||
'b': '2'
|
||||
}
|
||||
|
||||
vb = nso.ValueBuilder(nso.JsonRpc('http://localhost:8080/jsonrpc'))
|
||||
vb.build(parent, None, values, schema)
|
||||
self.assertEquals(2, len(vb.values))
|
||||
value = vb.values[0]
|
||||
self.assertEquals('{0}/a'.format(parent), value.path)
|
||||
self.assertEquals('1', value.value)
|
||||
value = vb.values[1]
|
||||
self.assertEquals('{0}/b'.format(parent), value.path)
|
||||
self.assertEquals('2', value.value)
|
||||
|
||||
self.assertEqual(0, len(calls))
|
||||
|
||||
|
||||
class TestVerifyVersion(unittest.TestCase):
|
||||
def test_valid_versions(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue