News
====

0.1.1
---

*Release date: 06-Sep-2017*

* Initial release

0.1.3
---

*Release date: 01-July-2018*

KQL Interfaces
* Query kusto
  - Multi Tenant autheticate with client/secret or user/pw or code
* Query Application insight
  - Authenticate with appid/appkey
* Query Log Analytics
  - Authenticate with workspace/appkey

ConnectionString
* Explicit connection, that starts with one of the support schems: kusto://, appinsights://, loganalytics://
  i.e. kusto://tenant('authority').username('name').password('pw').clustername('cname').database('dbname')
       kusto://tenant('authority').clientid('cid').clientsecret('secret').clustername('cname').database('dbname')
       kusto://tenant('authority').code().clustername('cname').database('dbname')
       appinsights://appid('id').appkey('key')
       loganalytics://workspace('ws').appkey('key')
* Reference to an already existing connection: database@cluster, appid@appinsights, workspace@loganalytics
* Reference to a section in config file, that contains all the fields of the connection string (DSN style), file name must be set in config.dsn_filename
* Substring of the form $name or ${name}, in windows also %name% if found in env variabes. 
  i.e. $MY_CONNECTION 
       ${MY_CONNECTION}
       %MY_CONNECTION%
* Current connection. If connection string is not specified, current (last) connection is used.
* Partial explicit connection string. If some fields are missing they are set to a default value if exist, or are taken from current (last) connection, or user is prompted.
  i.e. if kusto://... is missing tenant(...) component, 'microsoft.com' is used
       if kusto://... is missing credentials component (username.password or clientid/clientsecret or code()), credentials are taken from current(last) connection
       if kusto://... is missing cluster(...) component, cluster value is taken from current (last) connection
       if credential secret is missing, user is prompted to enter the credential secret

Authentication
* loganalytics://, workspace/appkey. If appkey is missing in connection string, user is prompted to enter appkey
* appinsights://, appid/appkey. If appkey is missing in connection string, user is prompted to enter appkey
* kusto://, username/password. If password is missing in connection string, user is prompted to enter password
* kusto://, clientid/clientsecret. If clientsecret is missing in connection string, user is prompted to enter clientsecret
* kusto://, code. code is displayed, and user is reffered to a the authentication page to enter the code.

ConnectionString validation
* If a single line kql magic (%kql) contains the connectionString part, but without the query part, an implicit validation query is used, to validate the connectionString

UI
* info, warning and error messages - are displayed in colors, blue, green, and brown







TODO
*Support parametrize based on local/global ns


Authetication
- Authenticate loganalytics with additional schemes (current authentication is appKey only which used mainly for demo)
- Solve ambiguity if kusto authentication to same cluster is definned by two differnt schemes, for example code and user/pw
- Make kusto code() authentication more user friendly
- Make user/pw authentication when used from Windows browser, automatic based on windows user/pw
- when missing components in connection string are taken from current connection, they should be taken from the same type of connection, if exist

Ingestion
- support basic ingestion to kusto, appinsight and loganalytics

Performance
- Add retries to kusto ,appinsights and loganalytics for some errors
- Add option to use WebGl in rendering using plotly Scattergl instead of scatter for increased speed (see plotly interface)

UI
- make kql errors that return from server easier to read (open json)
- detect unknown refernces to  connection string of type db@cluster and provide a better result, instead of current error message

Connection Management
- if connection fails to connect either should be marked as such or shouldn't be in list

08/25/2018 - Kusto Connection to a new database on a cluster that already have a database connected, will skip authentication, and all databases on same cluster will use same authenticated client to that cluster.
             The new connection_str can be either kusto://... or database@cluster
08/26/2018 - replaced show_conn_list option with show_conn_info that has 3 states: 'current', 'list' and 'None'
08/26/2018 - added the following methods:
  display_table - will display the result table in the cell
  display_chart - will display the result chart in the cell
  display - will display the result in the cell
