|
Packit |
b9ca78 |
Metadata-Version: 2.1
|
|
Packit |
b9ca78 |
Name: nmstate
|
|
Packit |
b9ca78 |
Version: 0.3.4
|
|
Packit |
b9ca78 |
Summary: Declarative network manager API
|
|
Packit |
b9ca78 |
Home-page: https://nmstate.github.io/
|
|
Packit |
b9ca78 |
Author: Edward Haas
|
|
Packit |
b9ca78 |
Author-email: ehaas@redhat.com
|
|
Packit |
b9ca78 |
License: LGPL2.1+
|
|
Packit |
b9ca78 |
Description: # We are Nmstate!
|
|
Packit |
b9ca78 |
A declarative network manager API for hosts.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
[![Test Status](https://travis-ci.com/nmstate/nmstate.png?branch=master)](https://travis-ci.com/nmstate/nmstate)
|
|
Packit |
b9ca78 |
[![Coverage Status](https://coveralls.io/repos/github/nmstate/nmstate/badge.svg?branch=master)](https://coveralls.io/github/nmstate/nmstate?branch=master)
|
|
Packit |
b9ca78 |
[![PyPI version](https://badge.fury.io/py/nmstate.svg)](https://badge.fury.io/py/nmstate)
|
|
Packit |
b9ca78 |
[![Fedora Rawhide version](https://img.shields.io/badge/dynamic/json.svg?label=Fedora%20Rawhide&url=https%3A%2F%2Fapps.fedoraproject.org%2Fmdapi%2Frawhide%2Fpkg%2Fnmstate&query=%24.version&colorB=blue)](https://apps.fedoraproject.org/packages/nmstate)
|
|
Packit |
b9ca78 |
[![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)
|
|
Packit |
b9ca78 |
[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/nmstate/nmstate.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/nmstate/nmstate/context:python)
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Copr build status, all repos are built for Fedora 31+ and RHEL/CentOS/EPEL 8:
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
* Latest release: [![Latest release Copr build status](https://copr.fedorainfracloud.org/coprs/nmstate/nmstate/package/nmstate/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/nmstate/nmstate/package/nmstate/)
|
|
Packit |
b9ca78 |
* Git master: [![Git master Copr build status](https://copr.fedorainfracloud.org/coprs/nmstate/nmstate-git/package/nmstate/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/nmstate/nmstate-git/package/nmstate/)
|
|
Packit |
b9ca78 |
* Latest 0.2 release: [![Latest 0.2 release Copr build status](https://copr.fedorainfracloud.org/coprs/nmstate/nmstate-0.2/package/nmstate/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/nmstate/nmstate-0.2/package/nmstate/)
|
|
Packit |
b9ca78 |
* Git nmstate-0.2: [![Git nmstate-0.2 Copr build status](https://copr.fedorainfracloud.org/coprs/nmstate/nmstate-0.2-git/package/nmstate/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/nmstate/nmstate-0.2-git/package/nmstate/)
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## What is it?
|
|
Packit |
b9ca78 |
Nmstate is a library with an accompanying command line tool that manages
|
|
Packit |
b9ca78 |
host networking settings in a declarative manner.
|
|
Packit |
b9ca78 |
The networking state is described by a pre-defined schema.
|
|
Packit |
b9ca78 |
Reporting of current state and changes to it (desired state) both conform to
|
|
Packit |
b9ca78 |
the schema.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Nmstate is aimed to satisfy enterprise needs to manage host networking through
|
|
Packit |
b9ca78 |
a northbound declarative API and multi provider support on the southbound.
|
|
Packit |
b9ca78 |
NetworkManager acts as the main (and currently the only) provider supported.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## State example:
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Desired/Current state example (YAML):
|
|
Packit |
b9ca78 |
```yaml
|
|
Packit |
b9ca78 |
interfaces:
|
|
Packit |
b9ca78 |
- name: eth1
|
|
Packit |
b9ca78 |
type: ethernet
|
|
Packit |
b9ca78 |
state: up
|
|
Packit |
b9ca78 |
ipv4:
|
|
Packit |
b9ca78 |
enabled: true
|
|
Packit |
b9ca78 |
address:
|
|
Packit |
b9ca78 |
- ip: 192.0.2.10
|
|
Packit |
b9ca78 |
prefix-length: 24
|
|
Packit |
b9ca78 |
dhcp: false
|
|
Packit |
b9ca78 |
ipv6:
|
|
Packit |
b9ca78 |
enabled: true
|
|
Packit |
b9ca78 |
address:
|
|
Packit |
b9ca78 |
- ip: 2001:db8:1::a
|
|
Packit |
b9ca78 |
prefix-length: 64
|
|
Packit |
b9ca78 |
autoconf: false
|
|
Packit |
b9ca78 |
dhcp: false
|
|
Packit |
b9ca78 |
dns-resolver:
|
|
Packit |
b9ca78 |
config:
|
|
Packit |
b9ca78 |
search:
|
|
Packit |
b9ca78 |
- example.com
|
|
Packit |
b9ca78 |
- example.org
|
|
Packit |
b9ca78 |
server:
|
|
Packit |
b9ca78 |
- 2001:4860:4860::8888
|
|
Packit |
b9ca78 |
- 8.8.8.8
|
|
Packit |
b9ca78 |
routes:
|
|
Packit |
b9ca78 |
config:
|
|
Packit |
b9ca78 |
- destination: 0.0.0.0/0
|
|
Packit |
b9ca78 |
next-hop-address: 192.0.2.1
|
|
Packit |
b9ca78 |
next-hop-interface: eth1
|
|
Packit |
b9ca78 |
- destination: ::/0
|
|
Packit |
b9ca78 |
next-hop-address: 2001:db8:1::1
|
|
Packit |
b9ca78 |
next-hop-interface: eth1
|
|
Packit |
b9ca78 |
```
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## Basic Operations
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Show eth0 current state (python/shell):
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
```python
|
|
Packit |
b9ca78 |
import libnmstate
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
state = libnmstate.show()
|
|
Packit |
b9ca78 |
eth0_state = next(ifstate for ifstate in state['interfaces'] if ifstate['name'] == 'eth0')
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
# Here is the MAC address
|
|
Packit |
b9ca78 |
eth0_mac = eth0_state['mac-address']
|
|
Packit |
b9ca78 |
```
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
```shell
|
|
Packit |
b9ca78 |
nmstatectl show eth0
|
|
Packit |
b9ca78 |
```
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Change to desired state (python/shell):
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
```python
|
|
Packit |
b9ca78 |
import libnmstate
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
# Specify a Linux bridge (created if it does not exist).
|
|
Packit |
b9ca78 |
state = {'interfaces': [{'name': 'br0', 'type': 'linux-bridge', 'state': 'up'}]}
|
|
Packit |
b9ca78 |
libnmstate.apply(state)
|
|
Packit |
b9ca78 |
```
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
```shell
|
|
Packit |
b9ca78 |
# use yaml or json formats
|
|
Packit |
b9ca78 |
nmstatectl set desired-state.yml
|
|
Packit |
b9ca78 |
nmstatectl set desired-state.json
|
|
Packit |
b9ca78 |
```
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Edit the current state(python/shell):
|
|
Packit |
b9ca78 |
```python
|
|
Packit |
b9ca78 |
import libnmstate
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
state = libnmstate.show()
|
|
Packit |
b9ca78 |
eth0_state = next(ifstate for ifstate in state['interfaces'] if ifstate['name'] == 'eth0')
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
# take eth0 down
|
|
Packit |
b9ca78 |
eth0_state['state'] = 'down'
|
|
Packit |
b9ca78 |
libnmstate.apply(state)
|
|
Packit |
b9ca78 |
```
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
```shell
|
|
Packit |
b9ca78 |
# open current state in a text editor, change and save to apply
|
|
Packit |
b9ca78 |
nmstatectl edit eth3
|
|
Packit |
b9ca78 |
```
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## Contact
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
*Nmstate* uses the [nmstate-devel@lists.fedorahosted.org][mailing_list] for
|
|
Packit |
b9ca78 |
discussions. To subscribe you can send an email with 'subscribe' in the subject
|
|
Packit |
b9ca78 |
to <nmstate-devel-join@lists.fedorahosted.org> or visit the
|
|
Packit |
b9ca78 |
[mailing list page][mailing_list].
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Development planning (sprints and progress reporting) happens in
|
|
Packit |
b9ca78 |
([Jira](https://nmstate.atlassian.net)). Access requires login.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
There is also `#nmstate` on
|
|
Packit |
b9ca78 |
[Freenode IRC](https://freenode.net/kb/answer/chat).
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## Contributing
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Yay! We are happy to accept new contributors to the Nmstate project. Please follow
|
|
Packit |
b9ca78 |
these [instructions](CONTRIBUTING.md) to contribute.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## Installation
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
For Fedora 29+, `sudo dnf install nmstate`.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
For others distribution, please see the [install](README.install.md)
|
|
Packit |
b9ca78 |
instructions.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## Documentation
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
* [libnmstate API](https://nmstate.github.io/devel/api.html)
|
|
Packit |
b9ca78 |
* [Code examples](https://nmstate.github.io/devel/py_example.html)
|
|
Packit |
b9ca78 |
* [State examples](https://nmstate.github.io/examples.html)
|
|
Packit |
b9ca78 |
* [nmstatectl user guide](https://nmstate.github.io/cli_guide.html)
|
|
Packit |
b9ca78 |
* nmstatectl man page: `man nmstatectl`
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## Limitations
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Please refer to [jira page][jira_limitation] for details.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
* Maximum supported number of interfaces in a single desire state is 1000.
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
## Changelog
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Please refer to [CHANGELOG](CHANGELOG)
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
[jira_limitation]: https://nmstate.atlassian.net/issues/?filter=10003
|
|
Packit |
b9ca78 |
[mailing_list]: https://lists.fedorahosted.org/admin/lists/nmstate-devel.lists.fedorahosted.org
|
|
Packit |
b9ca78 |
|
|
Packit |
b9ca78 |
Platform: UNKNOWN
|
|
Packit |
b9ca78 |
Description-Content-Type: text/markdown
|