I am getting this error meltano permissions grant ...
# announcements
n
I am getting this error meltano permissions grant model/roles-small.yml --db snowflake --dry --diff
Copy code
[MainThread][INFO][2019-08-23 20:20:15,738] Context impl SQLiteImpl.
[MainThread][INFO][2019-08-23 20:20:15,740] Will assume non-transactional DDL.
System database up-to-date.
(1/5) Loading spec file
(2/5) Checking spec file for errors
(3/5) Checking that all entities in the spec file are defined in Snowflake
Traceback (most recent call last):
  File "/usr/local/miniconda3/envs/meltano/bin/meltano", line 10, in <module>
    sys.exit(main())
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/meltano/cli/__init__.py", line 22, in main
    cli(obj={"project": None})
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/meltano/cli/params.py", line 67, in decorate
    return func(engine_uri, *args, **kwargs)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/meltano/cli/params.py", line 87, in decorate
    func(project, *args, **kwargs)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/meltano/cli/permissions.py", line 37, in grant
    sql_commands = grant_permissions(db, spec, dry_run=dry)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/meltano/core/permissions/spec_loader.py", line 12, in grant_permissions
    spec_loader = SnowflakeSpecLoader(spec_path)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/meltano/core/permissions/snowflake_spec_loader.py", line 36, in __init__
    self.check_entities_on_snowflake_server()
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/meltano/core/permissions/snowflake_spec_loader.py", line 483, in check_entities_on_snowflake_server
    conn = SnowflakeConnector()
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/meltano/core/permissions/utils/snowflake_connector.py", line 35, in __init__
    warehouse=config["warehouse"],
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/snowflake/sqlalchemy/util.py", line 38, in _url
    password=quote_plus(db_parameters.get('password', '')),
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/urllib/parse.py", line 850, in quote_plus
    string = quote(string, safe + space, encoding, errors)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/urllib/parse.py", line 834, in quote
    return quote_from_bytes(string, safe)
  File "/usr/local/miniconda3/envs/meltano/lib/python3.7/urllib/parse.py", line 859, in quote_from_bytes
    raise TypeError("quote_from_bytes() expected bytes")
TypeError: quote_from_bytes() expected byte
y
@nehil_jain you get this error while the permissions script tries to create an SqlAlchemy Engine and connect to your Snowflake DB: https://gitlab.com/meltano/meltano/blob/master/src/meltano/core/permissions/utils/snowflake_connector.py#L28 That means that the parameters you have provided are not correct. Normally you would get an error, but you have provided a None (NULL or not defined) as your password, which broke sqlalchemy 🙂
File "/usr/local/miniconda3/envs/meltano/lib/python3.7/site-packages/snowflake/sqlalchemy/util.py", line 38, in _url
password=quote_plus(db_parameters.get('password', '')),
n
Thats what i guessed but when I dont know what is the correct way to provide credentials
when i use meltano config to list the creds it looks correct
y
Most probably you are not providing your credentials by using the ENV vars that we use in the permissions script. Please check the documentation of the command, in the end you'll see the proper ENV vars to set: https://www.meltano.com/docs/meltano-cli.html#snowflake-permissions
n
aah
i see
okay thanks, I will give that another try using env vars. Thanks for your help 🙏
y
just add to the project's .env your snowflake credentials:
Copy code
export FLASK_ENV=development
export SQLITE_DATABASE=meltano

export PERMISSION_BOT_USER=
export PERMISSION_BOT_PASSWORD=
export PERMISSION_BOT_ACCOUNT=
export PERMISSION_BOT_DATABASE=
export PERMISSION_BOT_ROLE=
export PERMISSION_BOT_WAREHOUSE=
and then
source .env
to be on the safe side 🙂
It should work without issues afterwards and at least provide you with proper errors if something is wrong.