Developer HowTo

From OSM Public Wiki
Revision as of 09:52, 17 August 2018 by Calvinosanch (talk | contribs) (Created page with "The aim of this entry is to provide a guide for developers to set up their environment, in order to ease ==General steps== === 1.- Shutdown the module you want to use=== O...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The aim of this entry is to provide a guide for developers to set up their environment, in order to ease

General steps

1.- Shutdown the module you want to use

OSM use a docker container for each module. First thing, you need to stop the module you want to develop:

docker service scale osm_lcm=0

2.- Clone the module

git clone https://osm.etsi.org/gerrit/osm/LCM

3.- Install the module

Inside the folder where the module is cloned tyoe the following command:

sudo python3 setup.py install

4.- Setup the IDE

For this tutorial we will use PyCharm as IDE. First thing, we will set "Python3" as default python interpreter:

File:Example.jpg

Next we will configure a new debug environment. For that we will go to the "Run" tab "Edit configurations". In the new window that appears we will need to configure the script and the environment parameters.

File:Example.jpg

5.- Other modules addresses

You need to provide your module the ip addresses of the modules it is going to communicate to. For that you can configure your "/etc/hosts" file.

In case you are using the same server where the rest of the modules are located, use "127.0.0.1" as the IP address of the modules:

127.0.0.1 localhost <vm name> mongo ro kafka

In case you use a different server, you need to provide the IP address of the host where OSM is running:

IP-OSM   mongo ro kafka

6.- Install packages needed

Is it possible that you will need to install some additional packages in your server. If needed use the commands "pip3 install" or "apt-get install" for that.

Some modules imports another modules from OSM. The modules needed are:

n2vc: git clone https://osm.etsi.org/gerrit/osm/N2VC
common: git clone https://osm.etsi.org/gerrit/osm/common
IM: git clone https://osm.etsi.org/gerrit/osm/IM

Particular configuration

NBI

Script: $INTALLATION_FOLDER/NBI/osm_nbi/nbi.py

Environment variables:

  • OSMNBI_STORAGE_PATH: Path of the docker volume for filestorage
    • In case you develop in a different server than OSM, then it only works if LCM is also running in develop mode.
  • OSMNBI_DATABASE_HOST: In case it is not configured in "/etc/hosts" file
    • In case you develop in the same server as OSM is installed, then it should be "127.0.0.1"

LCM

Script: $INTALLATION_FOLDER/LCM/osm_lcm/lcm.py

Environment variables:

  • OSMLCM_STORAGE_PATH: Path of the docker volume for filestorage
    • In case you develop in a different server than OSM, then it only works if NBI is also running in develop mode.
  • OSMLCM_DATABASE_HOST: In case it is not configured in "/etc/hosts" file
    • In case you develop in the same server as OSM is installed, then it should be "127.0.0.1"
  • OSMLCM_VCA_SECRET: To get this value run the following command in the OSM host:
    • grep password /home/ubuntu/.local/share/juju/accounts.yaml |awk '{print $2}'
  • OSMLCM_VCA_HOST: Will be different depending on where your develop environment is running:
    • In case you run it in the same server as OSM use the following command:
      • juju show-controller|grep api-endpoints|awk -F\' '{print $2}'|awk -F\: '{print $1}'
    • In case you use a different server than OSM:
      • IP address from OSM
      • Configure the following ip-table rule in OSM host:
        • sudo iptables -t nat -A PREROUTING -p tcp -d <OSM_IP> --dport 17070 -j DNAT --to <VCA_IP>:17070