This is an old revision of the document!
The Metro Ethernet Forums (MEF) defines an architecture targeted at enabling virtual Ethernet Services. The MEF architecture includes the definition of reference entities, the relationships between the reference entities, and attribute groups.
lsoapi is a software stack that enables the creation of MEF defined services. The structure of the code is heavily influenced by MEF concepts and attribute definitions. The following MEF documents were referenced when designing the lsoapi software
Primary MEF References
Secondary MEF References
The software is partitioned into services layers, each layer is dedicated to creating, persisting, and managing a specific MEF defined entity, along with the associated attributes.
Each service layer presents a Northbound Rest Interface, which in general allows requesters to create, delete, modify, suspend, and resume entities for which it is responsible. Each layer may requests the services the layer directly beneath it via REST calls in order to carry out it’s responsibilities.
The following diagram provides a high level overview of the service layers defined, along with general responsibilities of each service layer, and the REST communications that place among them (the components of this architecture that are implemented in the lsoapi code base are shown in blue)
The lsoapi service code is dependent upon the following technologies
In addition of you need to run the OpenDaylight UNI-Manager emulator, the following dependencies come into play
Finally, if you decide to run the demo-ui, the following dependencies come into play
The lsoapi services code is organized into the following directory structure (directory names enclosed in <>). Each directory identified below contains to a unique maven .pom file.
<lsoapi> ........ project root directory <common> ...... common utilities <cos> <cosbase> ... CoS code unrelated to providing REST services <cosmgr> .... code for providing REST services to CRUD CoS instances <svc> <svcbase> ... MEF Services (EPL) code unrelated to providing REST services <svcmgr> .... code for providing REST services to CRUD MEF Services (EPL) instances <evc> <svcbase> ... EVC code unrelated to providing REST services <svcmgr> .... code for providing REST services to CRUD EVC instances <uni> <unibase> ... UNI code unrelated to providing REST services <unimgr> .... OpenDaylight UNI Manger Emulator
In general, the <xxxbase> and <xxxmgr> directories (where xxx is cos, svc, evc, and uni, are organized in the same manner, as described below.
<xxxbase>
<xxxbase> directories contain code that supports the definition and management of MEF entities, but contain no code specific to providing the REST service layer for that entity. The build result in a xxxbase.jar file for each <xxxbase> directory that can be (and is) used by any of the service layers, which is why they are packaged in a seperate .jar file.
The contents of the <xxxbase> in general is structured as follows: (again, remember that xxx represents a MEF entity, specifically : cos, or evc, or svc, or uni)
<xxxbase>/src/main/java/com/cablelabs/vcpe/xxx/xxxbase/ <client> ...... code supporting the sending of REST messages to the xxx server <model> ....... defines the xxx class with accompanying MEF attributes <repository> .. data store for xxx entities