Giter VIP home page Giter VIP logo

lyes-s / multi-element-relationally-interconnected-topology Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 773 KB

M.E.R.I.T : The Microservices NextGen ๐Ÿ•Š๏ธ

Home Page: https://github.com/lyes-s/multi-element-relationally-interconnected-topology/wiki

License: MIT License

Java 87.17% Shell 1.69% Dockerfile 0.75% JavaScript 0.63% CSS 0.81% HTML 8.96%
java-11 spring-boot spring-cloud-gateway consul flyway postgresql apache-kafka apache-zookeeper spring-kafka apache-avro

multi-element-relationally-interconnected-topology's Introduction

M.E.R.I.T
Multi-Element Relationally Interconnected Topology

MIT License

Copyright (c) 2023 Lyes Sefiane.

GitHub Badges

GitHub top language GitHub Repo stars license

Architecture

User Interface

URL : http://localhost:4200

Index

Network Elements

Retrieve All Network Elements

Edit a Network Element

Network Graph

Wiki

OpenAPI/Swagger

Network Elements : https://app.swaggerhub.com/apis-docs/lye-s/network-elements/1.0

Network Graph : https://app.swaggerhub.com/apis-docs/lye-s/network-graph/1.0

Requirements

1. Java 11.x.y

2. Maven 3.x.y

3. Docker 3.x.y

Git Clone

git clone https://github.com/lyes-s/multi-element-relationally-interconnected-topology.git

M.E.R.I.T : The Script

mitsuke ( โ—ฅโ—ฃ_โ—ขโ—ค ) : ~$ cd multi-element-relationally-interconnected-topology/

mitsuke ( โ—ฅโ—ฃ_โ—ขโ—ค ) : ~$ chmod +x the-merit-script

mitsuke ( โ—ฅโ—ฃ_โ—ขโ—ค ) : ~$ ./the-merit-script


     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—    โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—    โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
     โ•šโ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•    โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•   โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•‘โ•šโ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•
        โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—      โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘
        โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•      โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•”โ•โ•โ•     โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘
        โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—    โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘
        โ•šโ•โ•   โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•    โ•šโ•โ•     โ•šโ•โ•โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•šโ•โ•โ•šโ•โ•โ•šโ•โ•

        mitsuke ( โ—ฅโ—ฃ_โ—ขโ—ค ) : Hi ๐Ÿ˜Š ! please make a selection.

        1) Docker Compose Up
        2) Docker Compose Down
        3) quit
        #? 1
        Docker Compose Up ...
        Creating network "docker-compose_network-elements" with the default driver
        Creating network "docker-compose_redis" with the default driver
        Creating network "docker-compose_network-graph" with the default driver
        Creating network "docker-compose_consul" with the default driver
        Creating network "docker-compose_kafka" with the default driver
        Creating network "docker-compose_schema-registry" with the default driver
        Creating network "docker-compose_gateway" with the default driver
        Creating network "docker-compose_ui" with the default driver
        Creating volume "docker-compose_redis-cluster_data-0" with default driver
        Creating volume "docker-compose_redis-cluster_data-1" with default driver
        Creating volume "docker-compose_redis-cluster_data-2" with default driver
        Creating volume "docker-compose_redis-cluster_data-3" with default driver
        Creating volume "docker-compose_redis-cluster_data-4" with default driver
        Creating volume "docker-compose_redis-cluster_data-5" with default driver
        Creating volume "docker-compose_pgdata" with default driver
        Creating volume "docker-compose_mongodb-data" with default driver
        Creating network-elements-db ... done
        Creating zookeeper           ... done
        Creating redis-node-4        ... done
        Creating mongodb             ... done
        Creating consul-server       ... done
        Creating redis-node-3        ... done
        Creating redis-node-0        ... done
        Creating redis-node-2        ... done
        Creating redis-node-1        ... done
        Creating flyway              ... done
        Creating mongo-express       ... done
        Creating kafka3              ... done
        Creating kafka2              ... done
        Creating consul-client       ... done
        Creating kafka1              ... done
        Creating redis-node-5        ... done
        Creating kafdrop             ... done
        Creating schema-registry     ... done
        Creating network-graph       ... done
        Creating network-elements    ... done
        Creating api-gateway         ... done
        Creating network-ui          ... done

REST API

Network Element

curl -H 'Content-Type: application/json' http://localhost:8080/api/v1/devices

[
    {
        "address": "10.133.13.12",
        "elementType": "router",
        "area": 0,
        "neighbors": [
            {
                "address": "10.133.13.13",
                "cost": 2
            },
            {
                "address": "10.133.13.14",
                "cost": 3
            },
            {
                "address": "10.133.13.15",
                "cost": 1
            }
        ],
        "edges": [
            {
                "rel": "self",
                "href": "http://8e5eace76bac:8080/api/v1/devices/10.133.13.12"
            }
        ]
    },
    {
        "address": "10.133.13.13",
        "elementType": "server",
        "area": 0,
        "neighbors": [],
        "edges": [
            {
                "rel": "self",
                "href": "http://8e5eace76bac:8080/api/v1/devices/10.133.13.13"
            }
        ]
    },
    {
        "address": "10.133.13.14",
        "elementType": "wireless router",
        "area": 0,
        "neighbors": [
            {
                "address": "10.133.13.16",
                "cost": 5
            }
        ],
        "edges": [
            {
                "rel": "self",
                "href": "http://8e5eace76bac:8080/api/v1/devices/10.133.13.14"
            }
        ]
    },
    {
        "address": "10.133.13.15",
        "elementType": "switch",
        "area": 0,
        "neighbors": [
            {
                "address": "10.133.13.17",
                "cost": 4
            },
            {
                "address": "10.133.13.18",
                "cost": 4
            },
            {
                "address": "10.133.13.19",
                "cost": 4
            }
        ],
        "edges": [
            {
                "rel": "self",
                "href": "http://8e5eace76bac:8080/api/v1/devices/10.133.13.15"
            }
        ]
    },
    {
        "address": "10.133.13.16",
        "elementType": "laptop",
        "area": 0,
        "neighbors": [],
        "edges": [
            {
                "rel": "self",
                "href": "http://8e5eace76bac:8080/api/v1/devices/10.133.13.16"
            }
        ]
    },
    {
        "address": "10.133.13.17",
        "elementType": "desktop computer",
        "area": 0,
        "neighbors": [
            {
                "address": "10.133.13.18",
                "cost": 0
            },
            {
                "address": "10.133.13.19",
                "cost": 0
            }
        ],
        "edges": [
            {
                "rel": "self",
                "href": "http://8e5eace76bac:8080/api/v1/devices/10.133.13.17"
            }
        ]
    },
    {
        "address": "10.133.13.18",
        "elementType": "desktop computer",
        "area": 0,
        "neighbors": [
            {
                "address": "10.133.13.19",
                "cost": 0
            }
        ],
        "edges": [
            {
                "rel": "self",
                "href": "http://8e5eace76bac:8080/api/v1/devices/10.133.13.18"
            }
        ]
    },
    {
        "address": "10.133.13.19",
        "elementType": "desktop computer",
        "area": 0,
        "neighbors": [],
        "edges": [
            {
                "rel": "self",
                "href": "http://8e5eace76bac:8080/api/v1/devices/10.133.13.19"
            }
        ]
    }
]

GraphQL API

Network Graph

curl -X POST -H 'Content-Type: application/json' http://localhost:8080/api/graphql -d '{ "query": "{ retrieveGraph { nodes { id area elementType} links { source target cost} } }" }'

{
   "data": {
      "retrieveGraph": {
          "nodes": [
            {
                "id": "10.133.13.12",
                "area": 0,
                "elementType": "router"
            },
            {
                "id": "10.133.13.13",
                "area": 0,
                "elementType": "server"
            },
            {
                "id": "10.133.13.14",
                "area": 0,
                "elementType": "wireless router"
            },
            {
                "id": "10.133.13.15",
                "area": 0,
                "elementType": "switch"
            },
            {
                "id": "10.133.13.16",
                "area": 0,
                "elementType": "laptop"
            },
            {
                "id": "10.133.13.17",
                "area": 0,
                "elementType": "desktop computer"
            },
            {
                "id": "10.133.13.18",
                "area": 0,
                "elementType": "desktop computer"
            },
            {
                "id": "10.133.13.19",
                "area": 0,
                "elementType": "desktop computer"
            }
        ],
        "links": [
            {
                "source": "10.133.13.15",
                "target": "10.133.13.17",
                "cost": 4
            },
            {
                "source": "10.133.13.12",
                "target": "10.133.13.14",
                "cost": 3
            },
            {
                "source": "10.133.13.12",
                "target": "10.133.13.13",
                "cost": 2
            },
            {
                "source": "10.133.13.15",
                "target": "10.133.13.18",
                "cost": 4
            },
            {
                "source": "10.133.13.14",
                "target": "10.133.13.16",
                "cost": 5
            },
            {
                "source": "10.133.13.12",
                "target": "10.133.13.15",
                "cost": 1
            },
            {
                "source": "10.133.13.17",
                "target": "10.133.13.19",
                "cost": 0
            },
            {
                "source": "10.133.13.15",
                "target": "10.133.13.19",
                "cost": 4
            },
            {
                "source": "10.133.13.17",
                "target": "10.133.13.18",
                "cost": 0
            },
            {
                "source": "10.133.13.18",
                "target": "10.133.13.19",
                "cost": 0
            }
        ]
      }
   }
}

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

multi-element-relationally-interconnected-topology's People

Contributors

dependabot[bot] avatar lyes-s avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.