[![Python Version](https://img.shields.io/badge/python-3.8-blue.svg)](https://github.com/getindata/streaming-cli)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![SemVer](https://img.shields.io/badge/semver-2.0.0-green)](https://semver.org/)
[![PyPI version](https://badge.fury.io/py/streamingcli.svg)](https://pypi.org/project/streamingcli/)
[![Downloads](https://pepy.tech/badge/streamingcli)](https://pepy.tech/badge/streamingcli)
# Streaming platform CLI
## Usage
### Platform operations
#### Environments
You can set up your own environment, which will allow you to connect to Ververica/K8S operator. You need to fill
properties within `config/` directory. `config/flink_deployment.yml` is default deployment descriptor file
for each environment (you can overwrite it using `--file-descriptor-path` flag). You can use jinja for templating
(look at the tests for an example). `base` environment is the default environment. Others environment override
parameters from `base`. You need to have in `base` or your own environment `profile.yml`
file with given schema:
```yaml
deployment_mode:
docker_registry_url:
```
You need also extra file(s) with Ververica/Kubernetes configuration
and optionally other configuration used for templating.
Example `vvp.yml`:
```yaml
vvp:
url:
namespace:
deployment_target:
```
Example `k8s.yml`:
```yaml
k8s:
namespace: test_ns
```
For most of the command, you can pass the environment name with `--env`
or export environmental variable as `SCLI_ENV`.
#### Deploying job
```shell
scli project deploy \
--vvp-api-token "x§11d091jd1jd9jasd0j" \
--docker-image-tag "${CI_COMMIT_TAG}" \
--profile "dev"
```
#### Building job Docker image
```shell
scli project build \
--docker-image-tag "latest"
```
#### Logging to Docker repository
```shell
scli docker login \
--username "user" \
--password "password" \
--profile "dev"
```
> Parameters`--docker-image-tag` is optional and has default value `latest`.
### Providing certificates
Scli uses `requests` library to deploy jobs to Ververica Platform via REST Api. Currently `requests` does not support
automatic downloading of intermediate certificates so entire chain of certificates should be present before making
a http call
example:
```sh
sh -c 'CA_CERT_PATH=`python3 -c "import requests; print(requests.certs.where())"`;for CERT in certs/*; do cat ${CERT}; done >> ${CA_CERT_PATH}';
```
### Project operations
## SCLI Development
### Prerequisities ##
* `pipenv`
### Build
* `make setup` - Install dependencies required to build a wheel package
* `make cli/package` - Create a wheel package
### Install
* `make cli/install` - Install a wheel package
* `make cli/install/force` - Reinstall a wheel package