CRMint Deployment Issue - IndexError: tuple index out of range

Viewed 187

A SQL-related error occurs during the deployment phase of CRMint following carefully the quick start guide. I previously had 2 SQL-related errors but I was able to fix the first one (maybe they are related). The frirst one was:

(_mysql_exceptions.OperationalError) (1045, "Access denied for user 'crmintapp'@'cloudsqlproxy~34.76.202.116' (using password: YES)")
The second one is a SQL index range error
File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/instrumentation.py", line 152, in _all_sqla_attributes
    inherits = supercls.__mro__[1]
IndexError: tuple index out of range

I fixed my first error by changing the password of the user crmintapp in my SQL instances directly in the GCP console and in my script as well (crmint/cli/stages/atf-sbx-mousset2.py).

I still have the second error and I can't figure out what is the issue. Apparently there is a turple out of range but I am difficulties to understand the issue. Anyone has some idea?

---> Start CloudSQL proxy (3/4)  
---> Start CloudSQL proxy (4/4)  
---> Configure Cloud SQL proxy settings  
---> Applying database migrations  
---> Sowing DB seeds  
Sowing DB seeds: Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/tmp/atf-sbx-mousset2/backends/lib/flask/__main__.py", line 15, in <module>


Error log:

---> Configure Cloud SQL proxy settings  
---> Applying database migrations  
---> Sowing DB seeds  
Sowing DB seeds: Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/tmp/atf-sbx-mousset2/backends/lib/flask/__main__.py", line 15, in <module>
    main(as_module=True)
  File "/tmp/atf-sbx-mousset2/backends/lib/flask/cli.py", line 513, in main
    cli.main(args=args, prog_name=name)
  File "/tmp/atf-sbx-mousset2/backends/lib/flask/cli.py", line 380, in main
    return AppGroup.main(self, *args, **kwargs)
  File "/tmp/atf-sbx-mousset2/backends/lib/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmp/atf-sbx-mousset2/backends/lib/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/tmp/atf-sbx-mousset2/backends/lib/click/core.py", line 1066, in invoke
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/query.py", line 197, in __init__
    self._set_entities(entities)
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/query.py", line 225, in _set_entities
    self._set_entity_selectables(self._entities)
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/query.py", line 256, in _set_entity_selectables
    ent.setup_entity(*d[entity])
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/query.py", line 4324, in setup_entity
    self._with_polymorphic = ext_info.with_polymorphic_mappers
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/util/langhelpers.py", line 884, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/mapper.py", line 2155, in _with_polymorphic_mappers
    configure_mappers()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/mapper.py", line 3299, in configure_mappers
    mapper._post_configure_properties()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/mapper.py", line 1965, in _post_configure_properties
    prop.init()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/interfaces.py", line 197, in init
    self.do_init()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/relationships.py", line 2076, in do_init
    self._process_dependent_arguments()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/relationships.py", line 2105, in _process_dependent_arguments
    setattr(self, attr, attr_value())
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/ext/declarative/clsregistry.py", line 326, in __call__
    x = eval(self.arg, globals(), self._dict)
  File "<string>", line 1, in <module>
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/ext/declarative/clsregistry.py", line 219, in __getattr__
    if key not in mp.all_orm_descriptors:
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/util/langhelpers.py", line 884, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/mapper.py", line 2453, in all_orm_descriptors
    dict(self.class_manager._all_sqla_attributes())
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/instrumentation.py", line 152, in _all_sqla_attributes
    inherits = supercls.__mro__[1]
IndexError: tuple index out of range
1 Answers

There's an open issue link similar to your problem. A workaround is to deploy using dev branch. I tried deploying on my end and currently it worked for me as well. Just be sure to delete the master branch on your machine and use the dev CLI.

Deploy CRMint on Google Cloud Platform from the dev branch:

# Double check if a Cloud Project is selected.
[ "$GOOGLE_CLOUD_PROJECT" == "" ] && echo -n 'Input a Cloud Project ID: ' && read project_id && gcloud config set project "$project_id"

# Install the command-line.
bash <(curl -Ls https://raw.githubusercontent.com/google/crmint/master/scripts/install.sh) dev

# Create a stage definition for your environment.
crmint stages create

# Re-run the setup in case new elements are needed.
crmint cloud setup

# Deploy the updated App Engine services.
crmint cloud deploy
Related