Can no longer deploy or update custom apps on EE

When clicking on “custom app” to create a new app, or updating a custom app (not yaml) I get this error: Invalid operation: restart_policy.
After a full system reboot the error remains.

Since this does not only affect updating but also creating apps it feels like the system itself corrupted something. Any idea how to diagnose what is wrong here?

Changing the restart policy for an existing custom app does not change the error.

Full error text:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 208, in call_method
    result = await self.middleware.call_with_audit(message['method'], serviceobj, methodobj, params, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1526, in call_with_audit
    result = await self._call(method, serviceobj, methodobj, params, app=app,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1457, in _call
    return await methodobj(*prepared_call.args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/schema/processor.py", line 179, in nf
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/schema/processor.py", line 49, in nf
    res = await f(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/apps/upgrade.py", line 137, in upgrade_summary
    versions_config = await self.get_versions(app, options)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/apps/upgrade.py", line 156, in get_versions
    app_details = await self.middleware.call(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1626, in call
    return await self._call(
           ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1468, in _call
    return await self.run_in_executor(prepared_call.executor, methodobj, *prepared_call.args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1361, in run_in_executor
    return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/schema/processor.py", line 183, in nf
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/schema/processor.py", line 55, in nf
    res = f(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/catalog/app_version.py", line 72, in get_app_details
    app_details = get_app_details(app_location, train_data[options['train']][app_name], questions_context)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/catalog/apps_util.py", line 106, in get_app_details
    'values': get_app_default_values(version_data),
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/catalog/apps_util.py", line 22, in get_app_default_values
    return construct_schema(version_details, {}, False)['new_values']
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/apps/schema_utils.py", line 49, in construct_schema
    verrors.add_child('values', validate_schema(
                                ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/validators.py", line 339, in validate_schema
    schema.clean(data)
  File "/usr/lib/python3/dist-packages/middlewared/schema/dict_schema.py", line 107, in clean
    data.update(self.get_defaults(data, self.get_attrs_to_skip(data), verrors))
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/schema/dict_schema.py", line 72, in get_attrs_to_skip
    for attr, attr_data in filter(
  File "/usr/lib/python3/dist-packages/middlewared/schema/dict_schema.py", line 73, in <lambda>
    lambda k: not filter_list([check_data], k[1]['filters']), self.conditional_defaults.items()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/utils/__init__.py", line 572, in filter_list
    self.validate_filters(filters, value_maps=maps)
  File "/usr/lib/python3/dist-packages/middlewared/utils/__init__.py", line 260, in validate_filters
    raise ValueError(f'Invalid operation: {op}')
ValueError: Invalid operation: restart_policy

OS version: ElectricEel-24.10.0.2

1 Like

When deleting the container images and restarting the container it is able to pull the "latest image, however it still shows up as “update available”

I guess IX has updated the custom app template in some way that broke all functionality on my machine.

Update the app catalog and try again.

2 Likes

Thanks, I guess they released an update because now the refresh did fix it!