Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatically create new service when require for a package #39

Closed
ymartin59 opened this issue Jan 26, 2020 · 3 comments · Fixed by #112
Closed

Automatically create new service when require for a package #39

ymartin59 opened this issue Jan 26, 2020 · 3 comments · Fixed by #112

Comments

@ymartin59
Copy link
Collaborator

When trying to publish hassio package #3732 with make publish-arch-x64-6.1, repository rejects action with 502 error and stack trace

/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/dependency.py:465: SAWarning: Object of type <Version> not in session, add operation along 'Package.versions' will not proceed
  prop=self.prop)
Traceback (most recent call last):
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask_restful/__init__.py", line 263, in error_router
    return original_handler(e)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/_compat.py", line 32, in reraise
    raise value.with_traceback(tb)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask_restful/__init__.py", line 263, in error_router
    return original_handler(e)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/_compat.py", line 32, in reraise
    raise value.with_traceback(tb)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/var/www/spkrepo/spkrepo/views/api.py", line 35, in wrapper
    return f(*args, **kwargs)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask_restful/__init__.py", line 431, in wrapper
    resp = resource(*args, **kwargs)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/flask_restful/__init__.py", line 521, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/var/www/spkrepo/spkrepo/views/api.py", line 217, in post
    db.session.commit()
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/scoping.py", line 150, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 776, in commit
    self.transaction.commit()
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 377, in commit
    self._prepare_impl()
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 357, in _prepare_impl
    self.session.flush()
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 1919, in flush
    self._flush(objects)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 2037, in _flush
    transaction.rollback(_capture_exception=True)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/util/compat.py", line 182, in reraise
    raise value
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/session.py", line 2001, in _flush
    flush_context.execute()
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute
    rec.execute(self)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/unitofwork.py", line 481, in execute
    self.dependency_processor.process_saves(uow, states)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/dependency.py", line 1051, in process_saves
    False, uowcommit, "add"):
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/dependency.py", line 1140, in _synchronize
    self._verify_canload(child)
  File "/var/www/spkrepo/env/lib/python3.4/site-packages/sqlalchemy/orm/dependency.py", line 257, in _verify_canload
    "collection %s" % (self.prop, ))
sqlalchemy.orm.exc.FlushError: Can't flush None value found in collection Version.service_dependencies
[pid: 15518|app: 0|req: 145/145] 90.6.73.90 () {42 vars in 674 bytes} [Sun Jan 26 11:41:31 2020] POST /packages => generated 0 bytes in 1127 msecs (HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0)
@ymartin59
Copy link
Collaborator Author

I had to manually declare Docker service with SQL insert into service values (5, 'Docker'); to get package uploaded.
From my point of view, spkrepo should automatically register new service when required for a package.

@ymartin59 ymartin59 changed the title Publish fails for hassio package Publish fails for hassio package: lacking Docker service Jan 26, 2020
@chickenandpork
Copy link
Member

@ymartin59 I guess by the ID of your insert (5) that new SPKs are not automatically added as services upon which we can set dependency?

I'm asking whether it's specific to a dependency that we don't build (ie "docker") versus a dependency that we might build (ie depending on "python3")

@ymartin59 ymartin59 changed the title Publish fails for hassio package: lacking Docker service Automatically create new service when require for a package Apr 17, 2020
@Diaoul
Copy link
Member

Diaoul commented Jul 14, 2020

I'm not sure if we want that to be manual or not. I feel that having that much data validation in the DB is making things hard and there's no use for having a table with services.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants