ncs-uml


Namencs-uml JSON
Version 1.2.2 PyPI version JSON
download
home_pagehttps://github.com/kirankotari/ncs-uml.git
SummaryThe ncs-uml creates plantUML files for the given YANG file and its dependencies
upload_time2023-07-11 23:03:20
maintainer
docs_urlNone
authorKiran Kumar Kotari
requires_python
license
keywords ncs-uml ncs_uml
VCS
bugtrack_url
requirements pyang
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # NCS-UML

[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-yellow)](https://opensource.org/license/apache-2-0/)
[![Downloads](https://pepy.tech/badge/ncs-uml)](https://pepy.tech/project/ncs-uml)
[![GitHub issues open](https://img.shields.io/github/issues/kirankotari/ncs-uml.svg?)](https://github.com/kirankotari/ncs-uml/issues)

- [Introduction](#introduction)
- [Commands](#commands)
- [Documentation](#docs)
- [Pre-requisites](#pre-requisites)
- [Installation and Downloads](#installation-and-downloads)
- [FAQ](#faq)
- [Bug Tracker and Support](#bug-tracker-and-support)
- [License and Copyright](#license-and-copyright)
- [Author and Thanks](#author-and-thanks)

## Introduction

A Python library and CLI tool that generates plantUML code from the given input YANG Model file. It grabs the dependencies yang models from the Makefile and from NCS. 

To generate a png image or a svg file, install plantUML plugin for VSCode or other editors. plantUML has the web editor available at [plantuml.com](http://www.plantuml.com/)

## Commands

```sh
Usage: ncs-uml [options] [<filename>...]

Creates plantUML file for the YANG module in <filename>, and all its dependencies.
It can be converted into PNG/SVG images using www.plantuml.com or with editor plugins.

Options:
  -h, --help            Show this help message and exit
  -v, --version         Show version number and exit
  -V, --verbose
  --no-inline-groupings
  --dependent-yang-paths=DEPENDENT_YANG_PATHS
                        dependent yang module paths
  --no-inline-groupings-from=NO_INLINE_GROUPINGS_FROM
                        Skips given modules from inline groupings.  Example
                        --uml-no-inline-groupings-from=ietf-yang-push
  --add-legend          Adds legend about grouping yang file in the UML
```

## Docs

**How to use ncs-uml?**

- Command Line  
  Type `ncs-uml <YangFile>`. For more help type `ncs-uml --help`

```shell
user$ ncs-uml $NCS_DIR/examples.ncs/getting-started/developing-with-ncs/17-mpls-vpn-python/packages/l3vpn/src/yang/l3vpn.yang --no-inline-groupings-from=tailf-ncs --add-legend
 INFO |   main | uml file: l3vpn.uml
 INFO |   main | uml clean up done.
user$
```

It returns plantUML code, which can easily converted to image.

![l3vpn](l3vpn.png)

Plant UML code:
```plantuml.server
@startuml l3vpn
hide empty fields 
hide empty methods 
hide <<case>> circle
hide <<augment>> circle
hide <<choice>> circle
hide <<leafref>> stereotype
hide <<leafref>> circle
page 1x1 
Title l3vpn 
class "l3vpn" as l3vpn << (M, #33CCFF) module>> 
class "dscp-type" as dscp_type << (T, YellowGreen) typedef>>
dscp_type : union{uint16, enumeration}
enum "protocol-type" as l3vpn_I_protocol_type {
icmp
igmp
ipip
MORE
}
class "qos-match-type" as qos_match_type << (T, YellowGreen) typedef>>
qos_match_type : union{tailf:ipv4-address-and-prefix-length, enumeration}
class "topology" as  l3vpn_I_topology <<container>> 
l3vpn *-- "1" l3vpn_I_topology 
class "role" as l3vpn_I_topology_I_role << (L, #FF7700) list>> 
l3vpn_I_topology *-- "0..N" l3vpn_I_topology_I_role 
l3vpn_I_topology_I_role : +role : enumeration : {ce,pe,p,}  {key} 
l3vpn_I_topology_I_role : device []: leafref : /ncs:devices/ncs:device/ncs:name 
class "connection" as l3vpn_I_topology_I_connection << (L, #FF7700) list>> 
l3vpn_I_topology *-- "0..N" l3vpn_I_topology_I_connection 
l3vpn_I_topology_I_connection : +name : string  {key} 
class "endpoint-1" as  l3vpn_I_topology_I_connection_I_endpoint_1 <<container>> 
l3vpn_I_topology_I_connection *-- "1" l3vpn_I_topology_I_connection_I_endpoint_1 
l3vpn_I_topology_I_connection_I_endpoint_1 : device : leafref : /ncs:devices/ncs:device/ncs:name  
l3vpn_I_topology_I_connection_I_endpoint_1 : interface : string  
l3vpn_I_topology_I_connection_I_endpoint_1 : ip-address : tailf:ipv4-address-and-prefix-length  
class "endpoint-2" as  l3vpn_I_topology_I_connection_I_endpoint_2 <<container>> 
l3vpn_I_topology_I_connection *-- "1" l3vpn_I_topology_I_connection_I_endpoint_2 
l3vpn_I_topology_I_connection_I_endpoint_2 : device : leafref : /ncs:devices/ncs:device/ncs:name  
l3vpn_I_topology_I_connection_I_endpoint_2 : interface : string  
l3vpn_I_topology_I_connection_I_endpoint_2 : ip-address : tailf:ipv4-address-and-prefix-length  
l3vpn_I_topology_I_connection : link-vlan : uint32  
class "qos" as  l3vpn_I_qos <<container>> 
l3vpn *-- "1" l3vpn_I_qos 
class "qos-policy" as l3vpn_I_qos_I_qos_policy << (L, #FF7700) list>> 
l3vpn_I_qos *-- "0..N" l3vpn_I_qos_I_qos_policy 
l3vpn_I_qos_I_qos_policy : +name : string  {key} 
class "class" as l3vpn_I_qos_I_qos_policy_I_class << (L, #FF7700) list>> 
l3vpn_I_qos_I_qos_policy *-- "0..N" l3vpn_I_qos_I_qos_policy_I_class 
l3vpn_I_qos_I_qos_policy_I_class : +qos-class : leafref : /qos/qos-class/name  {key} 
l3vpn_I_qos_I_qos_policy_I_class : bandwidth-percentage : uint32  
l3vpn_I_qos_I_qos_policy_I_class : priority : empty  
class "qos-class" as l3vpn_I_qos_I_qos_class << (L, #FF7700) list>> 
l3vpn_I_qos *-- "0..N" l3vpn_I_qos_I_qos_class 
l3vpn_I_qos_I_qos_class : +name : string  {key} 
l3vpn_I_qos_I_qos_class : dscp-value : dscp-type  
class "match-traffic" as l3vpn_I_qos_I_qos_class_I_match_traffic << (L, #FF7700) list>> 
l3vpn_I_qos_I_qos_class *-- "0..N" l3vpn_I_qos_I_qos_class_I_match_traffic 
l3vpn_I_qos_I_qos_class_I_match_traffic : +name : string  {key} 
l3vpn_I_qos_I_qos_class_I_match_traffic : source-ip : qos-match-type  
l3vpn_I_qos_I_qos_class_I_match_traffic : destination-ip : qos-match-type  
l3vpn_I_qos_I_qos_class_I_match_traffic : port-start : inet:port-number  
l3vpn_I_qos_I_qos_class_I_match_traffic : port-end : inet:port-number  
l3vpn_I_qos_I_qos_class_I_match_traffic : protocol : protocol-type  
class "vpn" as  l3vpn_I_vpn <<container>> 
l3vpn *-- "1" l3vpn_I_vpn 
class "l3vpn" as l3vpn_I_vpn_I_l3vpn << (L, #FF7700) list>> 
l3vpn_I_vpn *-- "0..N" l3vpn_I_vpn_I_l3vpn 
l3vpn_I_vpn_I_l3vpn : +name : string  {key} 
l3vpn_I_vpn_I_l3vpn : callpoint:ncs-rfs-service-hook()
l3vpn_I_vpn_I_l3vpn : check-sync( in: outformat in: suppress_positive_result in: service_depth in: choice_lsa_grouping)
l3vpn_I_vpn_I_l3vpn : deep-check-sync( in: outformat in: suppress_positive_result in: choice_lsa_grouping in: wait_for_lock)
l3vpn_I_vpn_I_l3vpn : re-deploy( in: dry_run in: reconcile in: ncs_commit_params in: service_depth out: ncs_commit_result)
l3vpn_I_vpn_I_l3vpn : reactive-re-deploy( in: sync out: ncs_commit_result)
l3vpn_I_vpn_I_l3vpn : touch()
class "modified" as  l3vpn_I_vpn_I_l3vpn_I_modified <<container>> 
l3vpn_I_vpn_I_l3vpn *-- "1" l3vpn_I_vpn_I_l3vpn_I_modified 
l3vpn_I_vpn_I_l3vpn_I_modified : callpoint:ncs()
l3vpn_I_vpn_I_l3vpn_I_modified : devices []: leafref : /ncs:devices/ncs:device/ncs:name 
l3vpn_I_vpn_I_l3vpn_I_modified : services []: instance-identifier 
l3vpn_I_vpn_I_l3vpn_I_modified : lsa-services []: instance-identifier 
class "directly-modified" as  l3vpn_I_vpn_I_l3vpn_I_directly_modified <<container>> 
l3vpn_I_vpn_I_l3vpn *-- "1" l3vpn_I_vpn_I_l3vpn_I_directly_modified 
l3vpn_I_vpn_I_l3vpn_I_directly_modified : callpoint:ncs()
l3vpn_I_vpn_I_l3vpn_I_directly_modified : devices []: leafref : /ncs:devices/ncs:device/ncs:name 
l3vpn_I_vpn_I_l3vpn_I_directly_modified : services []: instance-identifier 
l3vpn_I_vpn_I_l3vpn_I_directly_modified : lsa-services []: instance-identifier 
l3vpn_I_vpn_I_l3vpn : get-modifications( in: outformat in: reverse in: service_depth in: choice_lsa_grouping)
l3vpn_I_vpn_I_l3vpn : un-deploy( in: ignore_refcount in: dry_run in: ncs_commit_params out: ncs_commit_result)
l3vpn_I_vpn_I_l3vpn : used-by-customer-service []: leafref : /ncs:services/ncs:customer-service/ncs:object-id  {Config : false}
class "commit-queue" as  l3vpn_I_vpn_I_l3vpn_I_commit_queue <<container>> 
l3vpn_I_vpn_I_l3vpn *-- "1" l3vpn_I_vpn_I_l3vpn_I_commit_queue 
l3vpn_I_vpn_I_l3vpn_I_commit_queue : cdboper()
l3vpn_I_vpn_I_l3vpn_I_commit_queue : clear()
class "queue-item" as l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item << (L, #FF7700) list>> 
l3vpn_I_vpn_I_l3vpn_I_commit_queue *-- "0..N" l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item 
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : +id : uint64  {key} 
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : status : enumeration : {waiting,executing,blocking,...}  
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : cleared-by-admin : empty  
class "failed-device" as l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device << (L, #FF7700) list>> 
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item *-- "0..N" l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device 
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device : +name : leafref : /ncs:devices/ncs:device/ncs:name  {key} 
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device : time : yang:date-and-time  
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device : config-data : string  
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device : error : string  
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : admin-clear()
l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : delete()
class "private" as  l3vpn_I_vpn_I_l3vpn_I_private <<container>> 
l3vpn_I_vpn_I_l3vpn *-- "1" l3vpn_I_vpn_I_l3vpn_I_private 
l3vpn_I_vpn_I_l3vpn_I_private : diff-set : binary  
l3vpn_I_vpn_I_l3vpn_I_private : forward-diff-set : binary  
l3vpn_I_vpn_I_l3vpn_I_private : device-list []: string 
l3vpn_I_vpn_I_l3vpn_I_private : ned-id-list []: string 
l3vpn_I_vpn_I_l3vpn_I_private : service-list []: instance-identifier 
l3vpn_I_vpn_I_l3vpn_I_private : lsa-service-list []: yang:xpath1.0 
l3vpn_I_vpn_I_l3vpn_I_private : synthesizer-kicker-list []: instance-identifier 
class "property-list" as  l3vpn_I_vpn_I_l3vpn_I_private_I_property_list <<container>> 
l3vpn_I_vpn_I_l3vpn_I_private *-- "1" l3vpn_I_vpn_I_l3vpn_I_private_I_property_list 
class "property" as l3vpn_I_vpn_I_l3vpn_I_private_I_property_list_I_property << (L, #FF7700) list>> 
l3vpn_I_vpn_I_l3vpn_I_private_I_property_list *-- "0..N" l3vpn_I_vpn_I_l3vpn_I_private_I_property_list_I_property 
l3vpn_I_vpn_I_l3vpn_I_private_I_property_list_I_property : +name : string  {key} 
l3vpn_I_vpn_I_l3vpn_I_private_I_property_list_I_property : value : string  
l3vpn_I_vpn_I_l3vpn_I_private : re-deploy-counter : int32   = 0 
l3vpn_I_vpn_I_l3vpn_I_private : latest-commit-params : binary  
l3vpn_I_vpn_I_l3vpn_I_private : latest-u-info : binary  
l3vpn_I_vpn_I_l3vpn : plan-location : instance-identifier   {Config : false}
class "log" as  l3vpn_I_vpn_I_l3vpn_I_log <<container>> 
l3vpn_I_vpn_I_l3vpn *-- "1" l3vpn_I_vpn_I_l3vpn_I_log 
l3vpn_I_vpn_I_l3vpn_I_log : cdboper()
l3vpn_I_vpn_I_l3vpn_I_log : purge( in: filter_input out: purged_log_entries)
class "log-entry" as l3vpn_I_vpn_I_l3vpn_I_log_I_log_entry << (L, #FF7700) list>> 
l3vpn_I_vpn_I_l3vpn_I_log *-- "0..N" l3vpn_I_vpn_I_l3vpn_I_log_I_log_entry 
l3vpn_I_vpn_I_l3vpn_I_log_I_log_entry : +when : yang:date-and-time  {key} 
l3vpn_I_vpn_I_l3vpn_I_log_I_log_entry : type : log-entry-t   {mandatory}
l3vpn_I_vpn_I_l3vpn_I_log_I_log_entry : level : log-entry-level-t   {mandatory}
l3vpn_I_vpn_I_l3vpn_I_log_I_log_entry : message : string  
l3vpn_I_vpn_I_l3vpn : as-number : uint32   {mandatory}
class "endpoint" as l3vpn_I_vpn_I_l3vpn_I_endpoint << (L, #FF7700) list>> 
l3vpn_I_vpn_I_l3vpn *-- "0..N" l3vpn_I_vpn_I_l3vpn_I_endpoint 
l3vpn_I_vpn_I_l3vpn_I_endpoint : +id : string  {key} 
l3vpn_I_vpn_I_l3vpn_I_endpoint : ce-device : leafref : /ncs:devices/ncs:device/ncs:name   {mandatory}
l3vpn_I_vpn_I_l3vpn_I_endpoint : ce-interface : string   {mandatory}
l3vpn_I_vpn_I_l3vpn_I_endpoint : ip-network : inet:ip-prefix   {mandatory}
l3vpn_I_vpn_I_l3vpn_I_endpoint : bandwidth : uint32   {mandatory}
class "qos" as  l3vpn_I_vpn_I_l3vpn_I_qos <<container>> 
l3vpn_I_vpn_I_l3vpn *-- "1" l3vpn_I_vpn_I_l3vpn_I_qos 
l3vpn_I_vpn_I_l3vpn_I_qos : qos-policy : leafref : /l3vpn:qos/qos-policy/name  
class "custom-qos-match" as l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match << (L, #FF7700) list>> 
l3vpn_I_vpn_I_l3vpn_I_qos *-- "0..N" l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match 
l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : +name : string  {key} 
l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : qos-class : leafref : /l3vpn:qos/qos-class/name   {mandatory}
l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : source-ip : qos-match-type  
l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : destination-ip : qos-match-type  
l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : port-start : inet:port-number  
l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : port-end : inet:port-number  
l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : protocol : protocol-type  
class "/ncs:devices/ncs:device" as tailf_ncs_devices_I_devices_I_device <<leafref>> 
class "/qos/qos-class" as l3vpn_I_qos_I_qos_class <<leafref>> 
class "/ncs:devices/ncs:device" as tailf_ncs_devices_I_devices_I_device <<leafref>> 
l3vpn_I_topology_I_role-->"ncs:name"tailf_ncs_devices_I_devices_I_device: device
l3vpn_I_qos_I_qos_policy_I_class-->"name"l3vpn_I_qos_I_qos_class: qos-class
l3vpn_I_vpn_I_l3vpn_I_endpoint-->"ncs:name"tailf_ncs_devices_I_devices_I_device: ce-device
l3vpn_I_vpn_I_l3vpn_I_qos-->"name"l3vpn_I_qos_I_qos_policy: qos-policy
l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match-->"name"l3vpn_I_qos_I_qos_class: qos-class
@enduml

```

## Pre-requisites

ncs-uml supports both trains of **python** `2.7+ and 3.1+`, the OS should not matter.

- pyang is used to translate the data.

## Installation and Downloads

The best way to get ncs-uml is with setuptools or pip. If you already have setuptools, you can install as usual:

`python -m pip install ncs-uml`

Otherwise download it from PyPi, extract it and run the `setup.py` script

`python setup.py install`

If you're Interested in the source, you can always pull from the github repo:

- From github `git clone https://github.com/kirankotari/ncs-uml.git`

## FAQ

- **Question:** Can we create uml diagram for the yang sub-module?  
 **Answer:** No, currently we are allowing modules only, we are going to add sub-modules to the module before generating uml diagram

- **Question:** Can I create uml diagram for 2 files at at time?  
 **Answer:** No, currently we are allowing one file at a time.

## Bug Tracker and Support

- Please report any suggestions, bug reports, or annoyances with pingping through the [Github bug tracker](https://github.com/kirankotari/ncs-uml/issues).


## License and Copyright

- ncs-uml is licensed [Apache 2.0](https://opensource.org/license/apache-2-0/) *2023*

   [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-yellow)](https://opensource.org/license/apache-2-0/)

## Author and Thanks

ncs-uml was developed by [Kiran Kumar Kotari](https://github.com/kirankotari)


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/kirankotari/ncs-uml.git",
    "name": "ncs-uml",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "ncs-uml,ncs_uml",
    "author": "Kiran Kumar Kotari",
    "author_email": "kirankotari@live.com",
    "download_url": "https://files.pythonhosted.org/packages/e9/1d/fa3c50563e7d34f2ae32b6bcc962fa135f978fd5fa111f228549142b9934/ncs-uml-1.2.2.tar.gz",
    "platform": null,
    "description": "# NCS-UML\n\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-yellow)](https://opensource.org/license/apache-2-0/)\n[![Downloads](https://pepy.tech/badge/ncs-uml)](https://pepy.tech/project/ncs-uml)\n[![GitHub issues open](https://img.shields.io/github/issues/kirankotari/ncs-uml.svg?)](https://github.com/kirankotari/ncs-uml/issues)\n\n- [Introduction](#introduction)\n- [Commands](#commands)\n- [Documentation](#docs)\n- [Pre-requisites](#pre-requisites)\n- [Installation and Downloads](#installation-and-downloads)\n- [FAQ](#faq)\n- [Bug Tracker and Support](#bug-tracker-and-support)\n- [License and Copyright](#license-and-copyright)\n- [Author and Thanks](#author-and-thanks)\n\n## Introduction\n\nA Python library and CLI tool that generates plantUML code from the given input YANG Model file. It grabs the dependencies yang models from the Makefile and from NCS. \n\nTo generate a png image or a svg file, install plantUML plugin for VSCode or other editors. plantUML has the web editor available at [plantuml.com](http://www.plantuml.com/)\n\n## Commands\n\n```sh\nUsage: ncs-uml [options] [<filename>...]\n\nCreates plantUML file for the YANG module in <filename>, and all its dependencies.\nIt can be converted into PNG/SVG images using www.plantuml.com or with editor plugins.\n\nOptions:\n  -h, --help            Show this help message and exit\n  -v, --version         Show version number and exit\n  -V, --verbose\n  --no-inline-groupings\n  --dependent-yang-paths=DEPENDENT_YANG_PATHS\n                        dependent yang module paths\n  --no-inline-groupings-from=NO_INLINE_GROUPINGS_FROM\n                        Skips given modules from inline groupings.  Example\n                        --uml-no-inline-groupings-from=ietf-yang-push\n  --add-legend          Adds legend about grouping yang file in the UML\n```\n\n## Docs\n\n**How to use ncs-uml?**\n\n- Command Line  \n  Type `ncs-uml <YangFile>`. For more help type `ncs-uml --help`\n\n```shell\nuser$ ncs-uml $NCS_DIR/examples.ncs/getting-started/developing-with-ncs/17-mpls-vpn-python/packages/l3vpn/src/yang/l3vpn.yang --no-inline-groupings-from=tailf-ncs --add-legend\n INFO |   main | uml file: l3vpn.uml\n INFO |   main | uml clean up done.\nuser$\n```\n\nIt returns plantUML code, which can easily converted to image.\n\n![l3vpn](l3vpn.png)\n\nPlant UML code:\n```plantuml.server\n@startuml l3vpn\nhide empty fields \nhide empty methods \nhide <<case>> circle\nhide <<augment>> circle\nhide <<choice>> circle\nhide <<leafref>> stereotype\nhide <<leafref>> circle\npage 1x1 \nTitle l3vpn \nclass \"l3vpn\" as l3vpn << (M, #33CCFF) module>> \nclass \"dscp-type\" as dscp_type << (T, YellowGreen) typedef>>\ndscp_type : union{uint16, enumeration}\nenum \"protocol-type\" as l3vpn_I_protocol_type {\nicmp\nigmp\nipip\nMORE\n}\nclass \"qos-match-type\" as qos_match_type << (T, YellowGreen) typedef>>\nqos_match_type : union{tailf:ipv4-address-and-prefix-length, enumeration}\nclass \"topology\" as  l3vpn_I_topology <<container>> \nl3vpn *-- \"1\" l3vpn_I_topology \nclass \"role\" as l3vpn_I_topology_I_role << (L, #FF7700) list>> \nl3vpn_I_topology *-- \"0..N\" l3vpn_I_topology_I_role \nl3vpn_I_topology_I_role : +role : enumeration : {ce,pe,p,}  {key} \nl3vpn_I_topology_I_role : device []: leafref : /ncs:devices/ncs:device/ncs:name \nclass \"connection\" as l3vpn_I_topology_I_connection << (L, #FF7700) list>> \nl3vpn_I_topology *-- \"0..N\" l3vpn_I_topology_I_connection \nl3vpn_I_topology_I_connection : +name : string  {key} \nclass \"endpoint-1\" as  l3vpn_I_topology_I_connection_I_endpoint_1 <<container>> \nl3vpn_I_topology_I_connection *-- \"1\" l3vpn_I_topology_I_connection_I_endpoint_1 \nl3vpn_I_topology_I_connection_I_endpoint_1 : device : leafref : /ncs:devices/ncs:device/ncs:name  \nl3vpn_I_topology_I_connection_I_endpoint_1 : interface : string  \nl3vpn_I_topology_I_connection_I_endpoint_1 : ip-address : tailf:ipv4-address-and-prefix-length  \nclass \"endpoint-2\" as  l3vpn_I_topology_I_connection_I_endpoint_2 <<container>> \nl3vpn_I_topology_I_connection *-- \"1\" l3vpn_I_topology_I_connection_I_endpoint_2 \nl3vpn_I_topology_I_connection_I_endpoint_2 : device : leafref : /ncs:devices/ncs:device/ncs:name  \nl3vpn_I_topology_I_connection_I_endpoint_2 : interface : string  \nl3vpn_I_topology_I_connection_I_endpoint_2 : ip-address : tailf:ipv4-address-and-prefix-length  \nl3vpn_I_topology_I_connection : link-vlan : uint32  \nclass \"qos\" as  l3vpn_I_qos <<container>> \nl3vpn *-- \"1\" l3vpn_I_qos \nclass \"qos-policy\" as l3vpn_I_qos_I_qos_policy << (L, #FF7700) list>> \nl3vpn_I_qos *-- \"0..N\" l3vpn_I_qos_I_qos_policy \nl3vpn_I_qos_I_qos_policy : +name : string  {key} \nclass \"class\" as l3vpn_I_qos_I_qos_policy_I_class << (L, #FF7700) list>> \nl3vpn_I_qos_I_qos_policy *-- \"0..N\" l3vpn_I_qos_I_qos_policy_I_class \nl3vpn_I_qos_I_qos_policy_I_class : +qos-class : leafref : /qos/qos-class/name  {key} \nl3vpn_I_qos_I_qos_policy_I_class : bandwidth-percentage : uint32  \nl3vpn_I_qos_I_qos_policy_I_class : priority : empty  \nclass \"qos-class\" as l3vpn_I_qos_I_qos_class << (L, #FF7700) list>> \nl3vpn_I_qos *-- \"0..N\" l3vpn_I_qos_I_qos_class \nl3vpn_I_qos_I_qos_class : +name : string  {key} \nl3vpn_I_qos_I_qos_class : dscp-value : dscp-type  \nclass \"match-traffic\" as l3vpn_I_qos_I_qos_class_I_match_traffic << (L, #FF7700) list>> \nl3vpn_I_qos_I_qos_class *-- \"0..N\" l3vpn_I_qos_I_qos_class_I_match_traffic \nl3vpn_I_qos_I_qos_class_I_match_traffic : +name : string  {key} \nl3vpn_I_qos_I_qos_class_I_match_traffic : source-ip : qos-match-type  \nl3vpn_I_qos_I_qos_class_I_match_traffic : destination-ip : qos-match-type  \nl3vpn_I_qos_I_qos_class_I_match_traffic : port-start : inet:port-number  \nl3vpn_I_qos_I_qos_class_I_match_traffic : port-end : inet:port-number  \nl3vpn_I_qos_I_qos_class_I_match_traffic : protocol : protocol-type  \nclass \"vpn\" as  l3vpn_I_vpn <<container>> \nl3vpn *-- \"1\" l3vpn_I_vpn \nclass \"l3vpn\" as l3vpn_I_vpn_I_l3vpn << (L, #FF7700) list>> \nl3vpn_I_vpn *-- \"0..N\" l3vpn_I_vpn_I_l3vpn \nl3vpn_I_vpn_I_l3vpn : +name : string  {key} \nl3vpn_I_vpn_I_l3vpn : callpoint:ncs-rfs-service-hook()\nl3vpn_I_vpn_I_l3vpn : check-sync( in: outformat in: suppress_positive_result in: service_depth in: choice_lsa_grouping)\nl3vpn_I_vpn_I_l3vpn : deep-check-sync( in: outformat in: suppress_positive_result in: choice_lsa_grouping in: wait_for_lock)\nl3vpn_I_vpn_I_l3vpn : re-deploy( in: dry_run in: reconcile in: ncs_commit_params in: service_depth out: ncs_commit_result)\nl3vpn_I_vpn_I_l3vpn : reactive-re-deploy( in: sync out: ncs_commit_result)\nl3vpn_I_vpn_I_l3vpn : touch()\nclass \"modified\" as  l3vpn_I_vpn_I_l3vpn_I_modified <<container>> \nl3vpn_I_vpn_I_l3vpn *-- \"1\" l3vpn_I_vpn_I_l3vpn_I_modified \nl3vpn_I_vpn_I_l3vpn_I_modified : callpoint:ncs()\nl3vpn_I_vpn_I_l3vpn_I_modified : devices []: leafref : /ncs:devices/ncs:device/ncs:name \nl3vpn_I_vpn_I_l3vpn_I_modified : services []: instance-identifier \nl3vpn_I_vpn_I_l3vpn_I_modified : lsa-services []: instance-identifier \nclass \"directly-modified\" as  l3vpn_I_vpn_I_l3vpn_I_directly_modified <<container>> \nl3vpn_I_vpn_I_l3vpn *-- \"1\" l3vpn_I_vpn_I_l3vpn_I_directly_modified \nl3vpn_I_vpn_I_l3vpn_I_directly_modified : callpoint:ncs()\nl3vpn_I_vpn_I_l3vpn_I_directly_modified : devices []: leafref : /ncs:devices/ncs:device/ncs:name \nl3vpn_I_vpn_I_l3vpn_I_directly_modified : services []: instance-identifier \nl3vpn_I_vpn_I_l3vpn_I_directly_modified : lsa-services []: instance-identifier \nl3vpn_I_vpn_I_l3vpn : get-modifications( in: outformat in: reverse in: service_depth in: choice_lsa_grouping)\nl3vpn_I_vpn_I_l3vpn : un-deploy( in: ignore_refcount in: dry_run in: ncs_commit_params out: ncs_commit_result)\nl3vpn_I_vpn_I_l3vpn : used-by-customer-service []: leafref : /ncs:services/ncs:customer-service/ncs:object-id  {Config : false}\nclass \"commit-queue\" as  l3vpn_I_vpn_I_l3vpn_I_commit_queue <<container>> \nl3vpn_I_vpn_I_l3vpn *-- \"1\" l3vpn_I_vpn_I_l3vpn_I_commit_queue \nl3vpn_I_vpn_I_l3vpn_I_commit_queue : cdboper()\nl3vpn_I_vpn_I_l3vpn_I_commit_queue : clear()\nclass \"queue-item\" as l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item << (L, #FF7700) list>> \nl3vpn_I_vpn_I_l3vpn_I_commit_queue *-- \"0..N\" l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : +id : uint64  {key} \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : status : enumeration : {waiting,executing,blocking,...}  \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : cleared-by-admin : empty  \nclass \"failed-device\" as l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device << (L, #FF7700) list>> \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item *-- \"0..N\" l3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device : +name : leafref : /ncs:devices/ncs:device/ncs:name  {key} \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device : time : yang:date-and-time  \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device : config-data : string  \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item_I_failed_device : error : string  \nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : admin-clear()\nl3vpn_I_vpn_I_l3vpn_I_commit_queue_I_queue_item : delete()\nclass \"private\" as  l3vpn_I_vpn_I_l3vpn_I_private <<container>> \nl3vpn_I_vpn_I_l3vpn *-- \"1\" l3vpn_I_vpn_I_l3vpn_I_private \nl3vpn_I_vpn_I_l3vpn_I_private : diff-set : binary  \nl3vpn_I_vpn_I_l3vpn_I_private : forward-diff-set : binary  \nl3vpn_I_vpn_I_l3vpn_I_private : device-list []: string \nl3vpn_I_vpn_I_l3vpn_I_private : ned-id-list []: string \nl3vpn_I_vpn_I_l3vpn_I_private : service-list []: instance-identifier \nl3vpn_I_vpn_I_l3vpn_I_private : lsa-service-list []: yang:xpath1.0 \nl3vpn_I_vpn_I_l3vpn_I_private : synthesizer-kicker-list []: instance-identifier \nclass \"property-list\" as  l3vpn_I_vpn_I_l3vpn_I_private_I_property_list <<container>> \nl3vpn_I_vpn_I_l3vpn_I_private *-- \"1\" l3vpn_I_vpn_I_l3vpn_I_private_I_property_list \nclass \"property\" as l3vpn_I_vpn_I_l3vpn_I_private_I_property_list_I_property << (L, #FF7700) list>> \nl3vpn_I_vpn_I_l3vpn_I_private_I_property_list *-- \"0..N\" l3vpn_I_vpn_I_l3vpn_I_private_I_property_list_I_property \nl3vpn_I_vpn_I_l3vpn_I_private_I_property_list_I_property : +name : string  {key} \nl3vpn_I_vpn_I_l3vpn_I_private_I_property_list_I_property : value : string  \nl3vpn_I_vpn_I_l3vpn_I_private : re-deploy-counter : int32   = 0 \nl3vpn_I_vpn_I_l3vpn_I_private : latest-commit-params : binary  \nl3vpn_I_vpn_I_l3vpn_I_private : latest-u-info : binary  \nl3vpn_I_vpn_I_l3vpn : plan-location : instance-identifier   {Config : false}\nclass \"log\" as  l3vpn_I_vpn_I_l3vpn_I_log <<container>> \nl3vpn_I_vpn_I_l3vpn *-- \"1\" l3vpn_I_vpn_I_l3vpn_I_log \nl3vpn_I_vpn_I_l3vpn_I_log : cdboper()\nl3vpn_I_vpn_I_l3vpn_I_log : purge( in: filter_input out: purged_log_entries)\nclass \"log-entry\" as l3vpn_I_vpn_I_l3vpn_I_log_I_log_entry << (L, #FF7700) list>> \nl3vpn_I_vpn_I_l3vpn_I_log *-- \"0..N\" l3vpn_I_vpn_I_l3vpn_I_log_I_log_entry \nl3vpn_I_vpn_I_l3vpn_I_log_I_log_entry : +when : yang:date-and-time  {key} \nl3vpn_I_vpn_I_l3vpn_I_log_I_log_entry : type : log-entry-t   {mandatory}\nl3vpn_I_vpn_I_l3vpn_I_log_I_log_entry : level : log-entry-level-t   {mandatory}\nl3vpn_I_vpn_I_l3vpn_I_log_I_log_entry : message : string  \nl3vpn_I_vpn_I_l3vpn : as-number : uint32   {mandatory}\nclass \"endpoint\" as l3vpn_I_vpn_I_l3vpn_I_endpoint << (L, #FF7700) list>> \nl3vpn_I_vpn_I_l3vpn *-- \"0..N\" l3vpn_I_vpn_I_l3vpn_I_endpoint \nl3vpn_I_vpn_I_l3vpn_I_endpoint : +id : string  {key} \nl3vpn_I_vpn_I_l3vpn_I_endpoint : ce-device : leafref : /ncs:devices/ncs:device/ncs:name   {mandatory}\nl3vpn_I_vpn_I_l3vpn_I_endpoint : ce-interface : string   {mandatory}\nl3vpn_I_vpn_I_l3vpn_I_endpoint : ip-network : inet:ip-prefix   {mandatory}\nl3vpn_I_vpn_I_l3vpn_I_endpoint : bandwidth : uint32   {mandatory}\nclass \"qos\" as  l3vpn_I_vpn_I_l3vpn_I_qos <<container>> \nl3vpn_I_vpn_I_l3vpn *-- \"1\" l3vpn_I_vpn_I_l3vpn_I_qos \nl3vpn_I_vpn_I_l3vpn_I_qos : qos-policy : leafref : /l3vpn:qos/qos-policy/name  \nclass \"custom-qos-match\" as l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match << (L, #FF7700) list>> \nl3vpn_I_vpn_I_l3vpn_I_qos *-- \"0..N\" l3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match \nl3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : +name : string  {key} \nl3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : qos-class : leafref : /l3vpn:qos/qos-class/name   {mandatory}\nl3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : source-ip : qos-match-type  \nl3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : destination-ip : qos-match-type  \nl3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : port-start : inet:port-number  \nl3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : port-end : inet:port-number  \nl3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match : protocol : protocol-type  \nclass \"/ncs:devices/ncs:device\" as tailf_ncs_devices_I_devices_I_device <<leafref>> \nclass \"/qos/qos-class\" as l3vpn_I_qos_I_qos_class <<leafref>> \nclass \"/ncs:devices/ncs:device\" as tailf_ncs_devices_I_devices_I_device <<leafref>> \nl3vpn_I_topology_I_role-->\"ncs:name\"tailf_ncs_devices_I_devices_I_device: device\nl3vpn_I_qos_I_qos_policy_I_class-->\"name\"l3vpn_I_qos_I_qos_class: qos-class\nl3vpn_I_vpn_I_l3vpn_I_endpoint-->\"ncs:name\"tailf_ncs_devices_I_devices_I_device: ce-device\nl3vpn_I_vpn_I_l3vpn_I_qos-->\"name\"l3vpn_I_qos_I_qos_policy: qos-policy\nl3vpn_I_vpn_I_l3vpn_I_qos_I_custom_qos_match-->\"name\"l3vpn_I_qos_I_qos_class: qos-class\n@enduml\n\n```\n\n## Pre-requisites\n\nncs-uml supports both trains of **python** `2.7+ and 3.1+`, the OS should not matter.\n\n- pyang is used to translate the data.\n\n## Installation and Downloads\n\nThe best way to get ncs-uml is with setuptools or pip. If you already have setuptools, you can install as usual:\n\n`python -m pip install ncs-uml`\n\nOtherwise download it from PyPi, extract it and run the `setup.py` script\n\n`python setup.py install`\n\nIf you're Interested in the source, you can always pull from the github repo:\n\n- From github `git clone https://github.com/kirankotari/ncs-uml.git`\n\n## FAQ\n\n- **Question:** Can we create uml diagram for the yang sub-module?  \n **Answer:** No, currently we are allowing modules only, we are going to add sub-modules to the module before generating uml diagram\n\n- **Question:** Can I create uml diagram for 2 files at at time?  \n **Answer:** No, currently we are allowing one file at a time.\n\n## Bug Tracker and Support\n\n- Please report any suggestions, bug reports, or annoyances with pingping through the [Github bug tracker](https://github.com/kirankotari/ncs-uml/issues).\n\n\n## License and Copyright\n\n- ncs-uml is licensed [Apache 2.0](https://opensource.org/license/apache-2-0/) *2023*\n\n   [![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-yellow)](https://opensource.org/license/apache-2-0/)\n\n## Author and Thanks\n\nncs-uml was developed by [Kiran Kumar Kotari](https://github.com/kirankotari)\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "The ncs-uml creates plantUML files for the given YANG file and its dependencies",
    "version": "1.2.2",
    "project_urls": {
        "Homepage": "https://github.com/kirankotari/ncs-uml.git"
    },
    "split_keywords": [
        "ncs-uml",
        "ncs_uml"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4c47d59b6b0db45f5b6a195cc26c05c1f228dcbcd489fcd351688a47ee1ac8e7",
                "md5": "7e0b59a86488b58ad35da505f96e9a8a",
                "sha256": "ed2f04bac328184fc033475f6db542ff751c1208ebfce930477f587fdd4b6a17"
            },
            "downloads": -1,
            "filename": "ncs_uml-1.2.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7e0b59a86488b58ad35da505f96e9a8a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 24584,
            "upload_time": "2023-07-11T23:03:18",
            "upload_time_iso_8601": "2023-07-11T23:03:18.848650Z",
            "url": "https://files.pythonhosted.org/packages/4c/47/d59b6b0db45f5b6a195cc26c05c1f228dcbcd489fcd351688a47ee1ac8e7/ncs_uml-1.2.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e91dfa3c50563e7d34f2ae32b6bcc962fa135f978fd5fa111f228549142b9934",
                "md5": "4fed0c4c90dbde95cdcd9059505ed4cb",
                "sha256": "9a491d17c3819ec628a8018c9fa181633d362aef967b212c6828a7e627094c94"
            },
            "downloads": -1,
            "filename": "ncs-uml-1.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "4fed0c4c90dbde95cdcd9059505ed4cb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 27325,
            "upload_time": "2023-07-11T23:03:20",
            "upload_time_iso_8601": "2023-07-11T23:03:20.825910Z",
            "url": "https://files.pythonhosted.org/packages/e9/1d/fa3c50563e7d34f2ae32b6bcc962fa135f978fd5fa111f228549142b9934/ncs-uml-1.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-11 23:03:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "kirankotari",
    "github_project": "ncs-uml",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "pyang",
            "specs": [
                [
                    ">=",
                    "2.5.0"
                ]
            ]
        }
    ],
    "lcname": "ncs-uml"
}
        
Elapsed time: 0.38364s