Bug 51866 - appcenter/docker/progress ldapError: Type or value exists: modify/add: univentionAppInstalledOnServer: value #0 already exists
appcenter/docker/progress ldapError: Type or value exists: modify/add: univen...
Status: NEW
Product: UCS
Classification: Unclassified
Component: App Center
UCS 4.4
Other Linux
: P5 normal (vote)
: ---
Assigned To: App Center maintainers
App Center maintainers
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2020-08-21 09:38 CEST by Christian Castens
Modified: 2020-09-17 16:05 CEST (History)
2 users (show)

See Also:
What kind of report is it?: Bug Report
What type of bug is this?: 3: Simply Wrong: The implementation doesn't match the docu
Who will be affected by this bug?: 2: Will only affect a few installed domains
How will those affected feel about the bug?: 3: A User would likely not purchase the product
User Pain: 0.103
Enterprise Customer affected?: Yes
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number: 2020072221000584, 2020091721000625
Bug group (optional): External feedback
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Christian Castens univentionstaff 2020-08-21 09:38:35 CEST
Version: 4.4-5 errata652 (Blumenthal)

Error:
Internal server error during "appcenter/docker/progress".
Request: appcenter/docker/progress

Traceback (most recent call last):
  File "%PY2.7%/univention/management/console/base.py", line 359, in __error_handling
    six.reraise(etype, exc, etraceback)
  File "%PY2.7%/univention/management/console/base.py", line 262, in execute
    function.__func__(self, request, *args, **kwargs)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 321, in _response
    result = _multi_response(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 181, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 443, in _response
    return list(function(self, iterator, *nones))
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 289, in _fake_func
    yield function(self, *args)
  File "%PY2.7%/univention/management/console/modules/mixins.py", line 158, in progress
    ret = progress_obj.poll()
  File "%PY2.7%/univention/management/console/modules/mixins.py", line 102, in poll
    six.reraise(self.exc_info[1], None, self.exc_info[2])
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 312, in _thread
    result = _multi_response(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 181, in _response
    return function(self, request)
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 443, in _response
    return list(function(self, iterator, *nones))
  File "%PY2.7%/univention/management/console/modules/decorators.py", line 289, in _fake_func
    yield function(self, *args)
  File "%PY2.7%/univention/management/console/modules/appcenter/__init__.py", line 484, in invoke_docker
    result['success'] = action.call(app=app, username=self.username, password=self.password, **kwargs)
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 220, in call
    return obj.call_with_namespace(namespace)
  File "%PY2.7%/univention/appcenter/actions/__init__.py", line 226, in call_with_namespace
    result = self.main(namespace)
  File "%PY2.7%/univention/appcenter/actions/upgrade.py", line 81, in main
    return self.do_it(args)
  File "%PY2.7%/univention/appcenter/actions/install_base.py", line 119, in do_it
    self._do_it(app, args)
  File "%PY2.7%/univention/appcenter/actions/docker_upgrade.py", line 126, in _do_it
    self._upgrade_image(app, args)
  File "%PY2.7%/univention/appcenter/actions/docker_upgrade.py", line 184, in _upgrade_image
    self._install_new_app(app, args)
  File "%PY2.7%/univention/appcenter/actions/docker_upgrade.py", line 69, in _install_new_app
    return Install._do_it(self, app, args)
  File "%PY2.7%/univention/appcenter/actions/docker_install.py", line 71, in _do_it
    ret = super(Install, self)._do_it(app, args)
  File "%PY2.7%/univention/appcenter/actions/install.py", line 104, in _do_it
    self._register_app(app, args)
  File "%PY2.7%/univention/appcenter/actions/register.py", line 438, in _register_app
    ldap_object.add_localhost()
  File "%PY2.7%/univention/appcenter/udm.py", line 245, in add_localhost
    self._udm_obj.modify()
  File "%PY2.7%/univention/admin/handlers/__init__.py", line 650, in modify
    dn = self._modify(modify_childs, ignore_license=ignore_license, response=response)
  File "%PY2.7%/univention/admin/handlers/__init__.py", line 1327, in _modify
    self.dn = self.lo.modify(self.dn, ml, ignore_license=ignore_license, serverctrls=serverctrls, response=response)
  File "%PY2.7%/univention/admin/uldap.py", line 902, in modify
    raise univention.admin.uexceptions.ldapError(_err2str(msg), original_exception=msg)
ldapError: Type or value exists: modify/add: univentionAppInstalledOnServer: value #0 already exists

Role: domaincontroller_master
Comment 1 Christian Völker univentionstaff 2020-09-17 16:05:37 CEST
Another customer affected by Let's encrypt app. Ticket added.
Workaround:
Use univention-ldapsearch "univentionAppInstalledOnServer=*" to get the DN of the app object. And then:
==================================
ldapmodify -D "$( ucr get ldap/hostdn )" -y /etc/machine.secret <<EOR
dn: cn=univentionAppID=letsencrypt_1.2.2-8,cn=letsencrypt,cn=apps,cn=univention,dc=domain,dc=local
changetype: modify
delete: univentionAppInstalledOnServer
univentionAppInstalledOnServer: slave.domain.local
EOR
====================================

Afterwards, install the app as usual.


BTW: There are loads of "closed" bugs which refer to a similar issue (mostly just a different app) so identifying the issue would be helpful.