Deploy a first service with the stack

When starting the adminembedded processus, it will take or create an apps folder

this folder is structured as followed :

use@alexa:~/$ tree apps
apps
├── admin_running_services
├── bundled_factory_apps
├── contents
├── deployed_applications
└── status

Folders :

Folder

description

admin_running_services

contains the activated and running services configuration

bundled_factory_apps

this folder contains “factory” apps, ready for deployment.

contents

this folder contains, for each application stored files, needed for applications (applications have a read/write access to this folder)

deployed_application

this folder contains deployed and configured applications, ready to start

status

this folder contains for each application, a status file, and some logs stored by the application

Here is below the state diagram of a service / an application :

        stateDiagram
	[*] --> deployed
	deployed --> configured
    configured --> started
    started --> stopped
    stopped --> started
    stopped --> undeployed
	undeployed --> [*]
	
    

Application definition

An application in nodeiot, is a folder, with files in it, with a small json descriptor. In order to be able to easily beeing resetted, redeployed, applications are designed to separate Read and Write. The “Writes” are only available in the status folder as well as the contentfolder.

Every application can ship datafiles, configuration files, during the configuration of the application, some parameters are given so configure or setup the application.

An application may have one or many executable.

Application Descriptor

In the application folder, a manifest.json file is placed for giving informations about the service

{
    "application_id":"",
    "application_name": "test_application",
    "application_version": "1.0",
    "application_description": "test application for the admin",
    "application_commandline": "/bin/python3 t.py", 
    "monitoring_status_file_path": "status.json",
    "running_user": "use",
    "additional_properties": {},
    "content_path": "content_path"
}