Project

General

Profile

Bug #33048

Fix domaincontroller partial update in API

Added by Eric Turgeon 12 months ago. Updated 10 months ago.

Status:
Done
Priority:
No priority
Assignee:
Vladimir Vinogradenko
Category:
Middleware
Target version:
Severity:
Medium
Reason for Closing:
Reason for Blocked:
Needs QA:
No
Needs Doc:
No
Needs Merging:
No
Needs Automation:
No
Support Suite Ticket:
n/a
Hardware Configuration:
ChangeLog Required:
No

Description

If I send all the setting on the same PUT it passes, but after that, no value can be changed after it exit with 500. If I send an individual PUT for all setting like below, the first one passed and all the rest failed with 500.

==================================================== test session starts =====================================================
platform freebsd12 -- Python 3.6.4, pytest-3.4.1, py-1.5.2, pluggy-0.6.0 -- /usr/local/bin/python3.6
cachedir: .pytest_cache
rootdir: /usr/home/eturgeon/projects/freenas/freenas/tests, inifile:
collected 5 items                                                                                                            

api2/domaincontroller.py::test_01_Setting_Realm_Name PASSED                                                            [ 20%]
api2/domaincontroller.py::test_02_Setting_Domain_name FAILED                                                           [ 40%]
api2/domaincontroller.py::test_03_Setting_DNS_forwarder FAILED                                                         [ 60%]
api2/domaincontroller.py::test_04_Setting_the_Admin_Password SKIPPED                                                   [ 80%]
api2/domaincontroller.py::test_05_Setting_the_Forest_level FAILED                                                      [100%]

------- generated xml file: /usr/home/eturgeon/projects/freenas/freenas/tests/results/domaicontroller_tests_result.xml -------
========================================================== FAILURES ==========================================================
________________________________________________ test_02_Setting_Domain_name _________________________________________________

    def test_02_Setting_Domain_name():
        payload = {"domain": DOMAIN}
        results = PUT("/domaincontroller", payload)
>       assert results.status_code == 200, results.text
E       AssertionError: <h1>500 Internal Server Error</h1><br><h2>Traceback:</h2>
E         &lt;pre&gt;Traceback (most recent call last):
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/aiohttp/web_protocol.py&amp;quot;, line 381, in start
E             resp = await self._request_handler(request)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/aiohttp/web_app.py&amp;quot;, line 322, in _handle
E             resp = await handler(request)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/restful.py&amp;quot;, line 359, in on_method
E             return await do(method, req, resp, *args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/restful.py&amp;quot;, line 484, in do
E             result = await self.middleware.call(methodname, *method_args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 999, in call
E             return await self._call(name, serviceobj, methodobj, params, pipes=pipes)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/service.py&amp;quot;, line 192, in update
E             f&amp;#x27;{self._config.namespace}.update&amp;#x27;, self, self.do_update, [data]
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/schema.py&amp;quot;, line 611, in nf
E             return await f(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/plugins/domain_controller.py&amp;quot;, line 68, in do_update
E             await self._update_service(old, new)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/service.py&amp;quot;, line 224, in _update_service
E             {&amp;#x27;prefix&amp;#x27;: self._config.datastore_prefix})
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 999, in call
E             return await self._call(name, serviceobj, methodobj, params, pipes=pipes)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/schema.py&amp;quot;, line 611, in nf
E             return await f(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/plugins/datastore.py&amp;quot;, line 247, in update
E             data[name] = field.rel.to.objects.get(pk=data[name]) if data[name] is not None else None
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/manager.py&amp;quot;, line 85, in manager_method
E             return getattr(self.get_queryset(), name)(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 376, in get
E             clone = self.filter(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 796, in filter
E             return self._filter_or_exclude(False, *args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 814, in _filter_or_exclude
E             clone.query.add_q(Q(*args, **kwargs))
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1227, in add_q
E             clause, _ = self._add_q(q_object, self.used_aliases)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1253, in _add_q
E             allow_joins=allow_joins, split_subq=split_subq,
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1187, in build_filter
E             condition = self.build_lookup(lookups, col, value)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1083, in build_lookup
E             return final_lookup(lhs, rhs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py&amp;quot;, line 19, in __init__
E             self.rhs = self.get_prep_lookup()
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py&amp;quot;, line 59, in get_prep_lookup
E             return self.lhs.output_field.get_prep_value(self.rhs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/fields/__init__.py&amp;quot;, line 946, in get_prep_value
E             return int(value)
E         TypeError: int() argument must be a string, a bytes-like object or a number, not &amp;#x27;dict&amp;#x27;
E         &lt;/pre&gt;
E       assert 500 == 200
E        +  where 500 = &lt;Response [500]&gt;.status_code

api2/domaincontroller.py:35: AssertionError
_______________________________________________ test_03_Setting_DNS_forwarder ________________________________________________

    def test_03_Setting_DNS_forwarder():
        payload = {"dns_forwarder": DNSFORWARDER}
        results = PUT("/domaincontroller", payload)
&gt;       assert results.status_code == 200, results.text
E       AssertionError: &lt;h1&gt;500 Internal Server Error&lt;/h1&gt;&lt;br&gt;&lt;h2&gt;Traceback:&lt;/h2&gt;
E         &lt;pre&gt;Traceback (most recent call last):
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/aiohttp/web_protocol.py&amp;quot;, line 381, in start
E             resp = await self._request_handler(request)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/aiohttp/web_app.py&amp;quot;, line 322, in _handle
E             resp = await handler(request)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/restful.py&amp;quot;, line 359, in on_method
E             return await do(method, req, resp, *args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/restful.py&amp;quot;, line 484, in do
E             result = await self.middleware.call(methodname, *method_args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 999, in call
E             return await self._call(name, serviceobj, methodobj, params, pipes=pipes)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/service.py&amp;quot;, line 192, in update
E             f&amp;#x27;{self._config.namespace}.update&amp;#x27;, self, self.do_update, [data]
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/schema.py&amp;quot;, line 611, in nf
E             return await f(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/plugins/domain_controller.py&amp;quot;, line 68, in do_update
E             await self._update_service(old, new)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/service.py&amp;quot;, line 224, in _update_service
E             {&amp;#x27;prefix&amp;#x27;: self._config.datastore_prefix})
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 999, in call
E             return await self._call(name, serviceobj, methodobj, params, pipes=pipes)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/schema.py&amp;quot;, line 611, in nf
E             return await f(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/plugins/datastore.py&amp;quot;, line 247, in update
E             data[name] = field.rel.to.objects.get(pk=data[name]) if data[name] is not None else None
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/manager.py&amp;quot;, line 85, in manager_method
E             return getattr(self.get_queryset(), name)(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 376, in get
E             clone = self.filter(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 796, in filter
E             return self._filter_or_exclude(False, *args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 814, in _filter_or_exclude
E             clone.query.add_q(Q(*args, **kwargs))
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1227, in add_q
E             clause, _ = self._add_q(q_object, self.used_aliases)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1253, in _add_q
E             allow_joins=allow_joins, split_subq=split_subq,
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1187, in build_filter
E             condition = self.build_lookup(lookups, col, value)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1083, in build_lookup
E             return final_lookup(lhs, rhs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py&amp;quot;, line 19, in __init__
E             self.rhs = self.get_prep_lookup()
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py&amp;quot;, line 59, in get_prep_lookup
E             return self.lhs.output_field.get_prep_value(self.rhs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/fields/__init__.py&amp;quot;, line 946, in get_prep_value
E             return int(value)
E         TypeError: int() argument must be a string, a bytes-like object or a number, not &amp;#x27;dict&amp;#x27;
E         &lt;/pre&gt;
E       assert 500 == 200
E        +  where 500 = &lt;Response [500]&gt;.status_code

api2/domaincontroller.py:41: AssertionError
______________________________________________ test_05_Setting_the_Forest_level ______________________________________________

    def test_05_Setting_the_Forest_level():
        payload = {"forest_level": FORESTLEVEL}
        results = PUT("/domaincontroller", payload)
&gt;       assert results.status_code == 200, results.text
E       AssertionError: &lt;h1&gt;500 Internal Server Error&lt;/h1&gt;&lt;br&gt;&lt;h2&gt;Traceback:&lt;/h2&gt;
E         &lt;pre&gt;Traceback (most recent call last):
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/aiohttp/web_protocol.py&amp;quot;, line 381, in start
E             resp = await self._request_handler(request)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/aiohttp/web_app.py&amp;quot;, line 322, in _handle
E             resp = await handler(request)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/restful.py&amp;quot;, line 359, in on_method
E             return await do(method, req, resp, *args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/restful.py&amp;quot;, line 484, in do
E             result = await self.middleware.call(methodname, *method_args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 999, in call
E             return await self._call(name, serviceobj, methodobj, params, pipes=pipes)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/service.py&amp;quot;, line 192, in update
E             f&amp;#x27;{self._config.namespace}.update&amp;#x27;, self, self.do_update, [data]
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/schema.py&amp;quot;, line 611, in nf
E             return await f(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/plugins/domain_controller.py&amp;quot;, line 68, in do_update
E             await self._update_service(old, new)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/service.py&amp;quot;, line 224, in _update_service
E             {&amp;#x27;prefix&amp;#x27;: self._config.datastore_prefix})
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 999, in call
E             return await self._call(name, serviceobj, methodobj, params, pipes=pipes)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/main.py&amp;quot;, line 934, in _call
E             return await methodobj(*args)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/schema.py&amp;quot;, line 611, in nf
E             return await f(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/asyncio/coroutines.py&amp;quot;, line 110, in __next__
E             return self.gen.send(None)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/middlewared/plugins/datastore.py&amp;quot;, line 247, in update
E             data[name] = field.rel.to.objects.get(pk=data[name]) if data[name] is not None else None
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/manager.py&amp;quot;, line 85, in manager_method
E             return getattr(self.get_queryset(), name)(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 376, in get
E             clone = self.filter(*args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 796, in filter
E             return self._filter_or_exclude(False, *args, **kwargs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/query.py&amp;quot;, line 814, in _filter_or_exclude
E             clone.query.add_q(Q(*args, **kwargs))
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1227, in add_q
E             clause, _ = self._add_q(q_object, self.used_aliases)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1253, in _add_q
E             allow_joins=allow_joins, split_subq=split_subq,
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1187, in build_filter
E             condition = self.build_lookup(lookups, col, value)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/sql/query.py&amp;quot;, line 1083, in build_lookup
E             return final_lookup(lhs, rhs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py&amp;quot;, line 19, in __init__
E             self.rhs = self.get_prep_lookup()
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/lookups.py&amp;quot;, line 59, in get_prep_lookup
E             return self.lhs.output_field.get_prep_value(self.rhs)
E           File &amp;quot;/usr/local/lib/python3.6/site-packages/django/db/models/fields/__init__.py&amp;quot;, line 946, in get_prep_value
E             return int(value)
E         TypeError: int() argument must be a string, a bytes-like object or a number, not &amp;#x27;dict&amp;#x27;
E         &lt;/pre&gt;
E       assert 500 == 200
E        +  where 500 = &lt;Response [500]&gt;.status_code

api2/domaincontroller.py:54: AssertionError
======================================= 3 failed, 1 passed, 1 skipped in 1.52 seconds ========================================
domaincontroller_tests_result.xml (946 Bytes) domaincontroller_tests_result.xml XML result of the domaincontroller test Eric Turgeon, 05/03/2018 02:13 PM

Associated revisions

Revision fc2bfde7 (diff)
Added by Vladimir Vinogradenko 12 months ago

fix(directoryservice): Fix domaincontroller partial update

Ticket: #33048

History

#1 Updated by Dru Lavigne 12 months ago

  • Assignee changed from Release Council to William Grzybowski

#2 Updated by William Grzybowski 12 months ago

  • Assignee changed from William Grzybowski to Vladimir Vinogradenko

#3 Updated by William Grzybowski 12 months ago

  • Target version changed from Backlog to 11.2-RC2

#4 Updated by William Grzybowski 12 months ago

  • Severity changed from New to Medium

#5 Updated by Vladimir Vinogradenko 11 months ago

  • Status changed from Unscreened to Ready for Testing

#6 Updated by Dru Lavigne 11 months ago

  • Subject changed from API 2.0 PUT /domaincontroller faill on de second attemp. to Fix domaincontroller partial update in API
  • Target version changed from 11.2-RC2 to 11.2-BETA1
  • Needs Doc changed from Yes to No
  • Needs Merging changed from Yes to No

#7 Updated by Eric Turgeon 10 months ago

  • Needs QA changed from Yes to No

That is fix

#8 Updated by Dru Lavigne 10 months ago

  • Status changed from Ready for Testing to Done

Also available in: Atom PDF