fakenos


Namefakenos JSON
Version 0.2.1 PyPI version JSON
download
home_pageNone
SummaryFake Network Operating System
upload_time2024-04-28 10:25:30
maintainerDenis Mulyalin
docs_urlNone
authorDenis Mulyalin
requires_python<3.12,>=3.8
licenseMIT
keywords networkautomation testing ssh
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![Downloads][pepy-downloads-badge]][pepy-downloads-link]
[![PyPI][pypi-latest-release-badge]][pypi-latest-release-link]
[![PyPI versions][pypi-pyversion-badge]][pypi-pyversion-link]
[![GitHub Discussion][github-discussions-badge]][github-discussions-link]
[![Code style: black][black-badge]][black-link]
[![Tests][github-tests-badge]][github-tests-link]

# Fake Network Operating Systems - FakeNOS

> "Reality is merely an illusion, albeit a very persistent one."
>
> ~ Albert Einstein

FakeNOS created to simulate Network Operating Systems interactions.

[Documentation](https://dmulyalin.github.io/fakenos/)

## Why?

Crucial aspect of writing applications or scripts for Network Automation is 
testing, often testing done using physical or virtual instances of network
appliances running certain version of Network Operating System (NOS). That
approach, while gives best integration results, in many cases carries a lot
of overhead to setup, run and tear down as well as putting significant burden
on compute and storage resource utilization.

Other approach is to mock underlying libraries methods to fool applications
under testing into believing that it is getting output from real devices. That
approach works very well for unit testing, but fails to simulate such aspects
as connection establishment and handling.

FakeNOS positions itself somewhere in the middle between full integration testing
and testing that mocks device interactions. FakeNOS allows to create NOS plugins
to produce pre-defined output to test applications behavior while running servers 
to establish connections with.

## What?

FakeNOS can:

- Run thousands of servers to stress test applications
- Simulate Network Operating Systems Command Line Interface (CLI) interactions
- Provide high-level API to create custom NOS plugins
- Run in docker container to simplify integration with your infrastructure
- Make use of FakeNOS CLI tool for quick run and prototype simulations
- Works on Windows, MAC and Linux under major Python version

## How?

Send input and get the output - this is how we interact with many 
Network Operating Systems, FakeNOS allows to pre-define the output 
to sent in response to certain input commands, making it ideal for
isolated feature testing.

FakeNOS is a micro-kernel framework that can be extended using plugins. 
The core is kept small and optimized while most of the functionality 
offloaded to plugins.

FakeNOS has these pluggable systems:

- Server Plugins - plugins responsible for running various servers to connect with
- Shell Plugins - plugins to simulate command line interface shell
- NOS plugins - plugins to simulate Network Operating System commands

## What not?

FakeNOS is a simulator, it does not emulate any of Network Control, Data 
or Management planes, it merely takes the commands as input and responds
with predefined output.

## FakeNOS inspired by and borrowed from

- [sshim](https://pythonhosted.org/sshim/) - library for testing and debugging SSH automation clients
- [PythonSSHServerTutorial](https://github.com/ramonmeza/PythonSSHServerTutorial) - tutorial on creating paramiko based SSH server
- [fake-switches](https://github.com/internap/fake-switches) - pluggable switch/router command-line simulator
- [ncs-netsim](https://developer.cisco.com/docs/nso/guides/#!the-network-simulator) - tool to simulate a network of devices
- [cisshgo](https://github.com/tbotnz/cisshgo) - concurrent SSH server to emulate network equipment for testing purposes
- [scrapli-replay](https://pypi.org/project/scrapli-replay/) - tools to enable easy testing of SSH programs and to create semi-interactive SSH servers


[github-discussions-link]:     https://github.com/fakenos/fakenos/discussions
[github-discussions-badge]:    https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github
[black-badge]:                 https://img.shields.io/badge/code%20style-black-000000.svg
[black-link]:                  https://github.com/psf/black
[pypi-pyversion-link]:         https://pypi.python.org/pypi/fakenos/
[pypi-pyversion-badge]:        https://img.shields.io/pypi/pyversions/fakenos.svg
[pepy-downloads-link]:         https://pepy.tech/project/fakenos
[pepy-downloads-badge]:        https://pepy.tech/badge/fakenos
[github-tests-badge]:          https://github.com/fakenos/fakenos/actions/workflows/main.yml/badge.svg
[github-tests-link]:           https://github.com/fakenos/fakenos/actions
[pypi-latest-release-badge]:   https://img.shields.io/pypi/v/fakenos.svg
[pypi-latest-release-link]:    https://pypi.python.org/pypi/fakenos

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "fakenos",
    "maintainer": "Denis Mulyalin",
    "docs_url": null,
    "requires_python": "<3.12,>=3.8",
    "maintainer_email": "d.mulyalin@gmail.com",
    "keywords": "NetworkAutomation, Testing, SSH",
    "author": "Denis Mulyalin",
    "author_email": "d.mulyalin@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/fb/b5/25bae7b4e00cfa86cc447384230dd76f3b44442b4da65e44e8bec419efb3/fakenos-0.2.1.tar.gz",
    "platform": null,
    "description": "[![Downloads][pepy-downloads-badge]][pepy-downloads-link]\n[![PyPI][pypi-latest-release-badge]][pypi-latest-release-link]\n[![PyPI versions][pypi-pyversion-badge]][pypi-pyversion-link]\n[![GitHub Discussion][github-discussions-badge]][github-discussions-link]\n[![Code style: black][black-badge]][black-link]\n[![Tests][github-tests-badge]][github-tests-link]\n\n# Fake Network Operating Systems - FakeNOS\n\n> \"Reality is merely an illusion, albeit a very persistent one.\"\n>\n> ~ Albert Einstein\n\nFakeNOS created to simulate Network Operating Systems interactions.\n\n[Documentation](https://dmulyalin.github.io/fakenos/)\n\n## Why?\n\nCrucial aspect of writing applications or scripts for Network Automation is \ntesting, often testing done using physical or virtual instances of network\nappliances running certain version of Network Operating System (NOS). That\napproach, while gives best integration results, in many cases carries a lot\nof overhead to setup, run and tear down as well as putting significant burden\non compute and storage resource utilization.\n\nOther approach is to mock underlying libraries methods to fool applications\nunder testing into believing that it is getting output from real devices. That\napproach works very well for unit testing, but fails to simulate such aspects\nas connection establishment and handling.\n\nFakeNOS positions itself somewhere in the middle between full integration testing\nand testing that mocks device interactions. FakeNOS allows to create NOS plugins\nto produce pre-defined output to test applications behavior while running servers \nto establish connections with.\n\n## What?\n\nFakeNOS can:\n\n- Run thousands of servers to stress test applications\n- Simulate Network Operating Systems Command Line Interface (CLI) interactions\n- Provide high-level API to create custom NOS plugins\n- Run in docker container to simplify integration with your infrastructure\n- Make use of FakeNOS CLI tool for quick run and prototype simulations\n- Works on Windows, MAC and Linux under major Python version\n\n## How?\n\nSend input and get the output - this is how we interact with many \nNetwork Operating Systems, FakeNOS allows to pre-define the output \nto sent in response to certain input commands, making it ideal for\nisolated feature testing.\n\nFakeNOS is a micro-kernel framework that can be extended using plugins. \nThe core is kept small and optimized while most of the functionality \noffloaded to plugins.\n\nFakeNOS has these pluggable systems:\n\n- Server Plugins - plugins responsible for running various servers to connect with\n- Shell Plugins - plugins to simulate command line interface shell\n- NOS plugins - plugins to simulate Network Operating System commands\n\n## What not?\n\nFakeNOS is a simulator, it does not emulate any of Network Control, Data \nor Management planes, it merely takes the commands as input and responds\nwith predefined output.\n\n## FakeNOS inspired by and borrowed from\n\n- [sshim](https://pythonhosted.org/sshim/) - library for testing and debugging SSH automation clients\n- [PythonSSHServerTutorial](https://github.com/ramonmeza/PythonSSHServerTutorial) - tutorial on creating paramiko based SSH server\n- [fake-switches](https://github.com/internap/fake-switches) - pluggable switch/router command-line simulator\n- [ncs-netsim](https://developer.cisco.com/docs/nso/guides/#!the-network-simulator) - tool to simulate a network of devices\n- [cisshgo](https://github.com/tbotnz/cisshgo) - concurrent SSH server to emulate network equipment for testing purposes\n- [scrapli-replay](https://pypi.org/project/scrapli-replay/) - tools to enable easy testing of SSH programs and to create semi-interactive SSH servers\n\n\n[github-discussions-link]:     https://github.com/fakenos/fakenos/discussions\n[github-discussions-badge]:    https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github\n[black-badge]:                 https://img.shields.io/badge/code%20style-black-000000.svg\n[black-link]:                  https://github.com/psf/black\n[pypi-pyversion-link]:         https://pypi.python.org/pypi/fakenos/\n[pypi-pyversion-badge]:        https://img.shields.io/pypi/pyversions/fakenos.svg\n[pepy-downloads-link]:         https://pepy.tech/project/fakenos\n[pepy-downloads-badge]:        https://pepy.tech/badge/fakenos\n[github-tests-badge]:          https://github.com/fakenos/fakenos/actions/workflows/main.yml/badge.svg\n[github-tests-link]:           https://github.com/fakenos/fakenos/actions\n[pypi-latest-release-badge]:   https://img.shields.io/pypi/v/fakenos.svg\n[pypi-latest-release-link]:    https://pypi.python.org/pypi/fakenos\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Fake Network Operating System",
    "version": "0.2.1",
    "project_urls": null,
    "split_keywords": [
        "networkautomation",
        " testing",
        " ssh"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eac6b5308613a0fe9078d050c9db1b2496a189b5977f9974057dc0035e0aba87",
                "md5": "6c0a33bb22527818ac5b484af0fc4ec6",
                "sha256": "fbb19cdfc0a5410f1703f70279c2d5e0430f6cbd17303b4ae60057273d6feac7"
            },
            "downloads": -1,
            "filename": "fakenos-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6c0a33bb22527818ac5b484af0fc4ec6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.12,>=3.8",
            "size": 370763,
            "upload_time": "2024-04-28T10:25:27",
            "upload_time_iso_8601": "2024-04-28T10:25:27.833642Z",
            "url": "https://files.pythonhosted.org/packages/ea/c6/b5308613a0fe9078d050c9db1b2496a189b5977f9974057dc0035e0aba87/fakenos-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fbb525bae7b4e00cfa86cc447384230dd76f3b44442b4da65e44e8bec419efb3",
                "md5": "7db973fb5b84e2cda95cf6fff8dac725",
                "sha256": "f68c9a2346cf1cd34122254e9b56a4c795287286688e45a52ba8899d0bdcf853"
            },
            "downloads": -1,
            "filename": "fakenos-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "7db973fb5b84e2cda95cf6fff8dac725",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.12,>=3.8",
            "size": 342153,
            "upload_time": "2024-04-28T10:25:30",
            "upload_time_iso_8601": "2024-04-28T10:25:30.931452Z",
            "url": "https://files.pythonhosted.org/packages/fb/b5/25bae7b4e00cfa86cc447384230dd76f3b44442b4da65e44e8bec419efb3/fakenos-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-28 10:25:30",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "fakenos"
}
        
Elapsed time: 0.24238s