semvec/pypi-packages huggingface dataset:
lb-controller 0.0.9
A controller to auto configure k8s load balancer on premise

# What's that thing?

`lb-controller` is kubernetes operator that can handle dynamic reconfiguration
of an external load balancer, *e.g* haproxy, it aims to allow the use of the
`LoadBalancer` or `NodePort` service type with on premise clusters.

This operator is not deployed in the K8s cluster but on the load balancers and
is a subscriber of the cluster events to know when it has to wake up and do its
thing.

We thought of 3 scenarios while building this app:

  - HAProxy + keepalived
  - Envoy + keepalived
  - keepalived only

The advantage of this implementation compared to [MetalLB](https://metallb.universe.tf/)
is that you gain the ability to completely master the LB configuration, for
example ipv6 to ipv4 or specific SSL configurations.

LB-controller doesn't allocate IP addresses for LB. They must be specified:
  - for *LoadBalancer* services, using `spec.loadBalancerIP` field
  - for *NodePort* services, using an annotation nammed `external-lb/ip-address`

# How should I integrate `lb-controller`?

* Install haproxy and keepalived
* pip install lb-controller
* add the configurations in /etc/lb-controller/
* Define a dedicated service account to consume only the appropriate resources
  from the cluster API server
* set this identity in the `/root/.kube/config` file on the HAProxy hosts.

You can find an ansible role at this address... as an example.

# Metrics

This app exposes two metrics in the openmetrics format to be scrape by
prometheus for example:
- number of valid managed services
- number of invalid managed services

# Developers

In order to contribute to lb-controller, you should have `Pipenv` installed
Install the virtualenv and all dependencies with `pipenv install --dev`, then run unit tests with `pytest`
woods 0.1.0
Decision Trees Ensembles

# Woods: Decision Tree Ensembles

Currently implemented algorithms:
1. Partially randomized decision tree (variance minimization).
2. Gradient Boosting of decision trees (MSE minimization).
3. Average ensemble of GBM.
4. Deep Gradient Boosting (of Average ensembles of GBM).

## TODO
* Implement median-split, best-split decision tree;
* Provide optional min&max search based on pre-sorting (find min&max of `array[indices]`);
* Add different loss-functions, ranking support.

## Installation

### Build environment
1. Install `rustup`.
2. Set up nightly toolchain:
```
rustup toolchain install nightly
rustup default nightly
```
### Install Python extension
Run `setup.py`:
```
python setup.py install --user
```

Note that `--user` option is used to install package locally.

### Build documentation
Go to `rust` dir and run:
```
cargo doc --lib
```

Docs will be placed in `target/doc/woods/index.html`.