Topology Architecture Overview

Global overview of the Topology Framework

Design Principles

The topology framework was built with the following design principles in mind:

  1. Standard internal representation of the topology using NML.
  2. The framework must delegate to a plugin, a Platform Engine, the responsibility to build the topology from the description, using a standard interface (topology.platforms.platform.BasePlatform) and process.
  3. The Platform Engine will return an Engine Node that implements an standard interface (topology.platforms.node.BaseNode) for the user to interact with.
  4. Nodes, ports and links support undetermined attributes or metadata, it is up to the Platform Engine to interpret and determine what metadata to use and how.
  5. The Engine Nodes implement a base communication interface for shells. A shell is a command line driven textual interface.
  6. Optionally, a Platform Engine can support Communication Libraries for their Engine Nodes, which is a extensible way to provide the communication mediums to interface with a node (RESTful API, Protobuffs, JSON-RPC, Shell parsing libraries, etc).
  7. The framework is independent of the platform, the communication mediums, the test suite, reporting Software and any other hardwired limitation. Nevertheless, support for the pytest suite is built-it.
  8. Quality, maintainability, good practices and standards compliance above all:
    • Full PEP8 compliance.
    • Complete test suite and coverage.
    • Complete internal documentation.
    • Extensive external documentation.
    • Bilingual: Python 2.7 and Python 3.4 compatibility.