Metadata-Version: 2.1
Name: osism
Version: 0.20230308.0
Summary: OSISM manager interface
Home-page: https://github.com/osism/python-osism
Author: OSISM GmbH
Author-email: info@osism.tech
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Provides-Extra: ansible
Provides-Extra: openstack-image-manager
License-File: LICENSE

# python-osism

[![Quay](https://img.shields.io/badge/Quay-osism%2Fosism-blue.svg)](https://quay.io/repository/osism/osism)

``python-osism`` is responsible for controlling and providing various APIs within OSISM.

## Total overview

![osism](https://raw.githubusercontent.com/osism/python-osism/main/contrib/osism.drawio.png)

### python-osism in detail

![python-osism](https://raw.githubusercontent.com/osism/python-osism/main/contrib/python-osism.drawio.png)

## Services

### API

### Beat

### Listener

### Watchdog

## Workers

### Ansible

### Ceph

### Conductor

### Kolla

### Netbox

### OpenStack

### Reconciler

## Commands

### apply

### bifrost

### netbox

### reconciler

### service

### status

### worker

## States & Transitions

The state 0 is reserved. Newly added devices are always in state 0.

The transfer of a device from a state a to a new state b takes place in 4 phases.

In phase 1 the state of a device in the Netbox is changed.

In phase 2 the new configuration is generated based on the state in the Netbox.

In phase 3, the generated configuration is deployed on the switch.

In phase 4, the configuration on the switch is compared with the state in the Netbox.

After phase 4 is completed, the device is in the new state b.

![Netbox state machine](./contrib/netbox-state-machine.png)

```
dot -Tpng contrib/netbox-state-machine.dot -o contrib/netbox-state-machine.png
```

### Pre-defined states

* State 0: new device
* State a: unprovisioned device, ready for introspection
* State b: introspected device, ready for cleaning or provisioning
* State c: provisioned device

