Skip to content

Roadmap

Ashutosh Kumar edited this page Mar 10, 2023 · 3 revisions

The items provided below are ordered arbitrarily and pending priority identification.

Legends:

  • HP - High Priority
  • HE - High Effort
  • WIP - Work In Progress

1. Logging support in generated SDK - HP, WIP

  • Applicable for snappi, gosnappi
  • Enables logging API requests / response and other information that may be needed for debugging
  • Allow users to control the logging options (e.g. level, file, etc.) and integrate seamlessly with logger used in projects using snappi / gosnappi

2. Instrumentation support in generated SDK - HP, HE

  • Applicable for snappi, gosnappi
  • Exercise standard approach for embedding instrumentation code using OTLP
  • Enable co-relation of instrumentation data between client and server

3. Performance CI for generated SDK - HP

  • Applicable for snappi, gosnappi
  • Track performance regression in generated SDK upon new release
  • Maintain CDF plots per release

4. Data type refactor for API and generated SDK - HP

  • Applicable for models, snappi, gosnappi
  • Generate type closest to the min-max range provided in models for fields
  • Support unsigned integer format in models for fields

5. Ingress / Egress tracking support in API - HP, HE, WIP

  • Applicable for models
  • Auto-generate tracking window configuration for all fields of all headers

6. Name uniqueness validation in generated SDK - HP, WIP

  • Applicable for snappi, gosnappi
  • Automatic validation of name properties marked with x-unique

7. Name constraint validation in generated SDK - HP, HE

  • Applicable for snappi, gosnappi
  • Automatic validation of name properties marked with x-constraint

8. Error UX enhancement in API and generated SDK - HP, HE, WIP

  • Applicable for models, snappi, gosnappi
  • Simplify error API
  • Simplify error inspection in SDK

9. Decouple generated SDK from gRPC stubs - HP, HE

  • Applicable for models, snappi, gosnappi
  • Mark x-field-uid as optional
  • Restore behavior of x-include (requires repurposing x-field-uid)
  • Generate structs in Go when gRPC structs are not available

10. Error message consistency - HP

  • Applicable for snappi, gosnappi
  • Error message needs to be consistent across python and go

11. Validate required primitive types in generated SDK - HP

  • Applicable for gosnappi
  • The check is currently disabled because we generate non-pointer type for required fields
  • When required field is deprecated, users are still forced to provide values for it until it's actually removed

12. Refactor out utility helpers from generated SDK to a separate repository - HE

  • Applicable for gosnappi, snappi
  • Introduce more utilities for waiting, polling
  • Introduce more utilities for printing metrics in tabular format

13. Revisit behavior of iterators in generated SDK - HE

  • Applicable for gosnappi
  • Current implementation of iterators introduces a complexity in how wrappers are generated around base structures
  • Iterating over items should not require calling a separate method on iterators - it's non intuitive
  • Some very commonly used methods need to be part of iterators - e.g. find by name

14. Autogenerate correct go.mod and requirements.txt

  • Applicable for openapiart
  • Today one has to provide these with updated versions of components manually, which is error prone
  • Generate SDKs with correct defaults (e.g. package name, path, etc.) - today the location for different artifacts is arbitrarily

15. Accept declarative YAML for openapiart-generated SDK

  • Applicable for openapiart
  • Today we accept python script for customization which has flaws when things not provided in specific order

16. Equality check of objects in generated SDK - HP

  • Applicable for gosnappi
  • Ensure two gosnappi objects can be compared using reflection API

17. Support streaming large request / responses in generated SDK - HE

  • Applicable for snappi, gosnappi
  • Needs more exploration, but idea is to, without breaking tests, automatically switch between streaming communication vs req-resp communication based on payload size.

18. Provide options to skip validation in generated SDK

  • Applicable for snappi, gosnappi
  • Allow serializing / de-serializing of structures without any validation
  • Needed for scenarios where repeating the validation on client and server side is undesirable

19. Auto-generate unit tests for generated SDK - HE

  • Applicable for snappi, gosnappi
  • The unit test needs to be auto-generated for positive and negative use cases

20. Support for typing in generated SDK

  • Applicable for snappi
  • Incorporate typing for all snappi objects and their properties / methods
  • Deprecate support for Python 2.7, since it has poor typing support
  • This enables better intellisense in code editors, which is missing today

21. Fail early if pre-requisites are not met in openapiart

  • Applicable for openapiart
  • Check for presence of go, protoc, protoc plugins, etc. and raise error if they're required

22. Automatic generation of values for required fields in generated SDK - HE

  • Applicable for snappi, gosnappi
  • Use case: MAC address is a required field but it would help if the values are automatically generated
  • May need to introduce a new x-extension

23. Capability API - HE

  • Applicable for snappi, gosnappi
  • Implementation should be able to provide a list of schemas, fields, enum values, field values that are currently not supported

24. Semantic version support for all components - HE, HP

  • Submission to main branch should always result in automatic pre-release
  • Pre release builds should be following x.y.z-build convention
  • Manual trigger needs to be provided to create release of the form x.y.z

24. Support for C++ SDK - HE

  • A lot of components that may potentially use openapiart-generated SDK are written in C++
  • This is important for more wide-spread adaption

25. Support generating code from .YAML or .JSON

  • Allow generating snappi and gosnappi code from .YAML or .JSON
  • The logic to do so shall reside in SDK itself

26. Allow transforming non-openapiart-compatible API to openapiart-compatible API

  • Multiple teams are currently relying on proprietary API or .proto api
  • It's feasible to transform these API to equivalent openapiart-compatible API
  • openapiart should accept plugin that contains small logic for transforming API
  • This will help further adaption of openapiart

27. Strong typing of choice fields in generated SDK - HP

  • Applicable for snappi, gosnappi
  • Need to reconsider whether choice fields should be allowed to be modified multiple times
Clone this wiki locally