From 593bee9a940653c8d1c7dd63ff1764d811ed0200 Mon Sep 17 00:00:00 2001 From: stephb9959 Date: Thu, 23 Feb 2023 12:58:30 -0800 Subject: [PATCH] https://telecominfraproject.atlassian.net/browse/WIFI-12068 Signed-off-by: stephb9959 --- README.md | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 193 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0b2e3cf..e6da9cc 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,202 @@

-# OpenWiFi Provisioning +# OpenWiFi Provisioning Service (OWPROV) +## What is it? +The OWPROV is a service for the TIP OpenWiFi CloudSDK (OWSDK). +OWPROV manages groups of access points through the use of entities and vanues. OWPROV, like all other OWSDK microservices, is +defined using an OpenAPI definition and uses the ucentral communication protocol to interact with Access Points. To use +the OWGW, you either need to [build it](#building) or use the [Docker version](#docker). -## OpenAPI -You may get static page with OpenAPI docs generated from the definition on [GitHub Page](https://telecominfraproject.github.io/wlan-cloud-owprov/). +## Building +In order to build the OWPROV, you will need to install its dependencies, which includes the following: +- cmake +- boost +- POCO 1.10.1 or later +- a C++17 compiler +- openssl +- libpq-dev (PortgreSQL development libraries) +- mysql-client (MySQL client) +- librdkafka +- cppkafka -Also, you may use [Swagger UI](https://petstore.swagger.io/#/) with OpenAPI definition file raw link (i.e. [latest version file](https://raw.githubusercontent.com/Telecominfraproject/wlan-cloud-owprov/main/openapi/owprov.yaml)) to get interactive docs page. +The build is done in 2 parts. The first part is to build a local copy of the framework tailored to your environment. This +framework is called [Poco](https://github.com/pocoproject/poco). The version used in this project has a couple of fixes +from the master copy needed for cmake. Please use the version of this [Poco fix](https://github.com/AriliaWireless/poco). Building +Poco may take several minutes depending on the platform you are building on. -## Build from source. -You need: -- https://github.com/pboettch/json-schema-validator.git -- https://github.com/nlohmann/json.git +### Ubuntu +These instructions have proven to work on Ubuntu 20.4. +```bash +sudo apt install git cmake g++ libssl-dev libmariadb-dev +sudo apt install libpq-dev libaprutil1-dev apache2-dev libboost-all-dev +sudo apt install librdkafka-dev // default-libmysqlclient-dev +sudo apt install nlohmann-json-dev -build and install them. +cd ~ +git clone https://github.com/AriliaWireless/poco --branch poco-tip-v1 +cd poco +mkdir cmake-build +cd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install + +cd ~ +git clone https://github.com/AriliaWireless/cppkafka --branch tip-v1 +cd cppkafka +mkdir cmake-build +cd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install + +cd ~ +git clone https://github.com/AriliaWireless/valijson --branch tip-v1 +cd valijson +mkdir cmake-build +cd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install + +git clone https://github.com/fmtlib/fmt --branch 9.0.0 /fmtlib +cd fmtlib +mkdir cmake-build +cd cmake-build +cmake .. +make +make install + +cd ~ +git clone https://github.com/Telecominfraproject/wlan-cloud-owprov +cd wlan-cloud-owprov +mkdir cmake-build +cd cmake-build +cmake .. +make -j 8 +``` + +### Fedora +The following instructions have proven to work on Fedora 33 +```bash +sudo yum install cmake g++ openssl-devel mysql-devel mysql apr-util-devel boost boost-devel +sudo yum install yaml-cpp-devel lua-devel +sudo dnf install postgresql.x86_64 librdkafka-devel +sudo dnf install postgresql-devel json-devel + +git clone https://github.com/AriliaWireless/poco --branch poco-tip-v1 +cd poco +mkdir cmake-build +cd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install + +git clone https://github.com/AriliaWireless/cppkafka --branch tip-v1 +cd cppkafka +mkdir cmake-build +cd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install + +cd ~ +git clone https://github.com/AriliaWireless/valijson --branch tip-v1 +cd valijson +mkdir cmake-build +cd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install + +cd ~ +git clone https://github.com/Telecominfraproject/wlan-cloud-owprov +cd wlan-cloud-owprov +mkdir cmake-build +cd cmake-build +cmake .. +make +``` + +### macOS Build +The following instructions have proven to work on macOS Big Sur. You need to install [Homebrew](https://brew.sh/). You must also have installed [XCode for OS X](https://www.freecodecamp.org/news/how-to-download-and-install-xcode/). +```bash +brew install openssl \ + cmake \ + libpq \ + mysql-client \ + apr \ + apr-util \ + boost \ + yaml-cpp \ + postgresql \ + librdkafka \ + nlohmann-json \ + fmt + +git clone https://github.com/AriliaWireless/poco --branch poco-tip-v1 +pushd poco +mkdir cmake-build +push cmake-build +cmake -DOPENSSL_ROOT_DIR= -DENABLE_NETSSL=1 -DENABLE_JWT=1 -DENABLE_CRYPTO=1 .. +cmake --build . --config Release +sudo cmake --build . --target install +popd +popd + +git clone https://github.com/AriliaWireless/cppkafka --branch tip-v1 +pushd cppkafka +mkdir cmake-build +pushd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install +popd +popd + +git clone https://github.com/AriliaWireless/valijson --branch tip-v1 +cd valijson +mkdir cmake-build +cd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install +popd +popd + +git clone https://github.com/Telecominfraproject/wlan-cloud-owprov +pushd wlan-cloud-owprov +mkdir cmake-build +pushd cmake-build +cmake .. +make -j +popd +popd +``` + +### Raspberry +The build on a rPI takes a while. You can shorten that build time and requirements by disabling all the larger database +support. You can build with only SQLite support by not installing the packages for PostgreSQL, and MySQL by +adding -DSMALL_BUILD=1 on the cmake build line. + +```bash +sudo apt install git cmake g++ libssl-dev libaprutil1-dev apache2-dev libboost-all-dev libyaml-cpp-dev +git clone https://github.com/stephb9959/poco +cd poco +mkdir cmake-build +cd cmake-build +cmake .. +cmake --build . --config Release +sudo cmake --build . --target install + +cd ~ +git clone https://github.com/Telecominfraproject/wlan-cloud-owprov +cd wlan-cloud-owprov +mkdir cmake-build +cd cmake-build +cmake -DSMALL_BUILD=1 .. +make +``` ## Root entity It's UUID value is 0000-0000-0000. Its parent entity must be empty.