# Controller Library

###cloudsdk.py : This Library Consists of the following-
    1. class ConfigureController : Base Configuration Class
    2. class Controller(ConfigureController) : Main Cloudsdk Class
    3. class ProfileUtility : Used to CRUD over CloudSDK Profiles Utility
    4. class JFrogUtility : Used for Artifactory Utils, Get latest Build, Upload Firmware etc.

###Note: cloudsdk.py has libraries that uses Swagger Autogenerated Code. 
### Setup The Environment For using the cloudsdk library

Using Swagger Autogenerated CloudSDK Library pypi package (implemented with [swagger codegen](https://github.com/swagger-api/swagger-codegen)).
Using [pytest] as the test execution framework.
Using [pylint](http://pylint.pycqa.org) for code quality monitoring.
Using [allure](https://docs.qameta.io/allure/#_about) with Github Pages to report test outcome.

### Follow the setps below to setup the environment for your development Environment

```shell
mkdir ~/.pip
echo "[global]" > ~/.pip/pip.conf
echo "index-url = https://pypi.org/simple" >> ~/.pip/pip.conf
echo "extra-index-url = https://tip-read:tip-read@tip.jfrog.io/artifactory/api/pypi/tip-wlan-python-pypi-local/simple" >> ~/.pip/pip.conf
```

after that do the following in this folder
```shell
pip3 install -r requirements.txt
```

Now your cloud sdk code is downloaded with all of the dependencies and you can start working on the solution

### Docker

Alternatively you can use provided dockerfiles to develop\lint your code:

```shell
docker build -t wlan-cloud-test -f Dockerfile .
docker build -t wlan-cloud-lint -f Dockerfile-lint .
```

and then you can do something like this to lint your code:

```shell
docker run -it --rm -v %path_to_this_dir%/old_pytest wlan-tip-lint -d protected-access *py # for now
docker run -it --rm -v %path_to_this_dir%/old_pytest wlan-tip-lint *py # for future
```

to have a better output (sorted by line numbers) you can do something like this:

```shell
docker run -it --rm --entrypoint sh -v %path_to_this_dir%/old_pytest wlan-tip-lint -- -c 'pylint *py | sort -t ":" -k 2,2n'
```

and you can use something like this to develop your code:

```shell
docker run -it -v %path_to_this_dir%/old_pytest wlan-tip-test
```