Skip to content

Commit

Permalink
Merge pull request #96 from open-traffic-generator/dev-30th-Aug
Browse files Browse the repository at this point in the history
draft for ixia-c release
  • Loading branch information
ashutshkumr authored Sep 2, 2022
2 parents 686619f + 5aa277a commit b875319
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 21 deletions.
2 changes: 1 addition & 1 deletion docs/deployments.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ All these services are available as docker images on [GitHub Open-Traffic-Genera
<img src="res/ixia-c-aur.drawio.svg"></img>
</div>

> Once the services are deployed, [snappi-tests](https://github.com/open-traffic-generator/snappi-tests/tree/6a35c10), a collection of [snappi](https://pypi.org/project/snappi/) test scripts and configurations, can be setup to run against Ixia-c.
> Once the services are deployed, [snappi-tests](https://github.com/open-traffic-generator/snappi-tests/tree/ee92091), a collection of [snappi](https://pypi.org/project/snappi/) test scripts and configurations, can be setup to run against Ixia-c.
### Bootstrap

Expand Down
2 changes: 1 addition & 1 deletion docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ What version of the Open Traffic Generator spec does Ixia-c implement?
</summary>
<br>

Ixia-c implements version **[v0.8.6](https://github.com/open-traffic-generator/models/releases/tag/v0.8.6)** of the Open Traffic Generator Data Model. You can view the model [here](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.8.6/artifacts/openapi.yaml).
Ixia-c implements version **[v0.9.1](https://github.com/open-traffic-generator/models/releases/tag/v0.9.1)** of the Open Traffic Generator Data Model. You can view the model [here](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.9.1/artifacts/openapi.yaml).

</details>

Expand Down
29 changes: 18 additions & 11 deletions docs/hello-snappi.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ In this tutorial, we will walk through some key elements required to write a **s
* Send 1000 UDP packets back and forth between interfaces eth1 & eth2 at a rate of 1000 packets per second.
* Ensure that indeed correct number of valid UDP packets are received on both ends using port capture and port metrics.

The script [hello_snappi.py](https://github.com/open-traffic-generator/snappi-tests/tree/6a35c10/scripts/hello_snappi.py) covers this extensively.
The script [hello_snappi.py](https://github.com/open-traffic-generator/snappi-tests/tree/ee92091/scripts/hello_snappi.py) covers this extensively.
<div align="center">
<img src="res/ixia-c.drawio.svg"></img>
</div>
Expand All @@ -47,20 +47,27 @@ And installing python packages:
* [dpkt](https://pypi.org/project/dpkt/) - for processing `.pcap` files.

```sh
python -m pip install --upgrade snappi==0.8.8 dpkt
python -m pip install --upgrade snappi==0.9.3 dpkt
```

### Create API Handle

The first step in any snappi script is to import the `snappi` package and instantiate an `api` object, where `location` parameter takes the HTTPS address of the controller and `verify` is used to turn off insecure certificate warning.
The first step in any snappi script is to import the `snappi` package and instantiate an `api` object, where `location` parameter takes the HTTPS/gRPC address of the controller and `verify` is used to turn off insecure certificate warning.

If the controller is deployed with a non-default TCP port using [deployment parameters](deployments.md#deployment-parameters), it must be specified explicitly in the address (default is 443).
If the controller is deployed with a non-default TCP port using [deployment parameters](deployments.md#deployment-parameters), it must be specified explicitly in the address (default port of HTTPS is 443 and gRPC is 40051).

```python
import snappi

# HTTPS
api = snappi.api(location='https://localhost', verify=False)
# or with non-default TCP port
api = snappi.api(location='https://localhost:8080', verify=False)

#gRPC
api = snappi.api(location="localhost:40051", transport=snappi.Transport.GRPC)
# or with non-default TCP port
api = snappi.api(location="localhost:50020", transport=snappi.Transport.GRPC)
```

<details>
Expand Down Expand Up @@ -100,17 +107,17 @@ We now need to construct traffic configuration to be sent to controller. We'll n
> By default, API requests in snappi are made over HTTPS with payloads as a JSON string. Since each object in snappi inherits `SnappiObject` or `SnappiIter`, they all share a common method called `.serialize()` and `deserialize()`, used internally during API requests, for valid conversion to / from a JSON string. We'll discuss about more such conveniences offered by snappi along the way.
<details>
<summary><b>Expand</b> this section for details on how to effectively navigate through <a href="https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.8.6/artifacts/openapi.yaml">snappi API documentation</a>.</summary><br/>
<summary><b>Expand</b> this section for details on how to effectively navigate through <a href="https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.9.1/artifacts/openapi.yaml">snappi API documentation</a>.</summary><br/>

The objects and methods (for API calls) in snappi are auto-generated from an [Open API Generator YAML file](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.8.6/artifacts/openapi.yaml). This file adheres to [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification), which can (by design) also be rendered as an interactive API documentation.
The objects and methods (for API calls) in snappi are auto-generated from an [Open API Generator YAML file](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.9.1/artifacts/openapi.yaml). This file adheres to [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification), which can (by design) also be rendered as an interactive API documentation.

[ReDoc](https://redocly.github.io/redoc/) is an open-source tool that does this. It accepts a link to valid OpenAPI YAML file and generates a document where all the methods (for API calls) are mentioned in the left navigation bar and for each selected method, there's a request / response body description in the center of the page. These descriptions lay out the entire object tree documenting each node in details.

The snappi API documentation linked above will always point to API version **v0.8.6**. To use a different API version instead:
The snappi API documentation linked above will always point to API version **v0.9.1**. To use a different API version instead:

* Identify API version by opening <a href="https://github.com/open-traffic-generator/snappi/releases/download/v0.8.8/models-release">this link</a> in a browser and replacing **v0.8.8** in URL with intended snappi version.
* Identify API version by opening <a href="https://github.com/open-traffic-generator/snappi/releases/download/v0.9.1/models-release">this link</a> in a browser and replacing **v0.9.1** in URL with intended snappi version.

* Open <a href="https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.8.6/artifacts/openapi.yaml">this link</a> in a browser after replacing **v0.8.6** in URL with intended API version.
* Open <a href="https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.9.1/artifacts/openapi.yaml">this link</a> in a browser after replacing **v0.9.1** in URL with intended API version.

</details>

Expand Down Expand Up @@ -406,6 +413,6 @@ with open('cap.pcap', 'wb') as p:

### Putting It All Together

`snappi` provides a fair level of abstraction and ease-of-use while constructing traffic configuration compared to doing the [equivalent in JSON](https://github.com/open-traffic-generator/snappi-tests/tree/6a35c10/configs/hello_snappi.json). More such comparisons can be found in [common snappi constructs](snappi-constructs.md).
`snappi` provides a fair level of abstraction and ease-of-use while constructing traffic configuration compared to doing the [equivalent in JSON](https://github.com/open-traffic-generator/snappi-tests/tree/ee92091/configs/hello_snappi.json). More such comparisons can be found in [common snappi constructs](snappi-constructs.md).

There's more to snappi than what we've presented here, e.g. per-flow metrics, latency measurements, custom payloads, etc. It will be worthwhile browsing through [snappi-tests](https://github.com/open-traffic-generator/snappi-tests/tree/6a35c10) for more such examples, pytest-based test scripts and utilities.
There's more to snappi than what we've presented here, e.g. per-flow metrics, latency measurements, custom payloads, etc. It will be worthwhile browsing through [snappi-tests](https://github.com/open-traffic-generator/snappi-tests/tree/ee92091) for more such examples, pytest-based test scripts and utilities.
9 changes: 9 additions & 0 deletions docs/news.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# News

* **1st September, 2022**: Ixia-c version 0.0.1 (build 3182) released. This conforms to **[v0.9.1](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.9.1/artifacts/openapi.yaml)** of the Open Traffic Generator Models specification.

**Announcement**

`ixia-c` container images is hosted on [GitHub Container Registry](https://github.com/orgs/open-traffic-generator/packages). However we will continue publishing `ixia-c` container images to [DockerHub](https://hub.docker.com/r/ixiacom) until 18th November, 2022.

* This build includes new features. [Read more](releases.md)


* **18th August, 2022**: Ixia-c version 0.0.1 (build 3113) released. This conforms to **[v0.8.6](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.8.6/artifacts/openapi.yaml)** of the Open Traffic Generator Models specification.

**Announcement**
Expand Down
33 changes: 32 additions & 1 deletion docs/releases.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,37 @@
# Ixia-c Release Notes and Version Compatibility

## Release v0.0.1-3113 (Latest)
## Release v0.0.1-3182 (Latest)
> 18th August, 2022
#### Announcement

`ixia-c` container images is hosted on [GitHub Container Registry](https://github.com/orgs/open-traffic-generator/packages). However we will continue publishing `ixia-c` container images to [DockerHub](https://hub.docker.com/r/ixiacom) until 18th November, 2022.

#### Build Details

| Component | Version |
|-------------------------------|---------------|
| Open Traffic Generator API | [0.9.1](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.9.1/artifacts/openapi.yaml) |
| snappi | [0.9.3](https://pypi.org/project/snappi/0.9.3) |
| gosnappi | [0.9.3](https://pkg.go.dev/github.com/open-traffic-generator/snappi/[email protected]) |
| ixia-c-controller | [0.0.1-3182](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-controller) |
| ixia-c-traffic-engine | [1.6.0.9](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-traffic-engine) |
| ixia-c-app-usage-reporter | [0.0.1-37](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-app-usage-reporter) |
| ixia-c-protocol-engine | [1.00.0.217](https://github.com/orgs/open-traffic-generator/packages/container/package/licensed%2Fixia-c-protocol-engine) |
| ixia-c-operator | [0.2.1](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-operator) |
| ixia-c-gnmi-server | [1.9.1](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-gnmi-server) |
| ixia-c-one | [0.0.1-3182](https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-one/) |

#### Release Features(s)

* TBD

#### Known Issues

* The metric `loss` in flow metrics is currently not supported.
* When flow transmit is started, transmission will be restarted on any existing flows already transmitting packets

## Release v0.0.1-3113
> 18th August, 2022
#### Announcement
Expand Down
15 changes: 9 additions & 6 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
</h4>

<p align="center">
<a href="https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-controller"><img alt="Release v0.0.1-3113" src="https://img.shields.io/badge/release-v0.0.1--3113-brightgreen"></a>
<a href="https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.8.6/artifacts/openapi.yaml"><img alt="Open Traffic Generator v0.8.6" src="https://img.shields.io/badge/open--traffic--generator-v0.8.6-brightgreen"></a>
<a href="https://pypi.org/project/snappi/0.8.8"><img alt="snappi v0.8.8" src="https://img.shields.io/badge/snappi-v0.8.8-brightgreen"></a>
<a href="https://github.com/orgs/open-traffic-generator/packages/container/package/ixia-c-controller"><img alt="Release v0.0.1-3182" src="https://img.shields.io/badge/release-v0.0.1--3182-brightgreen"></a>
<a href="https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.9.1/artifacts/openapi.yaml"><img alt="Open Traffic Generator v0.9.1" src="https://img.shields.io/badge/open--traffic--generator-v0.9.1-brightgreen"></a>
<a href="https://pypi.org/project/snappi/0.9.3"><img alt="snappi v0.9.3" src="https://img.shields.io/badge/snappi-v0.9.3-brightgreen"></a>
<a href="docs/news.md"><img alt="news" src="https://img.shields.io/badge/-news-blue?logo=github"></a>
<a href="docs/contribute.md"><img alt="news" src="https://img.shields.io/badge/-contribute-blue?logo=github"></a>
<a href="docs/support.md"><img alt="Slack Status" src="https://img.shields.io/badge/slack-support-blue?logo=slack"></a>
Expand Down Expand Up @@ -75,7 +75,7 @@ Before proceeding, please ensure [system prerequisites](docs/prerequisites.md) a
git clone --recurse-submodules https://github.com/open-traffic-generator/ixia-c && cd ixia-c

# install snappi
python -m pip install --upgrade snappi==0.8.8
python -m pip install --upgrade snappi==0.9.3
# run a standalone script to generate TCP traffic and fetch metrics
python snappi-tests/scripts/quickstart_snappi.py
```
Expand All @@ -87,8 +87,11 @@ Before proceeding, please ensure [system prerequisites](docs/prerequisites.md) a

```python
import snappi
# create a new API instance where location points to controller
# create a new API instance over HTTPS transport where location points to controller
api = snappi.api(location="https://localhost", verify=False)
# OR
# create a new API instance over gRPC transport where location points to controller
api = snappi.api(location="localhost:40051", transport=snappi.Transport.GRPC)

# create a config object to be pushed to controller
config = api.config()
Expand Down Expand Up @@ -124,7 +127,7 @@ Before proceeding, please ensure [system prerequisites](docs/prerequisites.md) a
* Optionally, Generate Traffic Using [curl](https://curl.se/)

>We can also pass equivalent **JSON configuration** directly to ixia-c controller, without installing snappi, using **curl**.
>The detailed description of each node (and their attributes) in JSON configuration are well documented [here](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.8.6/artifacts/openapi.yaml).
>The detailed description of each node (and their attributes) in JSON configuration are well documented [here](https://redocly.github.io/redoc/?url=https://raw.githubusercontent.com/open-traffic-generator/models/v0.9.1/artifacts/openapi.yaml).
```bash
# push the contents of config file snappi-tests/configs/quickstart_snappi.json
Expand Down
2 changes: 1 addition & 1 deletion snappi-tests

0 comments on commit b875319

Please sign in to comment.