What's on this page

Create New Project


Create a new VNF or Network Service project that will hold all of its descriptor, test and lifecycle script artifacts.


Set-up a new local project

NB: For a sample set of network service and virtual network function examples: Accanto Marketplace

To create a new project, a directory containing the package structure will be crated first on your local machine. For convenience the local directory structure can be created with the lmctl command line tool and filled in later with the VNF or Network Service artifacts.

NB: The project name should NOT contain ‘-’ as a separator in the name (this is not a restriction on Stratoss LM, but simplifies pipeline automation later)

To create a new VNF run the following lmctl command:

$ lmctl project create --name <<YOUR_VNF>> --version 0.1 --servicetype VNF --vnfc <<VNFC1>> --vnfc <<VNFC2>> <<YOUR_VNF_DIR>>

Replace <> and <> with the name of your new project and the name of the directory you want to create with the package structure in it. For each VNFC contained within your VNF, keep addding –vnfc <> options, and their structure will be templated into the new package directory.

To create a new Network Service run the following lmctl command:

$ lmctl project create --name <<YOUR_NS>> --version 0.1 --servicetype NS <<YOUR_NS_DIR>>

A Network Service package directory structure with the name <> will be created in the directory <>.

NB: The following steps are workarounds. The project descriptor needs a description property to be valid, and some extra directories for the Behaviour tests (replace myvnf with your project name):

$ echo "description: Brief description" >> ./<<YOUR_VNF_DIR>>/Descriptor/assembly.yml
$ mkdir -p <<YOUR_VNF_DIR>>/Behaviour/Tests
$ mkdir -p <<YOUR_VNF_DIR>>/Behaviour/Templates

If you are creating a VNF and assuming you are using the Ansible RM, each VNFC contained in the newly created VNF project will need to have the following base structure to capture each VNFCs ansible lifecycle scripts:

  ├── <<VNFC1>>
      ├── descriptor
      │   └── <<VNFC1>>.yml
      ├── lifecycle
      │   ├── Configure.yml
      │   ├── Install.yml
      │   ├── Integrity.yml
      │   ├── Start.yml
      │   ├── Stop.yml
      │   └── Unistall.yml
      └── Meta-Inf
          └── manifest.MF

Download the following bash script and run it with the name, version and location of your project directory. It will then create the structure above with minimal content

#!/usr/bin/env bash

#  Create Directories
cd ${location_dir}
mkdir -p ${name}/descriptor
mkdir -p ${name}/lifecycle
mkdir -p ${name}/Meta-Inf

# Create manifest file
echo "name: ${name}
version: ${version}
resource-manager: ansible" > ${name}/Meta-Inf/manifest.MF

# Create miminal descriptor
echo "name: resource::${name}::${version}
description: ${name} vnfc" > ${name}/descriptor/${name}.yml

# Create (empty) lifecycle playbooks
echo "---" > ${name}/lifecycle/Install.yml
echo "---" > ${name}/lifecycle/Unistall.yml
echo "---" > ${name}/lifecycle/Configure.yml
echo "---" > ${name}/lifecycle/Start.yml
echo "---" > ${name}/lifecycle/Stop.yml
echo "---" > ${name}/lifecycle/Integrity.yml

The above steps do not have to be performed for a Network Service package.

Commit the package

Next step is to create a local git project and commit the changes you have made. You can run the following commands on you local machine to do this.

$ cd <<YOUR_VNF>>
$ git init
$ echo "_lmctl"  > .gitignore
$ git add .
$ git commit -m 'initial project'

Create the project on Git Server (Gogs)

To share your project and to attach it to the CI Server, you need to push it to Gogs.

Push project to Gogs, on your local machine:

$ git remote add origin http://<GOGS IP ADDRESS>:8001/cicdhub-admin/<<YOUR_VNF_>>.git
$ git push -u origin master  

Create git develop branch

$ git checkout -b develop

In Gogs, go to the project you have just created and select settings and collaboration. Add New Collaborator for Jenkins and any user you wish to be able the make changes to the new project.

You are now ready to start developing and testing your new project.