add Base api client
add NodeController api client
fix ClusterController Api client
add NodeController in endpoints.py
add 2 new endpoints to dispatcher: cluster/check-shared-storage and node/check-shared-file
add check_shared_storage method into ClusterHandler class
add set_shared_storage to node_manipulation t
add reading shared_storage in failover/config.py
fix is_shared_storage method in failover/config.py
add check_shared_storage in NodeMonitor class
fix some minor styling
* feat(cmapi): NetworkManager class for some ip hostname opoerations.
* fix(cmapi): Use NetworkManager class to resolve ip and hostname in node_manipulation.add_node function
* fix(cmapi): Minor docstring and formatting fixes
MAJOR: Some logic inside node remove changed significantly using active
nodes list from Columnstore.xml to broadcast config after remove.
[fix] TransactionManager passsing extra, remove and optional nodes arguments to start_transaction function
[fix] commit and rollback methods of TransactionManager adding nodes argument
[fix] TransactionManager using success_txn_nodes inside
[fix] remove node logic to use Transaction manager
[fix] cluster set api key call using totp on a top level cli call
[add] missed docstrings
[fix] cluster shutdown timeout for next release
refactor(ci): switch S3 uploading to AWS CLI for logging S3 link
docs: update README with to reflect changes in Drone pipeline
feat(env): add activate script for portable Python
fix(logging): log RequestException response body