You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "Ryan Griffin (JIRA)" <ji...@apache.org> on 2019/01/03 19:45:00 UTC

[jira] [Closed] (AIRFLOW-3618) airflow.models.connection.Connection class function get_hook doesn't work

     [ https://issues.apache.org/jira/browse/AIRFLOW-3618?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ryan Griffin closed AIRFLOW-3618.
---------------------------------
    Resolution: Not A Problem

The issue was that I was adding the connections through the CLI:
{code:java}
airflow connections --add --conn_id test_local_mysql --conn_type "MySQL" ...{code}

This was done to match the name of the connection in the UI. Once the *--conn_type* was updated to be "mysql", it worked as expected. 

> airflow.models.connection.Connection class function get_hook doesn't work
> -------------------------------------------------------------------------
>
>                 Key: AIRFLOW-3618
>                 URL: https://issues.apache.org/jira/browse/AIRFLOW-3618
>             Project: Apache Airflow
>          Issue Type: Bug
>          Components: models
>    Affects Versions: 1.10.1
>         Environment: MacOS, iTerm, python 3.5.2
>            Reporter: Ryan Griffin
>            Priority: Major
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> The airflow.models.connection.Connection class function get_hook does not work as expected. 
> It is currently using self.conn_type == 'type', where the 'type' is always lowercase. In practice this is not true, and causes the get_hook function to always return a NoneType. 
> Here is an example:
> {code:java}
> >>> import airflow
> >>> from airflow.hooks.base_hook import BaseHook
> >>> airflow.__version__
> '1.10.1'
> >>> conn = BaseHook.get_connection('test_local_mysql')
> [2019-01-02 11:36:15,530] {base_hook.py:83} INFO - Using connection to: localhost
> >>> conn.conn_type
> 'MySQL'
> >>> type(conn.get_hook())
> <class 'NoneType'>
> >>> conn.conn_type = conn.conn_type.lower()
> >>> conn.conn_type
> 'mysql'
> >>> type(conn.get_hook())
> <class 'airflow.hooks.mysql_hook.MySqlHook'>{code}
>  
> As you can see, when using the BaseHook class to get the connection, the conn_type is *MySQL* instead of *mysql*, so it is unable to find the correct type to get the hook (reference: [https://github.com/apache/incubator-airflow/blob/master/airflow/models/connection.py#L178).]
> By forcing the conn_type to be lowercase, the *get_hook* function now works. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)