Welcome to EdgeGallery documentation!¶
The EdgeGallery community focuses on 5G edge computing scenarios. It builds the basic framework of MEC edge resources, applications, security and management and de facto standards for open network services through open source collaboration. Meanwhile, it realizes interconnection within the public cloud. On the basis of being compatible with the heterogeneous and differentiated edge infrastructure, a unified MEC application ecosystem is built.
Getting Started¶
EdgeGallery Overview¶
Developer Platform¶
App Store¶
MEC Management Platform¶
Application Testing and Certification Platform¶
Edge Node Management Platform¶
APP Development Process¶
Demo Introduction¶
The demo provides the steps for Edge Application Development in EdgeGallery Developer Platform, using EdgeGallery’s Positioning Service.
As a consumer service, the Positioning Service Application depends on “Face Recognition Service” of EdgeGallery Platform.
定位服务应用作为服务供应者发布“定位服务”,对外提供生态API,其他服务可以消费“定位服务”
Introduction to Container Deployment Process on Developer Platform¶
Prepare for Development¶
Create a new project
Choose one of the platform capabilities to depend on. Select “service discovery”
Introduction to the deployment process of virtual machine on Developer Platform¶
Resource Allocation¶
Step 1 Basic Information
Step 2 Specification Settings
Step 3 Network Settings
Step 4 Other settings
Deployment Test¶
Step 1 Start to Deploy
After deployment, you can upload the code of the App and use the VNC function we provide for future operation and maintenance.
Step 2 Generate image
After the image is successfully generated, the image file can be downloaded.
Local Development¶
Download plug-in-BashSupport in dependency and import it to local IDE.
Run the plugin, which will automatically generate a sample code.
Code
Build the docker image
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2019-2021 Huawei Technologies Co., Ltd.
Release Notes¶
EdgeGallery Introduction¶
EdgeGallery is a 5G MEC open source edge computing platform. It is an end-to-end solution for application and application developers. For APP applications, in addition to the basic MEP platform that supports application operations, it also provides an APP application management system (MEC Manager). , A minimalist management surface, including some functions of MEPM and MEAO), can perform end-to-end lifecycle management of applications, provide a tool chain for the migration of X86 applications to ARM, and support smooth cross-platform migration and tuning of applications. For application developers, it provides a complete application development IDE environment and integrated verification environment, and provides a one-stop development experience for application developers
Version: v1.5.1¶
Release Date: 2022-01-28
Image Version: v1.5.1
new version update
功能增强
支持ISO镜像实例化
扩展系统镜像类型,支持Ubuntu、Centos、Windows、Debian等不同操作系统镜像的部署调测
修复已知问题,提升界面功能稳定性
界面优化
优化应用孵化主流程界面,增加动态效果
优化虚机应用部署时的参数配置
优化AppStore中的应用同步三方系统功能
Version: v1.5.0¶
Release Date: 2022-01
Image Version: v1.5.0 New Open Source Repository List |Module|Name|Type|URL|Description| |———————– ——-|:————-:|——|——————- ————————–|———————- —————| |Common Service|common-service|Product Warehouse|https://gitee.com/edgegallery/common-service|Provides common services for EdgeGallery components| | 3rd Party System|3rd-party-system|Product warehouse|https://gitee.com/edgegallery/third-party-system|Unified management of external systems connected to EdgeGallery|”
Requirements/Release Planning Details
new version update
System Architecture Enhancements
overall abstractionEdgeGallery Docking relationship between southeast and northwest,Unified planning and management of the tripartite system(IncludeMEAO、mirror repository、Appstore、IaaS、test system)
Profile Management:CompleteDeveloper and MECMexistProfileShow the mapping with the internal model,Provides a unified northboundProfilewith data export
WASMFull runtime support
EdgeGalleryNorthbound interface support:Support northbound authenticationAPI;Support with third partiesIAMSystem Integration Solution,Form a set of standard unified certification system
supportproxyProxy Access DeploymentEdgeGallery
Management plane enhancement
EdgeGalleryVirtual Machine Scenario Enhancement:Support flexible definitionMECnetwork within a node;Supports flexible definition of application-attached networks;Supports configuring the network interface parameters of the application;Support flexible configuration when deploying applicationsflavor;Supports tenant isolation within edge nodes,EGuser withopenstackTenant binding
MECMResource management enhancements:1.Support resource management of edge nodes,Including resource information of edge nodes,Tenant information, etc.;2.supportAPPresource management,includeAPPList of virtual machines used,Corresponding virtual machine status and metrics;3.Application for supporting edge resources,Including virtual machine pull up,flavorset up,mirror(application)choose etc.;4.Supports the maintenance of edge virtual machine resources,including reboot,closure,boot,RemotelyVNCWait
Border autonomy-enterprisePortal
supportOpenstack/FSResource Statistics,Edge node inspection supports scheduled tasks,Enterprise self-service applicationIaaSresources and isolate
APPMonetization and commercialization process optimization
Continue to advance based on current designAPPMonetization process,Get through an end-to-end pricing,order,deploy,maintenance process
Integrated platform
Provide integrated service interface,Greatly optimized user experience
EdgeGalleryApplication Incubation Process Optimization,Front-end interface operation process optimization;Backend interface refactoring,Adaptation process optimization;ATPThe interface needs to adapt to the new process optimization;Container application process optimization
based onRTMPUltra-low latency push-pull streaming service:1. build based onWebRTCThe real-time audio and video platform is integrated intoEdgeGallery,supportVR/ARWaiting for the application to go online;2. provide openSDK,Support application online。
other
Complete the applet interpretation layer andMEPPlatform Architecture Transformation,The relevant deployment script is the same asworkloadMorphological synchronization complete
Secure encryption and decryptionSDK: againstEGSensitive data stored inside the platform,For example:Sandbox environment password,It is necessary to provide a safe and reliable encryption and decryption method for password storage and preservation,Secure encryption and decryption services
Bug Fixes
See EdgeGallery v1.2.0 Test Report
Security Notes
Fixed/Known Security Issues
see EdgeGallery v1.5.0 Security Test Report
Known Vulnerabilities in Used Modules
see EdgeGallery v1.5.0 Security Test Report
EdgeGallery v1.5.0 has the following vulnerabilities in third-party open source components that need to be fixed by users:
3rd party components |
Version |
CVE number |
Involving modules |
---|---|---|---|
log4j |
1.2.17 |
CVE-2019-17571 |
Appstore,MECM |
netty-transport |
4.1.36 |
CVE-2019-20444,CVE-2019-20445 |
Appstore |
vertx-core |
3.9.4 |
CVE-2019-17640 |
UserMgmt,Appstore,Developer,ATP |
docker-java-core |
3.2.10 |
CVE-2019-13139,CVE-2019-13509,CVE-2019-16884,CVE-2019-5736 |
Appstore,Developer,MECM |
foundation-ssl |
1.3.2 |
CVE-2004-0009 |
UserMgmt,Appstore,Developer,ATP |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
UserMgmt,Appstore,Developer,ATP |
mybatis-spring-boot-starter |
2.2.0 |
CVE-2020-26945 |
UserMgmt,Appstore,ATP,3rd-System |
spring-security-core |
5.3.10.RELEASE |
CVE-2018-1258 |
UserMgmt,Developer,MECM |
spring-security-web |
5.3.8.RELEASE |
CVE-2018-1258 |
UserMgmt,Developer,MECM |
golang.org/x/net |
v0.0.0-20200301022130 |
CVE-2021-33194 |
MEP |
Version: v1.3.0¶
Release Date: 2021-10-12
Image Version: v1.3.0
List of new open source repositories
None
Requirements/Release Plan Detailed Description
Open Ability
Improved profile management of southbound IoT devices
Stream analyzers such as Kuiper and Flink are integrated on the edge to clean the data: such as shaping and formatting and reporting to the big data system. It can also be uploaded to the public cloud through the cloud edge interface for further data calculations, such as machine learning.. etc.
Integrate industry IoT protocol stacks such as Fledge, EdgeX, KubeEdge and other open source components to achieve typical protocol support such as MQTT and OPCUA
Support big data platform access, support standardized industrial platform configuration.. etc.
Large application transmission experience optimization
Increased efficiency of large package production: support for secondary large package production, virtual machine mirroring is reduced by 60% and application package production time is reduced by 3-4 hours.
Appstore supports fragmented download. MEAO can transfer application packages through fragmented download and upload mechanisms to improve the stability of application transmission
Community Lab Enhancement
ATP ability to automate testing capabilities enhanced
Enhanced security testing, including virus, port and vulnerability scanning, as well as performance testing such as delay
Add application enablement test, including service registration, update, offline and other indicator tests
Support test case flexible and definable use case parameter configuration
The interface is fully optimized and upgraded to enhance the user experience
The interfaces of Developer, AppStore, MECM and Edge Autonomous Platform are fully optimized and the interface style is unified, which comprehensively enhances the user experience
Edge autonomous interface adds user management functions
Developer platform adds” “unified interface components” “to help developers quickly participate in EdgeGallery community development
MECM platform increases the display of node resources and application resources
developer background
Add application package signature function
Add container image management function
Increase the virtual machine mirroring slimming function, automatically slimming for uploading mirroring and generated mirroring, and reducing the size of the mirroring by 60%
appstore background
Add APPD conversion function
MEP fully implements the ETSI interface specification
Edge AI capabilities are fully optimized
Integrate Tensorflow Lite, MindSpore Lite, enhance EdgeGallery AI related framework capabilities
Security enhancement
The access frequency limit is added to all traffic. Access will be prohibited if the access frequency reaches the limit for a short time, which greatly reduces the risk of DOS attacks and brute force cracking.
other
Application Innovation: Complete 130+ application integration and land 25+ innovation bases
Experience optimization: AppStore, Developer, [MECM](https://47.243. 125.138:30093/) All platform interfaces are fully upgraded and optimized
1.4 feature preview
Use wasmEdge for AI capabilities to significantly slim down and customize optimization
E2E edge application self-service ordering and development integration optimization
Self-service enhancement of edge autonomous system
Support enterprise users to view resource usage, application operation and UPF network connection status
Bug Fixes
See EdgeGallery v1.2.0 Test Report
Security Notes
Fixed/Known Security Issues
See [EdgeGallery v1.3.0 Security Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.3/EG%20v1 .3%20Security%20 Test%20Report.md)
Known Vulnerabilities in Used Modules
See [EdgeGallery v1.3.0 Security Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.3/EG%20v1 .3%20Security%20 Test%20Report.md)
The following vulnerabilities in the third-party open source components of EdgeGallery v1.2.0 have to be fixed by users:
User-mgmt
Component |
Version |
CVE |
---|---|---|
vertx-core |
3.9.4 |
CVE-2019-17640 |
foundation-ssl |
1.3.2 |
CVE-2004-0009 CVE-2021-21501 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.2.0 |
CVE-2020-26945 |
spring-core |
5.2.8.RELEASE |
CVE-2021-22118 |
spring-security-core |
5.3.10.RELEASE |
CVE-2018-1258 |
spring-security-core |
5.3.8.RELEASE |
CVE-2018-1258 |
tomcat-embed-core |
9.0.44 |
CVE-2021-30639 |
Appstore
Component |
Version |
CVE |
---|---|---|
log4j |
1.2.17 |
CVE-2019-17571 |
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
docker-java-core |
3.2.10 |
CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736 |
foundation-ssl |
1.3.2 |
CVE-2004-0009 CVE-2021-21501 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.2.0 |
CVE-2020-26945 |
spring-jdbc |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-core |
5.1.5.RELEASE |
CVE-2018-1258 |
Developer
Component |
Version |
CVE |
---|---|---|
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
swagger-codegen-cli |
3.0.21 |
CVE-2018-8088 CVE-2016-6199 CVE-2019-15052 CVE-2020-25649 CVE-2019-10086 CVE-2017-1000207 CVE-2017-1000208 CVE-2017-18640 CVE-2020-11979 CVE-2021-29428 |
commons-compress |
1.19 |
CVE-2021-35515 CVE-2021-35516 CVE-2021-35517 CVE-2021-36090 |
docker-java-core |
3.2.10 |
CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736 |
foundation-ssl |
1.3.2 |
CVE-2004-0009 CVE-2021-21501 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.2.0 |
CVE-2020-26945 |
sprint-jdbc |
5.2.8.RELEASE |
CVE-2021-22118 |
spring-security-core |
5.3.10.RELEASE |
CVE-2018-1258 |
tomcat-embed-core |
9.0.44 |
CVE-2021-30639 |
MECM
Component |
Version |
CVE |
---|---|---|
bcprov-jdk15on-1.56.jar |
1.56 |
CVE-2018-1000613 CVE-2018-1000180 |
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
log4j |
1.2.17 |
CVE-2019-17571 |
vertx-core |
3.6.3 |
CVE-2019-17640 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
hibernate-core |
5.3.10.Final |
CVE-2020-25638 |
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
spring-security-core |
5.3.8.RELEASE |
CVE-2018-1258 |
spring-tx |
5.1.8.RELEASE |
CVE-2020-5398 |
tomcat-embed-core |
9.0.21 |
CVE-2020-1938 CVE-2019-12418 CVE-2019-17563 CVE-2020-11996 CVE-2020-13934 CVE-2020-13935 CVE-2020-17527 CVE-2020-8022 CVE-2020-9484 CVE-2021-25122 CVE-2021-25329 |
jackson-databind |
2.9.9 |
CVE-2019-14379 CVE-2019-14540 CVE-2019-14892 CVE-2019-14893 CVE-2019-16335 CVE-2019-16942 CVE-2019-16943 CVE-2019-17267 CVE-2019-17531 CVE-2019-20330 CVE-2020-8840 CVE-2020-9546 CVE-2020-9547 CVE-2020-9548 CVE-2019-14439 CVE-2020-10672 CVE-2020-10673 CVE-2020-10968 CVE-2020-10969 CVE-2020-11111 CVE-2020-11112 CVE-2020-11113 CVE-2020-11619 CVE-2020-11620 CVE-2020-14060 CVE-2020-14061 CVE-2020-14062 CVE-2020-14195 CVE-2020-24616 CVE-2020-24750 CVE-2020-25649 CVE-2020-35490 CVE-2020-35491 CVE-2020-35728 CVE-2020-36179 CVE-2020-36180 CVE-2020-36181 CVE-2020-36182 CVE-2020-36183 CVE-2020-36184 CVE-2020-36185 CVE-2020-36186 CVE-2020-36187 CVE-2020-36188 CVE-2020-36189 CVE-2020-36190 |
mybatis |
3.4.4 |
CVE-2020-26945 |
ATP
Component |
Version |
CVE |
---|---|---|
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
commons-compress |
1.19 |
CVE-2021-35515 CVE-2021-35516 CVE-2021-35517 CVE-2021-36090 |
foundation-ssl |
1.3.2 |
CVE-2004-0009 CVE-2021-21501 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.2.0 |
CVE-2020-26945 |
spring-core |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-core |
5.1.5.RELEASE |
CVE-2018-1258 CVE-2021-22112 CVE-2018-1258 CVE-2021-22112 |
tomcat-embed-core |
9.0.44 |
CVE-2021-30639 |
MEP
Component |
Version |
CVE |
---|---|---|
golang.org/x/net |
v0.0.0-20200301022130 |
CVE-2021-33194 |
Version: v1.2.0¶
Release Date: 2021-07-07
Image Version: v1.2.0
List of new open source repositories
Module |
name |
type |
URL |
illustrate |
---|---|---|---|---|
Installer |
installer |
Configuration Warehouse |
https://gitee.com/edgegallery/installer |
EdgeGallery offline package production and offline installation, online installation, docker compose installation script |
filesystem |
filesystem |
Product warehouse |
https://gitee.com/edgegallery/file-system |
Application image management service in EdgeGallery platform |
New Features
Requirements/Release Plan Detailed Description
Open Ability
AI software and hardware capabilities
Supports Ascend/Atlas hardware and open API: Supports Ascend 20+ open capabilities, including image restoration, target positioning, super-resolution image algorithms, etc.
AI face change, OCR, smart shelf, gesture recognition, etc.
Industry Suite Support industry combination capabilities
PCB quality inspection: provide sample applications for openness and PCB board quality inspection
Industrial site southbound equipment management communication: provide Fledge-based industrial southbound equipment management solutions and deployment scripts
Video conference, online classroom: provide video open source sample applications
-
User management module adds dynamic verification code verification function to solve security vulnerabilities such as malicious registration and email bombing
During application commissioning, VNC remotely logs in to the sandbox environment to set up non-root user operations and restrict access rights
-
Developer, AppStore and MECM platform add administrator operation interface
AppStore platform provides application online experience function
The whole process supports the rapid integration, testing and release of virtual machine applications, and the MECM platform supports the distribution and deployment of virtual machine applications
Enhanced virtual machine application integration capabilities, supporting virtual machine specification configuration, network configuration and environment variable configuration
Add image file management service to solve the problem of image file sharing between EdgeGallery central node modules
Provide edge autonomous management interface and edge node health check function
Full module supports data persistence capability
-
Provide offline deployment scripts and offline installation packages based on Ansible, support users to customize on-demand deployment
The IaaS layer provides two deployment methods, k8s and k3s
Each sub-module of EdgeGallery supports separate deployment and uninstallation
Support data persistence function based on k8s NFS
Support the deployment of EdgeGallery sub-modules in docker-compose mode (not dependent on k8s/k3s)
[PoC] Support Raspberry Pi deployment
other
Application Innovation: Complete 130+ application integration and land 25+ innovation bases
Experience optimization: AppStore, Developer, [MECM](https://47.243. 125.138:30093/) All platform interfaces are fully upgraded and optimized
Bug Fixes
See EdgeGallery v1.2.0 Test Report
Total number of defects: 267 (including 34 security defects), number of resolved: 265; 16 unresolved bugs (including 16 known issues, left to be resolved in the next version)
Analysis by defect type: 35 security bugs; 246 other bugs.
Analyzed by defect severity level: 31 serious bugs; 70 major bugs; 129 minor bugs; 9 unimportant bugs; 42 are not specified.
Analysis by demand point
Defect convergence analysis: a total of 281 bugs (including 14 invalid bugs; including safety bug 34); iteration 1 39 bugs (including 3 invalid bugs); iteration 2 65 bugs (including 5 invalid bugs); iteration Three 143 bugs (including 4 invalid bugs); 34 bugs (including 2 n
Security Notes
See [EdgeGallery v1.2.0 Security Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.2/EG%20v1 .2%20Security%20Test%20Report.md)
Fixed/Known Security Issues
other |
Issue Title |
other |
other |
---|---|---|---|
1 |
It has been fixed |
main |
|
2 |
[User-mgmt][Security] There are no log files in the usr/app/log directory in the user-mgmt pod |
other |
main |
3 |
[Developer][Security] There is no log file in the usr/app/log directory in developer-be |
It has been fixed |
main |
4 |
[User-mgmt][Security] Logging sensitive information (ssoSessionId) |
It has been fixed |
main |
5 |
It has been fixed |
main |
|
6 |
[Atp][Security] User contribution test case function has replay attack vulnerability |
It has been fixed |
main |
7 |
It has been fixed |
main |
|
8 |
[Atp][Security] atp test in appstore->community scenario->security test case execution failed |
It has been fixed |
main |
9 |
It has been fixed |
main |
Known Vulnerabilities in Used Modules
The following vulnerabilities in the third-party open source components of EdgeGallery v1.2.0 have to be fixed by users:
User-mgmt
Component |
Version |
CVE |
---|---|---|
vertx-core |
3.9.4 |
CVE-2019-17640 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.4 |
CVE-2020-26945 |
spring-security-core |
5.3.8.RELEASE |
CVE-2018-1258 |
Appstore
Component |
Version |
CVE |
---|---|---|
log4j |
1.2.17 |
CVE-2019-17571 |
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
docker-java-core |
3.2.7 |
CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.4 |
CVE-2020-26945 |
spring-jdbc |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-core |
5.1.5.RELEASE |
CVE-2018-1258 |
Developer
Component |
Version |
CVE |
---|---|---|
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
swagger-codegen-cli |
3.0.21 |
CVE-2018-8088 CVE-2016-6199 CVE-2019-15052 CVE-2020-25649 CVE-2019-10086 CVE-2017-1000207 CVE-2017-1000208 CVE-2017-18640 CVE-2020-11979 CVE-2021-29428 |
docker-java-core |
3.2.7 |
CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.4 |
CVE-2020-26945 |
spring-security-core |
5.3.8.RELEASE |
CVE-2018-1258 |
sprint-jdbc |
5.2.8.RELEASE |
CVE-2021-22118 |
MECM
Component |
Version |
CVE |
---|---|---|
bcprov-jdk15on-1.56.jar |
1.56 |
CVE-2018-1000613 CVE-2018-1000180 |
log4j |
1.2.17 |
CVE-2019-17571 |
vertx-core |
3.6.3 |
CVE-2019-17640 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
hibernate-core |
5.3.10.Final |
CVE-2020-25638 |
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
spring-security-core |
5.3.8.RELEASE |
CVE-2018-1258 |
spring-tx |
5.1.8.RELEASE |
CVE-2020-5398 |
tomcat-embed-core |
9.0.21 |
CVE-2020-1938 CVE-2019-12418 CVE-2019-17563 CVE-2020-11996 CVE-2020-13934 CVE-2020-13935 CVE-2020-17527 CVE-2020-8022 CVE-2020-9484 CVE-2021-25122 CVE-2021-25329 |
jackson-databind |
2.9.9 |
CVE-2019-14379 CVE-2019-14540 CVE-2019-14892 CVE-2019-14893 CVE-2019-16335 CVE-2019-16942 CVE-2019-16943 CVE-2019-17267 CVE-2019-17531 CVE-2019-20330 CVE-2020-8840 CVE-2020-9546 CVE-2020-9547 CVE-2020-9548 CVE-2019-14439 CVE-2020-10672 CVE-2020-10673 CVE-2020-10968 CVE-2020-10969 CVE-2020-11111 CVE-2020-11112 CVE-2020-11113 CVE-2020-11619 CVE-2020-11620 CVE-2020-14060 CVE-2020-14061 CVE-2020-14062 CVE-2020-14195 CVE-2020-24616 CVE-2020-24750 CVE-2020-25649 CVE-2020-35490 CVE-2020-35491 CVE-2020-35728 CVE-2020-36179 CVE-2020-36180 CVE-2020-36181 CVE-2020-36182 CVE-2020-36183 CVE-2020-36184 CVE-2020-36185 CVE-2020-36186 CVE-2020-36187 CVE-2020-36188 CVE-2020-36189 CVE-2020-36190 |
mybatis |
3.4.4 |
CVE-2020-26945 |
ATP
Component |
Version |
CVE |
---|---|---|
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.4 |
CVE-2020-26945 |
spring-security-core |
5.1.5.RELEASE |
CVE-2018-1258 |
spring-core |
5.1.8.RELEASE |
CVE-2020-5398 |
MEP
Component |
Version |
CVE |
---|---|---|
golang.org/x/net |
v0.0.0-20200301022130 |
CVE-2021-33194 |
Version: v1.1.0¶
Release Date: 2020-04-09
Image Version: v1.1.0
List of new open source repositories
Module |
name |
type |
URL |
illustrate |
---|---|---|---|---|
Example Applications |
example-apps |
PoC warehouse |
https://gitee.com/edgegallery/example-apps |
Provide a sample app based on EdgeGallery |
EdgeGallery Frontend Component |
eg-view |
Product warehouse |
https://gitee.com/edgegallery/eg-view |
Provide normalized EdgeGallery front-end components |
EdgeGallery Testing Platform |
edgeT |
PoC warehouse |
https://gitee.com/edgegallery/edgeT |
Provide users with a tool chain for local testing |
New Features
Requirements/Release Plan Detailed Description
AI software and hardware capabilities Support Ascend/Atlas hardware and open API
AI image repair, edge detection, cartoon image generation, image coloring, object classification, target detection, etc.;
Cross-platform support Supports the incubation integration of Openstack-based virtual machine applications and K8S container applications
Experience optimization
APP classification, APP recommendation, dynamic refresh of hot models
EdgeNative support
IaaS/PaaS/applications all support on-demand deployment and automatic application framework generation
Visualization of MEP microservice management architecture
Provide EdgeGallery applet, design state, etc.
API management ETSI MEC API, 3GPP CAPIF, and Shengteng capability support situation match
Security, user management
Decentralization of authority and domain, authority control of key operations and data
Application remote login (such as VNC) supports secure protocol login
Community Lab Enhancement
Provide a real E2E 5G verification environment
One-click resource application, one-click release, visual management
Application Innovation
AppStore Federation, can register external AppStore, applications can be pushed and pulled from each other between different AppStores
Complete 80+ application integration, land 17+ innovation bases, and postgraduate courses of Xidian University
Bug Fixes
See EdgeGallery v1.1.0 Test Report
Known Issues
See EdgeGallery v1.1.0 Test Report
Security Notes
Fixed Security Issues
See [EdgeGallery v1.1.0 Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Plan/Release-R1.1/EG%20R1.1%20Security% 20Test%20Plan%20%2Emd)
Known Security Issues
See [EdgeGallery v1.1.0 Security Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.1/EG%20v1 .1%20Security%20Test%20Report%2Emd)
Known Vulnerabilities in Used Modules
EdgeGallery v1.1.0 version of the third-party open source components has the following vulnerabilities that need to be repaired by users:
Appstore
Component |
Version |
CVE |
---|---|---|
log4j |
1.2.17 |
CVE-2019-17571 |
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
docker-java-core |
3.2.7 |
CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.4 |
CVE-2020-26945 |
spring-jdbc |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-core |
5.1.5.RELEASE |
CVE-2018-1258 |
Developer
Component |
Version |
CVE |
---|---|---|
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
swagger-codegen-cli |
3.0.21 |
CVE-2018-8088 CVE-2016-6199 CVE-2019-15052 CVE-2020-25649 CVE-2019-10086 CVE-2017-1000207 CVE-2017-1000208 CVE-2017-18640 CVE-2020-11979 |
docker-java-core |
3.2.7 |
CVE-2019-13139 CVE-2019-13509 CVE-2019-16884 CVE-2019-5736 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.4 |
CVE-2020-26945 |
spring-security-core |
5.1.5.RELEASE |
CVE-2018-1258 |
ATP
Component |
Version |
CVE |
---|---|---|
netty-transport |
4.1.36.Final |
CVE-2019-20444 CVE-2019-20445 CVE-2019-16869 CVE-2020-11612 |
vertx-core |
3.9.4 |
CVE-2019-17640 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.4 |
CVE-2020-26945 |
spring-security-core |
5.1.5.RELEASE |
CVE-2018-1258 |
spring-core |
5.1.8.RELEASE |
CVE-2020-5398 |
User-mgmt
Component |
Version |
CVE |
---|---|---|
vertx-core |
3.9.4 |
CVE-2019-17640 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
mybatis-spring |
2.0.6 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.4 |
CVE-2020-26945 |
spring-security-core |
5.3.8.RELEASE |
CVE-2018-1258 |
Upgrade Notes
N/A
Deprecation Notes
N/A
Other
N/A
Version: v1.0.0¶
Release Date: 2020-12-31
Image Version: v1.0.0
List of new open source repositories
Module |
name |
type |
URL |
illustrate |
---|---|---|---|---|
ATP(Application Test Platform) |
atp |
Product warehouse |
https://gitee.com/edgegallery/atp |
Application test platform, providing test support for application certification |
ATP(Application Test Platform) |
atp-fe |
Product warehouse |
https://gitee.com/edgegallery/atp-fe |
Provide front-end support for application testing and certification platform |
Developer |
crane-framework |
Product warehouse |
https://gitee.com/edgegallery/crane-framework |
Provide lightweight for application development, plug-in is the development framework |
MECM |
mecm-apprulemgr |
Product warehouse |
https://gitee.com/edgegallery/mecm-apprulemgr |
The management plane provides the ability to issue and manage application rule configuration |
New Features
Demand/Release Plan Detailed Description
Version Planning Features
Developer Optimize the APP development and test release process, optimize the API interface, and integrate multi-language SDK
Optimize the homepage design and increase the application development life cycle flow chart;
Optimize the project development process, brand new interface design;
Optimize the deployment and commissioning link, increase the visual display of the deployment process, and increase the POD display of the deployment results;
Optimize the ability center interface, increase the ability classification selection;
Application release link docking certification test platform;
AppStore Interface ease of use optimized, EdgeGallery ecological capabilities optimized
MECM Optimize topology, application management and edge node management, add the function of acquiring MEP capability, AK/SK configuration interface
MEP supports APP heartbeat detection, a new interface for acquiring MEP capability, an interface for AK/SK configuration, and a new interface for acquiring token for MEP-agent
ATP APP application testing ability enhancement
Test Provide health check function, optimize installation package, develop test platform to support test case management
PoC Features
MEP service governance page display
Introduce a plug-in application framework Crane-framework
AppStore Federation, can register external AppStore, applications can be pushed and pulled from each other between different AppStores
PoC Test Report
See EdgeGallery v1.0.0 PoC Test Report
Bug Fixes
See EdgeGallery v1.0.0 Test Report
Known Issues
See EdgeGallery v1.0.0 Test Report
Security Notes
Fixed Security Issues
See [EdgeGallery v1.0.0 Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.0/EG%20v1. 0.0%20Security%20Test%20Report%2Emd)
Known Security Issues
See [EdgeGallery v1.0.0 Test Report](https://gitee.com/edgegallery/community/blob/master/Security%20WG/Security%20Test%20Result/Test%20result%20Release%20V1.0/EG%20v1. 0.0%20Security%20Test%20Report%2Emd)
Known Vulnerabilities in Used Modules
EdgeGalelry v1.0.0 version of the third-party open source components has the following vulnerabilities that need to be repaired by users:
Appstore
Component |
Version |
CVE |
---|---|---|
log4j (indirect dependency) |
1.2.17 |
CVE-2019-17571 |
bcprov-jdk15on-1.66.jar |
1.66 |
CVE-2020-28052 |
jackson-databind |
2.10.5 |
CVE-2020-25649 |
spring-security-oauth2 |
2.3.3.RELEASE |
CVE-2018-15758 |
tomcat-embed-core |
9.0.37 |
CVE-2020-17525 |
Developer
Component |
Version |
CVE |
---|---|---|
spring-beans (indirect dependency) |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-core |
5.3.4.RELEASE |
CVE-2018-1258 |
jackson-databind |
2.10.5 |
CVE-2020-25649 |
mybatis-spring-boot-starter |
2.1.1 |
CVE-2020-26945 |
tomcat-embed-core |
9.0.37 |
CVE-2020-17527 |
ATP
Component |
Version |
CVE |
---|---|---|
mybatis-spring-boot-starter |
2.1.1 |
CVE-2020-26945 |
User-mgmt
Component |
Version |
CVE |
---|---|---|
spring-security-core |
5.3.4.RELEASE |
CVE-2018-1258 |
bcprov-jdk15on |
1.66 |
CVE-2020-28052 |
jackson-databind |
2.10.5 |
CVE-2020-25649 |
mybatis-spring-boot-starter |
2.1.1 |
CVE-2020-26945 |
spring-security-oauth2 |
2.3.3.RELEAS |
CVE-2018-15758 |
Website-gateway
Component |
Version |
CVE |
---|---|---|
spring-security-core |
5.2.6.RELEASE |
CVE-2018-1258 |
jackson-databind |
2.10.5 |
CVE-2020-26945 |
spring-security-oauth2 |
2.3.3 |
CVE-2018-15758 |
tomcat-embed-core |
9.0.37 |
CVE-2020-17527 |
MECM
Component |
Version |
CVE |
---|---|---|
lodash |
4.17.13 |
CVE-2020-8203 |
minimatch |
3.0.4 |
NPM-118 |
Upgrade Notes
N/A
Deprecation Notes
N/A
Other
N/A
Version: v0.9.1¶
Release Date: 2020-11-11
Image Version: v0.9.1
List of new open source repositories
Module |
name |
type |
URL |
illustrate |
---|---|---|---|---|
Developer |
api-emulator |
Product warehouse |
https://gitee.com/edgegallery/api-emulator |
Simulate api that provides basic capabilities |
Mep |
Plugins |
Product warehouse |
https://gitee.com/edgegallery/plugins |
plugins warehouse |
Developer |
toolchain |
Product warehouse |
https://gitee.com/edgegallery/toolchain |
Provide the source code analysis function when the x86 platform application gets on the ARM |
New Features
Demand/Release Plan Detailed Description
Summary of security design troubleshooting issues
api simulator and tool chain, plugin warehouse open source
MEP/MEP Agentak/sk configuration interface
Bug Fixes
See EdgeGallery v0.9.1 Test Report
Known Issues
See EdgeGallery v0.9.1 Test Report
Security Notes
Fixed Security Issues
See EdgeGallery v0.9.1 Test Report
Known Security Issues
See EdgeGallery v0.9.1 Test Report
Known Vulnerabilities in Used Modules
EdgeGallery v0.9.1 version of the third-party open source components has the following vulnerabilities that need to be repaired by users:
Appstore
Component |
Version |
CVE |
---|---|---|
netty-transport (indirect dependency) |
4.1.36.Final |
CVE-2019-20444, CVE-2019-20445, CVE-2020-11612, CVE-2019-16869 |
log4j (indirect dependency) |
1.2.17 |
CVE-2019-17571 |
spring-jdbc (indirect dependency) |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-core (indirect dependency) |
5.1.5.RELEASE |
CVE-2018-1258 |
bcprov-jdk15on-1.66.jar |
1.66 |
CVE-2020-28052 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
jackson-databind |
2.10.5 |
CVE-2020-25649 |
mybatis |
3.5.3 |
CVE-2020-25645 |
spring-security-oauth2 |
2.3.3.RELEASE |
CVE-2018-15758 |
tomcat-embed-core |
9.0.37 |
CVE-2020-17525 |
vertx-core |
3.6.3 |
CVE-2019-17640 |
Developer
Component |
Version |
CVE |
---|---|---|
netty-transport (indirect dependency) |
4.1.36.Final |
CVE-2019-20444, CVE-2019-20445, CVE-2020-11612, CVE-2019-16869 |
spring-beans (indirect dependency) |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-config (indirect dependency) |
5.1.5.RELEASE |
CVE-2018-1258, CVE-2020-5398 |
spring-security-core |
5.3.4.RELEASE |
CVE-2018-1258 |
lodash |
4.17.13 |
CVE-2020-8203 |
minimatch |
3.0.4 |
NPM-118 |
spring-security-oauth2 |
2.3.3 |
CVE-2018-15758,CVE-2019-11269,CVE-2018-3778 |
swagger-codegen-cli (shaded: com.fasterxml.jackson.core.jackson-databind:2.10.3) |
3.0.21 |
CVE-2020-25649 |
foundation-ssl |
1.3.0 |
CVE-2004-0009 |
jackson-databind |
2.10.5 |
CVE-2020-25649 |
mybatis-spring |
2.0.3 |
CVE-2020-26945 |
mybatis-spring-boot-starter |
2.1.1 |
CVE-2020-26945 |
swagger-codegen-cli |
3.0.21 |
CVE-2017-1000207,CVE-2017-1000208,CVE-2019-10086,CVE-2018-8088,CVE-2017-18640,CVE-2016-6199,CVE-2019-11065,CVE-2019-15052, |
tomcat-embed-core |
9.0.37 |
CVE-2020-17527 |
vertx-core |
3.6.3 |
CVE-2019-17640 |
User-mgmt
Component |
Version |
CVE |
---|---|---|
rxnetty (indirect dependency) |
0.4.9 |
CVE-2015-2156 |
netty-tcnative-boringssl-static (indirect dependency) |
2.0.31.Final |
CVE-2015-2156 |
spring-security-core |
5.2.6.RELEASE |
CVE-2018-1258 |
lodash |
4.17.20 |
NPM-1065, NPM-557, NPM-7823 |
minimatch |
3.0.4 |
NPM-118 |
Website-gateway
Component |
Version |
CVE |
---|---|---|
log4j |
1.2.17 |
CVE-2019-17571 |
spring-security-core |
5.2.6.RELEASE |
CVE-2018-1258 |
MECM
Component |
Version |
CVE |
---|---|---|
lodash |
4.17.13 |
CVE-2020-8203 |
minimatch |
3.0.4 |
NPM-118 |
Upgrade Notes
N/A
Deprecation Notes
N/A
Other
After review by the Security Working Group, the remaining issue list I1XA0N in the Plugins warehouse will be fixed in the form of patches after the v0.9 version is released. For details, please refer to the Security Working Group Meeting Minutes
Version: v0.9¶
Release Date: 2020-09-30
Image Version: v0.9
List of new open source repositories
Module |
name |
type |
URL |
illustrate |
---|---|---|---|---|
helm-charts |
helm-charts |
deploy |
https://gitee.com/edgegallery/helm-charts |
EdgeGallery deployment script |
website-gateway |
website-gateway |
Product warehouse |
https://gitee.com/edgegallery/website-gateway |
Front-end package |
user-mgmt |
user-mgmt |
Product warehouse |
https://gitee.com/edgegallery/user-mgmt |
usermgmt background |
user-mgmt |
user-mgmt-fe |
Product warehouse |
https://gitee.com/edgegallery/user-mgmt-fe |
usermgmt front desk |
mecm |
mecm-fe |
Product warehouse |
https://gitee.com/edgegallery/mecm-fe |
MECM front desk |
mecm |
mecm-applcm |
Product warehouse |
https://gitee.com/edgegallery/mecm-applcm |
MECM application lifecycle management |
mecm |
mecm-apm |
Product warehouse |
https://gitee.com/edgegallery/mecm-apm |
MECM application package management |
mecm |
mecm-inventory |
Product warehouse |
https://gitee.com/edgegallery/mecm-inventory |
MECM inventory management |
mecm |
mecm-appo |
Product warehouse |
https://gitee.com/edgegallery/mecm-appo |
MECM application orchestration |
developer |
developer-be |
Product warehouse |
https://gitee.com/edgegallery/developer-be |
developer background |
developer |
developer-fe |
Product warehouse |
https://gitee.com/edgegallery/developer-fe |
developer front desk |
appstore |
appstore-fe |
Product warehouse |
https://gitee.com/edgegallery/appstore-fe |
appstore front desk |
appstore |
appstore-be |
Product warehouse |
https://gitee.com/edgegallery/appstore-be |
appstore background |
platform-mgmt |
platform-mgmt |
Product warehouse |
https://gitee.com/edgegallery/platform-mgmt |
Install k8/docker |
docs |
docs |
Product warehouse |
https://gitee.com/edgegallery/docs |
Documentation |
New Features
Demand/Release Plan Detailed Description
All-in-One MEP/MECM network isolation
MEP supports DNS configuration
Support All-in-One deployment
Multi-node offline deployment
Nine dimensions of security optimization
MECM interface/topology management/resource management optimization
(PoC) kubeedge integration verification
Bug Fixes
See EdgeGallery v0.9 Test Report
Known Issues
See EdgeGallery v0.9 Test Report
Security Notes
Fixed Security Issues
See EdgeGallery v0.9 Test Report
Known Security Issues
See EdgeGallery v0.9 Test Report
Known Vulnerabilities in Used Modules
The following vulnerabilities in the third-party open source components of EdgeGallery v0.9 have to be fixed by users:
Appstore
Component |
Version |
CVE |
---|---|---|
netty-transport (indirect dependency) |
4.1.36.Final |
CVE-2019-20444, CVE-2019-20445, CVE-2020-11612, CVE-2019-16869 |
log4j (indirect dependency) |
1.2.17 |
CVE-2019-17571 |
spring-jdbc (indirect dependency) |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-core (indirect dependency) |
5.1.5.RELEASE |
CVE-2018-1258 |
Developer
Component |
Version |
CVE |
---|---|---|
netty-transport (indirect dependency) |
4.1.36.Final |
CVE-2019-20444, CVE-2019-20445, CVE-2020-11612, CVE-2019-16869 |
spring-beans (indirect dependency) |
5.1.8.RELEASE |
CVE-2020-5398 |
spring-security-config (indirect dependency) |
5.1.5.RELEASE |
CVE-2018-1258, CVE-2020-5398 |
spring-security-core |
5.3.4.RELEASE |
CVE-2018-1258 |
lodash |
4.17.13 |
CVE-2020-8203 |
minimatch |
3.0.4 |
NPM-118 |
User-mgmt
Component |
Version |
CVE |
---|---|---|
rxnetty (indirect dependency) |
0.4.9 |
CVE-2015-2156 |
netty-tcnative-boringssl-static (indirect dependency) |
2.0.31.Final |
CVE-2015-2156 |
spring-security-core |
5.2.6.RELEASE |
CVE-2018-1258 |
lodash |
4.17.20 |
NPM-1065, NPM-557, NPM-7823 |
minimatch |
3.0.4 |
NPM-118 |
Website-gateway
Component |
Version |
CVE |
---|---|---|
log4j |
1.2.17 |
CVE-2019-17571 |
spring-security-core |
5.2.6.RELEASE |
CVE-2018-1258 |
MECM
Component |
Version |
CVE |
---|---|---|
lodash |
4.17.13 |
CVE-2020-8203 |
minimatch |
3.0.4 |
NPM-118 |
Upgrade Notes
N/A
Deprecation Notes
N/A
Other
After review by the Security Working Group, the remaining issue list I1XA0N in the Plugins warehouse will be fixed in the form of patches after the v0.9 version is released. For details, please refer to the Security Working Group Meeting Minutes
EdgeGallery Architecture¶
参与EdgeGallery 架构讨论¶
Architecture Working Group minutes
Architecture Working Group Requirements Discussion
Project Architecture Review
Developer Guide¶
EdgeGallery业务开发指导¶
Northbound Interface¶
EdgeGallery allows third-party business systems to utilize the inner apis by calling the external apis (Northbound Interface Gateway). The calling process is explained in the following figure:
Use Northbound Interface to Call Endpoints¶
Recently, project WebsiteGateway is responsible for the external api gateway. Specifically, this job is done by the front-end of each business platform running through WebsiteGateway. Therefore, the endpoint called by the external api can utilize business platform front-end endpoints. As follows:
Platform |
endpoint |
instruction |
---|---|---|
EdgeGallery Fusion Frontend |
https://{PORTAL_IP}:30095 |
It is recommended to use this endpoint |
AppStore Front End |
https://{PORTAL_IP}:30091 |
– |
Developer Front End |
https://{PORTAL_IP}:30092 |
– |
Mecm Front End |
https://{PORTAL_IP}:30093 |
– |
Atp Front End |
https://{PORTAL_IP}:30094 |
– |
Get XSRF-TOKEN¶
You need to obtain the XSRF-TOKEN before you call Get-Access-Token Api or partner API of MECM, AppStore, Developer…
Resource URI: /
Method: GET
Example request:
GET https://x.x.x.x:30095/
Example response:
response 200 OK
响应的Cookie中即包含XSRF-TOKEN,请获取它。
后续所有的接口调用中都需要通过请求头X-XSRF-TOKEN传递。
Get AccessToken¶
Resource URI: /mec-usermgmt/v1/accesstoken
Method: POST
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
X-XSRF-TOKEN |
XSRF-TOKEN |
header |
Yes |
|
userFlag |
Login credentials (username/email/phone number) |
body |
Yes |
|
password |
password |
body |
Yes |
Example request:
https://x.x.x.x:30095/mec-usermgmt/v1/accesstoken -H "X-XSRF-TOKEN: xxxx"
{
"userFlag": "",
"password": ""
}
Example response:
response 200 OK
{
"userId": "xxxxx",
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
后续所有的业务接口调用都需要通过请求头X-ACCESS-TOKEN传递这里的accessToken值。
response 400 Bad Request
{
"code": 70xxx,
"message": ""
}
response 401 Unauthorized
{
"code": 70xxx,
"message": ""
}
Call API¶
For details of interfaces provided by each platform, please go to PROJECTS from navigation bar.
URL format of Northbound Service API¶
When northbound interface is used to invoke api of each platform(MECM, AppStore, Developer…), make sure the URL is in compliance with the following format.
https://x.x.x.x:30095/{urlPrefix}/{业务接口自身的URL}
The urlPrefix is the routing prefix defined by each platform in the gateway, as shown in the following table:
Platform |
urlPrefix |
---|---|
AppStore |
mec-appstore |
Developer |
mec-developer |
Mecm-Inventory |
mecm-inventory |
Mecm-APP |
mecm-appo |
Mecm-APM |
mecm-apm |
ATP |
mec-atp |
Request Header of Northbound Service API¶
When northbound interface is used to invoke api of each platform(MECM, AppStore, Developer…), the following request headers is required.
Name | Definition |
---|---|
X-XSRF-TOKEN | XSRF-TOKEN |
X-ACCESS-TOKEN | ACCESS-TOKEN |
Example of Calling Northbound Service API¶
AppStore platform provides an interface to get the application list: GET /mec/appstore/v1/apps
Call northbound api:
GET https://x.x.x.x:30095/mec-appstore/mec/appstore/v1/apps -H "X-XSRF-TOKEN: xxxx" -H "X-ACCESS-TOKEN: xxxx"
Developer Guide for Third-party IAM¶
EdgeGallery supports the use of third-party IAM account systems.
When deploying EdgeGallery, please refer to: Offline Installation Guide to enable the third-party IAM enable switch.
For the third-party IAM account system, the following interfaces need to be implemented:
interface name |
URL |
请求方法 |
Request |
Response |
Response Status |
---|---|---|---|---|---|
Log in |
/iam/users/login |
POST |
{ |
{ |
200: Login successful, return user information |
AppStore¶
Overview¶
The App Store is an edge application marketplace for developers publishing and onboarding apps developed by Developer Platform and can be published directly to the AppStore app store after an ATP test. Users can also upload edge apps directly on the AppStore which can be published to the AppStore after an ATP test.
The AppStore is divided into two parts, AppStore BE is a backstage part that provides the main functional interface for the foreground or other three-way system calls. AppStore FE is the foreground part and provides an interface display.
Code Architecture¶
AppStore FE: Developer Platform foreground framework, developed using VUE.
AppStore BE: Developer Platform Backstage Framework, developed using SpringBot + ServiceComb.(For ServiceComb, please refer to this: https://servicecomb.apache.org/)
AppStore DB: Backstage relies on Postgres database.
Feature Design¶
The AppStore is an application repository module for EdgeGallery, which is primarily responsible for the storage and management of 5G edge applications where the current version has decentralized control and different user roles contain different features.
Administrator users include application upload, application test, application release, application query, application comment, download/delete all applications, external warehouse management, application push, application pull, message management, operation analysis, application management, Sandbox management, application > online experience, application synchronization, application monetization, document center.
Tenant users include application uploading, application testing, application publishing, application querying, application commenting, downloading/deleting this user’s application, application online experience, application monetization, and document center.
Tourists users include Apply queries, document centers.
Feature Name |
Feature Description |
---|---|
App Upload |
AppStore supports users to upload application packages. |
Application testing |
AppStore integrates ATP test platform, application package can be tested via ATP test platform after user upload. |
Application Publish |
AppStore integrates the ATP test platform, and users can test the application package through the ATP test platform after uploading the application package. |
Application Query |
Users can view all published applications in the “Application Repository”, and view all the applications uploaded by themselves on the “My Applications” page |
Application Review |
Users can comment and rate the apps they see in the “App Repository”, but they cannot comment on their own apps. |
App Download |
Users can download application packages from the AppStore, tenants can only download application packages uploaded by the user, and administrator users can download all published application packages and application packages uploaded by the user. |
Application Delete |
Users can delete application packages from AppStore. Tenants can only delete application packages uploaded by this user. Administrator users can delete all published application packages and application packages uploaded by this user. |
External app store management. |
Users can add, delete, modify and check external application repositories. |
App Push |
Users can push shared applications to the added external application repository. |
Application Pull |
Users can pull applications that are allowed to be shared from the added external application repositories to this repository. |
Message Management |
The push, download and other operations performed by the user in “application sharing” will record a message log. |
Application Acquisition |
The user can obtain the application from the received push message and upload it to the current platform. |
Application management |
Users can manage recent popular applications, a list of applications that can be displayed in the application warehouse, and a list of applications that can be promoted. |
Sandbox management |
Users can add, delete, modify and check the sandbox environment. |
App online experience |
Users can instantiate applications based on the existing sandbox environment for online experience. |
App synchronization |
Users can deploy the application to the configured peripheral system, such as MEAO |
Application monetization |
Users can subscribe to favorite apps,Deploy to the designated edge node。 |
Document Center |
Users can learn about the main functions, interface specifications and application package specifications of appstore in the documentation center. |
Interface design¶
The document describes the interface design details for the appstore-be module, with a total of six parts, which correspond to app management, packet management, comment management, application push, warehouse management, and message center.
-
-
-
[10. App monetization](#10-App monetization)
[10.3 Activate Order](#103-Activate Order)
[10.4 Query order list](#104-Query order list)
[10.5 Query the list of edge nodes] (#105 - Query the list of edge nodes)
-
1.Application¶
The app is app store’s basic publishing unit.
1.1 Get list application list¶
According to application list of the input parameter.
URI: /mec/appstore/v1/apps
METHOD: GET
Request parameters:
name |
describe |
IN |
compulsory choice |
---|---|---|---|
name |
application name |
request param |
yes |
provider |
Application provider |
request param |
yes |
type |
Type of application |
request param |
yes |
affinity |
Architecture |
request param |
yes |
userId |
Application creator |
request param |
yes |
Response examples:
200 OK
[
{
"appId": "string",
"iconUrl": "string",
"name": "string",
"provider": "string",
"type": "string",
"shortDesc": "string",
"createTime": "string",
"details": "string",
"downloadCount": 0,
"affinity": "string",
"industry": "string",
"contact": "string",
"score": 0,
"userId": "string",
"userName": "string",
"status": "string",
"showType": "string",
"deployMode": "string",
"hotApp": false
}
]
1.2 Access to application list¶
Obtaining application details according to application ID.
URI: /mec/appstore/v1/apps/{appId}
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
app id |
path |
yes |
Response examples:
200 OK
{
"appId": "string",
"iconUrl": "string",
"name": "string",
"provider": "string",
"type": "string",
"shortDesc": "string",
"createTime": "string",
"details": "string",
"downloadCount": 0,
"affinity": "string",
"industry": "string",
"contact": "string",
"score": 0,
"userId": "string",
"userName": "string"
"status": "string",
"showType": "string",
"deployMode": "string",
"hotApp": false
}
1.3 Registration applications¶
Register for the application.
URI: /mec/appstore/v1/apps
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
userId |
User ID |
request param |
yes |
userName |
User name |
request param |
yes |
file |
Application package |
request body form |
yes |
icon |
Application icon document |
request body form |
yes |
demoVideo |
Application of video files |
request body form |
no |
type |
Type of application |
request body form |
yes |
shortDesc |
Description of application |
request body form |
yes |
affinity |
Architecture |
request body form |
yes |
industry |
Application to industry |
request body form |
yes |
testTaskId |
Test Task id |
request body form |
no |
showType |
Display Type: public, inner-public, private |
request body form |
no |
Response examples:
200 OK
{
"appName": "string",
"appId": "string",
"packageId": "string",
"provider": "string",
"version": "string"
}
1.4 Delete application¶
application is deleted according to the application ID.
URI: /mec/appstore/v1/apps/{appId}
METHOD: DELETE
name |
describe |
IN |
compulsory choice |
---|---|---|---|
userId |
User ID |
request param |
yes |
userName |
application name |
request param |
yes |
appId |
Application ID |
path |
yes |
Response examples:
200 OK
"delete App success."
1.5 Get the app icon¶
Obtaining the application icon according to the application ID.
URI: /mec/appstore/v1/apps/{appId}/icon
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
Response examples:
200 OK
binary output.
1.6 Sharding upload app¶
Shards upload the application package.
URI: /mec/appstore/v1/apps/upload
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
id |
Sub-ID |
request body form |
no |
chunkNumber |
Current document block number |
request body form |
yes |
chunkSize |
block size |
request body form |
no |
currentChunkSize |
Current blocking size |
request body form |
no |
totalSize |
Total size |
request body form |
no |
identifier |
Document means |
request body form |
yes |
filename |
file name |
request body form |
no |
relativePath |
File Relative Path |
request body form |
no |
totalChunks |
Total blocks |
request body form |
no |
type |
Document type |
request body form |
no |
file |
Papers |
request body form |
yes |
Response examples:
200 OK
{
"upload package block success"
}
1.7 Combined application package¶
Application packages.
URI: /mec/appstore/v1/apps/merge
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
fileName |
file name |
request param |
yes |
guid |
Document ID |
request param |
yes |
Response examples:
200 OK
{
"file address"
}
1.8 Registration of virtual machines¶
Sign up for virtual machine applications.
URI: /mec/appstore/v1/apps/vm-register
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
userId |
User ID |
request param |
yes |
userName |
application name |
request param |
yes |
fileAddress |
Application packet file relative path |
request body form |
yes |
icon |
Application icon document |
request body form |
yes |
demoVideo |
Application of video files |
request body form |
no |
type |
Type of application |
request body form |
yes |
shortDesc |
Description of application |
request body form |
yes |
affinity |
Architecture |
request body form |
yes |
industry |
Application to industry |
request body form |
yes |
testTaskId |
Test Task id |
request body form |
no |
showType |
Display Type: public, inner-public, private |
request body form |
no |
Response examples:
200 OK
{
"appName": "string",
"appId": "string",
"packageId": "string",
"provider": "string",
"version": "string"
}
1.9 Get the app video¶
Obtaining the application video according to the application ID.
URI: /mec/appstore/v1/apps/{appId}/demoVideo
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
Response examples:
200 OK
binary output.
1.10 Get the app video¶
Change whether the application is a popular application according to the application ID.
URI: /mec/appstore/v2/apps/hotapps
METHOD: PUT
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
Response examples:
200 OK
set hot apps success.
1.11 Access to applications¶
According to application list of the input parameter.
URI: /mec/appstore/v2/apps/action/query
METHOD: POST
Request parameters:
name |
describe |
IN |
compulsory choice |
---|---|---|---|
QueryAppReqDto |
Query application conditions |
request body |
yes |
QueryAppReqDto
Field name |
describe |
Field Type |
compulsory choice |
---|---|---|---|
types |
Type of application |
List |
no |
showType |
Type of application |
List |
no |
affinity |
Architecture |
List |
no |
industry |
Application to industry |
List |
no |
workloadType |
Type of application |
List |
no |
userId |
User Id |
String |
no |
queryCtrl |
Query conditions |
QueryAppCtrlDto |
yes |
QueryAppCtrlDto
Field name |
describe |
Field Type |
compulsory choice |
---|---|---|---|
limit |
Paging query The number of queries per page [1,500] |
int |
yes |
offset |
Paging query start page, starting from 0 |
int |
yes |
sortItem |
Query sort field |
String |
no |
sortType |
Query sorting method ascending/descending |
String |
no |
status |
Get the working status of the application. |
List |
no |
appName |
application name |
String |
no |
Response examples:
200 OK
{
"results": [
{
"appId": "string",
"packageId": "string",
"iconUrl": "string",
"name": "string",
"provider": "string",
"type": "string",
"shortDesc": "string",
"showType": "string",
"createTime": "string",
"details": "string",
"downloadCount": int,
"affinity": "string",
"industry": "string",
"contact": "string",
"score": 5.0,
"userId": "string",
"userName": "string",
"status": "string",
"deployMode": "string",
"hotApp": false,
"exprienceAble": false
}
],
"limit": 1,
"offset": 0,
"total": 9
}
1.12 Access to applications¶
Obtaining application details according to application ID.
URI: /mec/appstore/v2/apps/{appId}
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
app id |
path |
yes |
Response examples:
200 OK
{
"data": {
"appId": "string",
"iconUrl": "string",
"name": "string",
"provider": "string",
"type": "string",
"shortDesc": "string",
"showType": "string",
"createTime": "string",
"details": "string",
"downloadCount": int,
"affinity": "string",
"industry": "string",
"contact": "string",
"score": 5.0,
"userId": "string",
"userName": "string",
"status": "string",
"deployMode": "string",
"hotApp": false
},
"retCode": 0,
"params": "[string]",
"message": "string"
}
1.13 Registration applications¶
Register for the application.
URI: /mec/appstore/v2/apps
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
userId |
User ID |
request param |
yes |
userName |
application name |
request param |
yes |
file |
Application package |
request body form |
yes |
icon |
Application icon document |
request body form |
yes |
demoVideo |
Application of video files |
request body form |
no |
type |
Type of application |
request body form |
yes |
shortDesc |
Description of application |
request body form |
yes |
affinity |
Architecture |
request body form |
yes |
industry |
Application to industry |
request body form |
yes |
testTaskId |
Test Task id |
request body form |
no |
showType |
Display Type: public, inner-public, private |
request body form |
no |
Response examples:
200 OK
{
"data": {
"appName": "string",
"appId": "string",
"packageId": "string",
"provider": "string",
"version": "string"
},
"retCode": 0,
"params": "[string]",
"message": "string"
}
2.Application¶
The application package belongs to the application, each application comprises at least one application package.
2.1 Access to application packages¶
Get the list of applications by applying ID.
URI: /mec/appstore/v1/apps/{appId}/packages
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
userId |
User ID |
request param |
yes |
access_token |
Request token |
request header |
yes |
Response examples:
200 OK
[
{
"packageId": "string",
"userName": "string",
"status": "string",
"shortDesc": "string",
"provider": "string",
"testTaskId": "string",
"size": "string",
"format": "string",
"createTime": "string",
"name": "string",
"version": "string",
"type": "string",
"details": "string",
"affinity": "string",
"industry": "string",
"contact": "string",
"appId": "string",
"userId": "string",
"showType": "string",
"deployMode": "string"
}
]
2.2 Access to applications¶
The application package is obtained by applying ID and application packet ID.
URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
Response examples:
200 OK
{
"packageId": "string",
"userName": "string",
"status": "string",
"shortDesc": "string",
"provider": "string",
"testTaskId": "string",
"size": "string",
"format": "string",
"createTime": "string",
"name": "string",
"version": "string",
"type": "string",
"details": "string",
"affinity": "string",
"industry": "string",
"contact": "string",
"appId": "string",
"userId": "string",
"showType": "string",
"deployMode": "string"
}
2.3 Delete the application package¶
Delete the application package by application ID and application package ID.
URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}
METHOD: DELETE
name |
describe |
IN |
compulsory choice |
---|---|---|---|
userId |
User Id |
request param |
yes |
userName |
User name |
request param |
yes |
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
Response examples:
200 OK
delete package success.
2.4 Download the application package¶
Download the application package via the application ID and the application package ID.
URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/action/download
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
Response examples:
200 OK
binary output.
2.5 Access to document content¶
Obtaining the file content in the application package by application ID, application packet ID and file path.
URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/files
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
packageId |
package id |
path |
yes |
filePath |
file path |
request body |
yes |
appId |
Application ID |
path |
yes |
Response examples:
200 OK
file content output.
2.6 Application publishing¶
The application is published by application ID and application packet ID.
URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/action/publish
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
isFree |
Is it free |
request body |
no |
price |
App pricing information |
request body |
no |
Response examples:
200 OK
Publish Success.
2.7 Application test¶
Test the application by application ID and application package ID.
URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/action/test
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
access_token |
Request token |
request header |
yes |
Response examples:
200 OK
{
"atpTaskId": "string",
"status": "string"
}
2.8 Get App Package List¶
Get the list of applications by applying ID.
URI: /mec/appstore/v1/packages
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
ueserId |
User Id |
request param |
yes |
access_token |
Request token |
request header |
yes |
Response examples:
200 OK
[
{
"packageId": "string",
"userName": "string",
"status": "string",
"shortDesc": "string",
"provider": "string",
"testTaskId": "string",
"size": "string",
"format": "string",
"createTime": "string",
"name": "string",
"version": "string",
"type": "string",
"details": "string",
"affinity": "string",
"industry": "string",
"contact": "string",
"appId": "string",
"userId": "string",
"showType": "string",
"deployMode": "string"
}
]
2.9 Modify Application¶
Modify the application through the application ID and application package ID.
URI: /mec/appstore/v1/apps/{appId}/package/{packageId}
METHOD: PUT
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
industry |
Application to industry |
request body form |
no |
type |
Type of application |
request body form |
no |
icon |
Application icon document |
request body form |
no |
video |
Application of video files |
request body form |
no |
affinity |
Architecture |
request body form |
no |
shortDesc |
Description of application |
request body form |
no |
showType |
Type of application |
request body form |
no |
Response examples:
200 OK
{
"packageId": "string",
"userName": "string",
"status": "string",
"shortDesc": "string",
"provider": "string",
"testTaskId": "string",
"size": "string",
"format": "string",
"createTime": "string",
"name": "string",
"version": "string",
"type": "string",
"details": "string",
"affinity": "string",
"industry": "string",
"contact": "string",
"appId": "string",
"userId": "string",
"showType": "string",
"deployMode": "string"
}
2.10 Application release-v2¶
The application is published by application ID and application packet ID.
URI: /mec/appstore/v2/apps/{appId}/packages/{packageId}/action/publish
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
isFree |
Is it free |
request body |
no |
price |
App pricing information |
request body |
no |
Response examples:
200 OK
Publish Success.
{
"data": "Publish Success",
"retCode": 0,
"params": "[string]",
"message": "string"
}
2.11 Get application package list by application ID-v2¶
Get the list of applications by applying ID.
URI: /mec/appstore/v2/apps/{appId}/packages
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
userId |
User ID |
request param |
yes |
access_token |
Request token |
request header |
yes |
limit |
Pagination to query the number of queries per page, it is recommended to set a larger value to query all application packages of the application at one time |
request param |
yes |
offset |
Paging query start page, starting from 0 |
request param |
yes |
Response examples:
200 OK
[
{
"packageId": "string",
"userName": "string",
"status": "string",
"shortDesc": "string",
"provider": "string",
"testTaskId": "string",
"size": "string",
"format": "string",
"createTime": "string",
"name": "string",
"version": "string",
"type": "string",
"details": "string",
"affinity": "string",
"industry": "string",
"contact": "string",
"appId": "string",
"userId": "string",
"showType": "string",
"deployMode": "string"
}
]
2.12 Get application package-v2¶
The application package is obtained by applying ID and application packet ID.
URI: /mec/appstore/v2/apps/{appId}/packages/{packageId}
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
Response examples:
200 OK
{
"data":
{
"packageId": "string",
"userName": "string",
"status": "string",
"shortDesc": "string",
"provider": "string",
"testTaskId": "string",
"size": "string",
"format": "string",
"createTime": "string",
"name": "string",
"version": "string",
"type": "string",
"details": "string",
"affinity": "string",
"industry": "string",
"contact": "string",
"appId": "string",
"userId": "string",
"showType": "string",
"deployMode": "string"
},
"retCode": 0,
"params": "[string]",
"message": "string"
}
2.13 Get application package list-v2¶
Get the list of applications by applying ID.
URI: /mec/appstore/v2/packages/action/query
METHOD: POST
Request parameters:
name |
describe |
IN |
compulsory choice |
---|---|---|---|
QueryAppCtrlDto |
Query application conditions |
request body |
yes |
access_token |
Request token |
request header |
yes |
QueryAppCtrlDto
Field name |
describe |
Field Type |
compulsory choice |
---|---|---|---|
limit |
Paging query The number of queries per page [1,500] |
int |
yes |
offset |
Paging query start page, starting from 0 |
int |
yes |
sortItem |
Query sort field |
String |
no |
sortType |
Query sorting method ascending/descending |
String |
no |
status |
Get the working status of the application. |
List |
no |
appName |
application name |
String |
no |
Response examples: |
200 OK
{
"results": [
{
"packageId": "string",
"size": "string",
"format": "string",
"createTime": "string",
"name": "string",
"version": "string",
"type": "string",
"details": "string",
"affinity": "string",
"industry": "string",
"contact": "string",
"appId": "string",
"userId": "string",
"userName": "string",
"status": "string",
"shortDesc": "string",
"showType": "string",
"testTaskId": "string",
"provider": "string",
"demoVideoName": "string",
"deployMode": "string"
}
],
"limit": 1,
"offset": 0,
"total": 12
}
2.14 Get application package list-v2¶
Get the list of applications by applying ID.
URI: /mec/appstore/v2/packages
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
offset |
Paging query start page, starting from 0 |
request param |
yes |
limit |
Paging query The number of queries per page [1,500] |
request param |
yes |
startTime |
应用创建时间的起始时间 |
request param |
no |
endTime |
应用创建时间的终止时间 |
request param |
no |
Response examples:
200 OK
{
"results": [
{
"packageId": "string",
"size": "string",
"format": "string",
"createTime": "string",
"name": "string",
"version": "string",
"type": "string",
"details": "string",
"affinity": "string",
"industry": "string",
"contact": "string",
"appId": "string",
"userId": "string",
"userName": "string",
"status": "string",
"shortDesc": "string",
"showType": "string",
"testTaskId": "string",
"provider": "string",
"demoVideoName": "string",
"deployMode": "string"
}
],
"limit": 1,
"offset": 0,
"total": 12
}
2.15 Download the application package¶
Download the application package via the application ID and the application package ID.
URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/icon
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
packageId |
Application package ID |
path |
yes |
Response examples:
200 OK
binary output.
2.16 应用下架¶
通过应用ID和应用包ID下架应用。
URI: /mec/appstore/v1/apps/{appId}/packages/{packageId}/action/unpublish
METHOD: POST
名称 | 描述 | IN | 必选 |
---|---|---|---|
appId | 应用ID | path | yes |
packageId | 应用包ID | path | yes |
userId | 用户Id | request param | yes |
userName | 用户名 | request param | yes |
Response examples:
200 OK
Unpublish Success.
3.Comments¶
Users can comment on apps.
3.1 List of acquisition comments¶
Get a list of comments that apply based on the application ID.
URI: /mec/appstore/v1/apps/{appId}/comments
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
Response examples:
200 OK
[
{
"commentId": 0,
"user": {
"userId": "string",
"userName": "string",
"permissions": [
{
"platform": "string",
"role": "string",
"pageIds": [
"string"
]
}
],
"company": "string",
"gender": "string",
"telephone": "string"
},
"appId": "string",
"body": "string",
"score": 0,
"commentTime": "string"
}
]
3.2 Submit comments¶
Users submit application scores and comments based on the application ID.
URI: /mec/appstore/v1/apps/{appId}/comments
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
userId |
User ID |
request param |
yes |
userName |
application name |
request param |
yes |
appId |
Application ID |
path |
yes |
entity |
Comment content and scoring |
request body |
yes |
Example of entity request body:
{
"body": "string",
"score": 0
}
Response examples:
200 OK
"comments success."
3.3 Get comment list-v2¶
Get a list of comments that apply based on the application ID.
URI: /mec/appstore/v2/apps/{appId}/comments
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
path |
yes |
offset |
Paging query start page, starting from 0 |
request param |
yes |
limit |
Paging query The number of queries per page [1,500] |
request param |
yes |
Response examples:
200 OK
{
"results": [
{
"commentId": 0,
"user": {
"userId": "string",
"userName": "string",
"permissions": [
{
"platform": "string",
"role": "string",
"pageIds": [
"string"
]
}
],
"company": "string",
"gender": "string",
"telephone": "string"
},
"appId": "string",
"body": "string",
"score": 0,
"commentTime": "string"
}
],
"limit": 1,
"offset": 0,
"total": 1
}
4.Application push¶
Users can push applications to carriers or third parties.
4.1 Query the list of pushable applications¶
Query the list of apps that can be pushed.
URI: /mec/appstore/v1/packages/pushable
METHOD: GET
Response examples:
200 OK
[
{
"appId": "string",
"packageId": "string",
"name": "string",
"provider": "string",
"version": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"latestPushTime": "string",
"pushTimes": "string",
"targetPlatform": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string",
"createTime": "string"
}
]
4.2 Get pushes app¶
Get the push app based on packageId.
URI: /mec/appstore/v1/packages/{packageId}/pushable
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
packageId |
Application package ID |
path |
yes |
Response examples:
200 OK
[
{
"appId": "string",
"packageId": "string",
"name": "string",
"provider": "string",
"version": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"latestPushTime": "string",
"pushTimes": "string",
"targetPlatform": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string",
"createTime": "string"
}
]
4.3 Push application package¶
Push the application based on the packageId.
URI: /mec/appstore/v1/packages/{packageId}/action/push
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
packageId |
Application package ID |
path |
yes |
dto |
List of operators |
request param |
yes |
Response examples:
200 OK
[true, false, true]
4.4 Download push app¶
Download the push app based on the packageId.
URI: /mec/appstore/v1/packages/{packageId}/action/download-package
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
packageId |
Application package ID |
path |
yes |
Response examples:
200 OK
binary output.
4.5 Download push app icon¶
Download the push app icon based on the packageId.
URI: /mec/appstore/v1/packages/{packageId}/action/download-icon
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
packageId |
Application package ID |
path |
yes |
Response examples:
200 OK
binary output.
4.6 Query the list of pushable applications-v2¶
Query the list of apps that can be pushed.
URI: /mec/appstore/v2/packages/pushable
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
limit |
Paging query The number of queries per page [1,500] |
request param |
yes |
offset |
Paging query start page, starting from 0 |
request param |
yes |
sortItem |
Query sort field |
request param |
no |
sortType |
Query sorting method ascending/descending |
request param |
no |
appName |
application name |
request param |
no |
Response examples:
200 OK
{
"results": [
{
"appId": "string",
"packageId": "string",
"name": "string",
"provider": "string",
"version": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"latestPushTime": "string",
"pushTimes": 2,
"sourcePlatform": "string",
"targetPlatform": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string",
"createTime": "string",
"deployMode": "string"
}
],
"limit": 1,
"offset": 0,
"total": 9
}
5.Warehouse management¶
Pruning the application warehouse.
5.1 Add to warehouse¶
Add an external application warehouse.
URI: /mec/appstore/v1/appstores
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appStoreName |
Warehouse Name |
request param |
yes |
appStoreVersion |
Warehouse Version |
request param |
yes |
company |
Company Name |
request param |
yes |
url |
Access address |
request param |
yes |
schema |
Access agreements |
request param |
no |
appPushIntf |
Push mode |
request param |
no |
appdTransId |
Translator id |
request param |
yes |
description |
describe |
request param |
no |
Response examples:
200 OK
{
"appStoreId": "string",
"appStoreName": "string",
"appStoreVersion": "string",
"company": "string",
"url": "string",
"schema": "string",
"appPushIntf": "string",
"appdTransId": "string",
"description": "string",
"addedTime": "string",
"modifiedTime": "string"
}
5.2 Delete warehouse¶
Deletes an external application warehouse.
URI: /mec/appstore/v1/appstores/{appStoreId}
METHOD: DELETE
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appStoreId |
Warehouse id |
path |
yes |
Response examples:
200 OK
delete success
5.3 Modification of warehouse¶
Modify the external application warehouse.
URI: /mec/appstore/v1/appstores/{appStoreId}
METHOD: PUT
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appStoreId |
Warehouse Name |
path |
yes |
appStoreName |
Warehouse Name |
request param |
yes |
appStoreVersion |
Warehouse Version |
request param |
yes |
company |
Company Name |
request param |
yes |
url |
Access address |
request param |
yes |
schema |
Access agreements |
request param |
no |
appPushIntf |
Push mode |
request param |
no |
appdTransId |
Translator id |
request param |
yes |
description |
describe |
request param |
no |
Response examples:
200 OK
{
"appStoreId": "string",
"appStoreName": "string",
"appStoreVersion": "string",
"company": "string",
"url": "string",
"schema": "string",
"appPushIntf": "string",
"appdTransId": "string",
"description": "string",
"addedTime": "string",
"modifiedTime": "string"
}
5.4 Query warehouse list¶
Query the list of external application warehouses.
URI: /mec/appstore/v1/appstores
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appStoreName |
Warehouse Name |
request param |
yes |
company |
Company Name |
request param |
yes |
Response examples:
200 OK
[
{
"appStoreId": "string",
"appStoreName": "string",
"appStoreVersion": "string",
"company": "string",
"url": "string",
"schema": "string",
"appPushIntf": "string",
"appdTransId": "string",
"description": "string",
"addedTime": "string",
"modifiedTime": "string"
}
]
5.5 Query warehouse¶
Query the external application warehouse.
URI: /mec/appstore/v1/appstores/{appStoreId}
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appStoreId |
Warehouse Name |
path |
yes |
Response examples:
200 OK
{
"appStoreId": "string",
"appStoreName": "string",
"appStoreVersion": "string",
"company": "string",
"url": "string",
"schema": "string",
"appPushIntf": "string",
"appdTransId": "string",
"description": "string",
"addedTime": "string",
"modifiedTime": "string"
}
5.6 List of warehouse queries¶
Query the list of external application warehouses.
URI: /mec/appstore/v2/appstores
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appStoreName |
Warehouse Name |
request param |
yes |
company |
Company Name |
request param |
yes |
limit |
Paging query The number of queries per page [1,500] |
request param |
yes |
offset |
Paging query start page, starting from 0 |
request param |
yes |
Response examples:
200 OK
{
"results": [
{
"appStoreId": "string",
"appStoreName": "string",
"appStoreVersion": "string",
"company": "string",
"url": "string",
"schema": "string",
"appPushIntf": "string",
"appdTransId": "string",
"description": "string",
"addedTime": "string",
"modifiedTime": "string"
}
],
"limit": 1,
"offset": 0,
"total": 2
}
6.Information¶
The message includes information such as application push, download, notification and so on.
6.1 Add message¶
Add a message.
URI: /mec/appstore/v1/messages
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
basicInfo |
Basic information |
request param |
yes |
sourceAppStore |
Source AppStore |
request param |
yes |
targetAppStore |
Target AppStore |
request param |
yes |
atpTestStatus |
ATP Test Results |
request param |
yes |
atpTestTaskId |
ATP Test Task Id |
request param |
yes |
atpTestReportUrl |
ATP Test Report |
request param |
yes |
packageDownloadUrl |
App Download Address |
request param |
yes |
iconDownloadUrl |
Application Icon Download Address |
request param |
yes |
Response examples:
200 OK
add a message success
6.2 Get all the information¶
Obtaining information according to the message type.
URI: /mec/appstore/v1/messages
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
messageType |
Message Type |
request param |
no |
Response examples:
200 OK
[
{
"messageId": "string",
"basicInfo": {
"name": "string",
"provider": "string",
"version": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string"
},
"messageType": "string",
"sourceAppStore": "string",
"targetAppStore": "string",
"time": "string",
"description": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"iconDownloadUrl": "string",
"readed": true
}
]
6.3 Access to information¶
Get the message according to message id.
URI: /mec/appstore/v1/messages/{messageId}
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
messageId |
Message id |
request param |
yes |
Response examples:
200 OK
{
"messageId": "string",
"basicInfo": {
"name": "string",
"provider": "string",
"version": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string"
},
"messageType": "string",
"sourceAppStore": "string",
"targetAppStore": "string",
"time": "string",
"description": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"iconDownloadUrl": "string",
"readed": true
}
6.4 Delete message¶
Deletes a message according to message id.
URI: /mec/appstore/v1/messages/{messageId}
METHOD: DELETE
name |
describe |
IN |
compulsory choice |
---|---|---|---|
messageId |
Message id |
request param |
yes |
Response examples:
200 OK
delete success
6.5 Receiving information¶
Download the app-related information according to message id.
URI: /mec/appstore/v1/messages/{messageId}/action/download
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
messageId |
Message id |
request param |
yes |
request |
Request body |
request param |
yes |
Response examples:
200 OK
success
6.6 Update Status¶
Update the message status according to message id.
URI: /mec/appstore/v1/messages/{messageId}/action/readed
METHOD: PUT
name |
describe |
IN |
compulsory choice |
---|---|---|---|
messageId |
Message id |
request param |
yes |
Response examples:
200 OK
success
6.7 Add Message-v2¶
Add a message.
URI: /mec/appstore/v2/messages
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
basicInfo |
Basic information |
request param |
yes |
sourceAppStore |
Source AppStore |
request param |
yes |
targetAppStore |
Target AppStore |
request param |
yes |
atpTestStatus |
ATP Test Results |
request param |
yes |
atpTestTaskId |
ATP Test Task Id |
request param |
yes |
atpTestReportUrl |
ATP Test Report |
request param |
yes |
packageDownloadUrl |
App Download Address |
request param |
yes |
iconDownloadUrl |
Application Icon Download Address |
request param |
yes |
Response examples:
200 OK
{
"data": "add a message success",
"retCode": 0,
"params": "[string]",
"message": "string"
}
6.8 Get all messages-v2¶
Get messages in pages according to query conditions.
URI: /mec/appstore/v2/messages/action/query
METHOD: POST
Request parameters:
name |
describe |
IN |
compulsory choice |
---|---|---|---|
QueryMessageReqDto |
Query conditions |
request body |
yes |
QueryMessageReqDto
Field name |
describe |
Field Type |
compulsory choice |
---|---|---|---|
messageType |
Message Type |
String |
no |
limit |
Paging query The number of queries per page [1,500] |
int |
yes |
offset |
Paging query start page, starting from 0 |
int |
yes |
sortItem |
Query sort field |
String |
no |
sortType |
Query sorting method ascending/descending |
String |
no |
appName |
application name |
String |
no |
timeFlag |
Message time mark, enumerated values are: today, within a week, within a month and earlier |
enum |
no |
allMessage |
6.2 Get all the information |
boolean |
yes |
readable |
When not getting all messages, get read/unread messages |
boolean |
yes |
Response examples:
200 OK
{
"results": [
{
"messageId": "string",
"basicInfo": {
"name": "string",
"provider": "string",
"version": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string"
},
"messageType": "string",
"sourceAppStore": "string",
"targetAppStore": "string",
"time": "string",
"description": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"iconDownloadUrl": "string",
"readed": true
}
],
"limit": 8,
"offset": 0,
"total": 2
}
7.Application pulling¶
Users can pull applications from operators or third-party warehouses.
7.1 Inquivable application list¶
Query the list of applications that can be pulled.
URI: /mec/appstore/v1/packages/pullable
METHOD: GET
Response examples:
200 OK
[
{
"appId": "string",
"packageId": "string",
"name": "string",
"provider": "string",
"version": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"latestPushTime": "string",
"pushTimes": "string",
"targetPlatform": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string",
"createTime": "string"
}
]
7.2 Get external application warehouse to pull application list¶
Obtaining an external warehouse according to the platfromId to pull the application list.
URI: /mec/appstore/v1/packages/{platformId}/pullable
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
platformId |
External application warehouse ID |
path |
yes |
Response examples:
200 OK
[
{
"appId": "string",
"packageId": "string",
"name": "string",
"provider": "string",
"version": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"latestPushTime": "string",
"pushTimes": "string",
"targetPlatform": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string",
"createTime": "string"
}
]
7.3 Lafetch application package¶
According to the packageId pull application package.
URI: /mec/appstore/v1/packages/{packageId}/action/pull
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
packageId |
Application package ID |
path |
yes |
PullAppReqDto |
Pull request |
request body |
yes |
PullAppReqDto:
Field name |
describe |
Message Type |
compulsory choice |
---|---|---|---|
sourceStoreId |
Warehouse id |
string |
yes |
sourceStoreName |
Warehouse Name |
string |
yes |
name |
application name |
string |
yes |
provider |
Application provider |
string |
yes |
version |
App version |
string |
yes |
atpTestStatus |
Get the working status of the application. |
string |
yes |
affinity |
Architecture |
string |
yes |
shortDesc |
Description of application |
string |
yes |
showType |
Type of application |
string |
yes |
industry |
Application to industry |
string |
yes |
type |
Type of application |
string |
yes |
userId |
User ID |
string |
yes |
userName |
User name |
string |
yes |
Response examples:
200 OK
true
7.4 Paging query to pull application list-v2¶
Paging to query the list of applications that can be pulled.
URI: /mec/appstore/v2/packages/pullable
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
limit |
Paging query The number of queries per page [1,500] |
request param |
yes |
offset |
Paging query start page, starting from 0 |
request param |
yes |
sortItem |
Query sort field |
request param |
no |
sortType |
Query sorting method ascending/descending |
request param |
no |
appName |
application name |
request param |
no |
Response examples:
200 OK
{
"results": [
{
"appId": "string",
"packageId": "string",
"name": "string",
"provider": "string",
"version": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"latestPushTime": "string",
"pushTimes": "string",
"targetPlatform": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string",
"createTime": "string"
}
],
"limit": 1,
"offset": 0,
"total": 2
}
7.5 Get the list of applications that can be pulled from the external application repository-v2¶
Obtaining an external warehouse according to the platfromId to pull the application list.
URI: /mec/appstore/v2/packages/{platfromId}/pullable
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
platformId |
External application warehouse ID |
path |
yes |
limit |
Paging query The number of queries per page [1,500] |
request param |
yes |
offset |
Paging query start page, starting from 0 |
request param |
yes |
sortItem |
Query sort field |
request param |
no |
sortType |
Query sorting method ascending/descending |
request param |
no |
appName |
application name |
request param |
no |
Response examples:
200 OK
{
"results": [
{
"appId": "string",
"packageId": "string",
"name": "string",
"provider": "string",
"version": "string",
"atpTestStatus": "string",
"atpTestTaskId": "string",
"atpTestReportUrl": "string",
"latestPushTime": "string",
"pushTimes": "string",
"targetPlatform": "string",
"affinity": "string",
"shortDesc": "string",
"industry": "string",
"type": "string",
"createTime": "string"
}
],
"limit": 1,
"offset": 0,
"total": 2
}
8.Sandbox Management¶
Manage the sandbox environment.
8.1 Query the sandbox environment list¶
Query the list of sandbox environments.
URI: /mec/appstore/v1/system/hosts
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
userId |
User ID |
request param |
no |
name |
Manage the sandbox environment. |
request param |
no |
ip |
Manage the sandbox environment. |
request param |
no |
Response examples:
200 OK
[
{
"hostId": "string",
"name": "string",
"address": "string",
"architecture": "string",
"status": "NORMAL",
"lcmIp": "string",
"mecHost": "string",
"protocol": "string",
"port": 0,
"os": "string",
"parameter":"string",
"portRangeMin": 0,
"portRangeMax": 0
}
]
8.2 Query the sandbox environment¶
Query the sandbox environment based on hostId.
URI: /mec/appstore/v1/system/hosts/{hostId}
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
hostId |
Manage the sandbox environment. |
path |
yes |
Response examples:
200 OK
{
"hostId": "string",
"name": "string",
"address": "string",
"architecture": "string",
"status": "NORMAL",
"lcmIp": "string",
"mecHost": "string",
"protocol": "string",
"port": 0,
"os": "string",
"parameter":"string",
"portRangeMin": 0,
"portRangeMax": 0
}
8.3 Add a sandbox environment¶
Add a sandbox environment.
URI: /mec/appstore/v1/system/hosts
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
MepHost |
Sandbox management request structure |
request body |
yes |
MepHost
{
"name": "string",
"address": "string",
"architecture": "string",
"status": "NORMAL",
"lcmIp": "string",
"mecHost": "string",
"protocol": "string",
"port": 0,
"os": "string",
"parameter":"string",
"portRangeMin": 0,
"portRangeMax": 0
}
Response examples:
200 OK
true
8.4 Delete sandbox environment¶
Delete the sandbox environment based on hostId.
URI: /mec/appstore/v1/system/hosts/{hostId}
METHOD: DELETE
name |
describe |
IN |
compulsory choice |
---|---|---|---|
hostId |
Manage the sandbox environment. |
path |
yes |
Response examples:
200 OK
true
8.5 Modify the sandbox environment¶
Modify the sandbox environment based on hostId.
URI: /mec/appstore/v1/system/hosts/{hostId}
METHOD: PUT
name |
describe |
IN |
compulsory choice |
---|---|---|---|
hostId |
Manage the sandbox environment. |
path |
yes |
MepHost |
Sandbox management request structure |
request body |
yes |
MepHost
{
"hostId": "string",
"name": "string",
"address": "string",
:se "architecture": "string",
"status": "NORMAL",
"lcmIp": "string",
"mecHost": "string",
"protocol": "string",
"port": 0,
"os": "string",
"parameter":"string",
"portRangeMin": 0,
"portRangeMax": 0
}
Response examples:
200 OK
true
8.6 Upload sandbox environment configuration file¶
Upload the sandbox environment configuration file.
URI: /mec/appstore/v1/system/host/files
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
uploadFile |
Papers |
request body form |
yes |
userId |
User ID |
request param |
yes |
Response examples:
200 OK
{
"fileId": "string",
"fileName": "string",
"url": "string",
"userId": "string",
"uploadDate": "2020-09-14T09:03:17.084Z",
"filePath": "string",
"temp": false
}
9.App online experience¶
You can experience the application online
9.1 Instantiate the application¶
Instantiate the application and start applying the online experience.
URI: /mec/appstore/v1/experience/deploy
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
request param |
no |
packageId |
Application package ID |
request param |
no |
userId |
User ID |
request param |
no |
name |
Manage the sandbox environment. |
request param |
no |
ip |
Manage the sandbox environment. |
request param |
no |
Response examples:
200 OK
{
"data": "[{"serviceName":"testApp","serviceName":"30258","mecHost":"127.0.0.1"}]",
"retCode": 0,
"params": "[string]",
"message": "string"
}
9.2 Release resources¶
The experience is complete and resources are released.
URI: /mec/appstore/v1/experience/clean
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
packageId |
Application package ID |
request param |
yes |
userId |
User ID |
request param |
no |
name |
Manage the sandbox environment. |
request param |
no |
ip |
Manage the sandbox environment. |
request param |
no |
Response examples:
200 OK
true
9.3 Access to applications¶
Get the working status of the application.
URI: /mec/appstore/v1/experience/container/workStatus
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
packageId |
Application package ID |
request param |
no |
userId |
User ID |
request param |
no |
name |
Manage the sandbox environment. |
request param |
no |
ip |
Manage the sandbox environment. |
request param |
no |
Response examples:
200 OK
{
"data": "[{"serviceName":"testApp","serviceName":"30258","mecHost":"127.0.0.1"}]",
"retCode": 0,
"params": "[string]",
"message": "string"
}
10. 应用变现¶
The application can be priced when the application is released, and the application can be monetized.
10.1 Order application¶
Create Order.
URI: /mec/appstore/v1/orders
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
APPID |
request body |
Yes |
appPackageId |
APP package ID |
request body |
Yes |
appName |
application name |
request body |
Yes |
mecHostIp |
Edge Node IP |
request body |
Yes |
mecHostCity |
edge node location |
request body |
Yes |
Response examples:
response 200 OK
{
"data": {
"orderId": "",
"orderNum": "",
},
"retCode": 0,
"params": ["", ""],
"message": ""
}
10.2 Unsubscribe from apps¶
Unsubscribe the order.
URI: /mec/appstore/v1/orders/{orderId}/deactivation
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
orderId |
Order ID |
path param |
Yes |
Response examples:
response 200 OK
{
"data": null,
"retCode": 0,
"params": ["", ""],
"message": ""
}
10.3 Activate order¶
Activate the order.
URI: /mec/appstore/v1/orders/{orderId}/activation
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
orderId |
Order ID |
path param |
Yes |
Response examples:
response 200 OK
{
"data": null,
"retCode": 0,
"params": ["", ""],
"message": ""
}
10.4 Query order list¶
Get a list of orders.
URI: /mec/appstore/v1/orders/list
METHOD: POST
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
Application ID |
request body |
no |
orderNum |
order number |
request body |
no |
status |
Order Status |
request body |
no |
orderTimeBegin |
The start time of the order time range |
request body |
no |
orderTimeEnd |
The end time of the order time range |
request body |
no |
QueryCtrlDto |
Query conditions |
request body |
Yes |
QueryCtrlDto
Field name |
describe |
Field Type |
compulsory choice |
---|---|---|---|
limit |
Paging query The number of queries per page [1,500] |
int |
yes |
offset |
Paging query start page, starting from 0 |
int |
yes |
sortItem |
Query sort field |
String |
no |
sortType |
Query sorting method ascending/descending |
String |
no |
Response examples:
response 200 OK
{
"results": [
{
"orderId": "",
"orderNum": "",
"userId": "",
"userName": "",
"appId": "",
"appName": "",
"orderTime": "",
"operateTime": "",
"status": "",
"mecHostIp": "",
"mecHostCity": "",
"detail": ""
},
{...}
],
"offset": 0,
"limit": 20,
"total": 100
}
10.5 Query the list of edge nodes¶
Get edge node information.
URI: /mec/appstore/v1/mechosts?appId={appId}&packageId={packageId}
METHOD: GET
name |
describe |
IN |
compulsory choice |
---|---|---|---|
appId |
application Id |
request param |
no |
packageId |
application package Id |
request param |
no |
Response examples:
response 200 OK
{
"data": [
{
"mechostIp": "",
"mechostName": "",
"mechostCity": "",
"vim": "",
"affinity": ""
}
],
"retCode": 0,
"params": ["", ""],
"message": ""
}
Database design¶
The AppStore database uses open-source PostgreSQL databases with a recommended version of 12.2. The following database tables are currently designed and applied:
app_table Stores app information such as name, provider, description, etc.
create TABLE if not exists app_table (
APPID VARCHAR(200) NOT NULL,
APPNAME VARCHAR(100) NULL,
APPLICATIONTYPE VARCHAR(300) NULL,
DEPLOYMODE VARCHAR(100) NULL,
SHORTDESC TEXT NULL,
PROVIDER VARCHAR(300) NULL,
APPINTRODUCTION TEXT NULL,
DOWNLOADCOUNT INT NULL,
AFFINITY VARCHAR(100) NULL,
INDUSTRY VARCHAR(100) NULL,
CONTACT VARCHAR(100) NULL,
USERID VARCHAR(100) NULL,
USERNAME VARCHAR(100) NULL,
CREATETIME TIMESTAMP NULL,
MODIFYTIME TIMESTAMP NULL,
SCORE NUMERIC(2,1) NULL,
STATUS VARCHAR(50) NULL,
SHOWTYPE VARCHAR(100) NOT NULL DEFAULT 'public',
ISHOTAPP boolean DEFAULT false,
EXPERIENCEABLE boolean DEFAULT false,
CONSTRAINT app_table_pkey PRIMARY KEY (APPID)
);
catalog_package_table Package information for storage applications, one application can have multiple package
create TABLE if not exists catalog_package_table (
PACKAGEID VARCHAR(200) NOT NULL,
PACKAGEADDRESS VARCHAR(200) NULL,
ICONADDRESS VARCHAR(200) NULL,
DEMOVIDEOADDRESS VARCHAR(200) NULL,
SIZE VARCHAR(100) NULL,
FILESTRUCTURE TEXT NULL,
CREATETIME TIMESTAMP NULL,
SHORTDESC TEXT NULL,
APPNAME VARCHAR(100) NULL,
VERSION VARCHAR(20) NULL,
APPLICATIONTYPE VARCHAR(300) NULL,
DEPLOYMODE VARCHAR(100) NULL,
MARKDOWNCONTENT TEXT NULL,
AFFINITY VARCHAR(100) NULL,
INDUSTRY VARCHAR(100) NULL,
CONTACT VARCHAR(100) NULL,
APPID VARCHAR(100) NULL,
USERID VARCHAR(100) NULL,
USERNAME VARCHAR(100) NULL,
TESTTASKID VARCHAR(100) NULL,
STATUS VARCHAR(100) NULL,
PROVIDER VARCHAR(100) NULL,
SHOWTYPE VARCHAR(100) NOT NULL DEFAULT 'public',
APPINSTANCEID VARCHAR(100) NULL,
INSTANCETENENTID VARCHAR(100) NULL,
INSTANCEPACKAGEID VARCHAR(255) NULL,
EXPERIENCEABLE boolean DEFAULT false,
STARTEXPTIME VARCHAR(100) NULL,
EXPERIENCEABLEIP VARCHAR(100) NULL,
MECHOST VARCHAR(100) NULL,
CONSTRAINT catalog_package_table_pkey PRIMARY KEY (PACKAGEID)
);
csar_package_score Comments information for storage applications
create TABLE if not exists csar_package_score (
COMMENTID serial,
USERID VARCHAR(100) NULL,
USERNAME VARCHAR(100) NULL,
APPID VARCHAR(200) NOT NULL,
COMMENTS TEXT NULL,
SCORE NUMERIC(2,1) NULL,
COMMENTTIME TIMESTAMP NULL,
CONSTRAINT csar_package_score_pkey PRIMARY KEY (COMMENTID)
);
app_store_table Stores external appstore information
create TABLE if not exists app_store_table (
APPSTOREID VARCHAR(64) NOT NULL,
APPSTORENAME VARCHAR(128) NULL,
APPSTOREVERSION VARCHAR(64) NOT NULL,
COMPANY VARCHAR(128) NULL,
URL VARCHAR(256) NOT NULL,
SCHEMA VARCHAR(16) NULL,
APPPUSHINTF VARCHAR(256) NULL,
APPDTRANSID VARCHAR(64) NULL,
DESCRIPTION VARCHAR(256) NULL,
ADDEDTIME TIMESTAMP NOT NULL,
MODIFIEDTIME TIMESTAMP NULL,
CONSTRAINT app_store_table_pkey PRIMARY KEY (APPSTOREID)
);
pushable_package_table Stores information about pushable application packages
create TABLE if not exists pushable_package_table (
PACKAGEID VARCHAR(64) NOT NULL,
ATPTESTREPORTURL VARCHAR(100) NOT NULL,
LATESTPUSHTIME TIMESTAMP NOT NULL,
PUSHTIMES INTEGER NOT NULL DEFAULT 0,
SOURCEPLATFORM VARCHAR(100) NOT NULL,
CONSTRAINT PUSHABLE_PACKAGE_TABLE_PKEY PRIMARY KEY (PACKAGEID)
);
message_table Stores messages during intercommunication between appstores
create TABLE if not exists message_table (
MESSAGEID VARCHAR(100) NOT NULL,
RESULT VARCHAR(100) NULL,
READED boolean default false,
NAME VARCHAR(100) NULL,
PROVIDER VARCHAR(100) NULL,
VERSION VARCHAR(100) NULL,
MESSAGETYPE VARCHAR(20) NULL,
SOURCEAPPSTORE VARCHAR(100) NULL,
TARGETAPPSTORE VARCHAR(100) NULL,
TIME VARCHAR(100) NULL,
DESCRIPTION VARCHAR(255) NULL,
ATPTESTSTATUS VARCHAR(50) NULL,
ATPTESTTASKID VARCHAR(100) NULL,
ATPTESTREPORTURL VARCHAR(255) NULL,
PACKAGEDOWNLOADURL VARCHAR(255) NULL,
ICONDOWNLOADURL VARCHAR(255) NULL,
DEMOVIDEODOWNLOADURL VARCHAR(255) NULL,
AFFINITY VARCHAR(100) NULL,
SHORTDESC TEXT NULL,
INDUSTRY VARCHAR(100) NULL,
TYPE VARCHAR(50) NULL,
CONSTRAINT message_table_pkey PRIMARY KEY (MESSAGEID)
);
tbl_service_host Stores sandbox environment information
create TABLE if not exists tbl_service_host (
HOST_ID VARCHAR(50) NOT NULL,
USER_ID VARCHAR(50) DEFAULT NULL,
NAME VARCHAR(100) DEFAULT NULL,
ADDRESS VARCHAR(255) DEFAULT NULL,
ARCHITECTURE VARCHAR(100) DEFAULT NULL,
STATUS VARCHAR(20) DEFAULT NULL,
PROTOCOL VARCHAR(20) DEFAULT NULL,
LCM_IP VARCHAR(20) DEFAULT NULL,
MEC_HOST VARCHAR(20) DEFAULT NULL,
OS VARCHAR(255) DEFAULT NULL,
PORT_RANGE_MIN INTEGER DEFAULT 0,
PORT_RANGE_MAX INTEGER DEFAULT 0,
PORT INTEGER DEFAULT 0,
VNC_PORT INTEGER DEFAULT NULL,
PARAMETER text DEFAULT NULL,
DELETE BOOLEAN DEFAULT NULL
);
tbl_service_host Stores sandbox environment information
create TABLE if not exists tbl_uploaded_file (
FILE_ID VARCHAR(50) NOT NULL DEFAULT NULL,
FILE_NAME VARCHAR(255) DEFAULT NULL,
IS_TEMP BOOL DEFAULT NULL,
USER_ID VARCHAR(50) DEFAULT NULL,
UPLOAD_DATE TIMESTAMPTZ(6) DEFAULT NULL,
FILE_PATH VARCHAR(255) DEFAULT NULL,
CONSTRAINT TBL_UPLOADED_FILE_PKEY PRIMARY KEY (FILE_ID)
);
How to contribute¶
This paper will show users how to participate in the contribution of the AppStore project, which is divided into two parts, which will separately describe how to build the local development environment and the operating guidance of the AppStore.
Set up a local development environment¶
This section will guide users on how to build the AppStore-be and AppStore-fe modules locally, helping developers to quickly understand and develop code.
AppStore-be’s local activation depends on:
- Service center
- DataBase
- User Management
AppStore-fe’s local startup relies on:
- Website Gateway
- User Management
- AppStore-be
So to build a local development environment, the final start sequence is Service Center -> DataBase -> User Management -> AppStore-be -> Website Gateway (AppStore-fe)
Service Center¶
1.Download Service Center
!
2.Run the start-service-center.bat and start-frontend.bat after decompression
DataBase¶
1.Download, install and start Postgresql 12.3
2.setting the login name and password, such as postgresql/root
3.Create a database called appstoredb
4.Create a database called usermgmtdb
User Management¶
1.Download user-mgmt-be code and user-mgmt-fe code
2.Install node.js and npm, enter the user-mgmt-fe folder, and run npm install
and npm run build
3.Create a static folder in the src/main/resources/ folder of user-mgmt-be
4.Copy the contents of the dist folder compiled by user-mgmt-fe to the static folder of user-mgmt-be
5.Configure the runtime environment variables of MainServer in the compiler (here, taking IDEA as an example)
6.Run the MainServer function and start UserManagement
AppStore-be¶
1.Download the appstore-be code
2.Modify servicecomb.rest.address
to 127.0.0.1:8099
in appstore-be in /src/main/resources/application.yaml document
3.Configure runtime environment variables for MainServer in the compiler (where IDEA is used as an example)
4.Run the MainServer function and start appstore-be
AppStore-fe¶
1.Download appstore-fe code
2.Enter appstore-fe folder, run npm install
and npm run build
3.Download the website-gateway code
4.Create a static folder in the src/main/resources/ folder on website-gateway
5.Copy the content in the dist folder compiled by appstore-fe to the static folder of website-gateway
6.Modify server.port
in the /src/main/resources/application.yaml document in the website-gateway 8080
(the port in the OAUTH_APPSTORE_CLIENT_URL
variable that is completed at startup of usermgmt) is consistent)
7.Configuring runtime environment variables for GatewayApplication in compiler (here, IDEA as an example)
8.Run GatewayApplication to launch WebiteGateway with AppStore-fe, browser access to http://127.0.0.1:8080/ to access the AppStore homepage
Operating guidance¶
AppStore is a market for developers publishing and onboarding App applications, edge applications developed by Developer Platform and tested can be shared directly to the AppStore app store.It is also possible to directly upload an application package that conforms to the platform specification and the application package document type is csr. One APP corresponds to multiple packages, the user can download the latest version of the APP directly or download the specified version of Package.
Login application platform¶
进入网址后,默认为guest用户,可以查看信息。如果要进行更多操作(如上传应用)还需注册账号,注册完成,使用该账户登录之后便可进入应用平台首页:
Check the app¶
The right side operation in the basic information can only download the packet uploaded by itself. The administrator user can download all the published bags and the uploaded bags.
如需对APP进行评论,可以在评论区输入评论,设置评分,鼠标左键点击按钮后,评论提交成功。
Publish application¶
1.上传APP,打开APP Store主界面,点击右侧上传图标,打开上传APP对话框。在上传对话框中选择需要上传的APP,上传或选择系统默认提供的APP图标,选择APP行业、类型、架构,填写APP简单描述,点击确认完成上传。
2.应用上传后,会自动跳转至我的应用界面下,上传的应用需要经过平台的atp测试之后才可以发布到仓库。我的应用下是上传的包的基本信息,表格右侧为基本操作,点击测试按钮,会开始创建测试任务,页面为嵌套的atp测试页面,点击开始测试按钮,解析包的依赖,可以看到具体的测试用例有多少条,点击确定后开始测试,页面为测试进展页面,可以返回到我的应用页面,等待测完成
3.我的应用中测试状态为Test_success(即测试成功)时才能发布应用,点击右侧的发布按钮,发布成功后,在首页可以看到你上传的应用。
Shared applications¶
1.应用共享导航下分为外部应用仓库管理、应用推广、应用拉取、消息中心和操作分析。
2.外部应用仓库管理页面,可以添加、修改和删除仓库。
3.点击应用共享主菜单下的应用推送菜单查看可推送的应用信息,选择需要推送给运营商或者第三方的应用,进行批量推送,然后查看应用推送到运营商或者第三方的结果。
4.点击应用共享主菜单下的应用拉取菜单查看各个外部仓库可拉取的应用信息,选择需要拉取的应用可进行批量拉取。
5.点击应用共享主菜单下的消息中心菜单,查看通知信息,可以接受来自不同运营商需要推送的APP信息。点击消息可以看到消息详情,点击接收按钮可以拉取(下载)该应用的信息,拉取成功的APP可以在“我的应用”界面查看,点击删除按钮则删除该条消息,双击可查看消息详情。
6.应用推送成功后切换到右边操作分析tab,在操作分析界面查看对应的信息,同时操作分析界面可以查看不同操作如:拉取、下载、通知、推送等类型的消息。
ATP¶
Overview¶
The application test service provides a detection function for the application package and can be published to the applied commercial city only by using the test case of the application test service.
The application testing service is divided into the front and back platforms, atp is the background part, providing the main function interface for the foreground or other three-way system to call, atp-fe is the foreground part, providing the interface display.
Application testing services are currently divided into management functions and user functions. The management functions include the management of test scenarios, the management of test suites, the management of test cases, the batch import of model models, the management of test tasks, and the management of contributions, among which contribution management The menu for is only visible to the administrator. Administrators can dynamically add test scenarios, test suites and test cases on the management plane, modify the status of manual use cases in test tasks, and download test cases contributed by script types. For reasonable use cases, they will be added to the platform’s use case set . User interface functions include selecting scenarios to be tested, visualizing the testing process, displaying test reports, and contributing test cases. At present, the functions of the user plane are mainly integrated in the developer platform and the application store, and the generated application package is tested.
At present, the test cases cover security test (vulnerability scanning, signature verification, port scanning, virus scanning, etc.), compliance test (application package structure verification), Sandbox test (application deployment, MEP platform service registration update, etc.) and performance test (delay, CPU occupancy, memory occupancy, etc.)
Overall framework description¶
The EdgeGallery overall framework flow is as follows, the application test platform’s main corresponding graph in the authentication test section.
ATP-fe: Developer Platform foreground framework, developed using VUE.
ATP: Developer Platform Backstage Framework, developed using SpringBot + ServiceComb.(For ServiceComb, please refer to this: https://servicecomb.apache.org/cn/)
ATP DB: Backstage relies on Postgres database.
correspondence relationship between test suites, test scenarios, and test cases¶
Feature design¶
The features currently provided by ATP are divided into user-plane features and management-plane features. User interface features include: selection of test scenarios, display of test task progress, test report analysis, test report download, test case contribution and self-test report upload. Management features include: test scenario management, test suite management, test case management, one-click import of test models, test task analysis, test task management, contribution management and config item management.
Choose a test scenario¶
The user can select the test scene to be carried out according to the need and the ATP service executes the test case of the corresponding scene.
Test mission, show progress.¶
The dynamic display of the implementation of a test task can dynamically see the implementation of each use case under each scene.
Test Report Analysis¶
Show test report results.The report gives the analysis of the community scene and the test case result of the selected scene, showing the pass rate of each test sleeve, the number of the use routine and the failure reason of the specific test case.
Test Report Download¶
Provide the test report download function to download the test report as pdf format.
Contribution test cases¶
The user side supports the entrance of the user contribution test case, supports the user contribution test case script, or contributes the text description of the test case.
Self-test report upload¶
After the test cases are automatically executed, users can upload self-test reports. If users have application specific tests such as functional tests, they can upload self-test reports. The application test platform will integrate the platform test case execution report and the user uploaded self-test report into one test report display
Test scenario management¶
Contains the demo, add, delete, modify operation of the test scene.
Test Suite Management¶
Contains the demo, add, delete, modify operation of the test suite.
Test Case Management¶
Contains display of test cases, add, delete, modify operations.
One-click import of test models¶
One can define batches of test scenarios, test suites, and test cases in excel, put test case scripts and test scenario icons in a folder, and finally compress these files into a zip package, and import batch test models in one-click on the management side data.
Test mission analysis¶
The ATP Management Face home page shows the distribution of the number of test tasks in nearly 6 months and the total number.
Test mission management¶
Contains the display of the test task and the batch delete operation of the test task.
Contribution management¶
Contains script-type contribution use case download and contribution batch deletion operations.
Config item management¶
You can config parameters for a test case to make the test case more flexible
atp Interfaces¶
1. Task¶
Test task for application package
1.1 POST create test task¶
create test task for application package.
Resource URI: /edgegallery/atp/v1/tasks
Name |
Definition |
Type |
Required |
---|---|---|---|
file |
file |
requestpart |
yes |
Example response:
200 OK
{
"id":"",
"packagePath":"",
"appName":"",
"appVersion":"",
"providerId":"",
"status":"",
"createTime":123456789,
"user":{
"userId":"",
"userName":""
}
}
1.2 POST run test task¶
Run test task by taskId
Resource URI: /edgegallery/atp/v1/tasks/{taskId}/action/run
Name |
Definition |
Type |
Required |
---|---|---|---|
taskId |
taskId |
path param |
yes |
scenarioIdList |
scenarioIdList |
request param |
yes |
Example response:
200 OK
{
"id": "8ac6e62d-1d20-4193-942e-ece6deff5e4e",
"appName": "monitor-service",
"appVersion": "1.0",
"status": "running",
"createTime": "2021-03-01T02:42:29.306+0000",
"endTime": "2021-03-01T02:43:03.943+0000",
"reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
"user": {
"userId": "4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
"userName": "atp"
},
"providerId": "Huawei",
"testScenarios": [
{
"id": "e71718a5-864a-49e5-855a-5805a5e9f97d",
"nameCh": "中国联通",
"nameEn": "China Unicom Scenario",
"label": "China Unicom",
"testSuites": [
{
"id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
"nameCh": "沙箱测试",
"nameEn": "Sandbox Test",
"testCases": [
{
"id": "4d203173-5555-4f62-aabb-8ebcec357f87",
"nameCh": "应用实例化",
"nameEn": "Application Instantiation",
"descriptionCh": "将应用包部署到边缘节点",
"descriptionEn": "Instantiate application and its dependency application on one edge host",
"type": "automatic",
"result": "failed",
"reason": "host ip is empty"
}
]
}
]
}
]
}
1.3 GET get task list¶
download one plugin
Resource URI: /edgegallery/atp/v1/tasks
Name |
Definition |
Type |
Required |
---|---|---|---|
appName |
appName |
query param |
no |
status |
status |
query param |
no |
appVersion |
appVersion |
query param |
no |
providerId |
providerId |
query param |
no |
Example response:
200 OK
[{
"id": "8ac6e62d-1d20-4193-942e-ece6deff5e4e",
"appName": "monitor-service",
"appVersion": "1.0",
"status": "running",
"createTime": "2021-03-01T02:42:29.306+0000",
"endTime": "2021-03-01T02:43:03.943+0000",
"reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
"user": {
"userId": "4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
"userName": "atp"
},
"providerId": "Huawei",
"testScenarios": [
{
"id": "e71718a5-864a-49e5-855a-5805a5e9f97d",
"nameCh": "中国联通",
"nameEn": "China Unicom Scenario",
"label": "China Unicom",
"testSuites": [
{
"id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
"nameCh": "沙箱测试",
"nameEn": "Sandbox Test",
"testCases": [
{
"id": "4d203173-5555-4f62-aabb-8ebcec357f87",
"nameCh": "应用实例化",
"nameEn": "Application Instantiation",
"descriptionCh": "将应用包部署到边缘节点",
"descriptionEn": "Instantiate application and its dependency application on one edge host",
"type": "automatic",
"result": "failed",
"reason": "host ip is empty"
}
]
}
]
}
]
}]
1.4 GET get one task¶
get task by taskId
Resource URI: /edgegallery/atp/v1/tasks/{taskId}
Name |
Definition |
Type |
Required |
---|---|---|---|
taskId |
taskId |
path param |
yes |
Example response:
200 OK
{
"id": "8ac6e62d-1d20-4193-942e-ece6deff5e4e",
"appName": "monitor-service",
"appVersion": "1.0",
"status": "running",
"createTime": "2021-03-01T02:42:29.306+0000",
"endTime": "2021-03-01T02:43:03.943+0000",
"reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
"user": {
"userId": "4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
"userName": "atp"
},
"providerId": "Huawei",
"testScenarios": [
{
"id": "e71718a5-864a-49e5-855a-5805a5e9f97d",
"nameCh": "中国联通",
"nameEn": "China Unicom Scenario",
"label": "China Unicom",
"testSuites": [
{
"id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
"nameCh": "沙箱测试",
"nameEn": "Sandbox Test",
"testCases": [
{
"id": "4d203173-5555-4f62-aabb-8ebcec357f87",
"nameCh": "应用实例化",
"nameEn": "Application Instantiation",
"descriptionCh": "将应用包部署到边缘节点",
"descriptionEn": "Instantiate application and its dependency application on one edge host",
"type": "automatic",
"result": "failed",
"reason": "host ip is empty"
}
]
}
]
}
]
}
1.5 PUT modify test case status¶
modify manual test case status
Resource URI: edgegallery/atp/v1/tasks/{taskId}/testcase
Name |
Definition |
Type |
Required |
---|---|---|---|
taskId |
taskId |
path param |
yes |
Example request:
[{
"testScenarioId":"",
"testSuiteId":"",
"testCaseId":"",
"result":"" ,
"reason":""
}]
Example response:
true
1.6 POST batch delete test tasks¶
batch delete test tasks
Resource URI: edgegallery/atp/v1/tasks/batch_delete
Example request:
{
"taskIds":["id1","id2"]
}
Example response:
{
"failed":["id3"]
}
1.7 GET get test tasks analysis¶
get test tasks analysis
Resource URI: edgegallery/atp/v1/tasks/action/analysize
Example response:
200 OK
{
"total":426,
"currentMonth":11,
"oneMonthAgo":111,
"twoMonthAgo":12,
"threeMonthAgo":13,
"fourMonthAgo":14,
"fiveMonthAgo":15
}
1.8 DELETE delete one test task¶
delete one test task
Resource URI: edgegallery/atp/v1/tasks/{taskId}
Example response:
true
1.9 POST upload self test report¶
upload self test report
Resource URI: edgegallery/atp/v2/tasks/{taskId}/action/upload-report
Example request:
{
file: file
}
Example response:
{
"data":{
"path":"reportPath"
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1“
]
}
2. Test case¶
test cases of csar package
2.1 GET query all test cases¶
query all test cases
Resource URI: /edgegallery/atp/v1/testcases
Name |
Definition |
Type |
Required |
---|---|---|---|
type |
type |
query param |
no |
name |
name |
query param |
no |
locale |
locale |
query param |
no |
testSuiteIdList |
testSuiteIdList |
query param |
no |
Example response:
200 OK
[{
"id": "4d203173-9999-4f62-aabb-8ebcec357f87",
"nameCh": "APPD文件目录校验",
"nameEn": "APPD File Dir Validation",
"type": "automatic",
"descriptionCh": "根目录下必须包含APPD文件目录",
"descriptionEn": "Root directory must contain APPD file dir",
"hashCode": "",
"codeLanguage": "java",
"expectResultCh": "根目录下存在APPD文件目录",
"expectResultEn": "Root directory contains APPD file dir",
"testStepCh": "1.打开csar包 2.校验根目录下存在APPD目录",
"testStepEn": "1.open csar package 2.validate root directory contains APPD directory",
"testSuiteIdList": [
"522684bd-d6df-4b47-aab8-b43f1b4c19c0"
],
"configIdList": [
"522684bd-9999-4b47-aab8-b43f1b4c19c0"
]
}]
2.2 POST create test case¶
create test case
Resource URI: /edgegallery/atp/v1/testcases
Name |
Definition |
Type |
Required |
---|---|---|---|
nameCh |
nameCh |
request param |
yes |
nameEn |
nameEn |
request param |
no |
type |
type |
request param |
yes |
descriptionCh |
descriptionCh |
request param |
yes |
descriptionEn |
descriptionEn |
request param |
no |
codeLanguage |
codeLanguage |
request param |
yes |
expectResultCh |
expectResultCh |
request param |
yes |
expectResultEn |
expectResultEn |
request param |
no |
testSuiteIdList |
testSuiteIdList |
request param |
yes |
testStepCh |
testStepCh |
request param |
yes |
testStepEn |
testStepEn |
request param |
no |
file |
file |
request part |
yes |
configIdList |
configIdList |
request param |
no |
Example response:
200 OK
{
"id": "4d203173-9999-4f62-aabb-8ebcec357f87",
"nameCh": "APPD文件目录校验",
"nameEn": "APPD File Dir Validation",
"type": "automatic",
"descriptionCh": "根目录下必须包含APPD文件目录",
"descriptionEn": "Root directory must contain APPD file dir",
"hashCode": "",
"codeLanguage": "java",
"expectResultCh": "根目录下存在APPD文件目录",
"expectResultEn": "Root directory contains APPD file dir",
"testStepCh": "1.打开csar包 2.校验根目录下存在APPD目录",
"testStepEn": "1.open csar package 2.validate root directory contains APPD directory",
"testSuiteIdList": [
"522684bd-d6df-4b47-aab8-b43f1b4c19c0"
],
"configIdList": [
"522684bd-9999-4b47-aab8-b43f1b4c19c0"
]
}
2.3 PUT update test case¶
update test case
Resource URI: /edgegallery/atp/v1/testcases
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
request param |
yes |
type |
type |
request param |
no |
descriptionCh |
descriptionCh |
request param |
no |
descriptionEn |
descriptionEn |
request param |
no |
codeLanguage |
codeLanguage |
request param |
no |
expectResultCh |
expectResultCh |
request param |
no |
expectResultEn |
expectResultEn |
request param |
no |
testSuiteIdList |
testSuiteIdList |
request param |
no |
testStepCh |
testStepCh |
request param |
no |
testStepEn |
testStepEn |
request param |
no |
file |
file |
request part |
no |
configIdList |
configIdList |
request param |
no |
Example response:
200 OK
{
"id": "4d203173-9999-4f62-aabb-8ebcec357f87",
"nameCh": "APPD文件目录校验",
"nameEn": "APPD File Dir Validation",
"type": "automatic",
"descriptionCh": "根目录下必须包含APPD文件目录",
"descriptionEn": "Root directory must contain APPD file dir",
"hashCode": "",
"codeLanguage": "java",
"expectResultCh": "根目录下存在APPD文件目录",
"expectResultEn": "Root directory contains APPD file dir",
"testStepCh": "1.打开csar包 2.校验根目录下存在APPD目录",
"testStepEn": "1.open csar package 2.validate root directory contains APPD directory",
"testSuiteIdList": [
"522684bd-d6df-4b47-aab8-b43f1b4c19c0"
],
"configIdList": [
"522684bd-9999-4b47-aab8-b43f1b4c19c0"
]
}
2.4 DELETE delete test case¶
delete test case
Resource URI: /edgegallery/atp/v1/testcases/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
true
2.5 GET query one test case¶
query one test case
Resource URI: /edgegallery/atp/v1/testcases/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
{
"id": "4d203173-9999-4f62-aabb-8ebcec357f87",
"nameCh": "APPD文件目录校验",
"nameEn": "APPD File Dir Validation",
"type": "automatic",
"descriptionCh": "根目录下必须包含APPD文件目录",
"descriptionEn": "Root directory must contain APPD file dir",
"hashCode": "",
"codeLanguage": "java",
"expectResultCh": "根目录下存在APPD文件目录",
"expectResultEn": "Root directory contains APPD file dir",
"testStepCh": "1.打开csar包 2.校验根目录下存在APPD目录",
"testStepEn": "1.open csar package 2.validate root directory contains APPD directory",
"testSuiteIdList": [
"522684bd-d6df-4b47-aab8-b43f1b4c19c0"
],
"configIdList": [
"522684bd-9999-4b47-aab8-b43f1b4c19c0"
]
}
2.6 GET download test case¶
download test case
Resource URI: edgegallery/atp/v1/testcases/{id}/action/download
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
binary stream
3. Test scenario¶
test scenario management
3.1 GET query all test scenarios¶
query all test scenarios
Resource URI: edgegallery/atp/v1/testscenarios
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
no |
locale |
locale |
query param |
no |
Example response:
200 OK
[
{
"id": "4d203111-1111-4f62-aabb-8ebcec357f87",
"nameCh": "社区场景",
"nameEn": "EdgeGallery Community Scenario",
"descriptionCh": "适用于社区场景的测试",
"descriptionEn": "suite for EdgeGallery community test",
"label": "EdgeGallery"
}
]
3.2 POST create test scenario¶
create test scenario
Resource URI: edgegallery/atp/v1/testscenarios
Name |
Definition |
Type |
Required |
---|---|---|---|
nameCh |
nameCh |
request param |
yes |
nameEn |
nameEn |
request param |
no |
descriptionCh |
descriptionCh |
request param |
yes |
descriptionEn |
descriptionEn |
request param |
no |
label |
label |
request param |
yes |
icon |
icon |
request part |
yes |
Example response:
200 OK
{
"id": "4d203111-1111-4f62-aabb-8ebcec357f87",
"nameCh": "社区场景",
"nameEn": "EdgeGallery Community Scenario",
"descriptionCh": "适用于社区场景的测试",
"descriptionEn": "suite for EdgeGallery community test",
"label": "EdgeGallery"
}
3.3 PUT update test scenario¶
update test scenario
Resource URI: edgegallery/atp/v1/testscenarios/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
nameCh |
nameCh |
request param |
no |
nameEn |
nameEn |
request param |
no |
descriptionCh |
descriptionCh |
request param |
no |
descriptionEn |
descriptionEn |
request param |
no |
label |
label |
request param |
no |
icon |
icon |
request part |
no |
Example response:
200 OK
{
"id": "4d203111-1111-4f62-aabb-8ebcec357f87",
"nameCh": "社区场景",
"nameEn": "EdgeGallery Community Scenario",
"descriptionCh": "适用于社区场景的测试",
"descriptionEn": "suite for EdgeGallery community test",
"label": "EdgeGallery"
}
3.4 DELETE delete test scenario¶
delete test scenario
Resource URI: edgegallery/atp/v1/testscenarios/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
true
3.5 GET query one test scenario¶
query one test scenario
Resource URI: edgegallery/atp/v1/testscenarios/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
{
"id": "4d203111-1111-4f62-aabb-8ebcec357f87",
"nameCh": "社区场景",
"nameEn": "EdgeGallery Community Scenario",
"descriptionCh": "适用于社区场景的测试",
"descriptionEn": "suite for EdgeGallery community test",
"label": "EdgeGallery"
}
3.6 GET query all test cases under one scenario¶
query all test cases under one scenario
Resource URI: edgegallery/atp/v1/testscenarios/testcases
Name |
Definition |
Type |
Required |
---|---|---|---|
scenarioids |
scenarioids |
request param |
yes |
Example request:
200 OK
"scenarioIds":["id", "id2"]
Example response:
200 OK
[
{
"id": "96a82e85-d40d-4ce5-beec-2dd1c9a3d41d",
"nameCh": "中国电信",
"nameEn": "China Telecom Scenario",
"descriptionCh": "适用于中国电信场景的测试",
"descriptionEn": "suite for China Telecom test",
"label": "China Telecom",
"testSuites": [
{
"id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
"nameCh": "沙箱测试",
"nameEn": "Sandbox Test",
"descriptionCh": "应用包部署测试",
"descriptionEn": "App package deployment test",
"scenarioIdList": [
"4d203111-1111-4f62-aabb-8ebcec357f87",
"e71718a5-864a-49e5-855a-5805a5e9f97d",
"6fe8581c-b83f-40c2-8f5b-505478f9e30b",
"96a82e85-d40d-4ce5-beec-2dd1c9a3d41d"
],
"testCases": [
{
"id": "4d203173-5555-4f62-aabb-8ebcec357f87",
"nameCh": "应用实例化",
"nameEn": "Application Instantiation",
"type": "automatic",
"descriptionCh": "将应用包部署到边缘节点",
"descriptionEn": "Instantiate application and its dependency application on one edge host",
"hashCode": "",
"codeLanguage": "jar",
"expectResultCh": "应用包可以成功部署",
"expectResultEn": "app can instantiate successfully.",
"testStepCh": "部署应用包到对应的边缘节点",
"testStepEn": "Deploy application package to edge node",
"testSuiteIdList": [
"6d04da1b-1f36-4295-920a-8074f7f9d942"
]
}
]
}
]
}
]
4. Test suite¶
test suite management
4.1 GET query all test suite¶
query all test suite
Resource URI: edgegallery/atp/v1/testsuites
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
no |
locale |
locale |
query param |
no |
scenarioIdList |
scenarioIdList |
query param |
no |
Example response:
200 OK
[
{
"id": "522684bd-d6df-4b47-aab8-b43f1b4c19c0",
"nameCh": "遵从性测试",
"nameEn": "Compliance Test",
"descriptionCh": "遵从社区APPD标准、ETSI标准对应用包结构进行校验",
"descriptionEn": "Validate app package structure according to commnunity and ETSI standard",
"scenarioIdList": [
"4d203111-1111-4f62-aabb-8ebcec357f87"
]
}
]
4.2 POST create test suite¶
create test suite
Resource URI: edgegallery/atp/v1/testsuites
Name |
Definition |
Type |
Required |
---|---|---|---|
nameCh |
nameCh |
request param |
yes |
nameEn |
nameEn |
request param |
no |
descriptionCh |
descriptionCh |
request param |
yes |
descriptionEn |
descriptionEn |
request param |
no |
scenarioIdList |
scenarioIdList |
request param |
yes |
Example response:
200 OK
{
"id": "743abd93-57a3-499d-9591-fa7db86a4778",
"nameCh": "安全性测试",
"nameEn": "Security Test",
"descriptionCh": "应用包安全测试",
"descriptionEn": "App package security test",
"scenarioIdList": [
"4d203111-1111-4f62-aabb-8ebcec357f87"
]
}
4.3 PUT update test suite¶
update test suite
Resource URI: edgegallery/atp/v1/testsuites/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
nameCh |
nameCh |
request param |
no |
nameEn |
nameEn |
request param |
no |
descriptionCh |
descriptionCh |
request param |
no |
descriptionEn |
descriptionEn |
request param |
no |
scenarioIdList |
scenarioIdList |
request param |
no |
Example response:
200 OK
{
"id": "743abd93-57a3-499d-9591-fa7db86a4778",
"nameCh": "安全性测试",
"nameEn": "Security Test",
"descriptionCh": "应用包安全测试",
"descriptionEn": "App package security test",
"scenarioIdList": [
"4d203111-1111-4f62-aabb-8ebcec357f87"
]
}
4.4 DELETE delete test suite¶
delete test suite
Resource URI: edgegallery/atp/v1/testsuites/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
true
4.5 GET query one test suite¶
query one test suite
Resource URI: edgegallery/atp/v1/testsuites/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
{
"id": "743abd93-57a3-499d-9591-fa7db86a4778",
"nameCh": "安全性测试",
"nameEn": "Security Test",
"descriptionCh": "应用包安全测试",
"descriptionEn": "App package security test",
"scenarioIdList": [
"4d203111-1111-4f62-aabb-8ebcec357f87"
]
}
5. Contribution¶
contribution
5.1 GET query all contribution¶
query all contribution
Resource URI: edgegallery/atp/v1/contributions
Example response:
200 OK
[
{
"id": "872b55f8-bfb8-4fb4-be4e-0b643ff375e2",
"name": "test",
"objective": "test",
"step": "test",
"expectResult": "test",
"type": "text",
"createTime": "2021-03-01T09:17:31.915+0000"
}
]
5.2 POST create contribution¶
create contribution
Resource URI: edgegallery/atp/v1/contributions
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
request param |
yes |
objective |
objective |
request param |
no |
step |
step |
request param |
yes |
expectResult |
expectResult |
request param |
no |
type |
type |
request param |
yes |
file |
file |
requestpart |
yes |
Example response:
200 OK
{
"id": "872b55f8-bfb8-4fb4-be4e-0b643ff375e2",
"name": "test",
"objective": "test",
"step": "test",
"expectResult": "test",
"type": "text",
"createTime": "2021-03-01T09:17:31.915+0000"
}
5.3 POST batch delete contributions¶
batch delete contributions
Resource URI: edgegallery/atp/v1/contributions/batch_delete
Name |
Definition |
Type |
Required |
---|---|---|---|
ids |
ids |
request param |
yes |
Example request:
{
"ids":["id1","id2"]
}
Example response:
200 OK
{
"failed":["id3"]
}
5.4 GET download contribution script¶
download contribution script
Resource URI: edgegallery/atp/v1/contributions/{id}/action/download
Name | Definition | Type | Required |
---|---|---|---|
id | id | path param | yes |
Example response:
200 OK
binary stream
6. File¶
file
6.1 GET query one file¶
query one file
Resource URI: edgegallery/atp/v1/files/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
type |
type |
query param |
no |
Example response:
200 OK
binary stream
7. Test model¶
test model
7.1 POST import test model¶
import test model
Resource URI: edgegallery/atp/v1/testmodels/action/import
Name |
Definition |
Type |
Required |
---|---|---|---|
file |
file |
request param |
yes |
Example response:
200 OK
{
"retCode" : 0
"failures" : []
}
206 partial success
{
"retCode" : 5000,
"failures" : [{
"id" : "string",
"nameEn" : "string",
"type" : "testScenario",
"errCode": 1000,
"errMsg": “string”,
"params": "string"
},
{
"id" : "string",
"nameEn" : "string",
"type" : "testSuite",
"errCode": 1000,
"errMsg": “string”,
"params": "string"
},
{
"id" : "string",
"nameEn" : "string",
"type" : "testCase",
"errCode": 1000,
"errMsg": “string”,
"params": "string"
}
]
}
8. Configuration¶
config
8.1 POST create config¶
create config
Resource URI: edgegallery/atp/v2/configs
Example request:
{
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;"
}
Example response:
200 OK
{
"data":{
"id":"uuid",
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;",
"createTime":""
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1",
"param2"
]
}
8.2 PUT update config¶
update config
Resource URI: edgegallery/atp/v2/configs/{id}
Example request:
{
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;"
}
Example response:
200 OK
{
"data":{
"id":"uuid",
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;",
"createTime":""
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1",
"param2"
]
}
8.3 DELETE delete config¶
delete config
Resource URI: edgegallery/atp/v2/configs/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example request:
NA
Example response:
200 OK
true
8.4 GET query one config¶
query one config
Resource URI: edgegallery/atp/v2/configs/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example request:
NA
Example response:
200 OK
{
"data":{
"id":"uuid",
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;",
"createTime":""
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1",
"param2"
]
}
8.5 GET query all configs¶
query all configs
Resource URI: edgegallery/atp/v2/configs?limit=10&offset=0
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
no |
locale |
locale |
query param |
no |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example request:
NA
Example response:
200 OK
{
"results":[
{
"id":"uuid",
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;",
"createTime":""
}
],
"total":1,
"limit":10,
"offset":0
}
atp v2 Interfaces¶
1. Task¶
Test task for application package
1.1 POST create test task¶
create test task for application package.
Resource URI: /edgegallery/atp/v2/tasks
Name |
Definition |
Type |
Required |
---|---|---|---|
file |
file |
requestpart |
yes |
Example response:
200 OK
{
"data":{
"id":"",
"packagePath":"",
"appName":"",
"appVersion":"",
"providerId":"",
"status":"",
"createTime":123456789,
"user":{
"userId":"",
"userName":""
}
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1",
"param2"
]
}
1.2 POST run test task¶
Run test task by taskId
Resource URI: /edgegallery/atp/v2/tasks/{taskId}/action/run
Name |
Definition |
Type |
Required |
---|---|---|---|
taskId |
taskId |
path param |
yes |
scenarioIdList |
scenarioIdList |
request param |
yes |
Example response:
200 OK
{
"data":{
"id":"8ac6e62d-1d20-4193-942e-ece6deff5e4e",
"appName":"monitor-service",
"appVersion":"1.0",
"status":"running",
"createTime":"2021-03-01T02:42:29.306+0000",
"endTime":"2021-03-01T02:43:03.943+0000",
"reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
"user":{
"userId":"4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
"userName":"atp"
},
"providerId":"Huawei",
"testScenarios":[
{
"id":"e71718a5-864a-49e5-855a-5805a5e9f97d",
"nameCh":"中国联通",
"nameEn":"China Unicom Scenario",
"label":"China Unicom",
"testSuites":[
{
"id":"6d04da1b-1f36-4295-920a-8074f7f9d942",
"nameCh":"沙箱测试",
"nameEn":"Sandbox Test",
"testCases":[
{
"id":"4d203173-5555-4f62-aabb-8ebcec357f87",
"nameCh":"应用实例化",
"nameEn":"Application Instantiation",
"descriptionCh":"将应用包部署到边缘节点",
"descriptionEn":"Instantiate application and its dependency application on one edge host",
"type":"automatic",
"result":"failed",
"reason":"host ip is empty"
}
]
}
]
}
]
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
1.3 GET get task list¶
download one plugin
Resource URI: /edgegallery/atp/v2/tasks?limit=10&offset=0
Name |
Definition |
Type |
Required |
---|---|---|---|
appName |
appName |
query param |
no |
status |
status |
query param |
no |
appVersion |
appVersion |
query param |
no |
providerId |
providerId |
query param |
no |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example response:
200 OK
{
"results":[
{
"id":"8ac6e62d-1d20-4193-942e-ece6deff5e4e",
"appName":"monitor-service",
"appVersion":"1.0",
"status":"running",
"createTime":"2021-03-01T02:42:29.306+0000",
"endTime":"2021-03-01T02:43:03.943+0000",
"reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
"user":{
"userId":"4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
"userName":"atp"
},
"providerId":"Huawei",
"testScenarios":[
{
"id":"e71718a5-864a-49e5-855a-5805a5e9f97d",
"nameCh":"中国联通",
"nameEn":"China Unicom Scenario",
"label":"China Unicom",
"testSuites":[
{
"id":"6d04da1b-1f36-4295-920a-8074f7f9d942",
"nameCh":"沙箱测试",
"nameEn":"Sandbox Test",
"testCases":[
{
"id":"4d203173-5555-4f62-aabb-8ebcec357f87",
"nameCh":"应用实例化",
"nameEn":"Application Instantiation",
"descriptionCh":"将应用包部署到边缘节点",
"descriptionEn":"Instantiate application and its dependency application on one edge host",
"type":"automatic",
"result":"failed",
"reason":"host ip is empty"
}
]
}
]
}
]
}
],
"total":1,
"limit":10,
"offset":0
}
1.4 GET get one task¶
get task by taskId
Resource URI: /edgegallery/atp/v2/tasks/{taskId}
Name |
Definition |
Type |
Required |
---|---|---|---|
taskId |
taskId |
path param |
yes |
Example response:
200 OK
{
"data":{
"id":"8ac6e62d-1d20-4193-942e-ece6deff5e4e",
"appName":"monitor-service",
"appVersion":"1.0",
"status":"running",
"createTime":"2021-03-01T02:42:29.306+0000",
"endTime":"2021-03-01T02:43:03.943+0000",
"reportPath":"/report/68016a29-75da-4f3e-aa00-42ed731dbc3f.pdf",
"user":{
"userId":"4eed814b-5d29-4e4c-ba73-51fc6db4ed86",
"userName":"atp"
},
"providerId":"Huawei",
"testScenarios":[
{
"id":"e71718a5-864a-49e5-855a-5805a5e9f97d",
"nameCh":"中国联通",
"nameEn":"China Unicom Scenario",
"label":"China Unicom",
"testSuites":[
{
"id":"6d04da1b-1f36-4295-920a-8074f7f9d942",
"nameCh":"沙箱测试",
"nameEn":"Sandbox Test",
"testCases":[
{
"id":"4d203173-5555-4f62-aabb-8ebcec357f87",
"nameCh":"应用实例化",
"nameEn":"Application Instantiation",
"descriptionCh":"将应用包部署到边缘节点",
"descriptionEn":"Instantiate application and its dependency application on one edge host",
"type":"automatic",
"result":"failed",
"reason":"host ip is empty"
}
]
}
]
}
]
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
1.5 PUT modify test case status¶
modify manual test case status
Resource URI: edgegallery/atp/v2/tasks/{taskId}/testcase
Name |
Definition |
Type |
Required |
---|---|---|---|
taskId |
taskId |
path param |
yes |
Example request:
[{
"testScenarioId":"",
"testSuiteId":"",
"testCaseId":"",
"result":"" ,
"reason":""
}]
Example response:
true
1.6 POST batch delete test tasks¶
batch delete test tasks
Resource URI: edgegallery/atp/v2/tasks/batch_delete
Example request:
{
"taskIds":["id1","id2"]
}
Example response:
{
"retCode":5000,
"failures":[
{
"id":"string",
"errCode":11111,
"message":"string",
"params":[
"string"
]
}
]
}
1.7 GET get test tasks analysis¶
get test tasks analysis
Resource URI: edgegallery/atp/v2/tasks/action/analysize
Example response:
200 OK
{
"data":{
"total":426,
"currentMonth":11,
"oneMonthAgo":111,
"twoMonthAgo":12,
"threeMonthAgo":13,
"fourMonthAgo":14,
"fiveMonthAgo":15
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
1.8 DELETE delete one test task¶
delete one test task
Resource URI: edgegallery/atp/v2/tasks/{taskId}
Example response:
true
1.9 POST upload self test report¶
upload self test report
Resource URI: edgegallery/atp/v2/tasks/{taskId}/action/upload-report
Example request:
{
file: file
}
Example response:
{
"data":{
"path":"reportPath"
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1“
]
}
2. Test case¶
test cases of csar package
2.1 GET query all test cases¶
query all test cases
Resource URI: /edgegallery/atp/v2/testcases?limit=10&offset=0
Name |
Definition |
Type |
Required |
---|---|---|---|
type |
type |
query param |
no |
name |
name |
query param |
no |
locale |
locale |
query param |
no |
testSuiteIdList |
testSuiteIdList |
query param |
no |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example response:
200 OK
{
"results":[
{
"id":"4d203173-9999-4f62-aabb-8ebcec357f87",
"nameCh":"APPD文件目录校验",
"nameEn":"APPD File Dir Validation",
"type":"automatic",
"descriptionCh":"根目录下必须包含APPD文件目录",
"descriptionEn":"Root directory must contain APPD file dir",
"hashCode":"",
"codeLanguage":"java",
"expectResultCh":"根目录下存在APPD文件目录",
"expectResultEn":"Root directory contains APPD file dir",
"testStepCh":"1.打开csar包 2.校验根目录下存在APPD目录",
"testStepEn":"1.open csar package 2.validate root directory contains APPD directory",
"testSuiteIdList":[
"522684bd-d6df-4b47-aab8-b43f1b4c19c0"
],
"configIdList":[
"522684bd-9999-4b47-aab8-b43f1b4c19c0"
]
}
],
"total":1,
"limit":10,
"offset":0
}
2.2 POST create test case¶
create test case
Resource URI: /edgegallery/atp/v2/testcases
Name |
Definition |
Type |
Required |
---|---|---|---|
nameCh |
nameCh |
request param |
yes |
nameEn |
nameEn |
request param |
no |
type |
type |
request param |
yes |
descriptionCh |
descriptionCh |
request param |
yes |
descriptionEn |
descriptionEn |
request param |
no |
codeLanguage |
codeLanguage |
request param |
yes |
expectResultCh |
expectResultCh |
request param |
yes |
expectResultEn |
expectResultEn |
request param |
no |
testSuiteIdList |
testSuiteIdList |
request param |
yes |
testStepCh |
testStepCh |
request param |
yes |
testStepEn |
testStepEn |
request param |
no |
file |
file |
request part |
yes |
configIdList |
configIdList |
request param |
no |
Example response:
200 OK
{
"data":{
"id":"4d203173-9999-4f62-aabb-8ebcec357f87",
"nameCh":"APPD文件目录校验",
"nameEn":"APPD File Dir Validation",
"type":"automatic",
"descriptionCh":"根目录下必须包含APPD文件目录",
"descriptionEn":"Root directory must contain APPD file dir",
"hashCode":"",
"codeLanguage":"java",
"expectResultCh":"根目录下存在APPD文件目录",
"expectResultEn":"Root directory contains APPD file dir",
"testStepCh":"1.打开csar包 2.校验根目录下存在APPD目录",
"testStepEn":"1.open csar package 2.validate root directory contains APPD directory",
"testSuiteIdList":[
"522684bd-d6df-4b47-aab8-b43f1b4c19c0"
],
"configIdList":[
"522684bd-9999-4b47-aab8-b43f1b4c19c0"
]
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
2.3 PUT update test case¶
update test case
Resource URI: /edgegallery/atp/v2/testcases
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
request param |
yes |
type |
type |
request param |
no |
descriptionCh |
descriptionCh |
request param |
no |
descriptionEn |
descriptionEn |
request param |
no |
codeLanguage |
codeLanguage |
request param |
no |
expectResultCh |
expectResultCh |
request param |
no |
expectResultEn |
expectResultEn |
request param |
no |
testSuiteIdList |
testSuiteIdList |
request param |
no |
testStepCh |
testStepCh |
request param |
no |
testStepEn |
testStepEn |
request param |
no |
file |
file |
request part |
no |
configIdList |
configIdList |
request param |
no |
Example response:
200 OK
{
"data":{
"id":"4d203173-9999-4f62-aabb-8ebcec357f87",
"nameCh":"APPD文件目录校验",
"nameEn":"APPD File Dir Validation",
"type":"automatic",
"descriptionCh":"根目录下必须包含APPD文件目录",
"descriptionEn":"Root directory must contain APPD file dir",
"hashCode":"",
"codeLanguage":"java",
"expectResultCh":"根目录下存在APPD文件目录",
"expectResultEn":"Root directory contains APPD file dir",
"testStepCh":"1.打开csar包 2.校验根目录下存在APPD目录",
"testStepEn":"1.open csar package 2.validate root directory contains APPD directory",
"testSuiteIdList":[
"522684bd-d6df-4b47-aab8-b43f1b4c19c0"
],
"configIdList":[
"522684bd-9999-4b47-aab8-b43f1b4c19c0"
]
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
2.4 DELETE delete test case¶
delete test case
Resource URI: /edgegallery/atp/v2/testcases/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
true
2.5 GET query one test case¶
query one test case
Resource URI: /edgegallery/atp/v2/testcases/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
{
"data":{
"id":"4d203173-9999-4f62-aabb-8ebcec357f87",
"nameCh":"APPD文件目录校验",
"nameEn":"APPD File Dir Validation",
"type":"automatic",
"descriptionCh":"根目录下必须包含APPD文件目录",
"descriptionEn":"Root directory must contain APPD file dir",
"hashCode":"",
"codeLanguage":"java",
"expectResultCh":"根目录下存在APPD文件目录",
"expectResultEn":"Root directory contains APPD file dir",
"testStepCh":"1.打开csar包 2.校验根目录下存在APPD目录",
"testStepEn":"1.open csar package 2.validate root directory contains APPD directory",
"testSuiteIdList":[
"522684bd-d6df-4b47-aab8-b43f1b4c19c0"
],
"configIdList":[
"522684bd-9999-4b47-aab8-b43f1b4c19c0"
]
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
2.6 GET download test case¶
download test case
Resource URI: edgegallery/atp/v2/testcases/{id}/action/download
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
binary stream
3. Test scenario¶
test scenario management
3.1 GET query all test scenarios¶
query all test scenarios
Resource URI: edgegallery/atp/v2/testscenarios?limit=10&offset=0
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
no |
locale |
locale |
query param |
no |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example response:
200 OK
{
"results":[
{
"id":"4d203111-1111-4f62-aabb-8ebcec357f87",
"nameCh":"社区场景",
"nameEn":"EdgeGallery Community Scenario",
"descriptionCh":"适用于社区场景的测试",
"descriptionEn":"suite for EdgeGallery community test",
"label":"EdgeGallery"
}
],
"total":1,
"limit":10,
"offset":0
}
3.2 POST create test scenario¶
create test scenario
Resource URI: edgegallery/atp/v2/testscenarios
Name |
Definition |
Type |
Required |
---|---|---|---|
nameCh |
nameCh |
request param |
yes |
nameEn |
nameEn |
request param |
no |
descriptionCh |
descriptionCh |
request param |
yes |
descriptionEn |
descriptionEn |
request param |
no |
label |
label |
request param |
yes |
icon |
icon |
request part |
yes |
Example response:
200 OK
{
"data":{
"id":"4d203111-1111-4f62-aabb-8ebcec357f87",
"nameCh":"社区场景",
"nameEn":"EdgeGallery Community Scenario",
"descriptionCh":"适用于社区场景的测试",
"descriptionEn":"suite for EdgeGallery community test",
"label":"EdgeGallery"
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
3.3 PUT update test scenario¶
update test scenario
Resource URI: edgegallery/atp/v2/testscenarios/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
nameCh |
nameCh |
request param |
no |
nameEn |
nameEn |
request param |
no |
descriptionCh |
descriptionCh |
request param |
no |
descriptionEn |
descriptionEn |
request param |
no |
label |
label |
request param |
no |
icon |
icon |
request part |
no |
Example response:
200 OK
{
"data":{
"id":"4d203111-1111-4f62-aabb-8ebcec357f87",
"nameCh":"社区场景",
"nameEn":"EdgeGallery Community Scenario",
"descriptionCh":"适用于社区场景的测试",
"descriptionEn":"suite for EdgeGallery community test",
"label":"EdgeGallery"
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
3.4 DELETE delete test scenario¶
delete test scenario
Resource URI: edgegallery/atp/v2/testscenarios/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
true
3.5 GET query one test scenario¶
query one test scenario
Resource URI: edgegallery/atp/v2/testscenarios/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
{
"data":{
"id":"4d203111-1111-4f62-aabb-8ebcec357f87",
"nameCh":"社区场景",
"nameEn":"EdgeGallery Community Scenario",
"descriptionCh":"适用于社区场景的测试",
"descriptionEn":"suite for EdgeGallery community test",
"label":"EdgeGallery"
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
3.6 GET query all test cases under one scenario¶
query all test cases under one scenario
Resource URI: edgegallery/atp/v2/testscenarios/testcases
Name |
Definition |
Type |
Required |
---|---|---|---|
scenarioids |
scenarioids |
request param |
yes |
Example request:
200 OK
"scenarioIds":["id", "id2"]
Example response:
200 OK
[
{
"id": "96a82e85-d40d-4ce5-beec-2dd1c9a3d41d",
"nameCh": "中国电信",
"nameEn": "China Telecom Scenario",
"descriptionCh": "适用于中国电信场景的测试",
"descriptionEn": "suite for China Telecom test",
"label": "China Telecom",
"testSuites": [
{
"id": "6d04da1b-1f36-4295-920a-8074f7f9d942",
"nameCh": "沙箱测试",
"nameEn": "Sandbox Test",
"descriptionCh": "应用包部署测试",
"descriptionEn": "App package deployment test",
"scenarioIdList": [
"4d203111-1111-4f62-aabb-8ebcec357f87",
"e71718a5-864a-49e5-855a-5805a5e9f97d",
"6fe8581c-b83f-40c2-8f5b-505478f9e30b",
"96a82e85-d40d-4ce5-beec-2dd1c9a3d41d"
],
"testCases": [
{
"id": "4d203173-5555-4f62-aabb-8ebcec357f87",
"nameCh": "应用实例化",
"nameEn": "Application Instantiation",
"type": "automatic",
"descriptionCh": "将应用包部署到边缘节点",
"descriptionEn": "Instantiate application and its dependency application on one edge host",
"hashCode": "",
"codeLanguage": "jar",
"expectResultCh": "应用包可以成功部署",
"expectResultEn": "app can instantiate successfully.",
"testStepCh": "部署应用包到对应的边缘节点",
"testStepEn": "Deploy application package to edge node",
"testSuiteIdList": [
"6d04da1b-1f36-4295-920a-8074f7f9d942"
]
}
]
}
]
}
]
4. Test suite¶
test suite management
4.1 GET query all test suite¶
query all test suite
Resource URI: edgegallery/atp/v2/testsuites?limit=10&offset=0
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
no |
locale |
locale |
query param |
no |
scenarioIdList |
scenarioIdList |
query param |
no |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example response:
200 OK
{
"results":[
{
"id":"522684bd-d6df-4b47-aab8-b43f1b4c19c0",
"nameCh":"遵从性测试",
"nameEn":"Compliance Test",
"descriptionCh":"遵从社区APPD标准、ETSI标准对应用包结构进行校验",
"descriptionEn":"Validate app package structure according to commnunity and ETSI standard",
"scenarioIdList":[
"4d203111-1111-4f62-aabb-8ebcec357f87"
]
}
],
"total":1,
"limit":10,
"offset":0
}
4.2 POST create test suite¶
create test suite
Resource URI: edgegallery/atp/v2/testsuites
Name |
Definition |
Type |
Required |
---|---|---|---|
nameCh |
nameCh |
request param |
yes |
nameEn |
nameEn |
request param |
no |
descriptionCh |
descriptionCh |
request param |
yes |
descriptionEn |
descriptionEn |
request param |
no |
scenarioIdList |
scenarioIdList |
request param |
yes |
Example response:
200 OK
{
"data":{
"id":"743abd93-57a3-499d-9591-fa7db86a4778",
"nameCh":"安全性测试",
"nameEn":"Security Test",
"descriptionCh":"应用包安全测试",
"descriptionEn":"App package security test",
"scenarioIdList":[
"4d203111-1111-4f62-aabb-8ebcec357f87"
]
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
4.3 PUT update test suite¶
update test suite
Resource URI: edgegallery/atp/v2/testsuites/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
nameCh |
nameCh |
request param |
no |
nameEn |
nameEn |
request param |
no |
descriptionCh |
descriptionCh |
request param |
no |
descriptionEn |
descriptionEn |
request param |
no |
scenarioIdList |
scenarioIdList |
request param |
no |
Example response:
200 OK
{
"data":{
"id":"743abd93-57a3-499d-9591-fa7db86a4778",
"nameCh":"安全性测试",
"nameEn":"Security Test",
"descriptionCh":"应用包安全测试",
"descriptionEn":"App package security test",
"scenarioIdList":[
"4d203111-1111-4f62-aabb-8ebcec357f87"
]
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
4.4 DELETE delete test suite¶
delete test suite
Resource URI: edgegallery/atp/v2/testsuites/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
true
4.5 GET query one test suite¶
query one test suite
Resource URI: edgegallery/atp/v2/testsuites/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response:
200 OK
{
"data":{
"id":"743abd93-57a3-499d-9591-fa7db86a4778",
"nameCh":"安全性测试",
"nameEn":"Security Test",
"descriptionCh":"应用包安全测试",
"descriptionEn":"App package security test",
"scenarioIdList":[
"4d203111-1111-4f62-aabb-8ebcec357f87"
]
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
5. Contribution¶
contribution
5.1 GET query all contribution¶
query all contribution
Resource URI: edgegallery/atp/v2/contributions?limit=10&offset=0
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
no |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example response:
200 OK
{
"results":[
{
"id":"872b55f8-bfb8-4fb4-be4e-0b643ff375e2",
"name":"test",
"objective":"test",
"step":"test",
"expectResult":"test",
"type":"text",
"createTime":"2021-03-01T09:17:31.915+0000"
}
],
"total":1,
"limit":10,
"offset":0
}
5.2 POST create contribution¶
create contribution
Resource URI: edgegallery/atp/v2/contributions
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
request param |
yes |
objective |
objective |
request param |
no |
step |
step |
request param |
yes |
expectResult |
expectResult |
request param |
no |
type |
type |
request param |
yes |
file |
file |
requestpart |
yes |
Example response:
200 OK
{
"data":{
"id":"872b55f8-bfb8-4fb4-be4e-0b643ff375e2",
"name":"test",
"objective":"test",
"step":"test",
"expectResult":"test",
"type":"text",
"createTime":"2021-03-01T09:17:31.915+0000"
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1"
]
}
5.3 POST batch delete contributions¶
batch delete contributions
Resource URI: edgegallery/atp/v2/contributions/batch_delete
Name |
Definition |
Type |
Required |
---|---|---|---|
ids |
ids |
request param |
yes |
Example request:
{
"ids":["id1","id2"]
}
Example response:
200 OK
{
"retCode":5000,
"failures":[
{
"id":"string",
"errCode":11111,
"message":"string",
"params":[
"string"
]
}
]
}
5.4 GET download contribution script¶
download contribution script
Resource URI: edgegallery/atp/v2/contributions/{id}/action/download
Name | Definition | Type | Required |
---|---|---|---|
id | id | path param | yes |
Example response:
200 OK
binary stream
6. File¶
file
6.1 GET query one file¶
query one file
Resource URI: edgegallery/atp/v2/files/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
type |
type |
query param |
no |
Example response:
200 OK
binary stream
7. Test model¶
test model
7.1 POST import test model¶
import test model
Resource URI: edgegallery/atp/v2/testmodels/action/import
Name |
Definition |
Type |
Required |
---|---|---|---|
file |
file |
request param |
yes |
Example response:
200 OK
{
"retCode" : 0
"failures" : []
}
206 partial success
{
"retCode" : 5000,
"failures" : [{
"id" : "string",
"nameEn" : "string",
"type" : "testScenario",
"errCode": 1000,
"errMsg": “string”,
"params": "string"
},
{
"id" : "string",
"nameEn" : "string",
"type" : "testSuite",
"errCode": 1000,
"errMsg": “string”,
"params": "string"
},
{
"id" : "string",
"nameEn" : "string",
"type" : "testCase",
"errCode": 1000,
"errMsg": “string”,
"params": "string"
}
]
}
8. Configuration¶
config
8.1 POST create config¶
create config
Resource URI: edgegallery/atp/v2/configs
Example request:
{
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;"
}
Example response:
200 OK
{
"data":{
"id":"uuid",
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;",
"createTime":""
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1",
"param2"
]
}
8.2 PUT update config¶
update config
Resource URI: edgegallery/atp/v2/configs/{id}
Example request:
{
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;"
}
Example response:
200 OK
{
"data":{
"id":"uuid",
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;",
"createTime":""
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1",
"param2"
]
}
8.3 DELETE delete config¶
delete config
Resource URI: edgegallery/atp/v2/configs/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example request:
NA
Example response:
200 OK
true
8.4 GET query one config¶
query one config
Resource URI: edgegallery/atp/v2/configs/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example request:
NA
Example response:
200 OK
{
"data":{
"id":"uuid",
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;",
"createTime":""
},
"retCode":0,
"message":"errorMsg",
"params":[
"param1",
"param2"
]
}
8.5 GET query all configs¶
query all configs
Resource URI: edgegallery/atp/v2/configs?limit=10&offset=0
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
no |
locale |
locale |
query param |
no |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example request:
NA
Example response:
200 OK
{
"results":[
{
"id":"uuid",
"nameCh":"虚机应用实例化",
"nameEn":"Instantiation for vm app",
"descriptionCh":"配置虚机应用实例化所需参数",
"descriptionEn":"Configure params for instantiation of vm app",
"configuration":"DC_ID = FS+M;az_dc=nova;",
"createTime":""
}
],
"total":1,
"limit":10,
"offset":0
}
Database design¶
In the V1.3 version, compared with the v1.2 version, the database table TEST_CASE_TABLE has a new configIdList field, and the table TASK_TABLE has a new field reportPath. The following SQL statements need to be executed in the above two database tables: alter table TEST_CASE_TABLE add column configIdList TEXT NULL ; alter table TASK_TABLE add column reportPath varchar(200) NULL;
Adding DB table CONFIG_TABLE, and creating table info can be seen below.
The ATP database uses open-source PostgreSQL databases with a recommended version of 12.2.The database tables are currently designed and applied are as follows:
TABLE TASK_TABLE: Storage test task information
CREATE TABLE TASK_TABLE (
ID VARCHAR(200) NOT NULL,
APPNAME VARCHAR(200) NULL,
APPVERSION VARCHAR(200) NULL,
STATUS VARCHAR(200) NULL,
TESTCASEDETAIL TEXT NULL,
CREATETIME TIMESTAMP NULL,
ENDTIME TIMESTAMP NULL,
PROVIDERID VARCHAR(200) NULL,
PACKAGEPATH VARCHAR(200) NULL,
USERID VARCHAR(200) NULL,
USERNAME VARCHAR(200) NULL,
REPORTPATH VARCHAR(200) NULL,
CONSTRAINT task_table_pkey PRIMARY KEY (ID)
);
TEST_CASE_TABLE: Storage test case information
CREATE TABLE TEST_CASE_TABLE (
ID VARCHAR(200) NOT NULL,
NAMECH VARCHAR(200) NULL,
NAMEEN VARCHAR(200) NULL,
TYPE VARCHAR(200) NULL,
CLASSNAME VARCHAR(200) NULL,
HASHCODE TEXT NULL,
DESCRIPTIONCH TEXT NULL,
DESCRIPTIONEN TEXT NULL,
FILEPATH VARCHAR(200) NULL,
CODELANGUAGE VARCHAR(200) NULL,
EXPECTRESULTCH VARCHAR(200) NULL,
EXPECTRESULTEN VARCHAR(200) NULL,
TESTSUITEIDLIST TEXT NULL,
TESTSTEPCH TEXT NULL,
TESTSTEPEN TEXT NULL,
CREATETIME TIMESTAMP NULL,
CONFIGIDLIST TEXT NULL,
CONSTRAINT test_case_table_pkey PRIMARY KEY (ID)
);
TEST_SCENARIO_TABLE: Storage test scene information
CREATE TABLE TEST_SCENARIO_TABLE (
ID VARCHAR(200) NOT NULL,
NAMECH VARCHAR(200) NULL,
NAMEEN VARCHAR(200) NULL,
DESCRIPTIONCh TEXT NULL,
DESCRIPTIONEN TEXT NULL,
LABEL VARCHAR(200) NULL,
CREATETIME TIMESTAMP NULL,
CONSTRAINT test_scenario_table_pkey PRIMARY KEY (ID)
);
TEST_SUITE_TABLE: Storage test suite information
CREATE TABLE TEST_SUITE_TABLE (
ID VARCHAR(200) NOT NULL,
NAMECH VARCHAR(200) NULL,
NAMEEN VARCHAR(200) NULL,
DESCRIPTIONCh TEXT NULL,
DESCRIPTIONEN TEXT NULL,
SCENARIOIDLIST VARCHAR(255) NULL,
CREATETIME TIMESTAMP NULL,
CONSTRAINT test_suite_table_pkey PRIMARY KEY (ID)
);
FILE_TABLE: stores icon document information
CREATE TABLE FILE_TABLE (
FILEID VARCHAR(200) NOT NULL,
TYPE VARCHAR(200) NOT NULL,
CREATETIME TIMESTAMP NULL,
FILEPATH VARCHAR(200) NULL
);
alter table FILE_TABLE add constraint file_table_pkey unique(FILEID,TYPE);
CONTRIBUTION_TABLE: Storage contribution test case information
CREATE TABLE CONTRIBUTION_TABLE (
ID VARCHAR(200) NOT NULL,
NAME VARCHAR(200) NULL,
OBJECTIVE VARCHAR(200) NULL,
STEP TEXT NULL,
EXPECTRESULT TEXT NULL,
TYPE VARCHAR(255) NULL,
CREATETIME TIMESTAMP NULL,
FILEPATH VARCHAR(200) NULL,
CONSTRAINT contribution_table_pkey PRIMARY KEY (ID)
);
CONFIG_TABLE: Storage config item information
CREATE TABLE CONFIG_TABLE (
ID VARCHAR(200) NOT NULL,
NAMECH VARCHAR(200) NULL,
NAMEEN VARCHAR(200) NULL,
DESCRIPTIONCh TEXT NULL,
DESCRIPTIONEN TEXT NULL,
CONFIGURATION TEXT NOT NULL,
CREATETIME TIMESTAMP NULL,
CONSTRAINT config_table_pkey PRIMARY KEY (ID)
);
ATP Contribution¶
Building a local development environment¶
This article will guide users on how to build the atp and atp-fe modules locally, helping developers to quickly understand, develop code.
The local activation of the atp depends on:
- Service Center
- DataBase
- UserManagement
where the local activation of atp-fe depends on:
- WebsiteGateway
- UserManagement
- atp
So in order to build a local development environment, the final start sequence is Service Center->DataBase->UserManagement->atp->WebsiteGateway (atp-fe)
Service Center¶
1.Download Service Center
2.Run the start-service-center.bat and start-frontend.bat after decompression
DataBase¶
1.Download, install, start Postgresql latest version
2.setting the login name and password, such as postgresql/root
3.Create a database called atpdb
4.Create table structure based on database statement in atp deployment document
5.Create a database called usermgmtdb
6.Create table structure based on database statement in usermgmt deployment document
UserManagement¶
1.download the user-mgmt-be code and user-mgmt-fe code
2.install node.js and npm, enter the user-mgmt-fe folder, run npm install
and npm run build
3.create a static folder in the src/main/resources/ folder in user-mgmt-be
4.copy the contents in the dist folder compiled by user-mgmt-fe into the static folder of user-mgmt-be
5.Configure runtime environment variables for MainServer in the compiler (where IDEA is used as an example)
6.Run the MainServer function, start UserManagement
atp¶
1.download the atp code
2.configuring the runtime environment variable for atpApp in the compiler (where IDEA is used as an example)
3.run atpApp function, start atp
atp-fe¶
1.Download the atp-fe code
2.enter the atp-fe folder, run npm install
and npm run build
3.download the website-gateway code
4.Create a static folder in the src/main/resources/ folder on website-gateway
5.copy the contents in the dist folder compiled by the atp-fe to the static folder of website-gateway
6.Modify the server.port
in the /src/main/resources/application.yaml document in the website-gateway
8080 `
7.Configuring runtime environment variables for GatewayApp in the compiler (where IDEA is used as an example)
8.Run GatewayApp Launch WebiteGateway and atp-fe, browser access to http://127.0.0.1:8080/ to access the atp homepage
ATP Guide¶
Overview¶
The application test authentication service is currently divided into management side functions and user plane functions.
On the management side, administrators can manage test scenarios, test suites, test cases, test tasks, contributed test cases and config item. The menu for contribution management is visible only to the administrator. The platform has built-in community scenarios and 3 sample operator scenarios. For community scenarios, the platform has built-in general security test test suites, general compliance test test suites, and general sandbox test test suites. There are corresponding test cases under each test suite. The platform supports one-click batch import of test models to facilitate the addition of batch test models. For test tasks with manual use cases, the administrator can manually change the test case status in the background to complete the update of the manual test case status.
For developers, after the developer platform develops app, the generated csars package will not be published to the app store until after the application test is passed. For suppliers or manufacturers who already have an application package, the app can be released to the app store after the app has been uploaded. The user can select the scene to be tested, wherein the community scene is selected and then the system dynamically displays the execution process of the test case. When the test is complete, a test report is generated and an analysis of the test results is given and the user can download the test report in pdf format. User can finish the contribution to the test case by filling the description of the test case or the way of uploading the script.
Admin Face Home¶
You can directly click on the homepage to view all test cases. The homepage also introduces the functions of each menu module and displays the statistics of the number of test tasks in the past 6 months.
Management side test scene management¶
The test scene page displays all the test scenarios that the platform contains, the administrator can add the test scene, edit the existing test scene, and delete the existing test scene.
Management side test suite management¶
The test suite page displays all the test suites that the platform contains, one test suite belonging to one or more test scenarios and the administrator can add test suites, edit existing test suites and delete already existing test suites.
Management side test case management¶
The test case page display platform includes all test cases, one test case belongs to one or more test suites, the administrator can add test cases, edit existing test cases and also delete existing test cases.
One-click import of management plane test models.¶
In order to facilitate the administrator to import test scenarios, test suites and test cases in batches, the management plane provides a test model import function. The administrator can write the description of the test scenarios, test suites and test cases in the excel sheet, and put the test case scripts and test scenario icons in the specified folder, and finally compress them into a zip package, and complete the test by importing the zip package Model batch import function. The administrator can complete the batch import function of test models in the batch import button on the upper right corner of the test scenario page, test suite page or test case page.
Management side test mission management¶
The task management shows all the test tasks and the administrator can delete the test task in bulk or modify the state of the manual use case.
Management side config item management¶
Configuration item management displays all configuration item information. Each configuration item can be associated with one or more test cases, making test case parameters configurable and more flexible.
App Store Test Credentials Portal¶
After uploading the application package on the homepage of the application store, in my application, click Test on the right side of the corresponding application package to enter the application testing process.
Test Scene Selection & Test Use Case Contribution¶
The user can choose the scene that wants to be tested, the community scene is mandatory and the rest of the scene is chosen by the user according to the needs of the user. The upper right side of the page is provided with an inlet for contributing test case, click test case, and supporting the user to contribute test case in the way of description or script.
Test Progress Visualization & Supporting user upload self-test report & Report Look¶
The test progress page dynamically displays the execution condition of the use case, and all test cases of the automation type are automatically executed;
If users have unique tests related to the application, they can upload self-test report in PDF format. If the user uploads the self-test report, the final test report will display the self-test report and the platform report together.
The report page displays the basic information of the test task, the test case pass rate of each test scene and the detailed information of the test case.
Developer¶
Developer Overview¶
This is a consolidated entrance for open source developers, which includes development processes, development tools, open API capabilities, integrated test validation, developer exchange forums, and so on. This facilitates a faster development of applications and integration of the same into the edgegallery platform for the developers. The Developer has a backend division, which provides main function interface or other three way system call for the frontend, which is a front-desk that provides interface display.
Architecture Design¶
Developer-fe Developer Platform frontend framework, developed using VUE.
Developer-be Developer Platform Backend framework, developed using SpringBoot and ServiceComb. (For ServiceComb, please refer to this here: https://servicecomb.apache.org/
Developer DB Backend depends on Postgres database.
Deployment View¶
The above deployment views are designed in accordance with K8S deployment and can be initiated directly in virtual machines or docker containers during actual deployment, with the following points to be noted during the deployment process:
Developer-FE, Developer-BE needs to be registered to the ServiceCenter. Please refer to: https://servicecomb.apache.org/
Chrome browser is recommended
Developer Feature List¶
Feature Name |
Feature Description |
Design Constraints |
---|---|---|
Toolbox |
The App development tools that are available to developers can be downloaded and used by developers, and it is also available for community developers. |
|
Competence Center |
Shows all the capabilities provided by the developer platform, including the capabilities provided by the platform itself, and the capabilities shared by other developers to this platform to develop and deploy projects. |
|
Application incubation |
Application incubation is a project management platform provided to developers. Developers can create projects to complete the entire process of App development-testing-release. It supports deployment and debugging of container and virtual machine applications |
|
System Management |
The system menu is a management menu provided to the administrator and this is primarily responsible for testing the management of sandboxes and capacity centres (services) |
Document¶
The document menu includes an introduction to the platform, development tools, and presentations on how to publish competencies to the developer platform.
Competence Center¶
Competence center displays all the capabilities of Developer Platform (the ability of developers to share and the ability of the platform itself). It also contains detailed API description documents for developers to see, simulate, experience online.
Application incubation¶
Developers manage their own APP development process by creating projects here. There are two development modes:
New application is deployed and tested on the development integration platform, and finally released to the application repository
Select scene supportprofileApplication scenario,integratedprofileRelated basic abilities。
End-to-end development process provided by the development integration platform is as follows:
Create Item¶
When creating a project,Need to enter the basic information of the project。The current version supports container applications and virtual machine applications。
Competence Center - Optional¶
The abilities selected when creating the project,Here will show the details of the corresponding capabilitiesAPI,Help developers understand how to call capability services,And provide in the backgroundAPIEmulator,Can be testedAPIRequest and return value。
Select sandbox¶
Deploy the test¶
The container application deployment is divided into three deployments:
Upload APP Mirror
Integrated development-System Management-System image management-Container image
Upload the image file to the container image management。
Configuring deployment documents
Provide two ways to configure and deploy files, support online editing and modification:
K8s deployment yaml file upload is supported, and the platform provides basic verification functions; for the format of the configuration file, you can refer to the demo sample provided by the interface, which can be directly uploaded and used.
supporthelmchartFile Upload。
Deploy the test
Step1 start the deployment, start generating the deployment file -> get the test node -> instantiate the application -> get the deployment status
Step2 After the deployment is successful, the POD information that has been deployed will be displayed
Step3 Test the application with the port number exposed by the application developer
Step4 Can log in remotely,View application deployment details and logs
Step5 Upon completion, release the test environment through the [Resource Recovery] button. If you need to modify the image, please cycle the above Step1->Step2->Step3->Step4 operations to test the application repeatedly.
The virtual machine application deployment adjustment is divided into the following three steps:
Choose virtual machine sandbox
Configure the specifications, mirroring, network and other information of the virtual machine.
Enter the name of the virtual machine.
Configure the virtual machine image source
Configure virtual machine resource specifications
Set the virtual machine network type, select all by default
Start the virtual machine
The applied virtual machine can be remotely logged in and SSH to the virtual machine for application development and debugging:
Export Mirror
Download the image to the image management
Make mirror¶
Package the application according to the basic information of the project:
Test certification¶
Connecting to the certification test platform, all developed applications need to pass the certification test platform certification before they can be released to the AppStore platform, and the generated certification test report will be sent to the AppStore platform.
Execute test cases
Application Publish
The certified application can be directly published to the EdgeGallery’s AppStore platform, and if the application service release configuration is completed when [application configuration] is available, the application will also be used as a capability service, and can be used by other application developers.
Developer Interfaces¶
1. Plugin¶
Development environment plug-in or sdk
1.1 POST upload plugin¶
Upload one plugin with some params.
Resource URI: /mec/developer/v1/plugins/
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginFile |
pluginfile |
requestpart |
yes |
logoFile |
pluginlogofile |
requestpart |
yes |
apiFile |
pluginapifile |
requestpart |
yes |
pluginName |
pluginname |
requestparam |
yes |
codeLanguage |
languagerepresentedbytheplugin |
requestparam |
yes |
pluginType |
1plugin2sdk |
requestparam |
yes |
version |
pluginversion |
requestparam |
yes |
introduction |
pluginbrief |
requestparam |
yes |
userId |
theauthor’sidofuploadplugin |
requestparam |
yes |
userName |
theauthor’snameofuploadplugin |
requestparam |
yes |
Example response
200 OK
{
"pluginId": "string",
"pluginName": "string",
"introduction": "string",
"satisfaction": 0,
"codeLanguage": "string",
"pluginType": "string",
"version": "string",
"scoreCount": 0,
"downloadCount": 0,
"logoFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
},
"pluginFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
},
"uploadTime": "2020-12-29T01:38:05.596Z",
"user": {
"userId": "string",
"userName": "string"
},
"apiFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
}
}
1.2 GET all plugin¶
Query all plugin or sdk
Resource URI: /mec/developer/v1/plugins/
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginType |
plugin type |
request param |
yes |
limit |
the max count of one page |
request param |
yes |
offset |
start index of the page |
request param |
yes |
Example response
200 OK
{
"results": [
{}
],
"limit": 0,
"offset": 0,
"total": 0
}
1.3 DELETE one plugin¶
Delete one plugin by pluginId
Resource URI: /mec/developer/v1/plugins/{pluginId}
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginId |
plugin id |
path param |
yes |
Example response
200 OK
true
1.4 GET download plugin¶
Download one plugin
Resource URI: /mec/developer/v1/plugins/{pluginId}/action/download
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginId |
plugin id |
path param |
yes |
Example response
200 OK
binary output.
1.5 GET download logo¶
Download plugin’s logo file
Resource URI: /mec/developer/v1/plugins/{pluginId}/action/get-logofile
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginId |
plugin id |
path param |
yes |
Example response
200 OK
binary output.
1.6 GET download api¶
Download plugin’s api file
Resource URI: /mec/developer/v1/plugins/{pluginId}/action/get-apifile
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginId |
plugin id |
path param |
yes |
Example response
200 OK
binary output.
1.7 PUT update plugin¶
Update api by id
Resource URI: /mec/developer/v1/plugins/{pluginId}
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginId |
pluginid |
pathparam |
yes |
pluginFile |
pluginfile |
requestpart |
no |
logoFile |
pluginlogofile |
requestpart |
no |
apiFile |
pluginapifile |
requestpart |
no |
pluginName |
pluginname |
requestpart |
no |
codeLanguage |
languagerepresentedbytheplugin |
requestpart |
no |
pluginType |
1plugin2sdk |
requestpart |
no |
version |
pluginversion |
requestpart |
no |
introduction |
pluginbrief |
requestpart |
no |
Example response
200 OK
{
"pluginId": "string",
"pluginName": "string",
"introduction": "string",
"satisfaction": 0,
"codeLanguage": "string",
"pluginType": "string",
"version": "string",
"scoreCount": 0,
"downloadCount": 0,
"logoFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
},
"pluginFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
},
"uploadTime": "2020-12-29T01:38:05.596Z",
"user": {
"userId": "string",
"userName": "string"
},
"apiFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
}
}
1.8 PUT mark plugin¶
Update plugin satisfaction by pluginId
Resource URI: /mec/developer/v1/plugins/{pluginId}/action/score
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginId |
pluginid |
pathparam |
yes |
score |
pluginsatisfaction |
requestparam |
yes |
userId |
raterid |
requestparam |
yes |
userName |
ratername |
requestparam |
yes |
Example response
200 OK
{
"pluginId": "string",
"pluginName": "string",
"introduction": "string",
"satisfaction": 0,
"codeLanguage": "string",
"pluginType": "string",
"version": "string",
"scoreCount": 0,
"downloadCount": 0,
"logoFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
},
"pluginFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
},
"uploadTime": "2020-12-29T01:38:05.596Z",
"user": {
"userId": "string",
"userName": "string"
},
"apiFile": {
"originalFileName": "string",
"storageAddress": "string",
"fileSize": 0,
"hashCode": "string",
"name": "string",
"size": 0
}
}
1.9 GET api content¶
Get plugin api content by pluginId
Resource URI: /mec/developer/v1/plugins/{pluginId}/action/content
Name |
Definition |
Type |
Required |
---|---|---|---|
pluginId |
pluginid |
pathparam |
yes |
Example response
200 OK
string output.
2. Container Image¶
operate about container app image
2.1 POST upload container image¶
Upload image with some params.
Resource URI: /mec/developer/v2/containerimages/{imageId}/action/upload
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
id |
id |
query param |
yes |
chunkNumber |
chunkNumber |
path param |
yes |
chunkSize |
chunkSize |
query param |
yes |
currentChunkSize |
currentChunkSize |
query param |
yes |
totalSize |
totalSize |
query param |
yes |
identifier |
identifier |
query param |
yes |
filename |
filename |
query param |
yes |
relativePath |
relativePath |
query param |
yes |
totalChunks |
totalChunks |
query param |
yes |
type |
type |
query param |
yes |
file |
file |
query param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
2.2 Cancel upload container image¶
cancel upload image
Resource URI: /mec/developer/v2/containerimages/{imageId}/action/upload
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
2.3 PUT modify image¶
modify image record
Resource URI: /mec/developer/v2/containerimages/{imageId}
Name |
Definition |
Type |
Required |
---|---|---|---|
ContainerImage |
ContainerImage |
request body param |
yes |
imageId |
imageId |
path param |
yes |
ContainerImage:
{
"imageId": "string",
"imageName": "string",
"imageVersion": "string",
"userId": "string",
"userName": "string",
"uploadTime": "2021-10-12T08:37:38.000+0000",
"createTime": "2021-10-12T08:37:38.000+0000",
"imageStatus": "UPLOAD_SUCCEED",
"imageType": "string",
"imagePath": "string",
"fileName": "string"
}
Example response
200 OK
{
"imageId": "string",
"imageName": "string",
"imageVersion": "string",
"userId": "string",
"userName": "string",
"uploadTime": "2021-10-12T08:37:38.000+0000",
"createTime": "2021-10-12T08:37:38.000+0000",
"imageStatus": "UPLOAD_SUCCEED",
"imageType": "string",
"imagePath": "string",
"fileName": "string"
}
2.4 DELETE container image¶
delete image
Resource URI: /mec/developer/v2/containerimages/{imageId}
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
true
2.5 GET download image¶
download container image
Resource URI: /mec/developer/v2/containerimages/{imageId}/action/download
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
binary output.
2.6 POST query all image¶
query all container image
Resource URI: /mec/developer/v2/containerimages/action/get-all-images
Name |
Definition |
Type |
Required |
---|---|---|---|
ContainerImageReq |
ContainerImageReq |
request body param |
yes |
ContainerImageReq:
{
"imageName": "string",
"userId": "string",
"uploadTimeBegin": "string",
"uploadTimeEnd": "string",
"limit": 0,
"offset": 0,
"sortBy": "string",
"sortOrder": "string"
}
Example response
200 OK
{
"imageId": "string",
"imageName": "string",
"imageVersion": "string",
"userId": "string",
"userName": "string",
"uploadTime": "2021-10-12T08:17:01.000Z",
"createTime": "2021-10-12T08:17:01.000Z",
"imageStatus": "UPLOAD_WAIT",
"imageType": "string",
"imagePath": "string",
"fileName": "string"
}
2.7 GET merge container image¶
merge container image
Resource URI: /mec/developer/v2/containerimages/{imageId}/action/merge
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
fileName |
fileName |
query param |
yes |
guid |
guid |
query param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
2.8 GET synchronize image¶
synchronize container image
Resource URI: /mec/developer/v2/containerimages/action/synchronize
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
3. Application¶
Edge application created by the developer platform
3.1 GET one page application¶
Query one page application with userId.
Resource URI: /mec/developer/v2/applications/
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
application name |
query param |
yes |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"createTime": "string",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"appPackage": {
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
},
"atpTestTaskList": [],
"appConfiguration": {
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [],
"appServiceRequiredList": [],
"trafficRuleList": [],
"dnsRuleList": []
},
"scriptList": []
}
]
3.2 GET one application¶
Query application by id
Resource URI: /mec/developer/v2/applications/{applictaionId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"createTime": "string",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"appPackage": {
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
},
"atpTestTaskList": [],
"appConfiguration": {
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [],
"appServiceRequiredList": [],
"trafficRuleList": [],
"dnsRuleList": []
},
"scriptList": []
}
3.3 POST create one application¶
Create one application with some params
Resource URI: /mec/developer/v2/applications
Name |
Definition |
Type |
Required |
---|---|---|---|
Application |
Entityclass |
body param |
yes |
Application:
{
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"userId": "string",
"userName": "string",
"pkgSpecId": "string",
"scriptList": [
{
"id": "string",
"name": "string",
"scriptFileId": "string",
"createTime": "2021-12-29T06:44:05.343Z"
}
]
}
Example response
{
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"createTime": "string",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"appPackage": {
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
},
"atpTestTaskList": [],
"appConfiguration": {
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [],
"appServiceRequiredList": [],
"trafficRuleList": [],
"dnsRuleList": []
},
"scriptList": []
}
3.4 DELETE one application¶
Delete one application by id
Resource URI: /mec/developer/v2/applications/{applicationId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId id |
path param |
yes |
Example response
200 OK
true
3.5 PUT modify one application¶
Modify one application by id
Resource URI: /mec/developer/v2/applications/{applicationId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
application |
Application |
body param |
yes |
Application
{
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"scriptList": []
}
Example response
200 OK
true
3.6 GET application detail¶
get one application detail
Resource URI: /mec/developer/v2/applications/{applicationId}/detail
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
{
"vmApp": {
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"createTime": "string",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"appPackage": {
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
},
"atpTestTaskList": [
{
"id": "string",
"appName": "string",
"status": "string",
"createTime": "string"
}
],
"appConfiguration": {
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
],
"appServiceRequiredList": [
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
],
"trafficRuleList": [
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
],
"dnsRuleList": [
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
]
},
"scriptList": [
{
"id": "string",
"name": "string",
"scriptFileId": "string",
"createTime": "2021-12-29T07:10:56.154Z"
}
],
"vmList": [
{
"id": "string",
"name": "string",
"flavorId": "string",
"imageId": 0,
"targetImageId": 0,
"vmCertificate": {
"certificateType": "string",
"pwdCertificate": {
"password": "string",
"username": "string"
},
"keyPairCertificate": {
"keyPairId": "string"
}
},
"userData": "string",
"portList": [
{
"id": "string",
"name": "string",
"description": "string",
"networkName": "string"
}
],
"status": "NOT_DEPLOY",
"areaZone": "string",
"flavorExtraSpecs": "string",
"vmInstantiateInfo": {
"operationId": "string",
"appPackageId": "string",
"distributedMecHost": "string",
"mepmPackageId": "string",
"appInstanceId": "string",
"vmInstanceId": "string",
"status": "PACKAGE_GENERATING",
"instantiateTime": "2021-12-29T07:10:56.162Z",
"log": "string",
"vncUrl": "string",
"portInstanceList": [
{
"networkName": "string",
"ipAddress": "string"
}
]
},
"imageExportInfo": {
"operationId": "string",
"imageInstanceId": "string",
"name": "string",
"imageFileName": "string",
"format": "string",
"checkSum": "string",
"status": "IMAGE_CREATING",
"downloadUrl": "string",
"imageSize": "string",
"createTime": "2021-12-29T07:10:56.162Z",
"log": "string"
}
}
],
"networkList": [
{
"id": "string",
"name": "string",
"description": "string"
}
]
},
"containerApp": {
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"createTime": "string",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"appPackage": {
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
},
"atpTestTaskList": [
{
"id": "string",
"appName": "string",
"status": "string",
"createTime": "string"
}
],
"appConfiguration": {
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
],
"appServiceRequiredList": [
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
],
"trafficRuleList": [
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
],
"dnsRuleList": [
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
]
},
"scriptList": [
{
"id": "string",
"name": "string",
"scriptFileId": "string",
"createTime": "2021-12-29T07:10:56.154Z"
}
],
"helmChartList": [
{
"id": "string",
"name": "string",
"helmChartFileId": "string",
"createTime": "2021-12-29T07:10:56.162Z",
"applicationId": "string",
"helmChartFileList": [
{
"name": "string",
"innerPath": "string",
"children": [
{}
],
"content": "string",
"file": false
}
]
}
],
"instantiateInfo": {
"operationId": "string",
"appPackageId": "string",
"distributedMecHost": "string",
"mepmPackageId": "string",
"appInstanceId": "string",
"status": "PACKAGE_GENERATING",
"log": "string",
"instantiateTime": "2021-12-29T07:10:56.162Z",
"pods": [
{
"name": "string",
"podStatus": "string",
"eventsInfo": "string",
"containerList": [
{
"name": "string",
"cpuUsage": "string",
"memUsage": "string",
"diskUsage": "string"
}
]
}
],
"serviceList": [
{
"name": "string",
"type": "string",
"servicePortList": [
{
"port": "string",
"targetPort": "string",
"nodePort": "string"
}
]
}
]
}
}
}
3.7 PUT modify application detail¶
Update application detail
Resource URI: /mec/developer/v2/applications/{applicationId}/detail
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
ApplicationDetail |
applicationdetail |
body param |
yes |
ApplicationDetail:
{
"vmApp": {
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"createTime": "string",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"appPackage": {
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
},
"atpTestTaskList": [
{
"id": "string",
"appName": "string",
"status": "string",
"createTime": "string"
}
],
"appConfiguration": {
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
],
"appServiceRequiredList": [
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
],
"trafficRuleList": [
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
],
"dnsRuleList": [
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
]
},
"scriptList": [
{
"id": "string",
"name": "string",
"scriptFileId": "string",
"createTime": "2021-12-29T07:10:56.154Z"
}
],
"vmList": [
{
"id": "string",
"name": "string",
"flavorId": "string",
"imageId": 0,
"targetImageId": 0,
"vmCertificate": {
"certificateType": "string",
"pwdCertificate": {
"password": "string",
"username": "string"
},
"keyPairCertificate": {
"keyPairId": "string"
}
},
"userData": "string",
"portList": [
{
"id": "string",
"name": "string",
"description": "string",
"networkName": "string"
}
],
"status": "NOT_DEPLOY",
"areaZone": "string",
"flavorExtraSpecs": "string",
"vmInstantiateInfo": {
"operationId": "string",
"appPackageId": "string",
"distributedMecHost": "string",
"mepmPackageId": "string",
"appInstanceId": "string",
"vmInstanceId": "string",
"status": "PACKAGE_GENERATING",
"instantiateTime": "2021-12-29T07:10:56.162Z",
"log": "string",
"vncUrl": "string",
"portInstanceList": [
{
"networkName": "string",
"ipAddress": "string"
}
]
},
"imageExportInfo": {
"operationId": "string",
"imageInstanceId": "string",
"name": "string",
"imageFileName": "string",
"format": "string",
"checkSum": "string",
"status": "IMAGE_CREATING",
"downloadUrl": "string",
"imageSize": "string",
"createTime": "2021-12-29T07:10:56.162Z",
"log": "string"
}
}
],
"networkList": [
{
"id": "string",
"name": "string",
"description": "string"
}
]
},
"containerApp": {
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"createTime": "string",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"appPackage": {
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
},
"atpTestTaskList": [
{
"id": "string",
"appName": "string",
"status": "string",
"createTime": "string"
}
],
"appConfiguration": {
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
],
"appServiceRequiredList": [
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
],
"trafficRuleList": [
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
],
"dnsRuleList": [
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
]
},
"scriptList": [
{
"id": "string",
"name": "string",
"scriptFileId": "string",
"createTime": "2021-12-29T07:10:56.154Z"
}
],
"helmChartList": [
{
"id": "string",
"name": "string",
"helmChartFileId": "string",
"createTime": "2021-12-29T07:10:56.162Z",
"applicationId": "string",
"helmChartFileList": [
{
"name": "string",
"innerPath": "string",
"children": [
{}
],
"content": "string",
"file": false
}
]
}
],
"instantiateInfo": {
"operationId": "string",
"appPackageId": "string",
"distributedMecHost": "string",
"mepmPackageId": "string",
"appInstanceId": "string",
"status": "PACKAGE_GENERATING",
"log": "string",
"instantiateTime": "2021-12-29T07:10:56.162Z",
"pods": [
{
"name": "string",
"podStatus": "string",
"eventsInfo": "string",
"containerList": [
{
"name": "string",
"cpuUsage": "string",
"memUsage": "string",
"diskUsage": "string"
}
]
}
],
"serviceList": [
{
"name": "string",
"type": "string",
"servicePortList": [
{
"port": "string",
"targetPort": "string",
"nodePort": "string"
}
]
}
]
}
}
}
Example response
200 OK
true
4. Mep-hosts¶
Server of build and test or deploy app
4.1 GET all host¶
Query all host.
Resource URI: /mec/developer/v2/mephosts
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
yes |
vimType |
vim type |
query param |
yes |
architecture |
architecture |
query param |
yes |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"lcmIp": "string",
"lcmProtocol": "string",
"lcmPort": 0,
"architecture": "string",
"status": "NORMAL",
"mecHostIp": "string",
"vimType": "OpenStack",
"mecHostUserName": "string",
"mecHostPassword": "string",
"mecHostPort": 0,
"userId": "string",
"configId": "string",
"networkParameter": "string",
"resource": "string",
"address": "string"
}
]
4.2 GET one host¶
Query host by id.
Resource URI: /mec/developer/v2/mephosts/{mephostId}
Name |
Definition |
Type |
Required |
---|---|---|---|
mephostId |
hostid |
path param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"lcmIp": "string",
"lcmProtocol": "string",
"lcmPort": 0,
"architecture": "string",
"status": "NORMAL",
"mecHostIp": "string",
"vimType": "OpenStack",
"mecHostUserName": "string",
"mecHostPassword": "string",
"mecHostPort": 0,
"userId": "string",
"configId": "string",
"networkParameter": "string",
"resource": "string",
"address": "string"
}
4.3 POST create one host¶
Create one host.
Resource URI: /mec/developer/v2/mephosts/
Name |
Definition |
Type |
Required |
---|---|---|---|
MepHost |
entityclass |
bodyparam |
yes |
MepHost
{
"name": "string",
"lcmIp": "string",
"lcmProtocol": "string",
"lcmPort": 0,
"architecture": "string",
"status": "NORMAL",
"mecHostIp": "string",
"vimType": "OpenStack",
"mecHostUserName": "string",
"mecHostPassword": "string",
"mecHostPort": 0,
"userId": "string",
"configId": "string",
"networkParameter": "string",
"resource": "string",
"address": "string"
}
Example response
200 OK
true
4.4 DELETE one host¶
Delete one host.
Resource URI: /mec/developer/v2/mephosts/{mephostId}
Name |
Definition |
Type |
Required |
---|---|---|---|
mephostId |
hostid |
pathparam |
yes |
Example response
200 OK
true
4.5 PUT modify one host¶
modify one host.
Resource URI: /mec/developer/v2/mephosts/{mephostId}
Name |
Definition |
Type |
Required |
---|---|---|---|
mephostId |
hostid |
pathparam |
yes |
MepHost |
entityclass |
bodyparam |
yes |
MepHost
{
"id": "string",
"name": "string",
"lcmIp": "string",
"lcmProtocol": "string",
"lcmPort": 0,
"architecture": "string",
"status": "NORMAL",
"mecHostIp": "string",
"vimType": "OpenStack",
"mecHostUserName": "string",
"mecHostPassword": "string",
"mecHostPort": 0,
"userId": "string",
"configId": "string",
"networkParameter": "string",
"resource": "string",
"address": "string"
}
Example response
200 OK
true
4.6 GET host logs¶
get host logs.
Resource URI: /mec/developer/v2/mephosts/{mephostId}/logs
Name |
Definition |
Type |
Required |
---|---|---|---|
hostId |
hostid |
pathparam |
yes |
Example response
200 OK
[
{
"logId": "string",
"hostIp": "string",
"userName": "string",
"userId": "string",
"projectId": "string",
"projectName": "string",
"appInstancesId": "string",
"deployTime": "string",
"status": "NORMAL",
"operation": "string",
"hostId": "string"
}
]
4.7 POST upload config file¶
upload host config file
Resource URI: /mec/developer/v2/mephosts/action/upload-config-file
Name |
Definition |
Type |
Required |
---|---|---|---|
file |
config file |
form data |
yes |
Example response
200 OK
{
"fileId": "string",
"fileName": "string",
"url": "string",
"userId": "string",
"uploadDate": "2021-12-29T07:47:58.763Z",
"filePath": "string",
"temp": false
}
5. Capability-groups¶
capability group of edge applications
5.1 POST create group¶
Create one Capability group.
Resource URI: /mec/developer/v2/capability-groups
Name |
Definition |
Type |
Required |
---|---|---|---|
CapabilityGroup |
entityclass |
body param |
yes |
{
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
}
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
}
5.2 GET all group¶
get all group.
Resource URI: /mec/developer/v2/capability-groups/
Example response
200 OK
[
{
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
}
]
5.3 GET one group¶
get one group
Resource URI: /mec/developer/v2/capability-groups/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
group id |
path param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
}
5.4 DELETE one group¶
Delete one group by id
Resource URI: /mec/developer/v2/capability-groups/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
group id |
path param |
yes |
Example response
200 OK
true.
6. Upload-files¶
This part is to configure the app, perform app deployment, and test the api for file operations
6.1 GET one file¶
Get one file
Resource URI: /mec/developer/v2/upload-files/{fileId}
Name |
Definition |
Type |
Required |
---|---|---|---|
fileId |
fileid |
path param |
yes |
Example response
200 OK
{
"fileId": "string",
"fileName": "string",
"url": "string",
"userId": "string",
"uploadDate": "2021-12-29T08:12:37.729Z",
"filePath": "string",
"temp": false
}
6.2 POST upload one file¶
Upload file
Resource URI: /mec/developer/v2/upload-files
Name |
Definition |
Type |
Required |
---|---|---|---|
file |
MultipartFileclass |
request part |
yes |
flleType |
file type |
query param |
yes |
Example response
200 OK
{
"fileId": "string",
"fileName": "string",
"url": "string",
"userId": "string",
"uploadDate": "2020-09-14T09:03:17.084Z",
"filePath": "string",
"temp": false
}
6.3 POST get sample code¶
Get sample code.
Resource URI: /mec/developer/v2/upload-files/action/download-sample-code
Name |
Definition |
Type |
Required |
---|---|---|---|
apiFileIds |
apifileid list |
body param |
yes |
List<String>
[
"string"
]
Example response
200 OK
byte array output
6.4 GET file stream¶
Get file return as stream
Resource URI: /mec/developer/v2/upload-files/{fileId}/action/get-file-stream
Name |
Definition |
Type |
Required |
---|---|---|---|
fileId |
file id |
path param |
yes |
Example response
200 OK
binary output.
6.5 GET sdk code¶
Get sdk code
Resource URI: /mec/developer/v2/upload-files/{fileId}/action/download-sdk
Name |
Definition |
Type |
Required |
---|---|---|---|
fileId |
file id |
path param |
yes |
lan |
sdk codeLanguage |
path param |
yes |
Example response
200 OK
binary output
6.6 POST sample content¶
query file content
Resource URI: /mec/developer/v2/upload-files/action/get-sample-code-content
Name |
Definition |
Type |
Required |
---|---|---|---|
apiFileIds |
apiFileIds |
body param |
yes |
Example response
200 OK
String output
6.7 POST sample structure¶
post pkg structure
Resource URI: /mec/developer/v2/upload-files/action/get-sample-code-structure
Name |
Definition |
Type |
Required |
---|---|---|---|
apiFileIds |
file id arrays |
body param |
yes |
Example response
200 OK
{
"name": "string",
"id": "string",
"children": [
{}
],
"parent": false
}
6.8 DELETE one file¶
post pkg structure
Resource URI: /mec/developer/v2/upload-files/{fileId}
Name |
Definition |
Type |
Required |
---|---|---|---|
fileId |
file id |
path param |
yes |
Example response
200 OK
true
7. Capabilities¶
capability of edge applications
7.1 POST create capability¶
create capability
Resource URI: /mec/developer/v2/capabilities/
Name |
Definition |
Type |
Required |
---|---|---|---|
Capability |
Capability |
body param |
yes |
Capability:
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
Example response
200 OK
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
7.2 GET all capability¶
GET all capabilities
Resource URI: /mec/developer/v2/capabilities/
Name |
Definition |
Type |
Required |
---|---|---|---|
filterType |
filterType |
query param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
]
7.3 GET one capability¶
query one capability
Resource URI: /mec/developer/v2/capabilities/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
]
7.4 DELETE one capability¶
Delete one capability
Resource URI: /mec/developer/v2/capabilities/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
Example response
200 OK
true
7.5 PUT one capability¶
update one capability
Resource URI: /mec/developer/v2/capabilities/{id}
Name |
Definition |
Type |
Required |
---|---|---|---|
id |
id |
path param |
yes |
capability |
capability |
body param |
yes |
capability:
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
Example response
200 OK
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
8. Capability-Groups Query¶
Capability-Groups query
8.1 GET group by type¶
query group by type
Resource URI: /mec/developer/v2/query/capability-groups/type/{type}
Name |
Definition |
Type |
Required |
---|---|---|---|
type |
group type |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
}
]
9. Flavors¶
vm flavor configuration
9.1 GET all flavor¶
Get all flavor
Resource URI: /mec/developer/v2/flavor
Example response
200 OK
[
{
"id": "string",
"name": "string",
"description": "string",
"architecture": "string",
"cpu": 0,
"memory": 0,
"systemDiskSize": 0,
"dataDiskSize": 0,
"gpuExtraInfo": "string",
"otherExtraInfo": "string"
}
]
9.2 POST create one flavor¶
create flavor
Resource URI: /mec/developer/v2/flavors
Name |
Definition |
Type |
Required |
---|---|---|---|
flavor |
flavor |
body param |
yes |
flavor
{
"name": "string",
"description": "string",
"architecture": "string",
"cpu": 0,
"memory": 0,
"systemDiskSize": 0,
"dataDiskSize": 0,
"gpuExtraInfo": "string",
"otherExtraInfo": "string"
}
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"architecture": "string",
"cpu": 0,
"memory": 0,
"systemDiskSize": 0,
"dataDiskSize": 0,
"gpuExtraInfo": "string",
"otherExtraInfo": "string"
}
9.3 GET one flavor¶
get one flavor
Resource URI: /mec/developer/v2/flavors/{flavorId}
Name |
Definition |
Type |
Required |
---|---|---|---|
flavorId |
flavorId |
query param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"architecture": "string",
"cpu": 0,
"memory": 0,
"systemDiskSize": 0,
"dataDiskSize": 0,
"gpuExtraInfo": "string",
"otherExtraInfo": "string"
}
9.4 DELETE one flavor¶
delete one flavor
Resource URI: /mec/developer/v2/flavors/{flavorId}
Name |
Definition |
Type |
Required |
---|---|---|---|
flavorId |
flavorId |
query param |
yes |
Example response
200 OK
true
10. AppScript¶
some script files about application
10.1 POST upload script file¶
upload script file
Resource URI: /mec/developer/v2/applications/{applicationId}/scripts
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
application id |
pathparam |
yes |
file |
file |
formdata param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"scriptFileId": "string",
"createTime": "2021-12-29T13:40:01.419Z"
}
11. Health¶
health Check
12. VmApp¶
some operation about vm app
12.1 GET all vm¶
query all vm
Resource URI: /mec/developer/v2/applications/{applicationId}/vms
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"flavorId": "string",
"imageId": 0,
"targetImageId": 0,
"vmCertificate": {
"certificateType": "string",
"pwdCertificate": {
"password": "string",
"username": "string"
},
"keyPairCertificate": {
"keyPairId": "string"
}
},
"userData": "string",
"portList": [
{
"id": "string",
"name": "string",
"description": "string",
"networkName": "string"
}
],
"status": "NOT_DEPLOY",
"areaZone": "string",
"flavorExtraSpecs": "string",
"vmInstantiateInfo": {
"operationId": "string",
"appPackageId": "string",
"distributedMecHost": "string",
"mepmPackageId": "string",
"appInstanceId": "string",
"vmInstanceId": "string",
"status": "PACKAGE_GENERATING",
"instantiateTime": "2021-12-29T13:52:32.321Z",
"log": "string",
"vncUrl": "string",
"portInstanceList": [
{
"networkName": "string",
"ipAddress": "string"
}
]
},
"imageExportInfo": {
"operationId": "string",
"imageInstanceId": "string",
"name": "string",
"imageFileName": "string",
"format": "string",
"checkSum": "string",
"status": "IMAGE_CREATING",
"downloadUrl": "string",
"imageSize": "string",
"createTime": "2021-12-29T13:52:32.321Z",
"log": "string"
}
}
]
12.2 POST create vm¶
create one vm
Resource URI: /mec/developer/v2/applications/{applicationId}/vms
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
virtualMachine |
virtualMachine |
body param |
yes |
virtualMachine:
{
"name": "string",
"flavorId": "string",
"imageId": 0,
"targetImageId": 0,
"vmCertificate": {
"certificateType": "string",
"pwdCertificate": {
"password": "string",
"username": "string"
},
"keyPairCertificate": {
"keyPairId": "string"
}
},
"userData": "string",
"portList": [
{
"id": "string",
"name": "string",
"description": "string",
"networkName": "string"
}
],
"flavorExtraSpecs": "string"
}
Example response
200 OK
{
"id": "string",
"name": "string",
"flavorId": "string",
"imageId": 0,
"targetImageId": 0,
"vmCertificate": {
"certificateType": "string",
"pwdCertificate": {
"password": "string",
"username": "string"
},
"keyPairCertificate": {
"keyPairId": "string"
}
},
"userData": "string",
"portList": [
{
"id": "string",
"name": "string",
"description": "string",
"networkName": "string"
}
],
"status": "NOT_DEPLOY",
"areaZone": "string",
"flavorExtraSpecs": "string",
"vmInstantiateInfo": {
"operationId": "string",
"appPackageId": "string",
"distributedMecHost": "string",
"mepmPackageId": "string",
"appInstanceId": "string",
"vmInstanceId": "string",
"status": "PACKAGE_GENERATING",
"instantiateTime": "2021-12-29T13:52:32.321Z",
"log": "string",
"vncUrl": "string",
"portInstanceList": [
{
"networkName": "string",
"ipAddress": "string"
}
]
},
"imageExportInfo": {
"operationId": "string",
"imageInstanceId": "string",
"name": "string",
"imageFileName": "string",
"format": "string",
"checkSum": "string",
"status": "IMAGE_CREATING",
"downloadUrl": "string",
"imageSize": "string",
"createTime": "2021-12-29T13:52:32.321Z",
"log": "string"
}
}
12.3 GET one vm¶
get one vm
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"flavorId": "string",
"imageId": 0,
"targetImageId": 0,
"vmCertificate": {
"certificateType": "string",
"pwdCertificate": {
"password": "string",
"username": "string"
},
"keyPairCertificate": {
"keyPairId": "string"
}
},
"userData": "string",
"portList": [
{
"id": "string",
"name": "string",
"description": "string",
"networkName": "string"
}
],
"status": "NOT_DEPLOY",
"areaZone": "string",
"flavorExtraSpecs": "string",
"vmInstantiateInfo": {
"operationId": "string",
"appPackageId": "string",
"distributedMecHost": "string",
"mepmPackageId": "string",
"appInstanceId": "string",
"vmInstanceId": "string",
"status": "PACKAGE_GENERATING",
"instantiateTime": "2021-12-29T13:52:32.321Z",
"log": "string",
"vncUrl": "string",
"portInstanceList": [
{
"networkName": "string",
"ipAddress": "string"
}
]
},
"imageExportInfo": {
"operationId": "string",
"imageInstanceId": "string",
"name": "string",
"imageFileName": "string",
"format": "string",
"checkSum": "string",
"status": "IMAGE_CREATING",
"downloadUrl": "string",
"imageSize": "string",
"createTime": "2021-12-29T13:52:32.321Z",
"log": "string"
}
}
12.4 PUT modify vm¶
modify vm
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
virtualMachine |
virtualMachine |
body param |
yes |
virtualMachine:
{
"id": "string",
"name": "string",
"flavorId": "string",
"imageId": 0,
"targetImageId": 0,
"vmCertificate": {
"certificateType": "string",
"pwdCertificate": {
"password": "string",
"username": "string"
},
"keyPairCertificate": {
"keyPairId": "string"
}
},
"userData": "string",
"portList": [
{
"id": "string",
"name": "string",
"description": "string",
"networkName": "string"
}
],
"status": "NOT_DEPLOY",
"areaZone": "string",
"flavorExtraSpecs": "string"
}
Example response
200 OK
true
12.5 DELETE one vm¶
delete vm
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
Example response
200 OK
true
13. Capability-group stats¶
query group stats
13.1 GET group stats¶
Get group stats
Resource URI: /mec/developer/v2/capability-group-stats/
Example response
200 OK
[
{
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"capabilityCount": 0
}
]
14. AppConfiguration¶
This part is about the api for application configuration
14.1 GET app cert¶
get app cert
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/appcertificate
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 Ok
{
"ak": "string",
"sk": "string"
}
14.2 POST create app cert¶
create app cert
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/appcertificate
Name |
Definition |
Type |
Required |
---|---|---|---|
AppCeriticate |
AppCeriticate |
body param |
yes |
applicationId |
applicationId |
path param |
yes |
AppCeriticate:
{
"ak": "string",
"sk": "string"
}
Example response
200 OK
{
"ak": "string",
"sk": "string"
}
14.3 PUT app cert¶
modify app cert
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/appcertificate
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
AppCeriticate |
AppCeriticate |
body param |
yes |
AppCeriticate:
{
"ak": "string",
"sk": "string"
}
Example response
200 OK
true
14.4 DELETE app cert¶
delete cert
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/appcertificate
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
true
14.5 GET all dns¶
get all dns rule
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/dnsrules
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 Ok
[
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
]
14.6 POST create dns¶
create dns
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/dnsrules
Name |
Definition |
Type |
Required |
---|---|---|---|
DnsRule |
DnsRule |
body param |
yes |
applicationId |
applicationId |
path param |
yes |
DnsRule:
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
Example response
200 OK
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
14.7 PUT modify dns¶
modify dns
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/dnsrules/{ruleId}
Name |
Definition |
Type |
Required |
---|---|---|---|
DnsRule |
DnsRule |
body param |
yes |
ruleId |
ruleId |
path param |
yes |
applicationId |
applicationId |
path param |
yes |
DnsRule:
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
Example response
200 OK
true
14.8 DELETE dns¶
delete dns
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/dnsrules/{ruleId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
ruleId |
ruleId |
path param |
yes |
Example response
200 OK
true
14.9 GET all produced svc¶
get all serviceProduced
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 Ok
[
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
]
14.10 POST create produced svc¶
create produces svc
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds
Name |
Definition |
Type |
Required |
---|---|---|---|
ServiceProduced |
ServiceProduced |
body param |
yes |
applicationId |
applicationId |
path param |
yes |
ServiceProduced:
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
Example response
200 OK
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
14.11 PUT modify produced svc¶
modify produced svc
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds/{appServiceProducedId}
Name |
Definition |
Type |
Required |
---|---|---|---|
ServiceProduced |
ServiceProduced |
body param |
yes |
appServiceProducedId |
appServiceProducedId |
path param |
yes |
applicationId |
applicationId |
path param |
yes |
ServiceProduced:
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
Example response
200 OK
true
14.12 DELETE produced svc¶
delete produced svc
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds/{appServiceProducedId}
Name |
Definition |
Type |
Required |
---|---|---|---|
appServiceProducedId |
appServiceProducedId |
path param |
yes |
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
true
14.13 GET all required svc¶
get all serviceRequired
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/servicerequireds
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 Ok
[
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
]
14.14 POST create required svc¶
create required svc
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/servicerequireds
Name |
Definition |
Type |
Required |
---|---|---|---|
ServiceRequired |
ServiceRequired |
body param |
yes |
applicationId |
applicationId |
path param |
yes |
ServiceRequired:
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
Example response
200 OK
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
14.15 PUT modify required svc¶
modify required svc
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/servicerequireds/{serName}
Name |
Definition |
Type |
Required |
---|---|---|---|
ServiceRequired |
ServiceRequired |
body param |
yes |
serName |
serName |
path param |
yes |
applicationId |
applicationId |
path param |
yes |
ServiceRequired:
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
Example response
200 OK
true
14.16 DELETE required svc¶
delete required svc
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/serviceproduceds/{serviceRequiredId}
Name |
Definition |
Type |
Required |
---|---|---|---|
serviceRequiredId |
serviceRequiredId |
path param |
yes |
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
true
14.17 GET all traffic rule¶
get all traffic rule
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/trafficrules
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 Ok
[
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
]
14.18 POST create traffic rule¶
create traffic rule
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/trafficrules
Name |
Definition |
Type |
Required |
---|---|---|---|
TrafficRule |
TrafficRule |
body param |
yes |
applicationId |
applicationId |
path param |
yes |
TrafficRule:
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
Example response
200 OK
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
14.19 PUT modify traffic rule¶
modify traffic rule
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/trafficrules/{ruleId}
Name |
Definition |
Type |
Required |
---|---|---|---|
TrafficRule |
TrafficRule |
body param |
yes |
ruleId |
ruleId |
path param |
yes |
applicationId |
applicationId |
path param |
yes |
TrafficRule:
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
Example response
200 OK
true
14.20 DELETE traffic rule¶
delete traffic rule
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration/trafficrules/{ruleId}
Name |
Definition |
Type |
Required |
---|---|---|---|
ruleId |
ruleId |
path param |
yes |
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
true
14.21 GET app configuration¶
query application configuration
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
{
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
],
"appServiceRequiredList": [
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
],
"trafficRuleList": [
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
],
"dnsRuleList": [
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
]
}
14.22 PUT app configuration¶
modify application configuration
Resource URI: /mec/developer/v2/applications/{applicationId}/appconfiguration
Name |
Definition |
Type |
Required |
---|---|---|---|
AppConfiguration |
AppConfiguration |
path param |
yes |
applicationId |
applicationId |
path param |
yes |
AppConfiguration:
{
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
],
"appServiceRequiredList": [
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
],
"trafficRuleList": [
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
],
"dnsRuleList": [
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
]
}
Example response
200 OK
true
15. Capability-group stats query¶
This part is about the api for Capability-group stats
15.1 GET stats by type¶
query group stats by type
Resource URI: /mec/developer/v2/query/capability-group-stats/type/{type}
Name |
Definition |
Type |
Required |
---|---|---|---|
type |
type |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"capabilityCount": 0
}
]
16. Operation¶
This part is about the api for application launch
16.1 GET one operation¶
get one application operation
Resource URI: /mec/developer/v2/operations//{operationId}
Name |
Definition |
Type |
Required |
---|---|---|---|
operationId |
operationId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"userName": "string",
"objectType": "APPLICATION",
"objectId": "string",
"objectName": "string",
"operationName": "string",
"progress": 0,
"status": "ONGOING",
"errorMsg": "string",
"actionStatusList": [
{
"id": "string",
"objectType": "APPLICATION",
"objectId": "string",
"actionName": "string",
"progress": 0,
"status": "ONGOING",
"errorMsg": "string",
"statusLog": "string",
"updateTime": "string"
}
],
"createTime": "string",
"updateTime": "string"
}
17. Capability query¶
This part is about the api for query capability
17.1 GET capability by groupid¶
get capability by groupid
Resource URI: /mec/developer/v2/query/capabilities/group-id/{groupId}
Name |
Definition |
Type |
Required |
---|---|---|---|
groupId |
groupId |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
]
17.2 GET capability by en name¶
query capability by en name
Resource URI: /mec/developer/v2/query/capabilities/name-en
Name |
Definition |
Type |
Required |
---|---|---|---|
nameEn |
english name |
query param |
yes |
limit |
limit name |
query param |
yes |
offset |
offset name |
query param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
]
17.3 GET capability by name¶
GET capability by zh name
Resource URI: /mec/developer/v2/query/capabilities/name
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
chinese name |
query param |
yes |
limit |
limit name |
query param |
yes |
offset |
offset name |
query param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
]
17.4 GET capability by projectid¶
get capability by projectid
Resource URI: /mec/developer/v2/query/capabilities/project-id/{projectId}
Name |
Definition |
Type |
Required |
---|---|---|---|
projectId |
projectId |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
]
17.5 GET capability by type¶
query capability by type
Resource URI: /mec/developer/v2/query/capabilities/type/{type}
Name |
Definition |
Type |
Required |
---|---|---|---|
type |
type |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"nameEn": "string",
"version": "string",
"description": "string",
"descriptionEn": "string",
"provider": "string",
"apiFileId": "string",
"guideFileId": "string",
"guideFileIdEn": "string",
"uploadTime": 0,
"port": 0,
"host": "string",
"protocol": "string",
"appId": "string",
"packageId": "string",
"userId": "string",
"selectCount": 0,
"iconFileId": "string",
"author": "string",
"experienceUrl": "string",
"group": {
"id": "string",
"name": "string",
"description": "string",
"nameEn": "string",
"descriptionEn": "string",
"type": "string",
"iconFileId": "string",
"author": "string",
"createTime": 0,
"updateTime": 0,
"parent": {}
},
"groupId": "string"
}
]
18. Profile¶
This part is about the api for profile operation
18.1 POST create profile¶
Create one profile
Resource URI: /mec/developer/v2/profiles
Name |
Definition |
Type |
Required |
---|---|---|---|
file |
file |
request part |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"descriptionEn": "string",
"seq": [
"string"
],
"appList": [
"string"
],
"createTime": "2021-12-30T09:19:44.092Z",
"type": "string",
"industry": "string",
"topoFilePath": "string"
}
18.2 GET download file¶
GET download file according to file type
Resource URI: /mec/developer/v2/profiles/{profileId}/action/download
Name |
Definition |
Type |
Required |
---|---|---|---|
profileId |
profileId |
path param |
yes |
type |
type |
query param |
no |
name |
name |
query param |
no |
Example response
200 OK
byte[]
18.3 PUT update profile¶
Update one profile
Resource URI: /mec/developer/v2/profiles/{profileId}
Name |
Definition |
Type |
Required |
---|---|---|---|
file |
file |
request part |
yes |
profileId |
profileId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"descriptionEn": "string",
"seq": [
"string"
],
"appList": [
"string"
],
"createTime": "2021-12-30T09:19:44.092Z",
"type": "string",
"industry": "string",
"topoFilePath": "string"
}
18.4 GET query all profiles¶
GET query all profiles
Resource URI: /mec/developer/v2/profiles
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
no |
limit |
limit |
query param |
yes |
offset |
offset |
query param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"descriptionEn": "string",
"seq": [
"string"
],
"appList": [
"string"
],
"createTime": "2021-12-30T09:19:44.092Z",
"type": "string",
"industry": "string",
"topoFilePath": "string"
}
18.5 GET query one profile¶
GET query one profile
Resource URI: /mec/developer/v2/profiles/{profileId}
Name |
Definition |
Type |
Required |
---|---|---|---|
profileId |
profileId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"descriptionEn": "string",
"seq": [
"string"
],
"appList": [
"string"
],
"createTime": "2021-12-30T09:19:44.092Z",
"type": "string",
"industry": "string",
"topoFilePath": "string"
}
18.6 DELETE delete one profile¶
DELETE delete one profile
Resource URI: /mec/developer/v2/profiles/{profileId}
Name |
Definition |
Type |
Required |
---|---|---|---|
profileId |
profileId |
path param |
yes |
Example response
200 OK
true
18.7 POST create application by profile id¶
POST create application by profile id
Resource URI: /mec/developer/v2/profiles/{profileId}/create-application
Name |
Definition |
Type |
Required |
---|---|---|---|
profileId |
profileId |
path param |
yes |
iconFile |
iconFile |
request part |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string",
"version": "string",
"provider": "string",
"architecture": "string",
"appClass": "CONTAINER",
"type": "string",
"industry": "string",
"iconFileId": "string",
"guideFileId": "string",
"appCreateType": "INTEGRATED",
"createTime": "string",
"status": "CREATED",
"userId": "string",
"userName": "string",
"mepHostId": "string",
"pkgSpecId": "string",
"appPackage": {
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
},
"atpTestTaskList": [
{
"id": "string",
"appName": "string",
"status": "string",
"createTime": "string"
}
],
"appConfiguration": {
"appCertificate": {
"ak": "string",
"sk": "string"
},
"appServiceProducedList": [
{
"appServiceProducedId": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"description": "string",
"apiFileId": "string",
"guideFileId": "string",
"iconFileId": "string",
"serviceName": "string",
"internalPort": 0,
"version": "string",
"protocol": "string",
"author": "string",
"experienceUrl": "string",
"dnsRuleIdList": [
"string"
],
"trafficRuleIdList": [
"string"
]
}
],
"appServiceRequiredList": [
{
"id": "string",
"oneLevelName": "string",
"oneLevelNameEn": "string",
"twoLevelName": "string",
"twoLevelNameEn": "string",
"serName": "string",
"version": "string",
"requestedPermissions": false,
"appId": "string",
"packageId": "string"
}
],
"trafficRuleList": [
{
"trafficRuleId": "string",
"filterType": "string",
"priority": 0,
"trafficFilter": [
{
"srcAddress": [
"string"
],
"dstAddress": [
"string"
],
"srcPort": [
"string"
],
"dstPort": [
"string"
],
"protocol": [
"string"
],
"tag": [
"string"
],
"srcTunnelAddress": [
"string"
],
"tgtTunnelAddress": [
"string"
],
"srcTunnelPort": [
"string"
],
"dstTunnelPort": [
"string"
],
"qCI": 0,
"dSCP": 0,
"tC": 0
}
],
"action": "string",
"dstInterface": [
{
"interfaceType": "string",
"tunnelInfo": {
"tunnelType": "string",
"tunnelDstAddress": "string",
"tunnelSrcAddress": "string",
"tunnelSpecificData": "string"
},
"srcMacAddress": "string",
"dstMacAddress": "string",
"dstIpAddress": "string"
}
]
}
],
"dnsRuleList": [
{
"dnsRuleId": "string",
"domainName": "string",
"ipAddressType": "string",
"ipAddress": "string",
"ttl": "string"
}
]
},
"scriptList": [
{
"id": "string",
"name": "string",
"scriptFileId": "string",
"createTime": "2021-12-30T09:19:44.090Z"
}
]
}
19. VmApp-network¶
This part is about the api for vm network
19.1 GET all network¶
query all networks
Resource URI: /mec/developer/v2/applications/{applicationId}/networks
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"description": "string"
}
]
19.2 POST create network¶
create network
Resource URI: /mec/developer/v2/applications/{applicationId}/networks
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
network |
network |
body param |
yes |
network
{
"id": "string",
"name": "string",
"description": "string"
}
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string"
}
19.3 GET one network¶
get one network
Resource URI: /mec/developer/v2/applications/{applicationId}/networks/{networkId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
networkId |
networkId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string"
}
19.4 PUT modify network¶
modify one network
Resource URI: /mec/developer/v2/applications/{applicationId}/networks/{networkId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
networkId |
networkId |
path param |
yes |
network |
network |
body param |
yes |
network
{
"id": "string",
"name": "string",
"description": "string"
}
Example response
200 OK
{
"id": "string",
"name": "string",
"description": "string"
}
19.5 DELETE network¶
delete network
Resource URI: /mec/developer/v2/applications/{applicationId}/networks/{networkId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
networkId |
networkId |
path param |
yes |
Example response
200 OK
true
20. UserData¶
This part is about the api for vm config(userdata)
20.1 GET all userdata¶
query all userdata
Resource URI: /mec/developer/v2/user-datas
Name |
Definition |
Type |
Required |
---|---|---|---|
osType |
osType |
query param |
yes |
pkgSpecId |
pkgSpecId |
query param |
yes |
Example response
200 OK
string output
21. Pkg-specs¶
This part is about the api for vm config(pkg specs)
21.1 GET all pkg specs¶
query all pkg specs
Resource URI: /mec/developer/v2/pkg-specs
Example response
200 OK
[
{
"id": "string",
"zhName": "string",
"enName": "string",
"specifications": {
"appdSpecs": {
"networkNameSpecs": {
"networkNameN6": "string",
"networkNameInternet": "string",
"networkNameMep": "string"
},
"userDataFlag": "string",
"flavorSpecs": "string"
}
}
}
]
22. VmApp-operation¶
This part is about the api for vm application operation
22.1 POST export image¶
export vm image
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/export-image
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
Example response
200 OK
{
"operationId": "string"
}
22.2 GET ssh url¶
query vm ssh url
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/ssh
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
Example response
200 OK
{
"encoding": "string",
"id": "string",
"status": "string",
"sshAddress": "string"
}
22.3 GET vnc url¶
query vm vnc url
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/vnc
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
22.4 POST instantiate vm¶
instantiate vm
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/launch
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
Example response
200 OK
{
"operationId": "string"
}
22.5 GET merge app file¶
merge app file
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/merge-file
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
fileName |
fileName |
path param |
yes |
identifier |
identifier |
path param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
22.6 POST upload file¶
upload app file
Resource URI: /mec/developer/v2/applications/{applicationId}/vms/{vmId}/action/upload-file
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
vmId |
vmId |
path param |
yes |
id |
id |
query param |
yes |
chunkNumber |
chunkNumber |
query param |
yes |
chunkSize |
chunkSize |
query param |
yes |
currentChunkSize |
currentChunkSize |
query param |
yes |
totalSize |
totalSize |
query param |
yes |
identifier |
identifier |
query param |
yes |
filename |
filename |
query param |
yes |
relativePath |
relativePath |
query param |
yes |
totalChunks |
totalChunks |
query param |
yes |
type |
type |
query param |
yes |
file |
file |
query param |
yes |
Example response
200 OK
true
23. ContainerApp-operation¶
This part is about the api for container application operation
23.1 GET container ssh url¶
query container ssh url
Resource URI: /mec/developer/v2/applications/{applicationId}/containers/action/ssh
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
{
"encoding": "string",
"id": "string",
"status": "string",
"sshAddress": "string"
}
23.2 POST instantiate container¶
instantiate container application
Resource URI: /mec/developer/v2/applications/{applicationId}/containers/action/launch
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
{
"operationId": "string"
}
24. App-operation¶
This part is about the api for application operation
24.1 POST clean env¶
clean test env
Resource URI: /mec/developer/v2/applications/{applicationId}/action/clean-env
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
true
24.2 GET atp tests¶
query all atp test
Resource URI: /mec/developer/v2/applications/{applicationId}/action/atp-tests
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"appName": "string",
"status": "string",
"createTime": "string"
}
24.3 POST create atp tests¶
create atp test
Resource URI: /mec/developer/v2/applications/{applicationId}/action/atp-tests
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
true
24.4 POST generate pkg¶
generate app pkg
Resource URI: /mec/developer/v2/applications/{applicationId}/action/generate-package
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
}
24.5 GET one atp test¶
query one atp test
Resource URI: /mec/developer/v2/applications/{applicationId}/atpTests/{atpTestId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
atpTestId |
atpTestId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"appName": "string",
"status": "string",
"createTime": "string"
}
24.6 POST release app¶
release application
Resource URI: /mec/developer/v2/applications/{applicationId}/action/release
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
publishAppDto |
publishAppDto |
body param |
yes |
publishAppDto
{
"price": 0,
"free": false
}
Example response
200 OK
true
24.7 PUT select host¶
release app,select host
Resource URI: /mec/developer/v2/applications/{applicationId}/action/sel-mephost
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
selectSandbox |
selectSandbox |
body param |
yes |
selectSandbox
{
"mepHostId": "string"
}
Example response
200 OK
true
25. AppPackage¶
This part is about the api for application package
25.1 GET app package¶
get app package
Resource URI: /mec/developer/v2/apppackages/{packageId}
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
}
25.2 POST get package content¶
query package file content
Resource URI: /mec/developer/v2/apppackages/{packageId}/action/get-file-content
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
structureReqDto |
structureReqDto |
body param |
yes |
structureReqDto
{
"filePath": "string"
}
Example response
200 OK
{
"filePath": "string",
"content": "string"
}
25.3 GET package structure¶
query package structure
Resource URI: /mec/developer/v2/apppackages/{packageId}/action/get-pkg-structure
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
Example response
200 OK
[
{}
]
25.4 PUT modify package content¶
modify package content
Resource URI: /mec/developer/v2/apppackages/{packageId}/action/update-file-content
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
releasedPkgFileContent |
releasedPkgFileContent |
body param |
yes |
releasedPkgFileContent
{
"filePath": "string",
"content": "string"
}
Example response
200 OK
{
"filePath": "string",
"content": "string"
}
25.5 POST zip package¶
zip app package
Resource URI: /mec/developer/v2/apppackages/{packageId}/action/zip-package
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
atpTestId |
atpTestId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"appId": "string",
"packageFileName": "string",
"packageFilePath": "string"
}
26. Helmcharts¶
This part is about the api for application deploy yaml
26.1 GET helm chart¶
get helm chart
Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
helmchartId |
helmchartId |
path param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"helmChartFileId": "string",
"createTime": "2021-12-30T11:08:27.398Z",
"applicationId": "string",
"helmChartFileList": [
{
"name": "string",
"innerPath": "string",
"children": [
{}
],
"content": "string",
"file": false
}
]
}
26.2 DELETE helm chart¶
delete helm chart
Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
helmchartId |
helmchartId |
path param |
yes |
Example response
200 OK
true
26.3 POST download helmchart¶
download helm package
Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}/action/download
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
helmchartId |
helmchartId |
path param |
yes |
Example response
200 OK
byte[]
26.4 GET helmchart content¶
query package content
Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}/action/get-inner-file
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
helmchartId |
helmchartId |
path param |
yes |
filePath |
filePath |
query param |
yes |
Example response
200 OK
string output
26.5 GET all helmchart¶
get all helmcharts
Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
Example response
200 OK
[
{
"id": "string",
"name": "string",
"helmChartFileId": "string",
"createTime": "2021-12-30T11:08:27.398Z",
"applicationId": "string",
"helmChartFileList": [
{
"name": "string",
"innerPath": "string",
"children": [
{}
],
"content": "string",
"file": false
}
]
}
]
26.6 POST upload helmchart¶
upload deploy file
Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
file |
file |
format param |
yes |
Example response
200 OK
{
"id": "string",
"name": "string",
"helmChartFileId": "string",
"createTime": "2021-12-30T11:08:27.398Z",
"applicationId": "string",
"helmChartFileList": [
{
"name": "string",
"innerPath": "string",
"children": [
{}
],
"content": "string",
"file": false
}
]
}
26.7 PUT modify helm content¶
modify helm content
Resource URI: /mec/developer/v2/applications/{applicationId}/helmcharts/{helmchartId}/action/modify-inner-file
Name |
Definition |
Type |
Required |
---|---|---|---|
applicationId |
applicationId |
path param |
yes |
helmchartId |
helmchartId |
path param |
yes |
content |
content |
body param |
yes |
content
{
"innerFilePath": "string",
"content": "string"
}
Example response
200 OK
true
27. ReleasedPackage¶
This part is about the api for synchronized pkg
27.1 GET all released pkg¶
query all released pkg
Resource URI: /mec/developer/v2/released-packages
Name |
Definition |
Type |
Required |
---|---|---|---|
name |
name |
query param |
yes |
limit |
limit |
query param |
yes |
offset |
limit |
query param |
yes |
Example response
200 OK
{}
27.2 DELETE released pkg¶
delete released pkg
Resource URI: /mec/developer/v2/released-packages/{packageId}
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
Example response
200 OK
true
27.3 POST release pkg¶
release pkg
Resource URI: /mec/developer/v2/released-packages/{packageId}/action/release
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
publishAppDto |
publishAppDto |
body param |
yes |
publishAppDto
{
"price": 0,
"free": false
}
Example response
200 OK
true
27.4 POST get released content¶
query package content
Resource URI: /mec/developer/v2/released-packages/{packageId}/action/get-file-content
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
structureReqDto |
structureReqDto |
body param |
yes |
structureReqDto
{
"filePath": "string"
}
Example response
200 OK
{
"filePath": "string",
"content": "string"
}
27.5 POST synchronize pkg¶
synchronize released pkg from appstore
Resource URI:/mec/developer/v2/released-packages
Name |
Definition |
Type |
Required |
---|---|---|---|
pkgReqDtos |
pkgReqDtos |
body param |
yes |
pkgReqDtos
[
{
"appId": "string",
"packageId": "string"
}
]
Example response
200 OK
true
27.6 GET released pkg structure¶
get released pkg structure
Resource URI: /mec/developer/v2/released-packages/{packageId}/action/get-pkg-structure
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
Example response
200 OK
[
{}
]
27.7 PUT modify pkg content¶
modify released pkg file content
Resource URI: /mec/developer/v2/released-packages/{packageId}/action/edit-file-content
Name |
Definition |
Type |
Required |
---|---|---|---|
packageId |
packageId |
path param |
yes |
releasedPkgFileContent |
releasedPkgFileContent |
body param |
yes |
releasedPkgFileContent
{
"filePath": "string",
"content": "string"
}
Example response
200 OK
{
"filePath": "string",
"content": "string"
}
28. VmImage¶
This part is about the api for vm image
28.1 GET check upload¶
check chunk for upload vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}/action/upload
Name |
Definition |
Type |
Required |
---|---|---|---|
identifier |
identifier |
query param |
yes |
imageId |
imageId |
path param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
28.2 POST upload vm image¶
upload vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}/action/upload
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
id |
id |
query param |
yes |
chunkNumber |
chunkNumber |
query param |
yes |
chunkSize |
chunkSize |
query param |
yes |
currentChunkSize |
currentChunkSize |
query param |
yes |
totalSize |
totalSize |
query param |
yes |
identifier |
identifier |
query param |
yes |
filename |
filename |
query param |
yes |
relativePath |
relativePath |
query param |
yes |
totalChunks |
totalChunks |
query param |
yes |
type |
type |
query param |
yes |
file |
file |
query param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
28.3 DELETE cancel upload vm image¶
cancel upload vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}/action/upload
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
identifier |
identifier |
query param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
28.4 POST create vm image¶
create vm image
Resource URI: /mec/developer/v2/vmimages
Name |
Definition |
Type |
Required |
---|---|---|---|
VmImage |
VmImage |
body param |
yes |
VmImage
{
"visibleType": "public",
"osType": "ubuntu",
"osVersion": "string",
"osBitType": "string",
"systemDiskSize": 0,
"name": "string"
}
Example response
200 OK
true
28.5 GET one vm image¶
query vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
{
"id": 0,
"visibleType": "public",
"osType": "ubuntu",
"osVersion": "string",
"osBitType": "string",
"systemDiskSize": 0,
"name": "string",
"imageFileName": "string",
"createTime": "string",
"modifyTime": "string",
"imageFormat": "string",
"uploadTime": "string",
"downLoadUrl": "string",
"imageSize": 0,
"status": "UPLOAD_WAIT",
"imageSlimStatus": "SLIM_WAIT",
"userId": "string",
"userName": "string",
"fileMd5": "string",
"fileIdentifier": "string",
"errorType": "string"
}
28.6 PUT modify vm image¶
modify vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
VmImage |
VmImage |
body param |
yes |
VmImage
{
"id": 0,
"visibleType": "public",
"osType": "ubuntu",
"osVersion": "string",
"osBitType": "string",
"systemDiskSize": 0,
"name": "string"
}
Example response
200 OK
true
28.7 DELETE vm image¶
delete vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
true
28.8 GET download vm image¶
download vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}/action/download
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
binary output.
28.9 POST get all vm image¶
query all vm image
Resource URI: /mec/developer/v2/vmimages/action/get-list
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
vmImageReq |
vmImageReq |
body param |
yes |
vmImageReq
{
"name": "string",
"visibleType": "public",
"userId": "string",
"osType": "string",
"status": "UPLOAD_WAIT",
"uploadTimeBegin": "string",
"uploadTimeEnd": "string",
"queryCtrl": {
"offset": 0,
"limit": 0,
"sortBy": "userName",
"sortOrder": "ASC"
}
}
Example response
200 OK
{
"totalCount": 0,
"imageList": [
{
"id": 0,
"visibleType": "public",
"osType": "ubuntu",
"osVersion": "string",
"osBitType": "string",
"systemDiskSize": 0,
"name": "string",
"imageFileName": "string",
"createTime": "string",
"modifyTime": "string",
"imageFormat": "string",
"uploadTime": "string",
"downLoadUrl": "string",
"imageSize": 0,
"status": "UPLOAD_WAIT",
"imageSlimStatus": "SLIM_WAIT",
"userId": "string",
"userName": "string",
"fileMd5": "string",
"fileIdentifier": "string",
"errorType": "string"
}
]
}
28.10 POST slim vm image¶
slim vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}/action/slim
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
{
"operationId": "string"
}
28.11 GET merge vm image¶
merge vm image
Resource URI: /mec/developer/v2/vmimages/{imageId}/action/merge
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
fileName |
fileName |
query param |
yes |
identifier |
identifier |
query param |
yes |
Example response
200 OK
{
"headers": {
"string": [
"string"
]
},
"body": {},
"statusCode": "CONTINUE",
"statusCodeValue": 0
}
28.12 PUT publish image¶
publish image
Resource URI: /mec/developer/v2/vmimages/{imageId}/action/publish
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
true
28.13 PUT reset image¶
reset vm image status
Resource URI: /mec/developer/v2/vmimages/{imageId}/action/reset
Name |
Definition |
Type |
Required |
---|---|---|---|
imageId |
imageId |
path param |
yes |
Example response
200 OK
true
Developer Dependency¶
Developer-be Third-Party Use List¶
GroupId |
ArtifactId |
Version |
License |
Direct Import (Y/N) |
---|---|---|---|---|
ch.ethz.ganymed |
ganymed-ssh2 |
262 |
BSD |
Y |
com.esotericsoftware.yamlbeans |
yamlbeans |
1.13 |
BSD 2-clause |
Y |
com.fasterxml |
classmate |
1.4.0 |
Apache 2.0 |
N |
com.fasterxml.jackson.core |
jackson-annotations |
2.10.0 |
Apache 2.0 |
N |
com.fasterxml.jackson.core |
jackson-core |
2.10.5 |
Apache 2.0 |
Y |
com.fasterxml.jackson.core |
jackson-databind |
2.10.5.1 |
Apache 2.0 |
Y |
com.fasterxml.jackson.dataformat |
jackson-dataformat-xml |
2.10.0 |
Apache 2.0 |
N |
com.fasterxml.jackson.dataformat |
jackson-dataformat-yaml |
2.10.0 |
Apache 2.0 |
N |
com.fasterxml.jackson.datatype |
jackson-datatype-jdk8 |
2.10.0 |
Apache 2.0 |
N |
com.fasterxml.jackson.datatype |
jackson-datatype-jsr310 |
2.10.0 |
Apache 2.0 |
N |
com.fasterxml.jackson.jaxrs |
jackson-jaxrs-base |
2.9.9 |
Apache |
N |
com.fasterxml.jackson.jaxrs |
jackson-jaxrs-json-provider |
2.9.9 |
Apache |
N |
com.fasterxml.jackson.module |
jackson-module-jaxb-annotations |
2.10.0 |
Apache 2.0 |
N |
com.fasterxml.jackson.module |
jackson-module-parameter-names |
2.10.0 |
Apache 2.0 |
N |
com.github.docker-java |
docker-java |
3.2.10 |
Apache 2.0 |
Y |
com.github.docker-java |
docker-java-api |
3.2.10 |
Apache 2.0 |
N |
com.github.docker-java |
docker-java-core |
3.2.10 |
Apache 2.0 |
N |
com.github.docker-java |
docker-java-transport |
3.2.10 |
Apache 2.0 |
N |
com.github.docker-java |
docker-java-transport-jersey |
3.2.10 |
Apache 2.0 |
N |
com.github.docker-java |
docker-java-transport-netty |
3.2.10 |
Apache 2.0 |
N |
com.github.jsqlparser |
jsqlparser |
2.0 |
Apache 2.0,LGPL 2.1 |
N |
com.github.pagehelper |
pagehelper |
5.1.11 |
MIT |
N |
com.github.pagehelper |
pagehelper-spring-boot-autoconfigure |
1.2.13 |
MIT |
N |
com.github.pagehelper |
pagehelper-spring-boot-starter |
1.2.13 |
MIT |
Y |
com.google.code.findbugs |
jsr305 |
3.0.2 |
Apache 2.0 |
N |
com.google.code.gson |
gson |
2.8.5 |
Apache 2.0 |
Y |
com.google.guava |
guava |
26.0-jre |
Apache 2.0 |
N |
com.google.inject |
guice |
4.2.0 |
Apache 2.0 |
N |
com.google.inject.extensions |
guice-assistedinject |
4.1.0 |
Apache 2.0 |
N |
com.google.inject.extensions |
guice-multibindings |
4.1.0 |
Apache 2.0 |
N |
com.google.protobuf |
protobuf-java |
3.7.1 |
BSD 3-Clause |
N |
com.h2database |
h2 |
1.4.199 |
MPL 2.0,EPL 1.0 |
Y |
com.ibm.icu |
icu4j |
58.2 |
ICU |
N |
com.jayway.jsonpath |
json-path |
2.4.0 |
Apache 2.0 |
N |
com.jcraft |
jsch |
0.1.54 |
BSD |
Y |
com.kohlschutter.junixsocket |
junixsocket-common |
2.3.2 |
Apache 2.0 |
N |
com.kohlschutter.junixsocket |
junixsocket-native-common |
2.3.2 |
Apache 2.0 |
N |
com.mikesamuel |
json-sanitizer |
1.2.2 |
Apache 2.0 |
Y |
com.netflix.archaius |
archaius-core |
0.7.6 |
Apache 2.0 |
N |
com.netflix.hystrix |
hystrix-core |
1.5.18 |
Apache 2.0 |
N |
com.netflix.netflix-commons |
netflix-commons-util |
0.3.0 |
Apache 2.0 |
N |
com.netflix.netflix-commons |
netflix-statistics |
0.1.1 |
Apache 2.0 |
N |
com.netflix.ribbon |
ribbon |
2.3.0 |
Apache 2.0 |
N |
com.netflix.ribbon |
ribbon-core |
2.3.0 |
Apache 2.0 |
N |
com.netflix.ribbon |
ribbon-loadbalancer |
2.3.0 |
Apache 2.0 |
N |
com.netflix.ribbon |
ribbon-transport |
2.3.0 |
Apache 2.0 |
N |
com.netflix.servo |
servo-core |
0.12.21 |
Apache 2.0 |
N |
com.netflix.spectator |
spectator-api |
0.83.0 |
Apache 2.0 |
N |
com.netflix.spectator |
spectator-reg-servo |
0.83.0 |
Apache 2.0 |
N |
com.spencerwi |
Either.java |
2.1.0 |
MIT |
Y |
com.squareup.okhttp3 |
logging-interceptor |
3.8.1 |
Apache 2.0 |
N |
com.squareup.okhttp3 |
okhttp |
3.8.1 |
Apache 2.0 |
N |
com.squareup.okio |
okio |
1.13.0 |
Apache 2.0 |
N |
com.sun.istack |
istack-commons-runtime |
3.0.7 |
CDDL 1.1,GPL 1.1 |
N |
com.sun.xml.fastinfoset |
FastInfoset |
1.2.15 |
Apache 2.0 |
N |
com.vaadin.external.google |
android-json |
0.0.20131108.vaadin1 |
Apache 2.0 |
N |
com.zaxxer |
HikariCP |
3.2.0 |
Apache 2.0 |
N |
commons-codec |
commons-codec |
1.11 |
Apache 2.0 |
N |
commons-configuration |
commons-configuration |
1.10 |
Apache 2.0 |
N |
commons-fileupload |
commons-fileupload |
1.3.3 |
Apache 2.0 |
Y |
commons-io |
commons-io |
2.6 |
Apache 2.0 |
Y |
commons-lang |
commons-lang |
2.6 |
Apache 2.0 |
N |
commons-net |
commons-net |
3.3 |
Apache 2.0 |
Y |
io.fabric8 |
kubernetes-model |
4.1.0 |
Apache 2.0 |
Y |
io.gsonfire |
gson-fire |
1.8.5 |
MIT |
N |
io.kubernetes |
client-java |
13.0.1 |
Apache 2.0 |
Y |
io.kubernetes |
client-java-api |
13.0.1 |
Apache 2.0 |
Y |
io.kubernetes |
client-java-proto |
13.0.1 |
Apache 2.0 |
Y |
io.lettuce |
lettuce-core |
5.1.8.RELEASE |
Apache 2.0 |
Y |
io.netty |
netty-buffer |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-codec |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-codec-dns |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-codec-http |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-codec-http2 |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-codec-socks |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-common |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-handler |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-handler-proxy |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-resolver |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-resolver-dns |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-tcnative-boringssl-static |
2.0.25.Final |
Apache 2.0 |
N |
io.netty |
netty-transport |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-transport-native-epoll |
l4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-transport-native-kqueue |
4.1.36.Final |
Apache 2.0 |
N |
io.netty |
netty-transport-native-unix-common |
4.1.36.Final |
Apache 2.0 |
N |
io.projectreactor |
reactor-core |
3.2.8.RELEASE |
Apache 2.0 |
Y |
io.prometheus |
simpleclient |
0.6.0 |
Apache 2.0 |
N |
io.prometheus |
simpleclient_common |
0.6.0 |
Apache 2.0 |
N |
io.prometheus |
simpleclient_httpserver |
0.6.0 |
Apache 2.0 |
N |
io.protostuff |
protostuff-api |
1.5.9 |
Apache 2.0 |
N |
io.protostuff |
protostuff-collectionschema |
1.5.9 |
Apache 2.0 |
N |
io.protostuff |
protostuff-core |
1.5.9 |
Apache 2.0 |
N |
io.protostuff |
protostuff-runtime |
1.5.9 |
Apache 2.0 |
N |
io.protostuff |
protostuff-parser |
2.2.25 |
Apache 2.0 |
N |
io.reactivex |
rxjava |
1.2.0 |
Apache 2.0 |
N |
io.reactivex |
rxnetty |
0.4.9 |
Apache 2.0 |
N |
io.reactivex |
rxnetty-contexts |
0.4.9 |
Apache 2.0 |
N |
io.reactivex |
rxnetty-servo |
0.4.9 |
Apache 2.0 |
N |
io.swagger |
swagger-annotations |
1.6.2 |
Apache 2.0 |
N |
io.swagger |
swagger-core |
1.5.22 |
Apache 2.0 |
N |
io.swagger |
swagger-models |
1.5.22 |
Apache 2.0 |
N |
io.vertx |
vertx-auth-common |
3.9.4 |
Apache 2.0 |
N |
io.vertx |
vertx-bridge-common |
3.9.4 |
Apache 2.0 |
N |
io.vertx |
vertx-core |
3.9.4 |
Apache 2.0 |
N |
io.vertx |
vertx-web |
3.9.4 |
Apache 2.0 |
N |
io.vertx |
vertx-web-common |
3.9.4 |
Apache 2.0 |
N |
io.zipkin.brave |
brave |
5.6.0 |
Apache 2.0 |
N |
io.zipkin.reporter2 |
zipkin-reporter |
2.7.13 |
Apache 2.0 |
N |
io.zipkin.zipkin2 |
zipkin |
2.19.1 |
Apache 2.0 |
N |
jakarta.activation |
jakarta.activation-api |
1.2.1 |
EDL 1.0 |
N |
jakarta.xml.bind |
jakarta.xml.bind-api |
2.3.3 |
EDL 1.0 |
N |
javax.activation |
javax.activation-api |
1.2.0 |
CDDL,GPL2.0 |
N |
javax.annotation |
javax.annotation-api |
1.3.2 |
CDDL,GPLv2.0 |
N |
javax.inject |
javax.inject |
1 |
Apache 2.0 |
N |
javax.servlet |
javax.servlet-api |
4.0.1 |
CDDL,GPLv2.0 |
N |
javax.validation |
validation-api |
2.0.1.Final |
Apache 2.0 |
N |
javax.ws.rs |
javax.ws.rs-api |
2.1 |
CDDL 1.1,GPL 1.1 |
N |
javax.xml.bind |
jaxb-api |
2.3.1 |
CDDL 1.1 |
N |
junit |
junit |
4.13 |
EPL 1.0 |
Y |
net.bytebuddy |
byte-buddy |
1.9.13 |
Apache 2.0 |
N |
net.bytebuddy |
byte-buddy-agent |
1.9.13 |
Apache 2.0 |
N |
net.lingala.zip4j |
zip4j |
2.4.0 |
Apache 2.0 |
Y |
net.minidev |
accessors-smart |
1.2 |
Apache 2.0 |
N |
net.minidev |
json-smart |
2.3 |
Apache 2.0 |
N |
org.antlr |
ST4 |
4.0.8 |
BSD |
N |
org.antlr |
antlr-runtime |
3.5.2 |
BSD |
N |
org.antlr |
antlr4 |
4.7 |
The BSD |
N |
org.antlr |
antlr4-runtime |
4.7 |
BSD |
N |
org.apache.ant |
ant |
1.8.2 |
Apache 2.0 |
Y |
org.apache.ant |
ant-launcher |
1.8.2 |
Apache 2.0 |
N |
org.apache.commons |
commons-collections4 |
4.4 |
Apache 2.0 |
N |
org.apache.commons |
commons-compress |
1.19 |
Apache 2.0 |
Y |
org.apache.commons |
commons-lang3 |
3.8.1 |
Apache 2.0 |
N |
org.apache.httpcomponents |
httpclient |
4.5.9 |
Apache 2.0 |
N |
org.apache.httpcomponents |
httpcore |
4.4.11 |
Apache 2.0 |
N |
org.apache.httpcomponents |
httpmime |
4.3.1 |
Apache 2.0 |
N |
org.apache.logging.log4j |
log4j-api |
2.17.0 |
Apache 2.0 |
Y |
org.apache.logging.log4j |
log4j-core |
2.17.0 |
Apache 2.0 |
Y |
org.apache.logging.log4j |
log4j-slf4j-impl |
2.17.0 |
Apache 2.0 |
Y |
org.apache.servicecomb |
common-javassist |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
common-protobuf |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
common-rest |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
deployment |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
foundation-common |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
foundation-config |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
foundation-metrics |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
foundation-protobuf |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
foundation-ssl |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
foundation-vertx |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
handler-bizkeeper |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
handler-flowcontrol-qps |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
handler-loadbalance |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
java-chassis-core |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
provider-jaxrs |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
provider-pojo |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
provider-rest-common |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
provider-springmvc |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
service-registry |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
spring-boot2-starter |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
spring-boot2-starter-servlet |
1.3.2 |
Apache 2.0 |
Y |
org.apache.servicecomb |
swagger-generator-core |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
swagger-generator-jaxrs |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
swagger-generator-springmvc |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
swagger-invocation-core |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
swagger-invocation-jaxrs |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
swagger-invocation-springmvc |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
transport-common |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
transport-highway |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
transport-rest-client |
1.3.2 |
Apache 2.0 |
N |
org.apache.servicecomb |
transport-rest-servlet |
1.3.2 |
Apache 2.0 |
N |
org.apache.tomcat |
tomcat-annotations-api |
9.0.21 |
Apache 2.0 |
N |
org.apache.tomcat.embed |
tomcat-embed-core |
9.0.44 |
Apache 2.0 |
Y |
org.apache.tomcat.embed |
tomcat-embed-el |
9.0.21 |
Apache 2.0 |
N |
org.apache.tomcat.embed |
tomcat-embed-websocket |
9.0.44 |
Apache 2.0 |
Y |
org.apiguardian |
apiguardian-api |
1.0.0 |
Apache 2.0 |
N |
org.assertj |
assertj-core |
3.11.1 |
Apache 2.0 |
N |
org.bitbucket.b_c |
jose4j |
0.7.8 |
Apache 2.0 |
N |
org.bouncycastle |
bcprov-jdk15on |
1.68 |
BouncyCastle |
Y |
org.bouncycastle |
bcpkix-jdk15on |
1.69 |
BouncyCastle |
Y |
org.bouncycastle |
bcutil-jdk15on |
1.69 |
BouncyCastle |
N |
org.bouncycastle |
bcprov-ext-jdk15on |
1.69 |
BouncyCastle |
Y |
org.checkerframework |
checker-qual |
3.5.0 |
MIT |
N |
org.codehaus.woodstox |
stax2-api |
4.2 |
BSD |
N |
org.eclipse.persistence |
javax.persistence |
2.1.0 |
EPL 1.0 |
Y |
org.glassfish |
jakarta.el |
3.0.3 |
EPL 2.0 |
N |
org.glassfish |
javax.json |
1.0.4 |
CDDL 1.1,GPL 2.0 |
N |
org.glassfish.hk2 |
hk2-api |
2.5.0-b42 |
EPL 2.0 |
N |
org.glassfish.hk2 |
hk2-locator |
2.5.0-b42 |
EPL 2.0 |
N |
org.glassfish.hk2 |
hk2-utils |
2.5.0-b42 |
EPL 2.0 |
N |
org.glassfish.hk2 |
osgi-resource-locator |
1.0.1 |
EPL 2.0 |
N |
org.glassfish.hk2.external |
aopalliance-repackaged |
2.5.0-b42 |
EPL 2.0 |
N |
org.glassfish.hk2.external |
javax.inject |
2.5.0-b42 |
EPL 2.0 |
N |
org.glassfish.jaxb |
jaxb-runtime |
2.3.1 |
CDDL,GPL |
N |
org.glassfish.jaxb |
txw2 |
2.3.1 |
CDDL,GPL |
N |
org.glassfish.jersey.connectors |
jersey-apache-connector |
2.27 |
Apache 2.0,BSD 2-clause,EDL 1.0,EPL 2.0,MIT,Public,W3C |
N |
org.glassfish.jersey.core |
jersey-client |
2.27 |
Apache 2.0,BSD 2-clause,EDL 1.0,EPL 2.0,MIT,Public,W3C |
N |
org.glassfish.jersey.core |
jersey-common |
2.27 |
Apache 2.0,BSD 2-clause,EDL 1.0,EPL 2.0,MIT,Public,W3C |
N |
org.glassfish.jersey.inject |
jersey-hk2 |
2.27 |
Apache 2.0,BSD 2-clause,EDL 1.0,EPL 2.0,MIT,Public,W3C |
N |
org.hamcrest |
hamcrest |
2.2 |
BSD 3-clause |
N |
org.hamcrest |
hamcrest-core |
1.3 |
BSD 3-clause |
N |
org.hdrhistogram |
HdrHistogram |
2.1.10 |
BSD 2-clause,CC0 1.0 |
N |
org.hibernate.validator |
hibernate-validator |
6.0.17.Final |
Apache 2.0 |
N |
org.javassist |
javassist |
3.24.0-GA |
Apache 2.0 |
N |
org.jboss.logging |
jboss-logging |
3.3.2.Final |
Apache 2.0 |
N |
org.jmockit |
jmockit |
1.19 |
MIT |
Y |
org.jmockit |
jmockit-coverage |
1.19 |
MIT |
Y |
org.junit.jupiter |
junit-jupiter |
5.6.2 |
EPL 2.0 |
N |
org.junit.jupiter |
junit-jupiter-api |
5.3.2 |
EPL 2.0 |
N |
org.junit.jupiter |
junit-jupiter-engine |
5.3.2 |
EPL 2.0 |
N |
org.junit.jupiter |
junit-jupiter-params |
5.3.2 |
EPL 2.0 |
N |
org.junit.platform |
junit-platform-commons |
1.3.2 |
EPL 2.0 |
N |
org.junit.platform |
junit-platform-engine |
1.3.2 |
EPL 2.0 |
N |
org.junit.vintage |
junit-vintage-engine |
5.3.2 |
EPL 2.0 |
N |
org.jvnet.staxex |
stax-ex |
1.8 |
EDL 1.0 |
N |
org.mockito |
mockito-core |
2.23.4 |
MIT |
N |
org.mockito |
mockito-junit-jupiter |
2.23.4 |
MIT |
N |
org.modelmapper |
modelmapper |
1.1.0 |
Apache 2.0 |
N |
org.mybatis |
mybatis |
3.5.6 |
Apache 2.0 |
N |
org.mybatis |
mybatis-spring |
2.0.6 |
Apache 2.0 |
N |
org.mybatis.spring.boot |
mybatis-spring-boot-autoconfigure |
2.2.0 |
Apache 2.0 |
N |
org.mybatis.spring.boot |
mybatis-spring-boot-starter |
2.2.0 |
Apache 2.0 |
Y |
org.objenesis |
objenesis |
2.6 |
Apache 2 |
N |
org.opentest4j |
opentest4j |
1.1.1 |
Apache 2 |
N |
org.ow2.asm |
asm |
5.0.4 |
BSD |
N |
org.postgresql |
postgresql |
42.2.16 |
BSD 2-Clause |
Y |
org.projectlombok |
lombok |
1.18.10 |
The MIT |
Y |
org.reactivestreams |
reactive-streams |
1.0.0 |
CC0 |
Y |
org.skyscreamer |
jsonassert |
1.5.0 |
Apache 2.0 |
N |
org.slf4j |
jcl-over-slf4j |
1.7.26 |
MIT |
N |
org.slf4j |
slf4j-api |
1.7.30 |
MIT |
Y |
org.springframework |
spring-aop |
5.1.13.RELEASE |
Apache 2.0 |
Y |
org.springframework |
spring-beans |
5.1.13.RELEASE |
Apache 2.0 |
N |
org.springframework |
spring-context |
5.1.13.RELEASE |
Apache 2.0 |
N |
org.springframework |
spring-core |
5.1.13.RELEASE |
Apache 2.0 |
Y |
org.springframework |
spring-expression |
5.1.8.RELEASE |
Apache 2.0 |
N |
org.springframework |
spring-jcl |
5.1.13.RELEASE |
Apache 2.0 |
Y |
org.springframework |
spring-jdbc |
5.2.8.RELEASE |
Apache 2.0 |
Y |
org.springframework |
spring-test |
5.1.13.RELEASE |
Apache 2.0 |
N |
org.springframework |
spring-tx |
5.1.13.RELEASE |
Apache 2.0 |
Y |
org.springframework |
spring-web |
5.1.13.RELEASE |
Apache 2.0 |
Y |
org.springframework |
spring-webmvc |
5.1.13.RELEASE |
Apache 2.0 |
N |
org.springframework |
spring-websocket |
5.1.13.RELEASE |
Apache 2.0 |
Y |
org.springframework.boot |
spring-boot |
2.1.6.RELEASE |
Apache 2.0 |
N |
org.springframework.boot |
spring-boot-autoconfigure |
2.1.6.RELEASE |
Apache 2.0 |
N |
org.springframework.boot |
spring-boot-configuration-processor |
2.1.6.RELEASE |
Apache 2.0 |
Y |
org.springframework.boot |
spring-boot-starter |
2.1.6.RELEASE |
Apache 2.0 |
N |
org.springframework.boot |
spring-boot-starter-jdbc |
2.3.3.RELEASE |
Apache 2.0 |
Y |
org.springframework.boot |
spring-boot-starter-json |
2.1.6.RELEASE |
Apache 2.0 |
N |
org.springframework.boot |
spring-boot-starter-test |
2.3.3.RELEASE |
Apache 2.0 |
Y |
org.springframework.boot |
spring-boot-starter-tomcat |
2.1.6.RELEASE |
Apache 2.0 |
N |
org.springframework.boot |
spring-boot-starter-validation |
2.3.3.RELEASE |
Apache 2.0 |
Y |
org.springframework.boot |
spring-boot-starter-web |
2.3.3.RELEASE |
Apache 2.0 |
Y |
org.springframework.boot |
spring-boot-starter-websocket |
2.1.18.RELEASE |
Apache 2.0 |
Y |
org.springframework.boot |
spring-boot-test |
2.1.6.RELEASE |
Apache 2.0 |
N |
org.springframework.boot |
spring-boot-test-autoconfigure |
2.1.6.RELEASE |
Apache 2.0 |
N |
org.springframework.security |
spring-security-config |
5.3.8.RELEASE |
Apache 2.0 |
N |
org.springframework.security |
spring-security-core |
5.3.10.RELEASE |
Apache 2.0 |
Y |
org.springframework.security |
spring-security-jwt |
1.0.9.RELEASE |
Apache 2.0 |
|
org.springframework.security |
spring-security-test |
5.3.10.RELEASE |
Apache 2.0 |
Y |
org.springframework.security |
spring-security-web |
5.3.8.RELEASE |
Apache 2.0 |
Y |
org.springframework.security.oauth |
spring-security-oauth2 |
2.3.8.RELEASE |
Apache 2.0 |
Y |
org.springframework.security.oauth.boot |
spring-security-oauth2-autoconfigure |
2.2.2 |
Apache 2.0 |
Y |
org.xmlunit |
xmlunit-core |
2.6.2 |
Apache 2.0 |
N |
org.yaml |
snakeyaml |
1.26 |
Apache 2.0 |
Y |
Developer-fe Third-Party Use List¶
Type |
Name |
Version |
License |
Direct Import (Y/N) |
---|---|---|---|---|
dependencies |
acorn |
7.2.0 |
MIT |
Y |
dependencies |
auth0-js |
9.13.2 |
MIT |
Y |
dependencies |
axios |
0.21.1 |
MIT |
Y |
dependencies |
core-js |
3.3.2 |
MIT |
Y |
dependencies |
dot-prop |
4.2.1 |
MIT |
Y |
dependencies |
echarts |
4.4.0 |
Apache-2.0 |
Y |
dependencies |
eg-view |
0.0.20 |
Apache-2.0 |
Y |
dependencies |
el-table-pagination |
0.4.38 |
MIT |
Y |
dependencies |
element-china-area-data |
4.1.2 |
MIT |
Y |
dependencies |
element-ui |
2.12.0 |
MIT |
Y |
dependencies |
elliptic |
6.5.4 |
MIT |
Y |
dependencies |
http-proxy |
1.18.1 |
MIT |
Y |
dependencies |
http-proxy-agent |
4.0.1 |
MIT |
Y |
dependencies |
kity |
2.0.4 |
Y |
|
dependencies |
kityminder-core |
1.4.50 |
BSD-3-Clause |
Y |
dependencies |
less-loader |
5.0.0 |
MIT |
Y |
dependencies |
local-storage |
2.0.0 |
MIT |
Y |
dependencies |
lodash |
4.17.21 |
MIT |
Y |
dependencies |
mavon-editor |
2.9.1 |
MIT |
Y |
dependencies |
serialize-javascript |
4.0.0 |
BSD-3-Clause |
Y |
dependencies |
swagger-ui |
3.39.0 |
Apache-2.0 |
Y |
dependencies |
swiper |
5.4.5 |
MIT |
Y |
dependencies |
v-charts |
1.19.0 |
MIT |
Y |
dependencies |
vue |
2.6.11 |
MIT |
Y |
dependencies |
vue-awesome-swiper |
4.1.1 |
MIT |
Y |
dependencies |
vue-cookies |
1.7.0 |
MIT |
Y |
dependencies |
vue-i18n |
8.15.3 |
MIT |
Y |
dependencies |
vue-router |
3.1.3 |
MIT |
Y |
dependencies |
vue-simple-uploader |
0.7.6 |
MIT |
Y |
dependencies |
vuex |
3.0.1 |
MIT |
Y |
dependencies |
html2canvas |
1.3.2 |
MIT |
Y |
dependencies |
jspdf |
2.4.0 |
MIT |
Y |
dependencies |
vue-pdf |
4.3.0 |
MIT |
Y |
dependencies |
vue-seamless-scroll |
1.1.23 |
ISC |
Y |
dependencies |
vue-video-player |
5.0.2 |
MIT |
Y |
dependencies |
jquery |
3.6.0 |
MIT |
Y |
devDependencies |
@vue/cli-plugin-babel |
4.0.0 |
MIT |
Y |
devDependencies |
@vue/cli-plugin-eslint |
4.0.5 |
MIT |
Y |
devDependencies |
@vue/cli-service |
4.0.0 |
MIT |
Y |
devDependencies |
@vue/eslint-config-standard |
4.0.0 |
MIT |
Y |
devDependencies |
babel-eslint |
10.0.3 |
MIT |
Y |
devDependencies |
eslint |
5.16.0 |
MIT |
Y |
devDependencies |
eslint-plugin-vue |
5.2.3 |
MIT |
Y |
devDependencies |
less |
3.10.3 |
Apache-2.0 |
Y |
devDependencies |
mockjs |
1.1.0 |
Y |
|
devDependencies |
node-sass |
5.0.0 |
MIT |
Y |
devDependencies |
postcss-import |
11.0.0 |
MIT |
Y |
devDependencies |
postcss-loader |
2.0.8 |
MIT |
Y |
devDependencies |
postcss-url |
7.2.1 |
MIT |
Y |
devDependencies |
sass-loader |
10.1.1 |
MIT |
Y |
devDependencies |
vue-template-compiler |
2.6.11 |
MIT |
Y |
Developer DataBase Design v1.5¶
The Developer database uses open-source PostgreSQL databases with the recommended version of 12.2. PostgreSQL is an open source object-relational database server (ORDBMS), released under a flexible BSD license. Learn more about PostgreSQL here.
tbl_plugin Store plug-in information uploaded by the developer, such as name, satisfaction degree, plugin save path, etc.
CREATE TABLE IF NOT EXISTS tbl_plugin (
pluginid varchar(255) NOT NULL, --Plugin ID
pluginname varchar(255) NOT NULL, --Plugin name
introduction varchar(500) NULL, --Introduction to the plugin
satisfaction float4 NOT NULL, --Satisfaction (rating)
codelanguage varchar(255) NOT NULL, --The programming language represented by the plugin
plugintype int4 NOT NULL, --Plugin type (1: plugin 2: sdk)
version varchar(255) NOT NULL, --Plugin version
downloadcount int4 NOT NULL, --download times
logofile varchar(500) NOT NULL, --Saved path of the plugin icon
pluginfile varchar(500) NOT NULL, --Save path of the plugin
userid varchar(255) NOT NULL, --ID of the user who uploaded the plugin
uploadtime timestamptz(6) NOT NULL, --Upload time
username varchar(255) NOT NULL, --The name of the user who uploaded the plugin
pluginsize int4 NOT NULL, --Plugin size (bytes)
apifile varchar(500) NOT NULL, --Saved path of the plugin API file
scorecount int4 NOT NULL, --Number of ratings for the plugin
pluginfilehashcode varchar(50) DEFAULT NULL --Plugin hash value, verification file
CONSTRAINT tbl_plugin_pkey PRIMARY KEY (pluginid)
);
tbl_downloadrecord Store plugin download records. One plugin corresponds to multiple download records.
CREATE TABLE IF NOT EXISTS tbl_downloadrecord (
recordid varchar(255) NOT NULL, --Download record ID
pluginid varchar(255) NOT NULL, --Plugin ID (corresponding to pluginid in tbl_plugin)
downloaduserid varchar(255) NOT NULL, --Download user ID
downloadusername varchar(255) NOT NULL, --Download user name
score float4 NOT NULL, --Rating score (1-5)
scoretype int4 NOT NULL, --Rating type
downloadtime timestamptz(0) NOT NULL, --Download time
CONSTRAINT tbl_downloadrecord_pkey PRIMARY KEY (recordid)
);
tbl_container_image stores the container image information generated when the developer uploads the container image package on the developer platform
CREATE TABLE IF NOT EXISTS tbl_container_image (
image_id varchar(255) NOT NULL, --image ID
image_name varchar(255) NOT NULL, --image name
image_version varchar(255) NOT NULL, --image version
user_id varchar(255) NOT NULL, --the author id of upload container image
user_name varchar(255) NOT NULL, --the author name of upload container image
upload_time timestamptz(0) DEFAULT NULL, --upload image time
create_time timestamptz(0) DEFAULT NULL, --create db record time
image_status varchar(255) DEFAULT NULL, --image status
image_type varchar(255) DEFAULT NULL, --image type(private or public)
image_path text DEFAULT NULL, --image info(xxxx:xxx)
file_name varchar(255) DEFAULT NULL, --image type(private or public)
CONSTRAINT tbl_container_image_uniqueName UNIQUE (image_name,image_version,user_name),
CONSTRAINT tbl_container_image_pkey PRIMARY KEY (image_id)
);
tbl_app_project_capability When the developer creates a new container application project, he selects the platform capability (this table is an association table between projects and capabilities)
CREATE TABLE IF NOT EXISTS tbl_app_project_capability (
project_id varchar(50) NOT NULL, --project_id
capability_id varchar(50) NOT NULL, --capability id
CONSTRAINT tbl_app_project_capability_pkey PRIMARY KEY (project_id,capability_id)
);
tbl_openmep_capability Store the information of all the capabilities provided by the platform when the developer builds the application project on the developer platform.
CREATE TABLE IF NOT EXISTS tbl_capability_group (
id varchar(50) NOT NULL, --group id
name varchar(255) DEFAULT NULL, --capability group zh name
name_en varchar(255) DEFAULT NULL, --capability group en name
type varchar(20) DEFAULT NULL, --capability group type(openmep or openmep_eco)
description text DEFAULT NULL, --capability group desc
description_en text DEFAULT NULL, --capability group en desc
icon_file_id varchar(50) DEFAULT NULL, --group icon
author varchar(50) DEFAULT NULL, --the author of create group
update_time bigint NOT NULL DEFAULT 0, --update db record time
create_time bigint NOT NULL DEFAULT 0, --create db record time
CONSTRAINT tbl_capability_group_pkey PRIMARY KEY (id)
);
tbl_openmep_capability Store the information of all the capabilities provided by the platform when the developer builds the application project on the developer platform.
CREATE TABLE IF NOT EXISTS tbl_capability (
id varchar(50) NOT NULL, --capability id
name varchar(100) DEFAULT NULL, --capability zh name
name_en varchar(100) DEFAULT NULL, --capability en name
version varchar(100) DEFAULT NULL, --capability version
description text DEFAULT NULL, --capability desc
description_en text DEFAULT NULL, --capability en desc
provider varchar(100) DEFAULT NULL, --capability provider
api_file_id varchar(255) DEFAULT NULL, --capability api file
guide_file_id varchar(255) DEFAULT NULL, --capability guide file
guide_file_id_en varchar(255) DEFAULT NULL, --capability guide file(en version)
upload_time varchar(50) NOT NULL, --create capability time
host varchar(50) DEFAULT NULL, --registered service name
port int4 DEFAULT NULL, --service port
protocol varchar(20) DEFAULT NULL, --http,https
app_id varchar(255) DEFAULT NULL, --id posted to appstore
package_id varchar(255) DEFAULT NULL, --the packageId published to the appstore
user_id varchar(255) DEFAULT NULL, --the author id of create this capability
select_count integer NOT NULL DEFAULT 0, --the number of select this capability
icon_file_id varchar(50) DEFAULT NULL, --capability icon file
author varchar(50) DEFAULT NULL, --the author name of create this capability
experience_url text DEFAULT NULL, --the access url of capability
CONSTRAINT tbl_capability_pkey PRIMARY KEY (id)
);
tbl_mep_host stores the server (test sandbox) information that the developer can choose when deploying and testing the self-built application project on the developer platform
CREATE TABLE IF NOT EXISTS tbl_mep_host (
host_id varchar(50) NOT NULL, --Server id
name varchar(100) DEFAULT NULL, --server name
lcm_ip varchar(20) DEFAULT NULL, --lcm IP address
lcm_protocol varchar(20) DEFAULT NULL, --lcm protocol
lcm_port int4 DEFAULT '-1', --lcm port
architecture varchar(100) DEFAULT NULL, --architecture
status varchar(20) DEFAULT NULL, --status
mec_host_ip varchar(20) DEFAULT NULL, --mec host address
vim_type varchar(255) DEFAULT NULL, --Operating system name
mec_host_user_name varchar(50) DEFAULT NULL, --User name required to log in to the host
mec_host_password varchar(50) DEFAULT NULL, --Password required to log in to the host
mec_host_port int4 DEFAULT 22, --The exposed connection port of the server deploying the edge application
user_id varchar(50) DEFAULT NULL, --UserId
config_file_id varchar(50) DEFAULT NULL, --config file id
net_work_parameter text DEFAULT NULL, --sandbox parameter
resource text DEFAULT NULL --Sandbox hardware information
address varchar(255) DEFAULT NULL, --address
);
tbl_uploaded_file Store the icon, image, api and other file information uploaded by the developer when deploying and testing the self-built application project on the developer platform
CREATE TABLE IF NOT EXISTS tbl_uploaded_file (
file_id varchar(50) NOT NULL, --File ID
file_name varchar(255) DEFAULT NULL, --file name
is_temp bool DEFAULT NULL, --Is it a temporary file
user_id varchar(50) DEFAULT NULL, --ID of the user who uploaded the file
upload_date timestamptz(6) DEFAULT NULL, --Upload time
file_path varchar(255) DEFAULT NULL, --file path
CONSTRAINT tbl_uploaded_file_pkey PRIMARY KEY ( file_id )
);
tbl_host_log Record the deployment log of the app project on the edge node.
CREATE TABLE IF NOT EXISTS tbl_host_log (
log_id varchar(50) NOT NULL, --Log ID
host_ip varchar(50) NOT NULL, --host IP
user_name varchar(50) DEFAULT NULL, --username
user_id varchar(50) DEFAULT NULL, --User ID
project_id varchar(50) DEFAULT NULL, --Project ID
project_name varchar(50) DEFAULT NULL, --project name
app_instances_id varchar(50) DEFAULT NULL, --The instance ID of the app project
deploy_time varchar(50) DEFAULT NULL, --Project deployment time
status varchar(50) DEFAULT NULL, --host status
operation varchar(50) DEFAULT NULL, --operating
host_id varchar(50) DEFAULT NULL --host ID
);
tbl_api_emulator Platform ability to call the simulator
CREATE TABLE IF NOT EXISTS tbl_api_emulator (
id varchar(50) NOT NULL, --id
user_id varchar(50) NOT NULL, --host IP
host_id varchar(50) NOT NULL, --username
port int4 NOT NULL, --port
workload_id varchar(50) NOT NULL, --work load id
create_time varchar(50) NOT NULL, --create tine
);
tbl_app_traffic_rule Traffic rule configuration
CREATE TABLE IF NOT EXISTS tbl_app_traffic_rule (
app_id varchar(255) NOT NULL, --application id
traffic_rule_id varchar(255) NOT NULL, --primary key
action varchar(255) DEFAULT NULL, --action
priority int4 DEFAULT NULL, --priority
filter_type varchar(255) DEFAULT NULL, --filter type
traffic_filter text DEFAULT NULL, --traffic filter
dst_interface text DEFAULT NULL, -- dst interface
CONSTRAINT tbl_app_traffic_rule_unique_id_traffic_rule UNIQUE (app_id,traffic_rule_id)
);
tbl_app_dns_rule Diversion rule configuration
CREATE TABLE IF NOT EXISTS tbl_app_dns_rule (
app_id varchar(255) NOT NULL, --application id
dns_rule_id varchar(255) NOT NULL, --primary key
domain_name varchar(255) DEFAULT NULL, --domain name
ip_address_type varchar(255) DEFAULT NULL, --ip type
ip_address varchar(255) DEFAULT NULL, --ip
ttl varchar(255) DEFAULT NULL, --ttl
CONSTRAINT tbl_app_dns_rule_unique_id_dns_rule UNIQUE (app_id,dns_rule_id)
);
tbl_app_service_produced Capability release configuration
CREATE TABLE IF NOT EXISTS tbl_app_service_produced (
app_id varchar(50) NOT NULL, --application id
app_service_produced_id varchar(50) NOT NULL, --primary key
one_level_name varchar(100) NOT NULL, --one level capability name
one_level_name_en varchar(100) NOT NULL, --one level english capability name
two_level_name varchar(100) NOT NULL, --two level capability name
description varchar(500) NOT NULL, --two level english capability name
api_file_id varchar(50) NOT NULL, --api file
guide_file_id varchar(50) NOT NULL, --guide file
icon_file_id varchar(50) NOT NULL, --icon file
service_name varchar(50) NOT NULL, --service name
internal_port int4 NOT NULL, --service port
version varchar(30) NOT NULL, --service version
protocol varchar(30) NOT NULL, --service protocol
author varchar(50) NOT NULL, --create author
experience_url varchar(500) DEFAULT NULL,--service experience url
dns_rule_id_list text DEFAULT NULL, --dns list
traffic_rule_id_list text DEFAULT NULL, --traffic list
CONSTRAINT tbl_app_service_produced_unique_id_name UNIQUE (app_id,service_name)
);
tbl_app_service_required Service dependent configuration
CREATE TABLE IF NOT EXISTS tbl_app_service_required (
app_id varchar(255) NOT NULL, --application id
id varchar(255) NOT NULL, --primary key
one_level_name varchar(255) NOT NULL, --one level capability name
one_level_name_en varchar(255) NOT NULL, --one level english capability name
two_level_name varchar(255) NOT NULL, --two level capability name
two_level_name_en varchar(255) NOT NULL, --two level english capability name
ser_name varchar(255) NOT NULL, --service name
version varchar(255) DEFAULT NULL, --service version
requested_permissions bool DEFAULT NULL, --need permission
ser_app_id varchar(255) DEFAULT NULL, --service application id
package_id varchar(255) DEFAULT NULL, -- package id
CONSTRAINT tbl_app_service_required_unique_id_name UNIQUE (app_id,ser_name)
);
tbl_app_certificate Authentication configuration
CREATE TABLE IF NOT EXISTS tbl_app_certificate (
app_id varchar(255) NOT NULL, --application id
ak text DEFAULT NULL, --ak
sk text DEFAULT NULL, --sk
CONSTRAINT tbl_app_certificate_pkey PRIMARY KEY (app_id)
);
tbl_application project(Incubation application)Configuration
CREATE TABLE IF NOT EXISTS tbl_application (
id varchar(255) NOT NULL, --application id
name varchar(255) NOT NULL, --application name
description varchar(255) DEFAULT NULL, --description
version varchar(255) NOT NULL, --version
provider varchar(255) NOT NULL, --application provider
architecture varchar(255) DEFAULT NULL, --application architecture
app_class varchar(255) DEFAULT NULL, --application class
type varchar(255) DEFAULT NULL, --application type
industry varchar(255) DEFAULT NULL, --industry
icon_file_id varchar(255) DEFAULT NULL, --icon file
guide_file_id varchar(255) DEFAULT NULL, --guide file
app_create_type varchar(255) DEFAULT NULL, --create type
create_time timestamptz(6) DEFAULT NULL, --create time
status varchar(255) DEFAULT NULL, --application status
user_id varchar(255) DEFAULT NULL, --user id
user_name varchar(255) DEFAULT NULL, --user name
mep_host_id varchar(255) DEFAULT NULL, --selected sandbox
CONSTRAINT tbl_application_unique_name_version UNIQUE (name,version),
CONSTRAINT tbl_application_pkey PRIMARY KEY (id)
);
tbl_container_helm_chart Record application deployment files
CREATE TABLE IF NOT EXISTS tbl_container_helm_chart (
id varchar(255) NOT NULL, --primary key
app_id varchar(255) NOT NULL, --application id
name varchar(255) DEFAULT NULL, --generate tgz name
helm_chart_file_id text DEFAULT NULL, --upload file name
create_time timestamptz(6) DEFAULT NULL, --create time
helm_chart_file_list text DEFAULT NULL, --file list of tgz file
CONSTRAINT tbl_container_helm_chart_pkey PRIMARY KEY (id)
);
tbl_vm virtual machine configuration
CREATE TABLE IF NOT EXISTS tbl_vm (
id varchar(255) NOT NULL, --vm id
app_id varchar(255) DEFAULT NULL, --application id
name varchar(255) NOT NULL, --vm name
flavor_id varchar(255) DEFAULT NULL, --vm flavor id
image_id int4 DEFAULT NULL, --vm image
target_image_id int4 DEFAULT NULL, --vm target image
user_data text DEFAULT NULL, --user data
status varchar(255) DEFAULT NULL, --vm status
area_zone varchar(255) DEFAULT NULL, --deploy zone
flavor_extra_specs text DEFAULT NULL, -- flavor param
CONSTRAINT tbl_vm_pkey PRIMARY KEY (id)
);
tbl_network virtual machine network configuration
CREATE TABLE IF NOT EXISTS tbl_network (
id varchar(255) NOT NULL, --primary key
app_id varchar(255) DEFAULT NULL, --application id
name varchar(255) NOT NULL, --net name
description varchar(255) DEFAULT NULL, --net description
CONSTRAINT tbl_network_pkey PRIMARY KEY (id)
);
tbl_vm_port virtual machine port configuration
CREATE TABLE IF NOT EXISTS tbl_vm_port (
id varchar(255) NOT NULL, --primary key
vm_id varchar(255) DEFAULT NULL, --vm id
name varchar(255) DEFAULT NULL, --port name
description varchar(255) DEFAULT NULL, --port description
network_name varchar(255) DEFAULT NULL, --net name
CONSTRAINT tbl_vm_port_pkey PRIMARY KEY (id)
);
tbl_vm_certificate virtual machine certificate configuration
CREATE TABLE IF NOT EXISTS tbl_vm_certificate (
vm_id varchar(255) DEFAULT NULL, --vm id
certificate_type varchar(255) NOT NULL, --vm certificate
pwd_certificate text DEFAULT NULL, --password certificate
key_pair_certificate text DEFAULT NULL, --key-valye certificate
CONSTRAINT tbl_vm_certificate_pkey PRIMARY KEY (vm_id)
);
tbl_vm_flavor virtual machine specification configuration
CREATE TABLE IF NOT EXISTS tbl_vm_flavor (
id varchar(255) NOT NULL, --primary key
name varchar(255) NOT NULL, --flavor name
description varchar(255) DEFAULT NULL, --description
architecture varchar(255) DEFAULT NULL, --architecture
cpu text DEFAULT NULL, --cpu param
memory varchar(255) DEFAULT NULL, --memory param
system_disk_size int4 DEFAULT NULL, --system disk size
data_disk_size int4 DEFAULT NULL, --data disk size
gpu_extra_info text DEFAULT NULL, --gpu info
other_extra_info text DEFAULT NULL, --other info
CONSTRAINT tbl_vm_flavor_pkey PRIMARY KEY (id)
);
tbl_vm_image virtual machine image management
CREATE TABLE IF NOT EXISTS tbl_vm_image (
id SERIAL, --primary key
name varchar(255) NOT NULL, --image name
visible_type varchar(255) DEFAULT NULL, --visible type
os_type varchar(255) DEFAULT NULL, --os type
os_version varchar(255) DEFAULT NULL, --os version
os_bit_type varchar(255) DEFAULT NULL, --os bit
system_disk_size int4 DEFAULT NULL, --system disk size
image_file_name varchar(255) DEFAULT NULL, --image file name
image_format varchar(255) DEFAULT NULL, --image format
down_load_url varchar(255) DEFAULT NULL, --download url
file_md5 varchar(255) DEFAULT NULL, --file md5
image_size bigint DEFAULT NULL, --image size
image_slim_status varchar(50) DEFAULT NULL, --image slim size
status varchar(255) DEFAULT NULL, --image status
create_time timestamptz(6) DEFAULT NULL, --create time
modify_time timestamptz(6) DEFAULT NULL, --modify time
upload_time timestamptz(6) DEFAULT NULL, --upload time
user_id varchar(255) DEFAULT NULL, --user id
user_name varchar(255) DEFAULT NULL, --user name
file_identifier varchar(128) DEFAULT NULL, --file identifier
error_type varchar(32) DEFAULT NULL, --error type
CONSTRAINT tbl_vm_image_uniqueName UNIQUE (name,user_id),
CONSTRAINT tbl_vm_image_pkey PRIMARY KEY (id)
);
tbl_vm_instantiate_info Virtual machine instantiation information table
CREATE TABLE IF NOT EXISTS tbl_vm_instantiate_info (
vm_id varchar(255) NOT NULL, --vm id
operation_id varchar(255) DEFAULT NULL, --opreation(after launch vm) id
app_package_id varchar(255) DEFAULT NULL, --vm package id
distributed_mec_host varchar(255) DEFAULT NULL, --selected sandbox
mepm_package_id varchar(255) DEFAULT NULL, --mepm package id
app_instance_id varchar(255) DEFAULT NULL, --app package instance
vm_instance_id varchar(255) DEFAULT NULL, --vm instance
status varchar(255) DEFAULT NULL, --vm status
vnc_url varchar(255) DEFAULT NULL, --vm vnc url
log text DEFAULT NULL, --deploy log
instantiate_time timestamptz(6) DEFAULT NULL, --instantiate time
CONSTRAINT tbl_vm_instantiate_info_pkey PRIMARY KEY (vm_id)
);
tbl_vm_port_instantiate_info Virtual port instantiation information table
CREATE TABLE IF NOT EXISTS tbl_vm_port_instantiate_info (
vm_id varchar(255) NOT NULL, --vm id
network_name varchar(255) NOT NULL, --net name
ip_address varchar(255) DEFAULT NULL, --ip
CONSTRAINT tbl_vm_port_instantiate_info_unique_id_name UNIQUE (vm_id,network_name)
);
tbl_vm_image_export_info Record virtual machine image export information
CREATE TABLE IF NOT EXISTS tbl_vm_image_export_info (
vm_id varchar(255) NOT NULL, --vm id
operation_id varchar(255) DEFAULT NULL, --operation id
image_instance_id varchar(255) DEFAULT NULL, --image instance id
name varchar(255) DEFAULT NULL, --image name
image_file_name varchar(255) DEFAULT NULL, --image file
format varchar(255) DEFAULT NULL, --image format
download_url varchar(255) DEFAULT NULL, --image download url
check_sum varchar(255) DEFAULT NULL, --image sum
image_size varchar(255) DEFAULT NULL, --image size
status varchar(255) DEFAULT NULL, --image status
log text DEFAULT NULL, --image log
create_time timestamptz(6) DEFAULT NULL, --create time
CONSTRAINT tbl_vm_image_export_info_pkey PRIMARY KEY (vm_id)
);
tbl_container_app_instantiate_info Container application instantiation information table
CREATE TABLE IF NOT EXISTS tbl_container_app_instantiate_info (
app_id varchar(255) NOT NULL, --application id
operation_id varchar(255) NOT NULL, --operation id
app_package_id varchar(255) DEFAULT NULL, --app pkg
distributed_mec_host varchar(255) DEFAULT NULL, --selected sandbox
mepm_package_id varchar(255) DEFAULT NULL, --mepm package
app_instance_id varchar(255) DEFAULT NULL, --app instance
status varchar(255) DEFAULT NULL, --deploy status
log text DEFAULT NULL, --deploy log
instantiate_time timestamptz(6) DEFAULT NULL, --instantiate time
CONSTRAINT tbl_container_instantiate_info_unique_id_name UNIQUE (pod_name,name)
);
tbl_k8s_pod_instantiate_info Container application deploymentpodInstantiated information
CREATE TABLE IF NOT EXISTS tbl_k8s_pod_instantiate_info (
name varchar(255) NOT NULL, --pod name
app_id varchar(255) NOT NULL, --application id
pod_status varchar(255) DEFAULT NULL, --pod status
events_info text DEFAULT NULL, --pod instantiate info
CONSTRAINT tbl_k8s_pod_instantiate_info_unique_id_name UNIQUE (app_id,name)
);
tbl_container_instantiate_info Container instantiation information
CREATE TABLE IF NOT EXISTS tbl_container_instantiate_info (
name varchar(255) NOT NULL, --container name
pod_name varchar(255) NOT NULL, --container pod name
cpu_usage varchar(255) DEFAULT NULL, --cpu usage percent
mem_usage varchar(255) DEFAULT NULL, --memory usage percent
disk_usage varchar(255) DEFAULT NULL, --disk usage percent
CONSTRAINT tbl_container_instantiate_info_unique_id_name UNIQUE (pod_name,name)
);
tbl_k8s_service_instantiate_info Container application deploymentServiceInstantiated information
CREATE TABLE IF NOT EXISTS tbl_k8s_service_instantiate_info (
name varchar(255) NOT NULL, --service name
app_id varchar(255) NOT NULL, --application id
type varchar(255) DEFAULT NULL, --service type
CONSTRAINT tbl_k8s_service_instantiate_info_pkey PRIMARY KEY (name)
);
tbl_k8s_service_port_instantiate_info Container application deploymentServicePort instantiation information
CREATE TABLE IF NOT EXISTS tbl_k8s_service_port_instantiate_info (
port varchar(255) NOT NULL, --svc port
service_name varchar(255) NOT NULL, --svc name
target_port varchar(255) DEFAULT NULL, --svc target port
node_port varchar(255) DEFAULT NULL, --svc node port
CONSTRAINT tbl_k8s_service_port_instantiate_info_pkey PRIMARY KEY (service_name)
);
tbl_operation_status Application deployment operation information table
CREATE TABLE IF NOT EXISTS tbl_operation_status (
id varchar(255) NOT NULL, --operation id
user_name varchar(255) NOT NULL, --operation author
object_type varchar(255) DEFAULT NULL, --operate object type
object_id varchar(255) DEFAULT NULL, --operate object id
object_name varchar(255) DEFAULT NULL, --operate object name
operation_name varchar(255) DEFAULT NULL, --operation name
progress int4 DEFAULT NULL, --operate progress
status varchar(255) DEFAULT NULL, --status
error_msg text DEFAULT NULL, --error msg
create_time timestamptz(6) DEFAULT NULL, --create time
update_time timestamptz(6) DEFAULT NULL, --update time
CONSTRAINT tbl_operation_status_pkey PRIMARY KEY (id)
);
tbl_action_status Application deploymentactionInformation Sheet
CREATE TABLE IF NOT EXISTS tbl_action_status (
id varchar(255) NOT NULL, --primary key
operation_id varchar(255) NOT NULL, --operation id
object_type varchar(255) DEFAULT NULL, --operate object type
object_id varchar(255) DEFAULT NULL, --operate object id
action_name varchar(255) DEFAULT NULL, --action name
progress int4 DEFAULT NULL, --action progress
status varchar(255) DEFAULT NULL, --action status
error_msg text DEFAULT NULL, --err msg
status_log text DEFAULT NULL, --action status log
update_time timestamptz(6) DEFAULT NULL, --update time
CONSTRAINT tbl_action_status_pkey PRIMARY KEY (id)
);
tbl_app_package Generated application package information
CREATE TABLE IF NOT EXISTS tbl_app_package (
id varchar(255) NOT NULL, --pkg id
app_id varchar(255) NOT NULL, --application id
package_file_name varchar(255) DEFAULT NULL, --package file name
package_file_path varchar(500) DEFAULT NULL, --package file path
CONSTRAINT tbl_app_package_pkey PRIMARY KEY (id)
);
tbl_atp_test_task Application package test certification information table
CREATE TABLE IF NOT EXISTS tbl_atp_test_task (
id varchar(255) NOT NULL, --task id
app_id varchar(255) NOT NULL, --application id
app_name varchar(255) DEFAULT NULL, --application name
status varchar(255) DEFAULT NULL, --task status
create_time varchar(255) DEFAULT NULL, --create time
CONSTRAINT tbl_atp_test_task_pkey PRIMARY KEY (id)
);
tbl_profile profileInformation Sheet
CREATE TABLE IF NOT EXISTS tbl_profile (
id varchar(255) NOT NULL, --primary key
name varchar(255) NOT NULL, --profile name
description varchar(255) DEFAULT NULL, --description
description_en varchar(255) DEFAULT NULL, --english description
file_path varchar(255) NOT NULL, --profile file path
deploy_file_path text NOT NULL, --deploy file path
config_file_path varchar(255) DEFAULT NULL, --config file path
seq varchar(255) NOT NULL, --sequence
create_time timestamptz(6) NOT NULL, --create time
type varchar(255) NOT NULL, --type
industry varchar(255) NOT NULL, --industry
topo_file_path varchar(255) DEFAULT NULL, --topo file path
CONSTRAINT tbl_profile_pkey PRIMARY KEY (id)
);
tbl_app_script Application package script file table
CREATE TABLE IF NOT EXISTS tbl_app_script (
id varchar(255) NOT NULL, --primary key
app_id varchar(255) NOT NULL, --application id
name varchar(255) DEFAULT NULL, --script file name
script_file_id text DEFAULT NULL, --script file id
create_time timestamptz(6) NOT NULL, --create time
CONSTRAINT tbl_app_script_pkey PRIMARY KEY (id)
);
tbl_released_package fromAppstoreSynchronized application package information
CREATE TABLE IF NOT EXISTS tbl_released_package (
id varchar(50) NOT NULL, --primary key
app_store_app_id varchar(50) NOT NULL, --app id from appstore
app_store_package_id varchar(50) NOT NULL, --pkg id from appstore
name varchar(255) NOT NULL, --pkg name
version varchar(255) NOT NULL, --pkg version
provider varchar(255) NOT NULL, --provider
industry varchar(255) NOT NULL, --industry
type varchar(255) NOT NULL, --type
architecture varchar(255) NOT NULL, --app architecture
short_desc varchar(255) NOT NULL, --description
synchronize_date timestamptz(6) NOT NULL, --synchronize date
user_id varchar(50) NOT NULL, --user id
user_name varchar(255) NOT NULL, --user name
test_task_id varchar(50) NOT NULL, --test task id from appstore
CONSTRAINT tbl_released_package_pkey PRIMARY KEY ("id")
);
Developer Contribution¶
Local development environment¶
This article will guide users on how to build developer-be and developer-fe modules locally, helping developers to quickly understand and develop code.
The local activation of developer-be depends on:
- Service Center
- DataBase
- UserManagement
The local activation of the developer-fe depends on:
- WebsiteGateway
- UserManagement
- developer-be
So in order to build a local development environment, the final sequence is Service Center -> DataBase -> UserManagement -> developer-be -> WebiteGateway (developer-fe)
Detailed process¶
Service Center¶
1.Download Service Center
2.Run the start-service-center.bat and start-frontend.bat after decompression
DataBase¶
1.Download, install, start Postgresql latest version
2.Setting the login name and password as like (postgresql/root)
3.Create a database called developerdb
4.Create table structure based on database statement in developer deployment document
5.Create a database called usermgmtdb
6.Create table structure based on database statement in usermgmt deployment document
User Management¶
1.Download the user-mgmt-be code and user-mgmt-fe code
2.Install node.js and npm, enter the user-mgmt-fe folder, run npm install
and npm run build
3.Create a static folder in the src/main/resources/ folder in user-mgmt-be
4.Copy the contents in the dist folder compiled by user-mgmt-fe into the static folder of user-mgmt-be
5.Configure runtime environment variables for MainServer in the compiler (where IDEA is used as an example)
6.Run the MainServer function, start UserManagement
Developer-be¶
1.Download developer-be code
2.Configure runtime environment variables for DeveloperApp in the compiler (where IDEA is used as an example)
3.Run the DeveloperApp function to start developer-be
Developer-fe¶
1.Download developer-fe code
2.Enter the developer-fe folder, run npm install
and npm run build
3.Download the website-gateway code
4.Create a static folder in the src/main/resources/ folder on website-gateway
5.Copy the contents in the dist folder compiled by developer-fe in the static folder of website-gateway
6.Modify the server.port
in the /src/main/resources/application.yaml document in the website-gateway 8080
7.Configuring runtime environment variables for GatewayApp in the compiler (where IDEA is used as an example)
8.Run GatewayApp Launch WebiteGateway with developer-fe, browser access to http://127.0.0.1:8080/ to access the developer homepage
MECM¶
OVERVIEW OVERVIEW¶
Overview¶
MECM (multi access edge compute manager) provides orchestration and life cycle management of application in edgegallery architecture. MECM provides various features including application on-boarding, application orchestration by selecting appropriate edge based on deployment strategy, application life cycle management, homing and placement of application based on analytics and policies, application/edge resource monitoring and provides unified topology view.
Architecture¶
Architecture¶
Application Package Manager¶
Application Package Manager(APM) enables edgegallery to distribute/on-board applications to edge repositories by downloading application packages from appstore.
Application Orchestrator¶
Application Orchestrator(APPO) is mainly responsible for MEC application orchestration by requesting for life cycle management of MEC application on the edge host by executing specified workflow while maintaining the life cycle state. Orchestration workflows are modeled using Camunda modeler tool and workflows are executed by camunda engine.
Inventory¶
Inventory provides realtime view of deployed applications on the edge hosts and applications configurations. Inventory is also used for external system registrations.
North¶
North provides interface to obtain the host list and application distribution deployment. At present, it mainly helps
the Appstore implement the subscription function.LCM Controller¶
LCM Controller is responsible MEC application life cycle management operations by sending requests to appropriate pluggable plugin adapters based on the infrastructure.
K8s Plugin¶
K8s Plugin is responsible for MEC application life cycle management operations on kubernetes infrastructure. K8s plugin use helm client to perform application life cycle management operations.
App Rule Manager¶
APP Rule Manager is responsible for configuring application rules by sending application rule configurations to MEP. Application rule configurations includes the traffic rules and DNS to be configured.
Resource Controller¶
Resource Controller performs LCM operations on resources such as flavour, network, virtual machine etc…
Deployment view¶
The deployment view shown is based on k8s deployment. MECM modules supports deployment on virtual machine or docker container to start respective service.
Interface Design¶
Application Package Manager Interface¶
The document is for the Application Package Manager project, there is one part of interfaces in the project.
Get All Application Packages¶
Retrieves all application packages
Resource URI: /apm/v1/tenants/{tenant_id}/packages Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK [ { "appIconUrl": "string", "appId": "string", "appPkgAffinity": "string", "appPkgDesc": "string", "appPkgId": "string", "appPkgName": "string", "appPkgPath": "string", "appPkgVersion": "string", "appProvider": "string", "createdTime": "string", "mecHostInfo": [ { "error": "string", "hostIp": "string", "status": "string" } ], "modifiedTime": "string" } ]Onboard Application Package¶
Onboard application package
Resource URI: /apm/v1/tenants/{tenant_id}/packages Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
tenant_id
tenant id
path
yes
Valid UUID
64
appIconUrl
appIconUrl
body
yes
Valid URL
1024
appId
appId
body
yes
AlphaNumeric with smaller case alphabets
32
appPkgAffinity
appPkgAffinity
body
yes
AlhpaNumeric
255
appPkgDesc
appPkgDesc
body
yes
AlhpaNumeric
1024
appPkgId
appPkgId
body
yes
AlphaNumeric with smaller case alphabets
32
appPkgName
appPkgName
body
yes
AlphaNumeric and allowed special characters hypen and underscore
255
appPkgPath
appPkgPath
body
yes
Valid URL
1024
appPkgVersion
appPkgVersion
body
yes
Valid URL
1024
appProvider
appProvider
body
yes
AlphaNumeric
1024
createdTime
createdTime
body
yes
Valid time
255
mecHostInfo
mecHostInfo
body
yes
Valid URL
15
Example request body:
{ "appIconUrl": "string", "appId": "string", "appPkgAffinity": "string", "appPkgDesc": "string", "appPkgId": "string", "appPkgName": "string", "appPkgPath": "string", "appPkgVersion": "string", "appProvider": "string", "createdTime": "string", "mecHostInfo": [ { "error": "string", "hostIp": "string", "status": "string" } ], "modifiedTime": "string" }Example response:
200 OK [ { "packageId": "string" } ]Get Application Package Information¶
Retrieves application package information.
Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
app_package_id
app package id
path
yes
Alphanumeric and must be smaller case
32
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "appIconUrl": "string", "appId": "string", "appPkgAffinity": "string", "appPkgDesc": "string", "appPkgId": "string", "appPkgName": "string", "appPkgPath": "string", "appPkgVersion": "string", "appProvider": "string", "createdTime": "string", "mecHostInfo": [ { "error": "string", "hostIp": "string", "status": "string" } ], "modifiedTime": "string" }Get Application template¶
Retrieves application template.
Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id}/apptemplate Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
app_package_id
app package id
path
yes
Alphanumeric and must be smaller case
32
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "appPkgName": "positioning_service", "version": "1.0", "appId": "efa14bd4327c43098343402246619ff3", "appPackageId": "9022daf9de964391ae29907221ef95a1", "inputs": [ { "name": "APP_Name", "type": "string", "defaultValue": null, "description": "APP_Name" }, { "name": "network_name_1", "type": "string", "defaultValue": "fst01_OM_Plane", "description": "APP_NETWORK" } ] }Delete Application Packages¶
Deletes application package
Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
app_package_id
app package id
path
yes
Alphanumeric and must be smaller case
32
tenant_id
tenant id
path
yes
Valid UUID
64
appId
app id
path
yes
Alphanumeric and must be smaller case
32
Example response:
200 OK { "success" }Download Csar¶
Download application package CSAR
Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id}/download Method: GET
Name
Definition
Type
Required
Allowed
Max Length
app_package_id
app package id
path
yes
Alphanumeric and must be smaller case
32
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "description": "string", "file": { "absolute": true, "absolutePath": "string", "canonicalPath": "string", "directory": true, "file": true, "freeSpace": 0, "hidden": true, "name": "string", "parent": "string", "path": "string", "totalSpace": 0, "usableSpace": 0 }, "filename": "string", "inputStream": {}, "open": true, "readable": true, "uri": { "absolute": true, "authority": "string", "fragment": "string", "host": "string", "opaque": true, "path": "string", "port": 0, "query": "string", "rawAuthority": "string", "rawFragment": "string", "rawPath": "string", "rawQuery": "string", "rawSchemeSpecificPart": "string", "rawUserInfo": "string", "scheme": "string", "schemeSpecificPart": "string", "userInfo": "string" }, "url": { "authority": "string", "content": {}, "defaultPort": 0, "file": "string", "host": "string", "path": "string", "port": 0, "protocol": "string", "query": "string", "ref": "string", "userInfo": "string" } }Delete Application Package¶
Deletes an application packages
Resource URI: /apm/v1/tenants/{tenant_id}/packages/{app_package_id}/hosts/{host_ip} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
app_package_id
app package id
path
yes
Alphanumeric and must be smaller case
32
host_ip
host ip
path
yes
Valid IP address
15
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "success" }On-boards application with package.¶
On-boards application with package provided.
Resource URI: /apm/v1/tenants/{tenant_id}/packages/upload Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appPkgName
appPkgName
body
yes
AlphaNumeric and allowed special characters hypen and underscore
255
appPkgVersion
appPkgVersion
body
yes
Valid URL
1024
File
file
formData
No
hostList
host list
formData
yes
tenant_id
tenant id
path
no
Valid UUID
64
Example request body:
{ "access_token": "string", "appPackageName": "string", "appPackageVersion": "string", "file": "file", "hostList": "string", "tenant_id": "string", }Example response:
202 Accepted { "appId": "string", "appPackageId": "string" }Queries liveness & readiness¶
Retrieves data for liveness & readiness
Resource URI: /apm/v1/health Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OKRetrieves all application packages info from app store.¶
Retrieves all application packages info from app store.
Resource URI: /apm/v1/apps/info/appstores/{appstore_ip} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appstore_ip
appstore_ip
body
yes
AlphaNumeric with smaller case alphabets
32
Example response:
200 OKSync application packages¶
Sync application package by downloading package from appstore.
Resource URI: /apm/v1/apps/sync Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appId
appId
body
yes
AlphaNumeric with smaller case alphabets
32
packageId
packageId
body
yes
AlphaNumeric with smaller case alphabets
32
Example request body:
[ { "appId": "string", "appstoreIp": "string", "packageId": "string" }, { "appId": "string", "appstoreIp": "string", "packageId": "string" } ]Example response:
200 OK [ { "packageId": "string" } ]Retrieves all application packages sync status¶
Retrieves all application packages sync status.
Resource URI: /apm/v1/apps/syncstatus Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OKGet Application Package Information¶
Retrieve application packages sync status.
Resource URI: /apm/v1/apps/{app_id}/packages/{package_id}/syncstatus Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appId
appId
body
yes
AlphaNumeric with smaller case alphabets
32
packageId
packageId
body
yes
AlphaNumeric with smaller case alpha
Example response:
200 OK { "appId": "ad dolore laborum", "name": "Excep", "operationalInfo": "est magna", "packageId": "sit n", "syncStatus": "cillum exercitation quis" }Get Application Package Information¶
Retrieve application packages sync status.
Resource URI: /apm/v1/tenants/{tenant_id}/app_package_infos/sync Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "appPackageRecord": [ { "appPkgId": "8e3d6f90bad74cecb7544fc5ebf56782a5df67ab47ba40e09015136573d7bce439937079-99fe-4cd8-881f-04ca8c4fe09d", "appPkgName": "Video_Surveillance_ap", "appPkgVersion": "2", "appPkgPath": "abc", "appProvider": "", "appPkgDesc": "abc", "appPkgAffinity": "bangalore", "appIconUrl": "", "createdTime": "2021-03-12 07:59:55.695956+00", "modifiedTime": "", "appId": "1", "tenantId": "e921ce54-82c8-4532-b5c6-8516cf75f7a7", "packageId": "1", "origin": "MEPM", "syncStatus": false, "mecHostInfo": [ { "pkgHostKey": "8e3d6f90bad74cecb7544fc5ebf56782a5df67ab47ba40e09015136573d7bce439937079-99fe-4cd8-881f-04ca8c4fe09d119.8.47.5", "hostIp": "119.8.47.5", "appPkgId": "8e3d6f90bad74cecb7544fc5ebf56782a5df67ab47ba40e09015136573d7bce4", "status": "", "tenantId": "e921ce54-82c8-4532-b5c6-8516cf75f7a7", "error": "success", "origin": "MEPM", "syncStatus": false } ] } ] }APM Open Api Swagger¶
Please refer APM_OPEN_API
Applcm Interface¶
The document is for the Applcm project, there is one part of interfaces in the project.
Upload Config File¶
Upload Config File
Resource URI: /lcmcontroller/v2/tenants/{tenantId}/configuration Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
string
yes
Valid IP Address
15
configFile
configFile
formData
yes
Example response:
200 OK { "data": null, "retCode": 0, "message": "Upload config is successful", "params": null }Delete Config File¶
Removes the config file
Resource URI: /lcmcontroller/v2/tenants/{tenantId}/configuration Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt Token
hostIp
host Ip
string
yes
Valid IP Address
15
Example response:
200 OKInstantiate Application¶
Application instantiated
Resource URI: /lcmcontroller/v2/tenants/{tenantId}/app_instance/{appInstanceId}/instantiate Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
appInstanceId
appInstance Id
path
yes
Valid UUID
64
tenantId
tenant Id
path
yes
Valid UUID
64
hostIp
host Ip
string
yes
Valid IP
15
appName
appName
string
yes
AlphaNumeric
128
parameters
key value pair
map
no
valid string
Example request body:
{ "hostIp": "119.8.47.5", "packageId": "ea3b8191f8a84565bd8eb5933c8bbcd560e4f65665a84cba851c93ece4fd825d", "appName": "testApplication", "parameters": { "mepIp": "MEP IP", "mepPort": "MEP port", "ak": "access key", "sk": "secure key", "...": "..." } }Example response:
200 OK { {} }Terminates Application¶
Terminates application instance id
Resource URI: /lcmcontroller/v2/tenants/{tenantId}/app_instances/{appInstanceId}/terminate Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
appInstanceId
appInstance Id
path
yes
Valid UUID
64
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OKQuery¶
Get the statistics information
Resource URI: /lcmcontroller/v2/tenants/{tenantId}/app_instances/{appInstanceId} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
appInstanceId
appInstance Id
path
yes
Valid UUID
64
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Query Kpi¶
Get cpu , memory and file system size
Resource URI: /lcmcontroller/v2/tenants/{tenantId}/hosts/{hostIp}/kpi Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Query MepCapabilities¶
Get Mep Capabilities
Resource URI: /lcmcontroller/v2/tenants/{tenantId}/hosts/{hostIp}/mep_capabilities Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK [ { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" }, { "applicationInstanceId": "string" }, ] }, { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" } ] } ]Get Mep Capability¶
Retrieves edge host performance statistics based on capability id
Resource URI: /lcmcontroller/v2/tenants/{tenantId}/hosts/{hostIp}/mep_capabilities/{capability_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
capability_id
capability_id
path
yes
Alphanumeric characters,special characters are hypen and underscore
128
Example response:
200 OK [ { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" }, { "applicationInstanceId": "string" }, ] } ]Queries liveness & readiness¶
Retrieves data for liveness & readiness
Resource URI: /lcmcontroller/v1/health Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OKApp Deployment Status¶
Retrieves status of the application deployment
Resource URI: /lcmcontroller/v1/hosts/{hostIp}/packages/{packageId}/status Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
packageId
package Id
path
yes
Valid UUID without hypen
64
Example response:
200 OK { {"package_deployed":false} }Query workload¶
GetWorkloadDescription
Resource URI: /lcmcontroller/v2/tenants/:tenantId/app_instances/:appInstanceId/workload/events Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
appInstanceId
appInstance Id
path
yes
Valid UUID
64
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Query AppInstance information¶
AppInstance information
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Query app instances records¶
Sync app instances records
Resource URI: /lcmcontroller/v2/tenants/:tenantId/app_instances/sync_updated Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Query stale records¶
Sync app instances stale records
Resource URI: /lcmcontroller/v2/tenants/:tenantId/app_instances/sync_deleted Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Upload package¶
Upload package
Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
packageId
package Id
header
yes
Valid UUID without hypen
64
appId
app Id
header
yes
Valid UUID without hypen
64
tenantId
tenant Id
path
yes
Valid UUID
64
packages
package file
formData
yes
Valid UUID
64
Example response:
200 OKDelete package¶
Delete package
Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/:packageId Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
packageId
package Id
path
yes
Valid UUID without hypen
64
Example response:
200 OKDelete application package on host¶
Delete application package on host
Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/:packageId/hosts/:hostIp Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
packageId
package Id
path
yes
Valid UUID without hypen
64
host_ip
host ip
path
yes
Valid IP
15
Example response:
200 OKDistribute package¶
Distribute package
Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/:packageId Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
packageId
package Id
header
yes
Valid UUID without hypen
64
packages
package file
formData
yes
Valid UUID
64
Example response:
200 OKQuery¶
Distribution status
Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/:packageId Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
packageId
package Id
header
yes
Valid UUID without hypen
64
Example response:
200 OK { {} }Distribution status¶
Distribution status
Resource URI: /lcmcontroller/v1/tenants/:tenantId/packages Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Sync app package records¶
Sync app package records
Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/sync_updated Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Sync app package stale records¶
Sync app package stale records
Resource URI: /lcmcontroller/v2/tenants/:tenantId/packages/sync_deleted Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Add MEC host¶
Resource URI: /lcmcontroller/v1//hosts Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
mecHostInfo
MecHostInfo
body
yes
Valid UUID
64
Example response:
200 OKUpdate MEC host¶
Resource URI: /lcmcontroller/v1//hosts Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
mecHostInfo
MecHostInfo
body
yes
Valid UUID
64
Example response:
200 OKQuery MEC hosts¶
Resource URI: /lcmcontroller/v1/hosts Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
Example response:
200 OK { {} }Delete MEC host¶
Resource URI: /lcmcontroller/v1/hosts:hostIp Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt Token
host_ip
host ip
path
yes
Valid IP
15
Example response:
200 OKBatch terminate application¶
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/batchTerminate Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt Token
tenantId
tenant Id
path
yes
Valid UUID
64
Example response:
200 OKSync mec host records¶
Resource URI: /lcmcontroller/v1/hosts/sync_updated Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
Example response:
200 OK { {} }Sync mec host stale records¶
Resource URI: /lcmcontroller/v1/hosts/sync_deleted Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
Example response:
200 OK { {} }Create Image¶
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/:appInstanceId/images Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
appInstanceId
appInstance Id
path
yes
Valid UUID
64
tenantId
tenant Id
path
yes
Valid UUID
64
vmId
vm Id
body
yes
Valid UUID
64
Example response:
200 OK { {} }Delete Image¶
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/:appInstanceId/images/:imageId Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
appInstanceId
appInstance Id
path
yes
Valid UUID
64
tenantId
tenant Id
path
yes
Valid UUID
64
imageId
image Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Get Image¶
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/:appInstanceId/images/:imageId Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
appInstanceId
appInstance Id
path
yes
Valid UUID
64
tenantId
tenant Id
path
yes
Valid UUID
64
imageId
image Id
path
yes
Valid UUID
64
Example response:
200 OK { {} }Get Image file¶
Resource URI: /lcmcontroller/v1/tenants/:tenantId/app_instances/:appInstanceId/images/:imageId/file Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
appInstanceId
appInstance Id
path
yes
Valid UUID
64
tenantId
tenant Id
path
yes
Valid UUID
64
imageId
image Id
path
yes
Valid UUID
64
chunk_num
chunk num
header
yes
Valid int
64
Example response:
200 OK { {} }Get Services¶
Resource URI: /lcmcontroller/v1/mep/subscribe_statistic Method: GETExample response:
200 OK [{ "serInstanceId": "xxx", "serName": "xxx", "serCategory": { "href": "/example/catalogue1", "id": "id12345", "name": "RNI", "version": "1.2.3" }, "version": "4.5.8", "state": "INACTIVE", "transportId": "Rest1", "transportInfo": { "id": "TransId12345", "name": "REST", "description": "REST API", "type": "REST_HTTP", "protocol": "HTTP", "version": "2.0", "endpoint": { "uris": null, "addresses": null, "alternative": null }, "security": { "oAuth2Info": { "grantTypes": ["OAUTH2_CLIENT_CREDENTIALS"], "tokenEndpoint": "/mecSerMgmtApi/security/TokenEndPoint" } } }, "serializer": "JSON", "scopeOfLocality": "MEC_SYSTEM", "isLocal": true, "livenessInterval": 60, "_links": { "self": { "liveness": "/mepserver/mec_service_mgmt/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/services/31fe525ee3dbccbf25a234f8e81d696c/liveness" }, "appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f" } }]Get Kong Logs¶
Resource URI: /lcmcontroller/v1/mep/kong_log Method: GET200 OK { "appServices": [{ "callTimes": [0, 0, 0, 0, 0, 0, 0], "desc": "", "name": "hehe5" }], "mepServices": [{ "callTimes": [0, 0, 0, 3, 0, 0, 0], "desc": "", "name": "serviceRegister" }] }Get Subscribe Statistic¶
Resource URI: /lcmcontroller/v1/mep/subscribe_statistic Method: GET200 OK { "subscribeNum": { "appSubscribeNum": 0, "serviceSubscribedNum": 0 }, "subscribeRelations": [] }Create Flavor¶
Create Flavor
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/flavors Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
flavorInfo
Flavor
body
yes
Example response:
200 OKQuery Flavor¶
Query Flavor
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/flavors/:flavorId Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
flavorId
flavor Id
path
yes
Valid UUID
64
Example response:
200 OKDelete Flavor¶
Delete Flavor
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/flavors/:flavorId Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
flavorId
flavor Id
path
yes
Valid UUID
64
Example response:
200 OKCreate Server¶
Create Server
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/servers Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
serverInfo
Server
body
yes
Example response:
200 OKQuery Server¶
Query Server
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/servers/:serverId Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
serverId
server Id
path
yes
Valid UUID
64
Example response:
200 OKDelete Server¶
Delete Server
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/servers/:serverId Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
serverId
server Id
path
yes
Valid UUID
64
Example response:
200 OKOperate Server¶
Operate Server
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/servers/:serverId Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
serverId
server Id
path
yes
Valid UUID
64
Example response:
200 OKCreate Image¶
Create Image
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/images/:imageId Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
imageId
image Id
path
yes
Valid UUID
64
imageInfo
Image
body
yes
Example response:
200 OKImport Image¶
Import Image
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/images/:imageId Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
imageId
image Id
path
yes
Valid UUID
64
importImageInfo
ImportImage
body
yes
Example response:
200 OKQuery Image¶
Query Image
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/images/:imageId Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
imageId
image Id
path
yes
Valid UUID
64
Example response:
200 OKDelete Image¶
Delete Image
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/images/:imageId Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
imageId
image Id
path
yes
Valid UUID
64
Example response:
200 OKCreate Security Group¶
Create Security Group
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
securityGroupInfo
SecurityGroup
body
yes
Example response:
200 OKQuery Security Group¶
Query Security Group
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
securityGroupId
security group Id
path
yes
Valid UUID
64
Example response:
200 OKDelete Security Group¶
Delete Security Group
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
securityGroupId
security group Id
path
yes
Valid UUID
64
Example response:
200 OKCreate Security Group rule¶
Create Security Group rule
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId/securityGroupRules Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
securityGroupId
security group Id
path
yes
Valid UUID
64
securityGroupRulesInfo
SecurityGroupRules
body
yes
Example response:
200 OKQuery Security Group rule¶
Query Security Group rule
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId/securityGroupRules Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
securityGroupId
security group Id
path
yes
Valid UUID
64
Example response:
200 OKDelete Security Group rule¶
Delete Security Group rule
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/securityGroups/:securityGroupId/securityGroupRules/:securityGroupRuleId Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
securityGroupId
security group Id
path
yes
Valid UUID
64
securityGroupRuleId
security group rule Id
path
yes
Valid UUID
64
Example response:
200 OKCreate Network¶
Create Network
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/networks Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
networkInfo
Network
body
yes
Example response:
200 OKQuery Network¶
Query Network
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/networks/:networkId Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
networkId
network Id
path
yes
Valid UUID
64
Example response:
200 OKDelete Network¶
Delete Network
Resource URI: /rescontroller/v1/tenants/:tenantId/hosts/:hostIp/networks/:networkId Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt Token
hostIp
host Ip
path
yes
Valid IP Address
15
tenantId
tenant Id
path
yes
Valid UUID
64
networkId
network Id
path
yes
Valid UUID
64
Example response:
200 OKApplication Orchestrator Interfaces¶
The document is for the Application Orchestrator project, there are two parts of interfaces in the project.
Get All Application Instances¶
Retrieves application instances information
Resource URI: /appo/v1/tenants/{tenant_id}/app_instance_infos Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK [ { "appInstanceId": "string", "appPackageId": "string", "appName": "string", "appId": "string", "appDescriptor": "string", "mecHost": "string", "applcmHost": "string", "operationalStatus": "string", "operationInfo":"string" } ]Get Application Instance¶
Retrieves application instance information
Resource URI: /appo/v1/tenants/{tenant_id}/app_instance_infos/{appInstance_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "appInstanceId": "string", "appPackageId": "string", "appName": "string", "appId": "string", "appDescriptor": "string", "mecHost": "string", "applcmHost": "string", "operationalStatus": "string", "operationInfo":"string" }Create AppInstance¶
Creates App Instance
Resource URI: /appo/v1/tenants/{tenant_id}/app_instances Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appInstanceDescription
appInstanceDescription
RequestPart
yes
Valid UUID
64
appName
appName
RequestPart
yes
Alphanumeric characters,special characters are hypen and underscore
128
appPackageId
appPackageId
RequestPart
yes
Alphanumeric in lower case
64
appId
appId
RequestPart
yes
Alphanumeric in lower case
64
mecHost
mecHost
RequestPart
yes
Valid IP Address
15
hwcapabilities
hardwareCapabilities
body
No
AlphaNumeric characters allowed
128
tenant_id
tenant_id
path
yes
Valid UUID
64
Example request body:
{ "appInstanceDescription": "string", "appName": "string", "appPackageId": "string", "appId": "string", "hwCapabilities": [ "string" ], "mecHost": "string" }Example response:
202 Request Accepted [ { "app_instance_id":"string" } ]Get App Instance Information¶
Retrieves application instance information
Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/{app_instance_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
app_instance_id
application instance id
header
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "appInstanceId": "string", "appPackageId": "string", "appName": "string", "appId": "string", "appDescriptor": "string", "mecHost": "string", "applcmHost": "string", "operationalStatus": "string", "operationInfo":"string" }Instantiate Application¶
Instantiate application instance.
Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/{app_instance_id} Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
app_instance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
parameters
key value pair
body
No
Valid String
Example request body:
{ "parameters": { "mepIp" : "mep ip", "mepPort" : "mep port", "ak" : "ak", "sk" : "sk" , "..." : "..." } }Example response:
202 Request Accepted { "response": {} }Delete Application Instance¶
Terminates application instance.
Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/{app_instance_id} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
app_instance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
202 Request Accepted { "response": {} }Get App Instance Information based in App package ID¶
Retrieves application instance information based on package ID
Resource URI: /appo/v1/tenants/{tenant_id}/apps/{app_id}/packages/{app_package_id}/status Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
app_id
application id
header
yes
Alphanumeric in lower case
64
app_package_id
application package id
header
yes
Alphanumeric in lower case
64
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "data": [ { "appInstanceId": "e87c728c-a552-447b-84ca-782b6c065add", "appName": "face_recognition", "appDescriptor": "face_recognition", "mecHost": "1.1.1.1", "mepmHost": "1.1.1.1", "operationalStatus": "Created" } ], "retCode": 200, "params": [], "message": "" }Get Query Kpi¶
Retrieves edge host performance statistics
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/kpi Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK [ "response": "{ "pods ":[{ "podstatus":"String"," "podname":"String", "containers":[{ "containername": "String", "metricsusage":{ "cpuusage" : "String", "memusage" : "String", "diskusage" : "String"}}]}" ]Get Mep Capabilities¶
Retrieves edge host performance statistics
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/mep_capabilities Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK [ { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" }, { "applicationInstanceId": "string" }, ] }, { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" } ] } ]Get Mep Capability¶
Retrieves edge host performance statistics based on capability id
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/mep_capabilities/{capability_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
capability_id
capability_id
path
yes
Alphanumeric characters,special characters are hypen and underscore
128
Example response:
200 OK { "capabilityId": "string", "capabilityName": "string", "status": "string", "version": "string", "consumers": [ { "applicationInstanceId": "string" }, { "applicationInstanceId": "string" }, ] }Create Batch¶
Batch create application instances.
Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/batch_create Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant id
path
yes
Valid UUID
64
appName
appName
RequestPart
yes
Alphanumeric characters,special characters are hypen and underscore
128
appInstanceDescription
appInstanceDescription
RequestPart
yes
Valid UUID
64
appPackageId
appPackageId
RequestPart
yes
Alphanumeric in lower case
64
appId
appId
RequestPart
yes
Alphanumeric in lower case
64
mecHost
mecHost
RequestPart
yes
Valid IP Address
15
hwcapabilities
hardwareCapabilities
body
No
AlphaNumeric characters allowed
128
Example request body:
{ "appPackageId": "string", "appName": "string", "appInstanceDescription": "string", "appId": "string", "hwCapabilities": [ "string" ], "mecHost": [ "string" ] }Example response:
202 Accepted { "response": [ { "applicationInstanceId": "string", "host": "string", "status": "string" }, { "applicationInstanceId": "string", "host": "string", "status": "string" } ] }Batch instantiate¶
Batch instantiate application instances.
Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/batch_instantiate Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant id
path
yes
Valid UUID
64
instantiationParameters
array of key value pair
body
No
Valid string
Example request body:
{ "instantiationParameters": [ { "appInstanceId": "d2134a3b-85e7-4bf6-b030-14c71219188a", "parameters": { "mepIp" : "mep ip", "mepPort" : "mep port", "ak" : "ak", "sk" : "sk", "..." : "..." } } ] }Example response:
202 Accepted { "response": [ { "applicationInstanceId": "string", "host": "string", "status": "string" }, { "applicationInstanceId": "string", "host": "string", "status": "string" } ] }Batch terminate¶
Batch terminates application instances.
Resource URI: /appo/v1/tenants/{tenant_id}/app_instances/batch_terminate Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
body
yes
Valid UUID
64
Example request body:
{ "appInstanceIds" : ["string","string"] }Example response:
202 Accepted { "response": [ { "applicationInstanceId": "string", "host": "string", "status": "string" }, { "applicationInstanceId": "string", "host": "string", "status": "string" } ] }Batch Query¶
Batch Query information
Resource URI: /appo/v1/tenants/{tenant_id}/app_instance_infos/{appInstance_ids} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_ids
application instance id
header
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
Example response:
200 OK { "appInstanceId": "string", "appPackageId": "string", "appName": "string", "appId": "string", "appDescriptor": "string", "mecHost": "string", "applcmHost": "string", "operationalStatus": "string", "operationInfo":"string" }Queries liveness & readiness¶
Retrieves data for liveness & readiness
Resource URI: /appo/v1/health Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OKCreate AppRule Config¶
Configures the app rule
Resource URI: /appo/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example request body:
"appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "action": "DROP", "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "tag": [ "string" ], "srcTunnelAddress": [ "string" ], "dstTunnelAddress": [ "string" ], "srcTunnelPort": [ "string" ], "dstTunnelPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "dstInterface": [ { "interfaceType": "string", "tunnelInfo": { "tunnelType": "string", "tunnelDstAddress": "string", "tunnelSrcAddress": "string", "tunnelSpecificData": "string" }, "srcMacAddress": "string", "dstMacAddress": "string", "dstIpAddress": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, } ], "appSupportMp1": bool, "appName": "string"Example response:
200 OK { "response": { "apprule_task_id": "string" } }Update AppRule Config¶
Update the app rule
Resource URI: /appo/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example request body:
"appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "action": "DROP", "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "tag": [ "string" ], "srcTunnelAddress": [ "string" ], "dstTunnelAddress": [ "string" ], "srcTunnelPort": [ "string" ], "dstTunnelPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "dstInterface": [ { "interfaceType": "string", "tunnelInfo": { "tunnelType": "string", "tunnelDstAddress": "string", "tunnelSrcAddress": "string", "tunnelSpecificData": "string" }, "srcMacAddress": "string", "dstMacAddress": "string", "dstIpAddress": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, } ], "appSupportMp1": bool, "appName": "string"Example response:
202 OK { "response": { "apprule_task_id": "string" } }Delete AppRule Config¶
Deletes the existing app rule
Resource URI: /appo/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example request body:
{ "appTrafficRule": ["string", "string"], "appDNSRule": ["string", "string"] }Example response:
202 Accepted { "response": { "apprule_task_id": "string" } }Get AppRule Config Status¶
Queries app rule config status
Resource URI: /appo/v1/tenants/{{tenant-id}}/apprule_task_infos/{apprule_task_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example Response body:
200 OK { "response": { "taskId": "string", "appInstanceId": "string", "detailed": "string", "configResult": "string" } }Synchronizes application instance info from edge¶
Synchronizes application instance info from all edge
Resource URI: /appo/v1/tenants/{{tenant-id}}/app_instance_infos/sync Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
tenant_id
tenant id
path
yes
Valid UUID
64
Example Response body:
200 OK { "appInstanceUpdatedRecs": [ { "appInstanceId": "e921ce54-82c8-4532-b5c6-8516cf75f7a6", "createTime": "2021-03-12T07:59:55.695956Z", "mecHost": "119.8.53.3", "deployType": "helm", "tenantId": "e921ce54-82c8-4532-b5c6-8516cf75f7a6", "appPackageId": "", "appName": "", "origin": "mepm", "syncStatus": false } ] }Create flavor¶
Create flavor
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/flavors Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example request body:
{ "name": "test_flavor", "vcpus": 2, "ram": 1024, "disk": 88888, "swap": 10, "extraSpecs": { "EG": "true" } }Example response:
200 Accepted { "data": null, "retCode": 0, "message": "create flavor success", "params": null }Query flavor¶
Query flavor
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/flavors Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": { "name": "test_flavor", "vcpus": 2, "ram": 1024, "disk": 10, "swap": "10", "extraSpecs": { "EG": "true" }}, "retCode": 0, "message": "Query flavor success", "params": null }Query flavor by id¶
Query flavor by id
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/flavors/{flavor_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
flavor_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": { "name": "test_flavor", "vcpus": 2, "ram": 1024, "disk": 10, "swap": "10", "extraSpecs": { "EG": "true" }}, "retCode": 0, "message": "Query flavor success", "params": null }Delete flavor by id¶
Delete flavor by id
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/flavors/{flavor_id} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
flavor_id
flavor_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": null, "retCode": 0, "message": "delete flavor success", "params": null }Create networks¶
Create networks
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/networks Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example request body:
{ "name": "sample_network", "shared": true, subnet": { "name": "subnetA", "enableDhcp": true, "gatewayIp": "192.168.xxx.1", "cidr": "10.0.0.0/24", "allocationPools": [ { "start": "192.168.xxx.5", "end": "192.168.xxx.25" } ] } }Example response:
200 Accepted { "data": null, "retCode": 0, "message": "Create networks success", "params": null }Query flavor¶
Query flavor
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/networks Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": [{ "id": "0884b5fb-ea5c-4951-9c54-256f4fc38996", "name": "mec_network_n6", "shared": true, "external": false, "status": "ACTIVE", "adminState": true, "availabilityZones": [ "nova" ], "subnets": [ { "cidr": "192.168.225.0/24", "name": "shared-subnet" }, { "cidr": "111.11.11.0/24", "name": "test111" } ] }, { "id": "1e15cba8-979f-4fb8-bb56-e16a0ebabf54", "name": "test6666", "shared": false, "external": false, "status": "ACTIVE", "adminState": true, "availabilityZones": [ "nova" ], "subnets": [ { "cidr": "192.168.4.0/24", "name": "test6666" } ] } ]}, "retCode": 0, "message": "Query networks success", "params": null }Query flavor by id¶
Query flavor by id
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/networks/{network_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
network_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": [{ "id": "0884b5fb-ea5c-4951-9c54-256f4fc38996", "name": "mec_network_n6", "shared": true, "external": false, "status": "ACTIVE", "adminState": true, "availabilityZones": [ "nova" ], "subnets": [ { "cidr": "192.168.225.0/24", "name": "shared-subnet" }, { "cidr": "111.11.11.0/24", "name": "test111" } ] }, { "id": "1e15cba8-979f-4fb8-bb56-e16a0ebabf54", "name": "test6666", "shared": false, "external": false, "status": "ACTIVE", "adminState": true, "availabilityZones": [ "nova" ], "subnets": [ { "cidr": "192.168.4.0/24", "name": "test6666" } ] } ]}, "retCode": 0, "message": "Query networks success", "params": null }Delete network by id¶
Delete network by id
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/networks/{network_id} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
network_id
network_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": null, "retCode": 0, "message": "delete network success", "params": null }Create servers¶
Create servers
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example request body:
{ "server" : { "name": "vmTest", "flavor": "0e12087a-7c87-476a-8f84-7398e991cecc", "image" : "cec3aab9-5991-4893-befe-4775ddf79de6", "imageRef" : "70a599e0-31e7-49b7-b260-868f441e862b", "availabilityZone": "us-west", "user_data" : "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==", "configDrive": "true", "securityGroups": [ { "name": "default" } ], "netWorks": [ { "network": "0884b5fb-ea5c-4951-9c54-256f4fc38991", "fixedIp": "192.168.xx.19" }, { "network": "241aee72-de67-4c95-bdaa-e63f12fbd183", "fixedIp": "192.168.xx.19" }, { "network": "446aa035-f737-45db-9834-83c7a5f94046", "fixedIp": "192.168.xxx.19" } ] } }Example response:
200 Accepted { "data": null, "retCode": 0, "message": "Create server success", "params": null }Query servers¶
Query servers
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": { "servers": [ { "OS-DCF:diskConfig": "AUTO", "OS-EXT-AZ:availability_zone": "nova", "OS-EXT-SRV-ATTR:host": "compute", "OS-EXT-SRV-ATTR:hostname": "new-server-test", "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini", "OS-EXT-SRV-ATTR:instance_name": "instance-00000001", "OS-EXT-SRV-ATTR:kernel_id": "", "OS-EXT-SRV-ATTR:launch_index": 0, "OS-EXT-SRV-ATTR:ramdisk_id": "", "OS-EXT-SRV-ATTR:reservation_id": "r-l0i0clt2", "OS-EXT-SRV-ATTR:root_device_name": "/dev/sda", "OS-EXT-SRV-ATTR:user_data": "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==", "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2019-04-23T15:19:15.317839", "OS-SRV-USG:terminated_at": null, "accessIPv4": "1.2.3.4", "accessIPv6": "80fe::", "addresses": { "private": [ { "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74", "OS-EXT-IPS:type": "fixed", "addr": "192.168.1.30", "version": 4 } ] }, "config_drive": "", "created": "2019-04-23T15:19:14Z", "description": null, "flavor": { "disk": 1, "ephemeral": 0, "extra_specs": {}, "original_name": "m1.tiny", "ram": 512, "swap": 0, "vcpus": 1 }, "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6", "host_status": "UP", "id": "2ce4c5b3-2866-4972-93ce-77a2ea46a7f9", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", }, "key_name": null, "locked": true, "locked_reason": "I don't want to work", "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-volumes:volumes_attached": [], "progress": 0, "security_groups": [ { "name": "default" } ], "status": "ACTIVE", "tags": [], "tenant_id": "6f70656e737461636b20342065766572", "trusted_image_certificates": null, "updated": "2019-04-23T15:19:15Z", "user_id": "admin" } ]}, "retCode": 0, "message": "Query servers success", "params": null }Query server by id¶
Query server by id
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers/{server_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
server_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": {"server": { "OS-DCF:diskConfig": "AUTO", "OS-EXT-AZ:availability_zone": "nova", "OS-EXT-SRV-ATTR:host": "compute", "OS-EXT-SRV-ATTR:hostname": "new-server-test", "OS-EXT-SRV-ATTR:hypervisor_hostname": "fake-mini", "OS-EXT-SRV-ATTR:instance_name": "instance-00000001", "OS-EXT-SRV-ATTR:kernel_id": "", "OS-EXT-SRV-ATTR:launch_index": 0, "OS-EXT-SRV-ATTR:ramdisk_id": "", "OS-EXT-SRV-ATTR:reservation_id": "r-t61j9da6", "OS-EXT-SRV-ATTR:root_device_name": "/dev/sda", "OS-EXT-SRV-ATTR:user_data": "IyEvYmluL2Jhc2gKL2Jpbi9zdQplY2hvICJJIGFtIGluIHlvdSEiCg==", "OS-EXT-STS:power_state": 1, "OS-EXT-STS:task_state": null, "OS-EXT-STS:vm_state": "active", "OS-SRV-USG:launched_at": "2019-04-23T15:19:10.855016", "OS-SRV-USG:terminated_at": null, "accessIPv4": "1.2.3.4", "accessIPv6": "80fe::", "addresses": { "private": [ { "OS-EXT-IPS-MAC:mac_addr": "00:0c:29:0d:11:74", "OS-EXT-IPS:type": "fixed", "addr": "192.168.1.30", "version": 4 } ] }, "config_drive": "", "created": "2019-04-23T15:19:09Z", "description": null, "flavor": { "disk": 1, "ephemeral": 0, "extra_specs": {}, "original_name": "m1.tiny", "ram": 512, "swap": 0, "vcpus": 1 }, "hostId": "2091634baaccdc4c5a1d57069c833e402921df696b7f970791b12ec6", "host_status": "UP", "id": "0e12087a-7c87-476a-8f84-7398e991cecc", "image": { "id": "70a599e0-31e7-49b7-b260-868f441e862b", }, "key_name": null, "locked": true, "locked_reason": "I don't want to work", "metadata": { "My Server Name": "Apache1" }, "name": "new-server-test", "os-extended-volumes:volumes_attached": [], "progress": 0, "security_groups": [ { "name": "default" } ], "server_groups": [], "status": "ACTIVE", "tags": [], "tenant_id": "6f70656e737461636b20342065766572", "trusted_image_certificates": null, "updated": "2019-04-23T15:19:11Z", "user_id": "admin" }}, "retCode": 0, "message": "Query servers success", "params": null }Operate servers¶
Operate servers
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers/{server_id} Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
server_id
tenant_id
path
yes
Valid UUID
64
Example request body:
{ "action" : "" ### reboot/createImage/pause(数据保留到内存)/unpause(after pause)/suspend(数据保留到磁盘)/resume(after suspend)/stop(关机)/start(after stop)/createConsole ### if action reboot, need add params like "HARD" or "SOFT" , if action createImage need add params name and metadata "reboot" : " " "createImage : { "name": "vmsnap", "metadata": { } } }Example response:
200 Accepted { "data": null, "retCode": 0, "message": "Operate server success", "params": null }Delete servers by serverId¶
Delete servers by serverId
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/servers/{server_id} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
server_id
server_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": null, "retCode": 0, "message": "delete server success", "params": null }Create images¶
Create images
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example request body:
{ name: "test_image", containerFormat: "", diskFormat: "", minRam: 1, minDisk: 10, properties: { } }Example response:
200 Accepted { "data": null, "retCode": 0, "message": "create image success", "params": null }Import image¶
Import image
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images/{image_id} Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
image_id
image_id
path
yes
Valid UUID
64
Example request body:
{ resourceUri: "example", }Example response:
200 Accepted { "data": null, "retCode": 0, "message": "import image success", "params": null }Query images¶
Query images
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images/ Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example response:200 OK { “images”: [ { “status”: “active”, “name”: “cirros-0.3.2-x86_64-disk”, “tags”: [], “container_format”: “bare”, “created_at”: “2014-11-07T17:07:06Z”, “disk_format”: “qcow2”, “updated_at”: “2014-11-07T17:19:09Z”, “visibility”: “public”, “self”: “/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27”, “min_disk”: 0, “protected”: false, “id”: “1bea47ed-f6a9-463b-b423-14b9cca9ad27”, “file”: “/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file”, “checksum”: “64d7c1cd2b6f60c92c14662941cb7913”, “os_hash_algo”: “sha512”, “os_hash_value”: “073b4523583784fbe01daff81eba092a262ec37ba6d04dd3f52e4cd5c93eb8258af44881345ecda0e49f3d8cc6d2df6b050ff3e72681d723234aff9d17d0cf09”, “os_hidden”: false, “owner”: “5ef70662f8b34079a6eddb8da9d75fe8”, “size”: 13167616, “min_ram”: 0, “schema”: “/v2/schemas/image”, “virtual_size”: null } ], “schema”: “/v2/schemas/images”, “first”: “/v2/images” }
### Query images by id Query images by idResource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images/{image_id} Method: GET
|Name|Definition|Type|Required|Allowed|Max Length| |---|---|---|---|---|---| |access_token|access token|header|yes|Jwt token| |host_ip|edge host ip|path|yes|Valid IP|15| |tenant_id|tenant_id|path|yes|Valid UUID|64| |image_id|image_id|path|yes|Valid UUID|64|Example response:
200 OK { "status": "active", "name": "cirros-0.3.2-x86_64-disk", "tags": [], "container_format": "bare", "created_at": "2014-05-05T17:15:10Z", "disk_format": "qcow2", "updated_at": "2014-05-05T17:15:11Z", "visibility": "public", "self": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27", "min_disk": 0, "protected": false, "id": "1bea47ed-f6a9-463b-b423-14b9cca9ad27", "file": "/v2/images/1bea47ed-f6a9-463b-b423-14b9cca9ad27/file", "checksum": "64d7c1cd2b6f60c92c14662941cb7913", "os_hash_algo": "sha512", "os_hash_value": "073b4523583784fbe01daff81eba092a262ec37ba6d04dd3f52e4cd5c93eb8258af44881345ecda0e49f3d8cc6d2df6b050ff3e72681d723234aff9d17d0cf09", "os_hidden": false, "owner": "5ef70662f8b34079a6eddb8da9d75fe8", "size": 13167616, "min_ram": 0, "schema": "/v2/schemas/image", "virtual_size": null }Delete image by id¶
Delete image by id
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/images/{image_id} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
image_id
image_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": null, "retCode": 0, "message": "delete image success", "params": null }Create securityGroups¶
Create securityGroups
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example request body:
{ "name": "new-webservers", }Example response:
200 Accepted { "data": null, "retCode": 0, "message": "create securityGroup success", "params": null }Query securityGroups¶
Query securityGroups
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": {"securityGroup": [ { "description": "default", "id": "85cc3048-abc3-43cc-89b3-377341426ac5", "name": "default", "securityGroupRule": [ { "direction": "egress", "ethertype": "IPv6", "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", "port_range_max": null, "port_range_min": null, "protocol": null, "remote_group_id": null, "remote_ip_prefix": null, "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", "project_id": "e4f50856753b4dc6afee5fa6b9b6c550", "revision_number": 1, "tags": ["tag1,tag2"], "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550", "created_at": "2018-03-19T19:16:56Z", "updated_at": "2018-03-19T19:16:56Z", "description": "" } ], "project_id": "e4f50856753b4dc6afee5fa6b9b6c550", "revision_number": 8, "created_at": "2018-03-19T19:16:56Z", "updated_at": "2018-03-19T19:16:56Z", "tags": ["tag1,tag2"], "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550", "stateful": true, "shared": false } ]}, "retCode": 0, "message": "Query securityGroups success", "params": null }Query securityGroup by securityGroupId¶
Query securityGroup by securityGroupId
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
security_group_id
security_group_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": {"securityGroup": { "description": "default", "id": "85cc3048-abc3-43cc-89b3-377341426ac5", "name": "default", "securityGroupRule": [ { "securityGroupId": "a7734e61-b545-452d-a3cd-0189cbd9747a", "direction": "egress", "protocol": "tcp", "ethertype": "IPv4", "port_range_min": 80, "port_range_max": 90, remoteIpPrefix: "", "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5" } ], "project_id": "e4f50856753b4dc6afee5fa6b9b6c550", "created_at": "2018-03-19T19:16:56Z", "updated_at": "2018-03-19T19:16:56Z", "revision_number": 4, "tags": ["tag1,tag2"], "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550", "stateful": true, "shared": false }}, "retCode": 0, "message": "Query securityGroup success", "params": null }Delete securityGroup by id¶
Delete securityGroup by id
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
security_group_id
security_group_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": null, "retCode": 0, "message": "delete securityGroup success", "params": null }Create securityGroupRules¶
Create securityGroupRules
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id}/securityGroupRules Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
security_group_id
security_group_id
path
yes
Valid UUID
64
Example request body:
{ "securityGroupId": "a7734e61-b545-452d-a3cd-0189cbd9747a", "direction": "ingress", "protocol": "tcp", "ethertype": "IPv4", "port_range_min": 80, "port_range_max": 90, remoteIpPrefix: "", "remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5" }Example response:
200 Accepted { "data": null, "retCode": 0, "message": "create securityGroupRules success", "params": null }Query securityGroupRules¶
Query securityGroupRules
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id}/securityGroupRules Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
security_group_id
security_group_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": {"securityGroupRule": [ { "direction": "egress", "ethertype": "IPv6", "id": "3c0e45ff-adaf-4124-b083-bf390e5482ff", "port_range_max": null, "port_range_min": null, "protocol": null, "remote_group_id": null, "remote_ip_prefix": null, "security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5", "project_id": "e4f50856753b4dc6afee5fa6b9b6c550", "revision_number": 1, "created_at": "2018-03-19T19:16:56Z", "updated_at": "2018-03-19T19:16:56Z", "tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550", "description": "" } ]}, "retCode": 0, "message": "Query securityGroupRules success", "params": null }Delete securityGroupRules by securityGroupRulesId¶
Delete securityGroupRules by securityGroupRulesId
Resource URI: /appo/v1/tenants/{tenant_id}/hosts/{host_ip}/securityGroups/{security_group_id}/securityGroupRules Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
host_ip
edge host ip
path
yes
Valid IP
15
tenant_id
tenant_id
path
yes
Valid UUID
64
security_group_id
security_group_id
path
yes
Valid UUID
64
Example response:
200 OK { "data": null, "retCode": 0, "message": "delete securityGroupRule success", "params": null }APPO Open Api Swagger¶
Please refer APPO_OPEN_API
Inventory Interfaces¶
The document is for the Inventory project, there are three parts of interfaces in the project.
Get All Application Records¶
Retrieves all application store records
Resource URI: /inventory/v1/appstores Method: GET
Name Definition Type Required Allowed Max Length access_token access token header yes Jwt token Example response:
200 OK { { "appstoreIp": "string", "appstoreName": "string", "appstorePort": "string", "producer": "string", "uri": "string", "userName": "string" } }Add Application Store Record¶
Adds new application store record
Resource URI: /inventory/v1/appstores Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appstoreIp
appstoreIp
body
yes
Valid IP Address
15
appstoreName
appstoreName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
appstorePort
appstorePort
body
yes
Valid Port
5
producer
producer
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
uri
uri
body
yes
Valid UUID
128
userName
userName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
Example request body:
{ "appstoreIp": "string", "appstoreName": "string", "appstorePort": "string", "producer": "string", "uri": "string", "userName": "string" }Example response:
200 OK [ { "Saved" } ]Delete All Application Records¶
Deletes all application stores records
Resource URI: /inventory/v1/appstores Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OK [ { "Deleted" } ]Get Application Stores Record¶
Retrieves application store record
Resource URI: /inventory/v1/appstores/{appstore_ip} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appstore_ip
appstore IP
path
yes
Valid IP Address
15
Example response:
200 OK { "appstoreIp" : "string" "appstorePort" : "string" "uri" : "string" "userName" : "string" "appstoreName" : "string" "producer" : "string" }Add Application record¶
Adds a new application store record entry into the Inventory.
Resource URI: /inventory/v1/appstores Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appstoreIp
appstoreIp
body
yes
Valid IP Address
15
appstoreName
appstoreName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
appstorePort
appstorePort
body
yes
Valid Port
5
appstoreRepoName
appstoreRepoName
body
yes
Valid appstoreRepoName
128
appstoreRepo
appstoreRepo
body
yes
Valid appstoreRepo
128
appstoreRepoUserName
appstoreRepoUserName
body
yes
Valid appstoreRepoUserName
128
appstoreRepoPassword
appstoreRepoPassword
body
yes
Valid appstoreRepoPassword
15
producer
producer
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
Example request body:
{ "appstoreIp" : "string" "appstorePort" : "string" "appstoreName" : "string" "appstoreRepoName" : "string" "appstoreRepo" : "string" "appstoreRepoUserName" : "string" "appstoreRepoPassword" : "string" "producer" : "string" }Example response:
200 OK [ { "Saved" } ]Update Application record¶
Updates an exiting application store record in the Inventory matching the given tenant ID & application store IP
Resource URI: /inventory/v1/appstores/{appstore_ip} Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appstoreIp
appstoreIp
body
yes
Valid IP Address
15
appstoreName
appstoreName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
appstorePort
appstorePort
body
yes
Valid Port
5
appstoreRepoName
appstoreRepoName
body
yes
Valid appstoreRepoName
128
appstoreRepo
appstoreRepo
body
yes
Valid appstoreRepo
128
appstoreRepoUserName
appstoreRepoUserName
body
yes
Valid appstoreRepoUserName
128
appstoreRepoPassword
appstoreRepoPassword
body
yes
Valid appstoreRepoPassword
15
producer
producer
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
Example request body:
{ "appstoreIp" : "string" "appstorePort" : "string" "appstoreName" : "string" "appstoreRepoName" : "string" "appstoreRepo" : "string" "appstoreRepoUserName" : "string" "appstoreRepoPassword" : "string" "producer" : "string" }Example response:
200 OK [ { "Updated" } ]Get App Stores Record¶
Retrieves all application store record
Resource URI: /inventory/v1/appstores Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
Example response:
200 OK [ { "appstoreIp" : "string" "appstorePort" : "string" "appstoreName" : "string" "appstoreRepoName" : "string" "appstoreRepo" : "string" "appstoreRepoUserName" : "string" "appstoreRepoPassword" : "string" "producer" : "string" }, { "appstoreIp" : "string" "appstorePort" : "string" "appstoreName" : "string" "appstoreRepoName" : "string" "appstoreRepo" : "string" "appstoreRepoUserName" : "string" "appstoreRepoPassword" : "string" "producer" : "string" } ]Delete App Stores Record¶
Deletes all application store records for a given tenant.
Resource URI: /inventory/v1/appstores/ Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OK [ { "Deleted" } ]Get App Stores Record¶
Retrieves a specific application store record in the Inventory matching the given tenant ID & application store IP
Resource URI: /inventory/v1/appstores/{appstore_ip} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appstore_ip
appstore IP
path
yes
Valid IP Address
15
Example response:
200 OK { "appstoreIp" : "string" "appstorePort" : "string" "appstoreName" : "string" "appstoreRepoName" : "string" "appstoreRepo" : "string" "appstoreRepoUserName" : "string" "appstoreRepoPassword" : "string" "producer" : "string" }Delete App Stores Record¶
Deletes a specific application store record in the Inventory matching the given tenant ID & application store IP
Resource URI: /inventory/v1/appstores/{appstore_ip} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appstore_ip
appstore IP
path
yes
Valid IP Address
15
Example response:
200 OK [ { "Deleted" } ]Update App Store Record¶
Updates existing application store record
Resource URI: /inventory/v1/appstores/{appstore_ip} Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appstore_ip
appstore IP
path
yes
Valid IP Address
15
appstoreIp
appstoreIp
body
yes
Valid IP Address
15
appstoreName
appstoreName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
appstorePort
appstorePort
body
yes
Valid Port
5
producer
producer
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
uri
uri
body
yes
Valid UUID
128
userName
userName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
Example request body:
{ "appstoreIp": "string", "appstoreName": "string", "appstorePort": "string", "producer": "string", "uri": "string", "userName": "string" }Example response:
200 OK [ { "Updated" } ]Deletes Application Record¶
Deletes application store record
Resource URI: /inventory/v1/appstores/{appstore_ip} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appstore_ip
appstore IP
path
yes
Valid IP address
15
Example response:
200 OK [ { "Deleted" } ]Get All MEC Host Records¶
Retrieves all MEC host records
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
Example response:
200 OK [ { "mechostIp": "string", "mechostName": "string", "zipCode": "string", "city": "string", "address": "string", "affinity": "string", "userName": "string", "edgerepoName": null, "edgerepoIp": "string", "edgerepoPort": "string", "edgerepoUsername": "string", "applcmIp": "string", "hwcapabilities": [ { "hwType": "string", "hwVendor": "string", "hwModel": "string" }, { "hwType": "string", "hwVendor": "string", "hwModel": "string" } ] } ]Add MEC Host Record¶
Adds new MEC host record
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
mechost_ip
mechost IP
path
yes
Valid IP address
15
address
address
body
yes
Valid IP address
255
affinity
affinity
body
yes
AlphaNumeric, special characters allowed are hypen,underscore and comma
128
applcmIp
applcmIp
body
yes
Valid IP address
15
city
city
body
yes
AlphaNumeric, special characters allowed are slash and space
128
edgeName
edgeName
body
yes
AlphaNumeric, special characters allowed are slash and space
128
edgerepoIp
edgerepoIp
body
yes
Valid IP address
255
edgerepoUsername
edgerepoUsername
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
mechostIp
mechostIp
body
yes
Valid IP address
15
mechostName
mechostName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
userName
userName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
zipCode
zipCode
body
yes
Alpha, special characters allowed are hypen and underscore
128
hwcapabilities
hardwareCapabilities
body
No
AlphaNumeric characters allowed
128
hwType
hardwareType
body
No
AlphaNumeric characters allowed
128
hwVendor
hardwareVendor
body
No
AlphaNumeric characters allowed
128
hwModel
hardwareModel
body
No
AlphaNumeric characters allowed
128
Example request body:
[ { "mechostIp": "string", "mechostName": "string", "zipCode": "string", "city": "string", "address": "string", "affinity": "string", "userName": "string", "edgerepoName": null, "edgerepoIp": "string", "edgerepoPort": "string", "edgerepoUsername": "string", "applcmIp": "string", "hwcapabilities": [ { "hwType": "string", "hwVendor": "string", "hwModel": "string" }, { "hwType": "string", "hwVendor": "string", "hwModel": "string" } ] } ]Example response:
200 OK [ { "Saved" } ]Delete All MEC Host Records¶
Deletes all application stores records
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
Example response:
200 OK [ { "Deleted" } ]Get MEC Host Record¶
Retrieves MEC host records
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
mechost_ip
mechost_ip
path
yes
Valid IP address
15
200 OK { "mechostIp": "string", "mechostName": "string", "zipCode": "string", "city": "string", "address": "string", "affinity": "string", "userName": "string", "edgerepoName": null, "edgerepoIp": "string", "edgerepoPort": "string", "edgerepoUsername": "string", "applcmIp": "string", "hwcapabilities": [ { "hwType": "string", "hwVendor": "string", "hwModel": "string" }, { "hwType": "string", "hwVendor": "string", "hwModel": "string" } ] }Update MEC Host Record¶
Updates existing MEC host record
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip} Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
mechost_ip
mechost IP
path
yes
Valid IP address
15
address
address
body
yes
Valid IP address
255
affinity
affinity
body
yes
AlphaNumeric, special characters allowed are hypen,underscore and comma
128
applcmIp
applcmIp
body
yes
Valid IP address
15
city
city
body
yes
AlphaNumeric, special characters allowed are slash and space
128
edgeName
edgeName
body
yes
AlphaNumeric, special characters allowed are slash and space
128
edgerepoIp
edgerepoIp
body
yes
Valid IP address
255
edgerepoUsername
edgerepoUsername
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
mechostIp
mechostIp
body
yes
Valid IP address
15
mechostName
mechostName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
userName
userName
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
zipCode
zipCode
body
yes
Alpha, special characters allowed are hypen and underscore
128
hwcapabilities
hardwareCapabilities
body
No
AlphaNumeric characters allowed
128
hwType
hardwareType
body
No
AlphaNumeric characters allowed
128
hwVendor
hardwareVendor
body
No
AlphaNumeric characters allowed
128
hwModel
hardwareModel
body
No
AlphaNumeric characters allowed
128
Example request body:
{ "mechostIp": "string", "mechostName": "string", "zipCode": "string", "city": "string", "address": "string", "affinity": "string", "userName": "string", "edgerepoName": null, "edgerepoIp": "string", "edgerepoPort": "string", "edgerepoUsername": "string", "applcmIp": "string", "hwcapabilities": [ { "hwType": "string", "hwVendor": "string", "hwModel": "string" }, { "hwType": "string", "hwVendor": "string", "hwModel": "string" } ] }Example response:
200 OK [ { "Updated" } ]Delete MEC Host Record¶
Deletes application stores record
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
mechost_ip
mechost IP
path
yes
Valid IP Address
15
Example response:
200 OK [ { "Deleted" } ]Add Application record¶
Adds new application record.
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/apps Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appInstanceId
appInstance id
body
yes
Valid UUID
64
mechost_ip
mechost ip
path
yes
Valid IP Address
15
appName
appName
body
yes
AlphaNumeric,special characters allowed are hypen and underscore
128
capabilities
capabilities
body
yes
capabilities
10
packageId
packageId
body
yes
AlphaNumeric,special characters allowed are hypen and underscore
64
status
status
body
yes
AlphaNumeric,special characters allowed are hypen and underscore
128
Example request body:
{ "appInstanceId": "string", "appName": "string", "capabilities": [ "string" ], "packageId": "string", "status": "string" }Example response:
200 OK [ { "Saved" } ]Update Application record¶
Updates Application record.
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/apps/{app_id} Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
appInstanceId
appInstance id
body
yes
Valid UUID
64
tenant_id
tenant identifier
path
yes
Valid UUID
64
mechost_ip
mechost ip
path
yes
Valid IP Address
15
appName
appName
body
yes
AlphaNumeric,special characters allowed are hypen and underscore
128
capabilities
capabilities
body
yes
capabilities
10
packageId
packageId
body
yes
AlphaNumeric,special characters allowed are hypen and underscore
64
status
status
body
yes
AlphaNumeric,special characters allowed are hypen and underscore
128
Example request body:
{ "appInstanceId": "string", "appName": "string", "capabilities": [ "string" ], "packageId": "string", "status": "string" }Example response:
200 OK [ { "Updated" } ]Delete Application record¶
Delete application record
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/apps/{app_id} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
mechost_ip
mechost_ip
path
yes
Valid IP address
15
tenant_id
tenant identifier
path
yes
Valid UUID
64
app_id
application id
path
yes
Valid UUID
64
Example response:
200 OK [ { "Deleted" } ]Retrieves MEC host record¶
Retrieves MEC host record for specific capabilities
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/capabilities Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
mechost_ip
mechost_ip
path
yes
Valid IP address
15
tenant_id
tenant identifier
path
yes
Valid UUID
64
capabilities
capabilities
path
yes
capabilities
10
Example response:
200 OK { "hwcapabilities": [ { "hwType": "string", "hwVendor": "string", "hwModel": "string" }, { "hwType": "string", "hwVendor": "string", "hwModel": "string" } ] }Retrieves MEC application record¶
Retrieves applications matching capability in a specific MEC host record.
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/capabilities/{capability_type}/applications Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
mechost_ip
mechost_ip
path
yes
Valid IP address
15
tenant_id
tenant identifier
path
yes
Valid UUID
64
capabilities
capabilities
path
yes
capabilities
10
capabilityType
capability type
path
yes
AlphaNumeric,special characters allowed are hypen and underscore
128
Example response:
200 OK { "apps": [ { "appInstanceId": "string", "appName": "string", "packageId": "string" "capabilities": [ "string" ], "status": "Created" ] }Upload K8s Configuration File¶
Upload K8s configuration file to applcm
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/k8sconfig Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
file
file
formData
yes
tenant_id
tenant identifier
path
yes
Valid UUID
64
mechost_ip
mechost IP
path
yes
Valid IP Address
15
Example response:
200 OK [ "response": {} ]Delete K8s Configuration File¶
Deletes K8s configuration file from applcm
Resource URI: /inventory/v1/tenants/{tenant_id}/mechosts/{mechost_ip}/k8sconfig Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
mechost_ip
mechost IP
path
yes
Valid IP Address
15
Example response:
200 OK [ { "Deleted" } ]Queries liveness & readiness¶
Retrieves data for liveness & readiness
Resource URI: /inventory/v1/health Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OKAdd APPDRule record to Inventory.¶
Adds a new APPDRule record entry into the Inventory.
Resource URI: /inventory/v1/tenants/{tenant_id}/app_instances/{app_instance_id}/appd_configuration Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example request body:
{ "appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "srcPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, "state": "string" } ], "appSupportMp1": true, "appName": "abcd" }Example response:
200 OK { "Saved" }Update APPDRule record to Inventory.¶
Updates a existing APPDRule record entry into the Inventory matching the given tenant ID & app instance ID.
Resource URI: /inventory/v1/tenants/{tenant_id}/app_instances/{app_instance_id}/appd_configuration Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example request body:
{ "appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "srcPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, "state": "string" } ], "appSupportMp1": true, "appName": "abcd" }Example response:
200 OK { "Updated" }Get APPDRule record to Inventory.¶
Retrieves appDRule records for given tenant ID and app instance ID.
Resource URI: /inventory/v1/tenants/{tenant_id}/app_instances/{app_instance_id}/appd_configuration Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example response body:
200 OK { "appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "srcPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, "state": "string" } ], "appSupportMp1": true, "appName": "abcd" }Delete APPDRule record .¶
Deletes appDRule records for a given tenant and app instance.
Resource URI: /inventory/v1/tenants/{tenant_id}/app_instances/{app_instance_id}/appd_configuration Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example response body:
200 OK { "DELETED" }Synchronizes mec host info from edge¶
Synchronizes mec host info from edge.
Resource URI: /mepms/{mepm_ip}/mechost/sync Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
mepm_ip
mepm_ip
path
yes
Valid IP Address
15
Example response body:
200 OK { "mecHostUpdatedRecs": [ { "mechostIp": "127.0.0.2", "mechostName": "edgegallery3", "zipCode": "560038", "city": "bangalore", "address": "anadapura", "affinity": "karanataka", "userName": "ramasubbareddy", "configUploadStatus": "false", "coordinates": "1,2", "vim": "openstack", "origin": "MEPM", "hwcapabilities": [ { "hwType": "type6", "hwVendor": "vendor1", "hwModel": "model" } ] } ] }Synchronizes mec host info from edge¶
Synchronizes mec host info from edge.
Resource URI: /tenants/{tenant_id}/mepms/{mepm_ip}/apprule/sync Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
tenant_id
tenant identifier
path
yes
Valid UUID
64
mepm_ip
mepm_ip
path
yes
Valid IP Address
15
Example response body:
200 OK { "appdRuleUpdatedRecs": [ { "appdRuleId": "e921ce54-82c8-4532-b5c6-8516cf75f7a771ea862b-5806-4196-bce3-434bf9c95b18", "tenantId": "e921ce54-82c8-4532-b5c6-8516cf75f7a7", "appInstanceId": "71ea862b-5806-4196-bce3-434bf9c95b18", "appName": "abcd", "appSupportMp1": true, "appTrafficRule": [ { "trafficRuleId": "TrafficRule1", "filterType": "FLOW", "priority": 1, "action": "DROP", "trafficFilter": [ { "trafficFilterId": "7e302be6-253b-4d09-8d1d-ef6630db7b88", "srcAddress": [ "192.168.1.1/28", "192.168.1.2/28" ], "srcPort": null, "dstAddress": [ "192.168.1.1/28" ], "dstPort": [ "6666666666" ], "protocol": [ "TCP" ], "qCI": 1, "dSCP": 0, "tC": 1, "tag": [ "1" ], "srcTunnelAddress": [ "1.1.1.1/24" ], "dstTunnelAddress": null, "srcTunnelPort": [ "65536" ], "dstTunnelPort": [ "65537" ] } ], "dstInterface": [ { "dstInterfaceId": "cf053d4c-250b-450f-a657-a30328a3b27a", "interfaceType": "", "srcMacAddress": "", "dstMacAddress": "", "dstIpAddress": "", "TunnelInfo": { "tunnelInfoId": "be36d5e2-41db-4270-b6cf-ba9e7b7a89aa", "tunnelType": "", "tunnelDstAddress": "", "tunnelSrcAddress": "", "tunnelSpecificData": "" } } ] } ], "appDnsRule": [ { "dnsRuleId": "dnsRule4", "domainName": "www.example.com", "ipAddressType": "IP_V4", "ipAddress": "192.0.2.0", "ttl": 30 } ], "Origin": "MEPM" } ] }Get MEPM Record¶
Retrieves all MEPM records
Resource URI: /inventory/v1/mepms Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
200 OK [ { "mepmIp": "string", "mepmName": "string", "mepmPort": "string", "userName": "string" } ]Add MEPM Record¶
Adds new MEPM record
Resource URI: /inventory/v1/mepms Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
mepmIp
mepm Ip
body
yes
Valid IP address
15
mepmName
mepm Name
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
mepmPort
mepm Port
body
yes
Vaild Port
5
userName
user Name
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
Example request body:
{ "mepmIp": "string", "mepmName": "string", "mepmPort": "string", "userName": "string" }Example response:
200 OK [ { "Saved" } ]Delete All MEPM Records¶
Deletes all mepm records
Resource URI: /inventory/v1/mepms Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OK [ { "Deleted" } ]Get MEPM Record¶
Retrieves mepm records
Resource URI: /inventory/v1/mepms/{mepm_ip} Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
mepm_ip
mepm IP
path
yes
Valid IP address
15
200 OK { "mepmIp": "string", "mepmName": "string", "mepmPort": "string", "userName": "string" }Update MEPM Record¶
Updates existing mepm record
Resource URI: /inventory/v1/mepms/{mepm_ip} Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
mepm_ip
mepm IP
path
yes
Valid IP address
15
mepmIp
mepm Ip
body
yes
Vaild IP address
15
mepmName
mepm Name
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
mepmPort
mepm Port
body
yes
Vaild Port
5
userName
user Name
body
yes
AlphaNumeric, special characters allowed are hypen and underscore
128
Example request body:
{ "mepmIp": "string", "mepmName": "string", "mepmPort": "string", "userName": "string" }Example response:
200 OK [ { "Updated" } ]Delete MEPM Record¶
Deletes mepm record
Resource URI: /inventory/v1/mepms/{mepm_ip} Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
mepm_ip
mepm IP
path
yes
Valid IP Address
15
Example response:
200 OK [ { "Deleted" } ]Inventory Open Api Swagger¶
Please refer INVENTORY_OPEN_API
MECM App Rule Manager Interfaces¶
The document is for the MECM App Rule Manager Interfaces project .
Queries liveness & readiness¶
Retrieves data for liveness & readiness
Resource URI: /apprulemgr/v1/health Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access token
header
yes
Jwt token
Example response:
200 OKCreate AppRule Config¶
Configures the app rule
Resource URI: /apprulemgr/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: POST
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example request body:
"appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "srcPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, "state": "string" } ], "appSupportMp1": bool, "appName": "string"Example response:
200 OK { "taskId":"string", "appInstanceId":"string", "configResult":"string", "configPhase":"string", "detailed":"string" }Update AppRule Config¶
Updates the existing app rule
Resource URI: /apprulemgr/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: PUT
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example request body:
"appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "srcPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, "state": "string" } ], "appSupportMp1": bool, "appName": "string"Example response:
200 OK { "taskId":"string", "appInstanceId":"string", "configResult":"string", "configPhase":"string", "detailed":"string" }Get AppRule Config¶
Queries the existing app rule
Resource URI: /apprulemgr/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: GET
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example Response body:
200 OK "appTrafficRule": [ { "trafficRuleId": "string", "filterType": "string", "priority": int, "trafficFilter": [ { "srcAddress": [ "string" ], "dstAddress": [ "string" ], "srcPort": [ "string" ], "dstPort": [ "string" ], "protocol": [ "string" ], "qCI": int, "dSCP": int, "tC": int } ], "action": "string", "state": "string" } ], "appDNSRule": [ { "dnsRuleId": "string", "domainName": "string", "ipAddressType": "string", "ipAddress": "string", "ttl": int, "state": "string" } ], "appSupportMp1": bool, "appName": "string"Delete AppRule Config¶
Delete the existing app rule
Resource URI: /apprulemgr/v1/tenants/{tenantId}/app_instances/{appInstanceId}/appd_configuration Method: DELETE
Name
Definition
Type
Required
Allowed
Max Length
access_token
access_token
header
yes
Jwt token
appInstance_id
application instance id
path
yes
Valid UUID
64
tenant_id
tenant id
path
yes
Valid UUID
64
appInstanceIds
application instance id
path
yes
Valid UUID
64
Example Response body:
200 OK { "response" : { "apprule_task_id" : "string" } }K8s plugin Interfaces¶
The document is for the K8s plugin project.
InstantiateRequest¶
Application instantiated
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
appInstanceId
string
required
Valid UUID
hostIp
string
required
Valid IP
package
bytes
required
Valid UUID without hypen
parameters
key value pair
No
Instantiation parameters, key-value pairs
InstantiateResponse¶
Represents the InstantiateRequest status.
Field
Type
Label
Description
status
string
required
Status of the instantiate request
TerminateRequest¶
Terminates application instance id
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
appInstanceId
string
required
Valid UUID
hostIp
string
required
Valid IP
TerminateResponse¶
Represents the TerminateRequest status.
Field
Type
Label
Description
status
string
required
Status of the terminate request
QueryRequest¶
Get statistics information
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
appInstanceId
string
required
Valid UUID
hostIp
string
required
Valid IP
QueryResponse¶
Represents the QueryRequest status.
Field
Type
Label
Description
status
string
required
Status of the Query request
UploadCfgRequest¶
Upload Config File
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
hostIp
string
required
Valid IP
configFile
formData
required
Provide valid config file
UploadCfgResponse¶
Represents the UploadCfgRequest status.
Field
Type
Label
Description
status
string
required
Status of the UploadCfgRequest
RemoveCfgRequest¶
Removes the config file
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
hostIp
string
required
Valid IP
RemoveCfgResponse¶
Field
Type
Label
Description
status
string
required
Status of the RemoveCfgRequest
CreateVmImageRequest¶
Create VM image request
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
appInstanceId
string
required
Valid UUID
hostIp
string
required
Valid IP
vmId
string
required
Valid UUID
CreateVmImageResponse¶
Field
Type
Label
Description
response
string
required
response of the CreateVmImageResponse
QueryVmImageRequest¶
Query VM image request
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
appInstanceId
string
required
Valid UUID
hostIp
string
required
Valid IP
imageId
string
required
Valid UUID
QueryVmImageResponse¶
Field
Type
Label
Description
response
string
required
response of the QueryVmImageResponse
DeleteVmImageRequest¶
Delete VM image request
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
appInstanceId
string
required
Valid UUID
hostIp
string
required
Valid IP
imageId
string
required
Valid UUID
DeleteVmImageResponse¶
Field
Type
Label
Description
response
string
required
response of the DeleteVmImageResponse
DownloadVmImageRequest¶
Download VM image request
Field
Type
Label
Description
accessToken
string
required
Provide the required access token
appInstanceId
string
required
Valid UUID
hostIp
string
required
Valid IP
imageId
string
required
Valid UUID
chunkNum
int32
required
Valid integer
DownloadVmImageResponse¶
Field
Type
Label
Description
content
byte
required
response of the DownloadVmImageResponse
AppLCM Service¶
Service for handling requests.
Method Name
Request Type
Response Type
Description
instantiate
InstantiateRequest
InstantiateResponse
Instantiate application
terminate
TerminateRequest
TerminateResponse
Terminate application
query
QueryRequest
QueryResponse
Query application
uploadConfig
UploadCfgRequest
UploadCfgResponse
Upload file configuration
removeConfig
RemoveCfgRequest
RemoveCfgResponse
Remove file configuration
Database Design¶
Apm Database Design¶
The APM database uses an open source PostgreSQL database, and the recommended version is 12.3.
apppackage: Store application package information, such as app_pkg_id, app_pkg_path and tenant_id.
create table apppackage ( id varchar(255) not null, app_pkg_id varchar(255) not null, app_pkg_name varchar(255) not null, app_pkg_version varchar(255) not null, app_pkg_path varchar(255) not null, app_provider varchar(200), app_pkg_desc varchar(500), app_pkg_affinity varchar(200), app_icon_url varchar(255), app_id varchar(255) not null, tenant_id varchar(255) not null, local_file_path varchar(2000), created_time timestamp default current_timestamp, modified_time timestamp default current_timestamp, primary key (id) );
apppackagehost: Store application package distribution information, such as app_pkg_id, distribution_status , tenant_id.
create table apppackagehost ( id INT GENERATED BY DEFAULT AS IDENTITY, pkg_host_key varchar(255) not null, host_ip varchar(255) not null, app_pkg_id varchar(255) not null, distribution_status varchar(200) not null, tenant_id varchar(200) not null, error varchar(2000), primary key (id) );
apmtenant: Store tenant information, such as tenant.
create table apmtenant ( tenant varchar(255) not null, primary key (tenant) );Lcm Controller Database Design¶
The LcmController database uses an open source PostgreSQL database, and the recommended version is 12.2. Two database tables currently designed and applied:
app_info_record: Store app information, such as appInsId, hostIp, deployType, appPackageId, appName, Origin, SyncStatus and tenantId.
CREATE TABLE app_info_record ( APPINSID VARCHAR(200) NOT NULL, MECHOST VARCHAR(200) NULL, DEPLOYTYPE VARCHAR(200) NULL, TENANTID VARCHAR(200) NULL, CONSTRAINT app_info_record_pkey PRIMARY KEY (APPINSID), APPPACKAGEID VARCHAR(200) NULL, APPNAME VARCHAR(200) NULL, ORIGIN VARCHAR(200) NULL, SYNCSTATUS VARCHAR(200) NULL );
tenant_info_record: Store tenant information, such as tenantId.
CREATE TABLE tenant_info_record ( TENANTID VARCHAR(200) NOT NULL, CONSTRAINT tenant_info_record_pkey PRIMARY KEY (TENANTID) );
mec_host: Store mec host information, such as mecHostId, mecHostIp, mecHostName, zipCode, city, address, affinity UserName, configUploadStatus, coordinates, vim, origin and syncStatus
CREATE TABLE mec_host ( MECHOSTID VARCHAR(200) NOT NULL, MECHOSTIP VARCHAR(200) NULL, MECHOSTNAME VARCHAR(200) NULL, ZIPCODE VARCHAR(200) NULL, CITY VARCHAR(200) NULL, ADDRESS VARCHAR(200) NULL, AFFINITY VARCHAR(200) NULL, USERNAME VARCHAR(200) NULL, CONFIGUPLOADSTATUS VARCHAR(200) NULL, COORDINATES VARCHAR(200) NULL, VIM VARCHAR(200) NULL, ORIGIN VARCHAR(200) NULL, SYNCSTATUS VARCHAR(200) NULL, CONSTRAINT mec_host_pkey PRIMARY KEY (MECHOSTID) );
mec_hw_capability: Store mec hardware capability information, such as MecCapabilityId, hwType, hwVendor and hwModel
CREATE TABLE mec_hw_capability ( MECCAPABILITYID VARCHAR(200) NOT NULL, HWTYPE VARCHAR(200) NULL, HWVENDOR VARCHAR(200) NULL, HWMODEL VARCHAR(200) NULL );
app_instance_stale_rec: Store app instance stale record information, such as appInstanceId and tenantId
CREATE TABLE app_instance_stale_rec ( APPINSTANCEID VARCHAR(200) NOT NULL, TENANTID VARCHAR(200) NULL );
mec_host_stale_rec: Store mec host stale record information, such as mecHostId
CREATE TABLE mec_host_stale_rec ( MECHOSTID VARCHAR(200) NOT NULL, );
app_package_record: Store app package record information, such as appPkgId, appPkgName, appPkgVersion, appPkgPath, appPkgProvider, appPkgDesc, appPkgAffinity, appIconUrl, appId, tenantId, packageId, origin and syncStatus
CREATE TABLE app_package_record ( APPPKGID VARCHAR(200) NOT NULL, APPPKGNAME VARCHAR(200) NULL, APPPKGVERSION VARCHAR(200) NULL, APPPKGPATH VARCHAR(200) NULL, APPPROVIDER VARCHAR(200) NULL, APPPKGDESC VARCHAR(200) NULL, APPPKGAFFINITY VARCHAR(200) NULL, APPICONURL VARCHAR(200) NULL, APPID VARCHAR(200) NULL, TENANTID VARCHAR(200) NULL, PACKAGEID VARCHAR(200) NULL, ORIGIN VARCHAR(200) NULL, SYNCSTATUS VARCHAR(200) NULL );
app_package_host_record: Store app package host record information, such as pkgHostKey, hostIp, appPkgId, status, tenantId, error, origin and syncStatus
CREATE TABLE app_package_host_record { PKGHOSTKEY VARCHAR(200) NOT NULL, HOSTIP VARCHAR(200) NULL, APPPKGID VARCHAR(200) NULL, STATUS VARCHAR(200) NULL, TENANTID VARCHAR(200) NULL, ERROR VARCHAR(200) NULL, ORIGIN VARCHAR(200) NULL, SYNCSTATUS VARCHAR(200) NULL );
app_package_stale_rec: Store app package stale record information, such as appPkgId and tenantId
CREATE TABLE app_package_stale_rec ( APPKGID VARCHAR(200) NOT NULL, TENANTID VARCHAR(200) NULL );
app_package_host_stale_rec: Store app package stale record information, such as pacakgeId, tenantId and hostIp
CREATE TABLE app_package_host_stale_rec ( PACKAGEID VARCHAR(200) NOT NULL, TENANTID VARCHAR(200) NULL, HOSTIP VARCHAR(200) NULL );
edge_authenticate_rec: Store edge authenticate record information, such as authenticateId, name and key
CREATE TABLE edge_authenticate_rec ( AUTHENTICATEID VARCHAR(200) NOT NULL, NAME VARCHAR(200) NULL, KEY VARCHAR(200) NULL );K8s Plugin Database Design¶
The K8sPlugin database uses an open source PostegreSQL database, and the recommended version is 12.2. One database table currently designed and applied:
app_instance_info_record: MECM LcmController Database Design.mdStore app information, such as appInsId, hostIp and workloadId.
CREATE TABLE app_instance_info_record ( APPINSID VARCHAR(200) NOT NULL, HOSTIP VARCHAR(200) NULL, WORKLOADID VARCHAR(200) NULL, CONSTRAINT app_info_record_pkey PRIMARY KEY (APPINSID) );Appo Database Design¶
The APPO database uses an open source PostgreSQL database, and the recommended version is 12.3.
appinstanceinfo: Store app instance information, such as app_instance_id, applcm_host and tenant.
create table appinstanceinfo ( app_instance_id varchar(64) not null, app_package_id varchar(64) not null, app_id varchar(64) not null, tenant varchar(64) not null, app_name varchar(128) not null, app_descriptor varchar(256) not null, mec_host varchar(15) not null, applcm_host varchar(15), operational_status varchar(128) not null, operation_info varchar(256), create_time timestamp default current_timestamp, update_time timestamp default current_timestamp, primary key (app_instance_id) );
appotenant: Store tenant information, such as tenant.
create table appotenant ( tenant varchar(255) not null, primary key (tenant) );Inventory Database Design¶
The Inventory database uses an open source PostgreSQL database, and the recommended version is 12.3.
applcminventory: Store applcm information, such as applcm_id, tenant_id, applcm_ip and applcm_port.
create table applcminventory ( applcm_id varchar(255) not null, tenant_id varchar(255) not null, applcm_ip varchar(255) not null, applcm_port varchar(255) not null, user_name varchar(255), created_time varchar(200), modified_time varchar(200), primary key (applcm_id) );
appstoreinventory: Store app store distribution information, such as appstore_id, appstore_ip , appstore_port.
create table appstoreinventory ( appstore_id varchar(255) not null, appstore_ip varchar(255) not null, appstore_port varchar(255) not null, uri varchar(255) not null, tenant_id varchar(200) not null, user_name varchar(255), appstore_name varchar(255), producer varchar(255), created_time varchar(200), modified_time varchar(200), primary key (appstore_id) );
mechostinventory: Store MEC host information, such as mechost_id, mechost_ip, applcm_ip, zip_code, city.
create table mechostinventory ( mechost_id varchar(255) not null, tenant_id varchar(255) not null, mechost_ip varchar(255) not null, applcm_ip varchar(255) not null, mechost_name varchar(255) not null, zip_code varchar(200), city varchar(255) not null, address varchar(255) not null, affinity varchar(255), user_name varchar(255), edge_name varchar(255), edgerepo_ip varchar(255), edgerepo_port varchar(255), edgerepo_username varchar(255), config_upload_status varchar(255), -- config_file_path varchar(2000), created_time varchar(200), modified_time varchar(200), primary key (mechost_id) );
tenantinventory: Store tenant information, such as tenant_id.
create table tenantinventory ( tenant_id varchar(255) not null, applcm_count int, appstore_count int, mechost_count int, primary key (tenant_id) );
User Guidance¶
MECM Product Document¶
MECM Management Face¶
The MECM management side mainly provides edge nodes, APPLCM registration, and application distribution deployment capabilities.¶
The V1.1 release features are as follows:¶ 1.Add visitors, tenant, and administrator roles, the administrator can register and delete, the tenant can apply sync, distribute, deploy operations, visitors only browse rights 2. Add application store registration function, support administrator add register application store 3. Add application sync feature, support application from app store to APM sync
User Guide¶
! ! ! Note: Due to client and service-side protocol issues, user access may present a certificate exception, e.g. if there is a data acquisition exception, it is recommended that the browser visit https://mecm.edgegallery.org:30202 and then proceed to the MECM interface refresh to resolve the problem in the next version.
![]()
1.Overview: Map Area & Details Demo (Node and KPIs, MEP Capacity and Hardware Capacity), MEP Details¶ 1.1 Map & Details: Click nodes on the map, display nodes and KPIs, MEP capabilities, and details of hardware¶
![]()
1.2 MEP Details: Hit Management button, Jump to MEP Details interface¶ 2.Application management: application package management, application instance management¶ 2.1 Application package management¶ Integrated application synchronization, distribution and deployment function.
![]()
![]()
![]()
2.2 Application Instance Management¶ Integrated application instance list, here you can view the deployment status and details of the current instance, and perform rule configuration, as well as the failure reason view and other functions
![]()
Rule configuration->DNS rule configuration
![]()
Rule configuration->Distribution rule configuration
![]()
Rule configuration->Diversion rule configuration->Filter rule configuration
Rule configuration-Diversion rule configuration-interface information configuration
3.Edge nodes: edge node list, edge node registration, upload k8s config documentation¶
![]()
![]()
4.System Management: APPLCM Registration, APP Rule MGR Registration, Application Warehouse Registration¶ 4.1 MEPM registration¶ 4.4 Application Warehouse Registration¶
The new features of V1.5 version are as follows:¶ OpenStackNode resource management function,Registered edge nodes can be checked through the resource management interface(OpenStack)Perform basic management operations
MECM User Interface Document¶
Register new account for the EdgeGallery in case of first time user, or else you can login with existing account, below is the example.
Upon successful login the home page is visible with map and nodes in the region.
For new applcm registration, click on the tab ie. Systems -> External System Manager -> Applcm. Then select New Registration. Enter the Applcm, IP, Port number.
Need to add Edge node deatils by navigating to Systems -> External System Manager -> EdgeNode. Then click on New Registration.
Config file of the edge node should be uploaded, by selecting the upload config file under Operation.
Now, need to login to the appstore portal and upload the package
Nextly, Redirecting to the edge gallery mecm from appstore navigate to AppManagement -> Package Management
Choose the appropriate package and select the Distribute and select required Edge Node.
Once Distribution is successfull, then the deploy the application.
How to Contribute¶
Contribution to APM¶
This section provides details on how to participate/contribute to the APM(Application package manager) project.
Build local development environment¶
This section will guide developers to build APM module locally and help developers to quickly understand and develop code
The local startup of APM depends on:
- DataBaseIn order to build a local environment, the final startup sequence is Mecm-Prerequisite-> DataBase -> APM
DataBase¶
Download and install postgres 12.3 database
Set login name and password, such as apm
Create a database named apmdb
Contribution to Lcm Controller and K8s Plugin (Applcm)¶
This section provides details on how to participate/contribute to the LCM controller project.
Build local development environment¶
This section will guide developers to build LCM controller module locally and help developers to quickly understand and develop code
The local startup of LCM controller depends on:
- DataBaseIn order to build a local environment, the final startup sequence is DataBase -> LCMController
DataBase¶
Download and install postgres 12.3 database
Set login name and password, such as lcmcontroller
Create a database named lcmcontrollerdb
LCM contorller¶
Download LCM Controller Code
Configure the runtime environment variables (using GO Land as an example)
Update certificates path in app.conf
Run main to start LCM controller
K8s plugin¶
Download K8s plugin code
Configure the runtime environment variables (using GO Land as an example)
Update certificates path in config.yaml
Run main to start K8s plugin.
How to generate swagger documentation for Lcm Controller¶
Download LCM Controller Code
Prerequisites¶
Step 1 - Install go lang
cd ~ curl -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz tar xvf go1.10.3.linux-amd64.tar.gz sudo chown -R root:root ./go sudo mv go /usr/local sudo nano ~/.profile export GOPATH=$HOME/mecm-applcm export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin export GOROOT=$HOME/go export GOPATH=$HOME/mecm-applcm export PATH=$PATH:$GOROOT/bin:$GOPATH/bin source ~/.profileStep 2 - Install bee
You will need to install or upgrade Beego and the Bee dev tool: go get -u github.com/beego/beego/v2 go get -u github.com/beego/bee/v2 bee
Change runmode configuration to dev from prod in app.conf file Now coming to the auto-generation of documentation, end the server’s session and use this command: bee run -gendoc=true -downdoc=true Now, go to the browser and type: https://localhost:8094/swagger/Contribution to Appo¶
This section provides details on how to participate/contribute to the application orchestrator project.
Build local development environment¶
This section will guide developers to build Appo module locally and help developers to quickly understand and develop code
The local startup of Appo depends on:
- DataBaseIn order to build a local environment, the final startup sequence is Mecm-Prerequisite -> DataBase -> Appo
DataBase¶
Download and install postgres 12.3 database
Set login name and password, such as appo
Create a database named appodb
Application orchestrator¶
Download Appo(application orchestrator) code
Configure the runtime environment variables (using IDEA as an example)
Update key-store and trust-store path in application.yaml
Run AppOrchestratorApplication to start application orchestrator
Contribution to Inventory¶
This section provides details on how to participate/contribute to the inventory project.
Build local development environment¶
This section will guide developers to build Inventory module locally and help developers to quickly understand and develop code
The local startup of Inventory depends on:
- DataBaseIn order to build a local environment, the final startup sequence is Mecm-Prerequisite -> DataBase -> Inventory
DataBase¶
Download and install postgres 12.3 database
Set login name and password, such as inventory
Create a database named inventorydb
Inventory¶
Download Inventory Code
Configure the runtime environment variables (using IDEA as an example)
Update key-store and trust-store path in application.yaml
Run InventoryApplication to start inventory
Contribution to App Rule Manager¶
This section provides details on how to participate/contribute to the App Rule Manager project.
Build local development environment¶
This section will guide developers to build App Rule Manager module locally and help developers to quickly understand and develop code
Download App Rule Manager Code
Update certificates path in app.conf
Run main to start App Rule Manager
Port Matrix¶
MECM port matrix¶
module
port number
External port number
Role Description
APPO
8091
30201
Service ports for externally providing application life cycle management
APM
8092
30202
Service port for externally providing application package management
Inventory
8093
30203
Service ports for inventory management
North
8103
30303
The service port that provides the northbound interface to the outside world
applcm controller
8094
30204
Service port for externally providing application life cycle management in applcm
Resource controller
8098
31952
Provides external service ports for OpenStack resource management
aplcm k8splugin
8095
30205
The k8s plug-in in the applcm provides the service port of k8s externally
FE
8443
30093
Opening port of front desk module
AppRuleManager
8096
30206
Provides an external service port for application rule management
MEP¶
Overview¶
Overall Introduction to MEP Projects¶
With the Internet of Things, artificial intelligence, cloud computing, mobile Internet, big data, and big video, as well as the maturity of network resources and computing power of the ICT-open ecosystem, the evolution of resource concentration and marginalization is gradual.
MEC (Multi-access Edge Computing) is a typical resource marginalisation mode, providing IT service environments and cloud computing capabilities on the edge of the mobile network to complete business processing of mobile network edges in real time. The MEC will continue to develop rapidly with the convergence of CT and IT depth, the rise of the Internet of Things, the development of artificial intelligence technology, and the safety and real-time nature of the enterprise’s production data.
Under the MEC scenario, big applications will operate on the edge of the network for business processing, and the application can use the network’s open ability, and it can also provide and consume each other.
The EdgeGallery MEP project aims to create an open source and open reference MEP platform on the edge side, and MEP projects currently include both MEP and MEP-Agent components.
MEC platform is a network element defined by the ETSI MEC standard. The deployment location is on the edge side, mainly covering the following functions:
Provides service governance capabilities for ME APP (registration, discovery, subscription, notification).
Receives a flow rule (Traffice Rules) configuration issued by MEPM.
Receives DNS Rules (DNS Rules) configurations issued by MEPM.
Provides MEC public services such as DNS for the MEC APP.
The MEP component runs with the following microservices:
Mepauth: Provides the authentication authentication for the application while taking part in the configuration management capability.
Mep: Provides functions related to service governance, app subscription notification management.
Kong: Using open-source gateway software kong, it is responsible for the relevant route forwarding and plugin configuration.
Postgres: Postgres provides data storage capabilities for kong and mepauth.
MEP-Agent Assembly: The application of an integrated adapter, which the application developer can use as part of the application. The invention realizes the related basic functions of the instance configuration information leading-in, service registration and so on, which can simplify the integration of the application and the platform.
MEP Overall Framework¶
The main MEP related interfaces involved in the figure are:
Mp1: Between APP and MEP, it provides APP service registration discovery, APP status notification subscription and other capabilities.
Mp2: Between MEP and UPF, it provides data plane configuration capabilities.
Mm3: Provides package management and APP life cycle management capabilities between MEO and MEPM.
Mm5: Between MEPM and MEP, MEP platform can perform configuration management, configure APP rules and other capabilities.
For the application APP, Mp1 is the most important interface between APP and MEP, and APP can register its own services to MEP via Mp1, while the MEP can be found to be called MEP services by service.
Feature Design¶
MEP-Auth Module Related Features¶
MEP-auth provides APP authentication¶
The MEP-auth provides an authentication function for APP, provides a token application interface, and the APP may provide the correct signature to MEP-auth based on the AK/SK signature algorithm, obtain the token, and access the MEP-server related interface via the token.
The application of the APP through the MEP-auth request token is shown in the following figure:
Application uses Service Authentication Interface for token.
MEP-auth signs and issues token for ak/sk.
MEP-auth returns token.
The application carrying token is used for calling the service interface. You can call Application Service Management Related Interface, Available Event Subscription Related Interface, Termination Event Subscription Related Interface.
MEP-based-based jwt plugin checks token and route related requests to MEP-server.
For the token request interface, see the section “MEP features”.
MEP-auth provides configuration capabilities for API gateways¶
The MEP-auth module initializes the API gateway (kong):
Add a consumer in kong.
Configuring service and route for MEP-auth itself.
Configuring servcie and route for MEP-server.
Configure and enable the kong plugin for MEP-auth and MEP-server.
The plugins that MEP-auth opened in the initialization kong process include:
JWT plugin Provides token verification capability for the corresponding interface.
Appid-header plugin Insert X-AppinstanceID header in interface request for MEP-server check. Check request token’s client ip is consistent with client ip of calling interface.
Rate Limiting Plugin Provides flow control capability for MEP-auth and MEP-server interfaces.
IP Restriction Plugin Provides client IP white list function support for MEP-auth.
response-transformer plugin Provides the server header capability in clear response.
Pre-function plugin providing modified interface request x_forwarded_for capability.
MEP Sever Feature¶
MEP Service Governance Functions¶
Definition
The service management function refers to the ability of the MEP to register, update, delete, and query services.
Design principles
MEP provides service registration, updates, deletion, query related API interfaces. The application is able to register, update, delete, query through the LDVS-MEP service.
Application service status subscription/notification function¶
Definition
The application service status subscription/notification function is the ability to subscribe, update, delete, notify the LDVS for service status.
Design principles
MEP manages the status of application services, and applications register for services through MEP. When service consumers expect to use the services of the service provider, they need to subscribe to the service status of the service provider through MEP. Through the subscription interface, MEP can identify the service that the service consumer pays attention to, and when the service status changes, it can notify the service consumer of the related service status.
Applications can subscribe, update, delete, and query service status through LDVS-MEP.
MEP Service hearbeat¶
Each MEC service instance that has previously registered in MEC platform and is configured for heartbeat shall send heartbeat message to the MEC platform periodically in order to show that the MEC service instance is still operational. When the MEC platform has not received the heartbeat for a configurable amount of time, the MEC platform considers that the service instance can no longer be discovered and The service state will change to SUSPEND if it was ACTIVE before.
How to configure hearbeat for a service¶
Service register message will carry the livenessinterval field in it. It is an option field. If it is configured that indicate this service want to send heartbeat message. MEP platform support livenessinterval value is 60s. It will overwrite any value set by the service. Note: For details of service register message please check the interface doc.
How to send heartbeat message¶
Services which already has set livenessinterval in its register message should send hearbeat message to MEP. When service registers, its response message will carry the URL (liveness), using which service should send the heartbeat to MEP. Note: For details of hearbeat message please check the interface document.
EG-LDVS application integrated plugin mep-agent¶
Definition
LDVS MEP-Agent, as a rapid integration application adapter, realizes the functions of service configuration import and service registration.
Design principles
LDVS MEP manages the service of the application. The application needs to register its service in the MEP. The MEP-Agent acts as an adapter to import service information (including the application instance ID) to the application, and at the same time provides a configuration method to register the application’s service in the MEP.
MEP-Agent Get token API¶
MEP-Agent will run as sidecar along with application. If Apllication need to obtain token from mep for communication with services, it can query mep-agent api.
GET /mep-agent/v1/token
{
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
]
}
Return example
HTTP/1.1 200 OK
{
"access_token":"xxxx",
"token_type":"Bearer",
"expires_in":"3600"
}
Capabilities(Service) query support¶
Definition
Once capabilities(services) registered to the mep, other applications can consume it. MEP support the listing of these capabilities(services) over Mm5 interface.
Design principles
The capability query interface is exposed over Mm5 interface to MECM module and it can be queried together or independently. Each capability consists of a list of the present consumers to it.
DNS server features¶
The MEP platform provides the domain name resolution services to the applications deployed in the EdgeGallery MEC, which can be utilized by the device applications in UE. MEC platform receives the DNS configurations from the MEC management, which includes the FQDN(Fully Qualified Domain Name), IP address and related entries. MEC applications can later query or modify the state of these configurations.
The three major operations for DNS are:
DNS management operations.
Query configuration and Activation/Deactivation by the MEC applications.
DNS query by the device applications.
We will see each of these features in the below section.
DNS management operations¶
DNS configurations are created either by MECM modules during start-up or from the OSS directly. DNS management supports both create, update, query and delete operations.
Rule creation at start-up
DNS configurations are embedded in the application descriptor and MEO(Multi-access Edge Orchestrator) will get these information during the start-up of the application. Once MEO receives the application descriptor, it searches for the DNS related configurations and pass this information to the MEPM(MEC Platform Manager) module in the edge along with the start-up request on Mm3 interface.
Upon receiving the DNS configurations from MEO, MEPM send this request to the MEP server on Mm5 interface after deploying the MEC application.
Rule creation from OSS
DNS configurations can be updated from OSS directly over Mm2 interface through MEPM.
DNS configurations from MEC applications¶
MEC applications can query the DNS configurations created for it and can activate or deactivate the same. Activation or deactivation can be performed by modifying the state of the DNS configuration.
DNS query¶
Device application in the UE can query the DNS server for the domain name resolution. By default the DNS server will listen on the 53 port.
How to configure the DNS server?¶
The dns server in MEP runs inside a container and can be configured using few command line parameters.
Command
dnsserver [OPTION]...
Detailed list of the optional parameters are stated below.
Parameter |
Type |
Range/Length |
Default |
Description |
---|---|---|---|---|
-db |
string |
1~256 |
dbEgDns |
Backend store db name |
-port |
number |
1~65535 |
53 |
DNS server listening port |
-managementPort |
number |
1~65535 |
8080 |
Management interface listening port |
-connectionTimeout |
number |
2~50 |
2 |
Connection timeout |
-ipAdd |
string |
Ipv4/Ipv6 |
0.0.0.0 |
DNS listening ip address |
-managementIpAdd |
string |
Ipv4/Ipv6 |
0.0.0.0 |
Management interface listening ip address |
-forwarder |
string |
Ipv4/Ipv6 |
DNS proxy server IP |
|
-loadBalance |
bool |
true/false |
false |
For domain names with multiple ip address, enabling this option will perform loadbalancing by shuffling the response IP list |
Example
$ dnsserver -port=8053 -managementPort=8080 -loadBalance -forwarder <some-dns-server>
HealthCheck¶
Source of demand¶
*EdgeGallery version planning
Requirement Description¶
*Support mec-m check its edge healthy condition
Usecase¶
MECM calls the center-side service HealthCheck-M to start the overall health check service
HealthCheck-M on the center side checks the edge nodes under its jurisdiction based on the mec list in the body when the MECM is called
Each edge node HealthCheck receives the check information from HealthCheck-M on the center side, and first self-checks the health of the internal mep/lcm. When the mep/lcm on the edge side is healthy, the edge node considers the edge node to be healthy
After the self-check is completed, the mutual check mechanism is started between the edge nodes, and the visited nodes mep/lcm are all healthy, the node is considered healthy
Each edge node feeds back the results of the mutual check after communication to HealthCheck-M, and HealthCheck-M starts the voting mechanism
The HealthCheck-M vote on the center side is that when a node receives more than half of the total number of mec lists, the center side considers this node to be healthy.
HealthCheck-M feeds back the voting results to MECM or the caller
Involving modules&&EPIC&&Story¶
*MECM
<200b> *The caller starts HealthCheck-M, and HealthCheck-M accesses MECM-inventory to obtain mec list
*MEP
<200b> *The edge side health checks the MEP condition of the node, and the node is considered healthy only when both MEP and LCM are healthy
*LCM
<200b> *The edge side health checks the MEP condition of the node, and the node is considered healthy only when both MEP and LCM are healthy
Business Process¶
Interface definition¶
Method | URL | Body | |
---|---|---|---|
center | GET | /health-check/v1/center/action/start | |
center | GET | /health-check/v1/center/health | {["checked ip" : string, "condition" : bool]} |
edge | POST | /health-check/v1/edge/action/start | {"checker ip" : string, "edgeCheckInfo" : ["checked ip" : string, "condition" : bool]} |
edge | GET | /health-check/v1/edge/health |
Interface Design¶
Introduction to MEP interface¶
MEP majorly consists of two main functional modules, MEP-server and MEP-auth. The MEP server interface is divided into two categories, one is the Mp1 interface that follows the ETSI MEC 011 v2.1.1 standard, which mainly provides functions such as service registration discovery, App status notification subscription, and Dns rule acquisition; the other is the Mm5 interface, mainly provides configuration management functions for MECM/MEPM. MEP auth is currently mainly used as an authentication module to provide App with the function of token application and issuance. URL is the service’s own URL, and PORT is the service’s own PORT. If it passes through KONG, PORT becomes KONG’s PORT, and the URL needs to add the corresponding route. Mepauth directly adds {KONG_MEPAUTH_ROUTE} (the current value is /mepauth), and mepserver replaces /mep with {KONG_MEPSERVER_ROUTE} (the current value is /mepserver).
MEP-auth module interface¶
Service Authentication Interface¶
The application authenticates to LDVS through AK/SK, and returns the token after passing the authentication. Each token has a validity period (1 hour). The token distributor will withdraw the token after the validity period ends. When the HTTP request with expired token arrives, it will be returned with status code 401. At this time, the token carrier needs to re-acquire the token. When the token is still valid, the bearer of the token will return the token that is still valid when the same user obtains the token again.
URL
POST /mep/token
Request Parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Content-Type |
String |
MIME type, fill “application/json” |
header |
Yes |
Authorization |
String |
Certification information |
header |
Yes |
x-sdk-date |
String |
Signature time (current time stamp, format: YYYYMMDDTHHMMSSZ) |
header |
Yes |
Host |
String |
It is consistent with the host field used for generating the authentication information signature. |
header |
Yes |
Body parameters
No
Example Request
POST /mep/token
{
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "SDK-HMAC-SHA256 Access= QVUJMSUMgS0VZLS0tLS0=,
SignedHeaders=content-type;host;x-sdk-date,
Signature=142b0dc3feaeb3662b2033a8e6425596546e08a231aa39179b4060867dd15d3d"
},
{
"key": "x-sdk-date",
"value": "20060102T150405Z"
},
{
"key":"Host",
"value":"xxx"
}
]
}
Return parameter
Return code: 200
OK
Name |
Type |
Description |
Required |
---|---|---|---|
access_token |
String |
Token |
Yes |
token_type |
String |
Token Type (Bearer) |
Yes |
expires_in |
int |
Invalidate Time |
Yes |
Return Example
HTTP/1.1 200 OK
{
"access_token":"xxxx",
"token_type":"Bearer",
"expires_in":"3600"
}
Note: When testing, ensure that the AK/SK used when starting the EG-LDVS is the same AAK/SK used for the token acquisition.For authentication based on AK/SK, EG-LDVS fails three authentication failures within 5 minutes of the same AK, and the corresponding AK will be locked for 15 minutes.
AK/SK configuration interface¶
URL
PUT /mep/appMng/v1/applications/{appInstanceId}/confs
Request Parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Content-Type |
String |
MIME type, fill “application/json” |
header |
Yes |
appInstanceId |
String |
APP Instance ID (UUID) |
path |
Yes |
Body parameters
Name |
Type |
Description |
Required |
---|---|---|---|
authInfo |
Object |
User information |
Yes |
>credentials |
Object |
Certificate information |
Yes |
>>accessKeyId |
String |
AK |
Yes |
>>secretKey |
String |
SK |
Yes |
appInfo |
Object |
app information |
Yes |
>appName |
String |
app name |
Yes |
>requiredServices |
Array[String] |
List of service dependent services |
Yes |
Example Request
PUT /mep/appMng/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/confs
{
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"authInfo": {
"credentials": {
"accessKeyId": "QVUJMSUMgS0VZLS0tLS0",
"secretKey": "DXPb4sqElKhcHe07Kw5uorayETwId1JOjjOIRomRs5wyszoCR5R7AtVa28KT3lSc"
}
},
"appInfo": {
"appName": "name1",
"requiredServices": [
"serviceA",
"serviceB"
]
}
}
}
Return parameter
Return code: 200
Name |
Type |
Description |
Required |
---|---|---|---|
authInfo |
Object |
User information |
Yes |
>credentials |
Object |
Certificate information |
Yes |
>>accessKeyId |
String |
AK |
Yes |
>>secretKey |
String |
SK |
Yes |
appInfo |
Object |
app information |
Yes |
>appName |
String |
app name |
Yes |
>requiredServices |
Array[String] |
app-dependent services |
Yes |
Return Example
HTTP/1.1 200 OK
{
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"authInfo": {
"credentials": {
"accessKeyId": "QVUJMSUMgS0VZLS0tLS0",
"secretKey": "DXPb4sqElKhcHe07Kw5uorayETwId1JOjjOIRomRs5wyszoCR5R7AtVa28KT3lSc"
}
},
"appInfo": {
"appName": "name1",
"requiredServices": [
"serviceA",
"serviceB"
]
}
}
}
MEP-server interface¶
Service¶
1. Query availability services list¶
This method retrieves information about a list of mecService resources. This method is typically used in “service availability query” procedure
URL
GET /mep/mec_service_mgmt/v1/services
Request Parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Authorization |
String |
Token information, format: Bearer token information |
header |
Yes |
X-AppInstanceId |
String |
App instance id |
header |
Yes |
ser_name |
String |
service name |
query |
No |
Body parameters
No
Example Request
GET /mep/mec_service_mgmt/v1/services?ser_name=xxx
{
"header": [
{
"key": "Authorization",
"value": "Bearer xxx"
},
{
"key": "X-AppInstanceId",
"value": "xxx"
}
]
}
Return parameter
Return code: 200
OK
Name |
Type |
Description |
Required |
---|---|---|---|
serInstanceId |
String |
Service Instance ID |
Yes |
serName |
String |
Service Name |
Yes |
serCategory |
Object |
Service Class |
No |
>href |
String |
Directory reference |
No |
>id |
String |
Class ID |
No |
>name |
String |
Class name |
No |
>version |
String |
class version number |
No |
version |
String |
Service version number |
Yes |
state |
String |
Service Status (ACTIVE/INACTIVE) |
Yes |
transportInfo |
Object |
Service information |
No |
>id |
String |
ID |
No |
>name |
String |
Name |
No |
> description |
String |
Description |
No |
> type |
String |
Type (REST_HTTP/MB_TOPIC_BASED/MB_ROUTING/MB_PUBSUB/RPC/RPC_STREAMING/WEBSOCKET) |
No |
> protocol |
String |
Agreement Name |
No |
> version |
String |
version number |
No |
> endpoint |
Ojbect |
Endpoint, one of the three messages (uris/addresses/alternative) |
No |
>>uris |
Array[String] |
List of service portals in URI format |
No |
>>addresses |
Array[Object] |
List of service entrance information addresses (IP address + port number) |
No |
>>>host |
String |
IP Address |
No |
>>>port |
String |
port number |
No |
>>alternative |
String |
Service entrance information for the format or external specification definition |
No |
> security |
Object |
Security information |
No |
>> oAuth2Info |
Object |
OAuth2.0 parameter |
No |
>>> grantTypes |
Array[String] |
granted type (OAUTH2_AUTHORIZATION_CODE/OAUTH2_IMPLICIT_GRANT/OAUTH2_RESOURCE_OWNER/OAUTH2_CLIENT_CREDENTIALS) |
No |
>>> tokenEndpoint |
String |
Token endpoint |
No |
> implSpecificInfo |
String |
Other realized information |
No |
serializer |
String |
Serialization Type (JSON/XML/PROTOBUF3) |
Yes |
scopeOfLocality |
String |
Geographical range (MEC_SYSTEM/MEC_HOST/NFVI_POP/ZONE/ZONE_GROUP/NFVI_NODE), default value MEC_HOST |
No |
consumedLocalOnly |
boolean |
Is it only consumed by local APP (true/false) |
No |
isLocal |
boolean |
Is Local Domain (true/false) |
No |
livenessInterval |
integer |
Interval (in seconds) between two consecutive heartbeat messages |
No |
_links |
Object |
Links to resources related to this resource. Shall be absent in HTTP requests. |
No |
>self |
object |
Link to this resource. Shall be present in HTTP responses. |
No |
>>liveness |
string |
Link to the resource where the MEC platform expects the service instance to send the liveness information. |
No |
Return Example
HTTP/1.1 200 OK
[
{
"serInstanceId": "0bc92b06cc213d2ad8beda71bd0e1460",
"serName": "ExampleService",
"serCategory": {
"href": "/example/catalogue1",
"id": "id12345",
"name": "RNI",
"version": "version1"
},
"version": "ServiceVersion1",
"state": "ACTIVE",
"transportInfo": {
"id": "TransId12345",
"name": "REST",
"description": "REST API",
"type": "REST_HTTP",
"protocol": "HTTP",
"version": "2.0",
"endpoint": {},
"security": {
"oAuth2Info": {
"grantTypes": [
"OAUTH2_CLIENT_CREDENTIALS"
],
"tokenEndpoint": "/mecSerMgmtApi/security/TokenEndPoint"
}
},
"implSpecificInfo": {}
},
"serializer": "JSON",
"scopeOfLocality": "MEC_SYSTEM",
"consumedLocalOnly": false,
"isLocal": true,
"livenessInterval": 60,
"_links": {
"self": {
"liveness" : "/mec_service_mgmt/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/service/0bc92b06cc213d2ad8beda71bd0e1460/liveness"
}
}
}
]
2. Query availability individual service¶
This method retrieves information about a mecService resource. This method is typically used in “service availability query” procedure
URL
GET /mep/mec_service_mgmt/v1/services/{serviceId}
Request Parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
serviceId |
String |
service id |
path |
Yes |
Authorization |
String |
Token information, format: Bearer token information |
header |
Yes |
ser_name |
String |
service name |
query |
No |
Body parameters
No
Example Request
GET /mep/mec_service_mgmt/v1/services?ser_name=xxx
{
"header": [
{
"key": "Authorization",
"value": "Bearer xxx"
}
]
}
Return parameter
Return code: 200
OK
Name |
Type |
Description |
Required |
---|---|---|---|
serInstanceId |
String |
Service Instance ID |
Yes |
serName |
String |
Service Name |
Yes |
serCategory |
Object |
Service Class |
No |
>href |
String |
Directory reference |
No |
>id |
String |
Class ID |
No |
>name |
String |
Class name |
No |
>version |
String |
class version number |
No |
version |
String |
Service version number |
Yes |
state |
String |
Service Status (ACTIVE/INACTIVE) |
Yes |
transportInfo |
Object |
Service information |
No |
>id |
String |
ID |
No |
>name |
String |
Name |
No |
> description |
String |
Description |
No |
> type |
String |
Type (REST_HTTP/MB_TOPIC_BASED/MB_ROUTING/MB_PUBSUB/RPC/RPC_STREAMING/WEBSOCKET) |
No |
> protocol |
String |
Agreement Name |
No |
> version |
String |
version number |
No |
> endpoint |
Ojbect |
Endpoint, one of the three messages (uris/addresses/alternative) |
No |
>>uris |
Array[String] |
List of service portals in URI format |
No |
>>addresses |
Array[Object] |
List of service entrance information addresses (IP address + port number) |
No |
>>>host |
String |
IP Address |
No |
>>>port |
String |
port number |
No |
>>alternative |
String |
Service entrance information for the format or external specification definition |
No |
> security |
Object |
Security information |
No |
>> oAuth2Info |
Object |
OAuth2.0 parameter |
No |
>>> grantTypes |
Array[String] |
granted type (OAUTH2_AUTHORIZATION_CODE/OAUTH2_IMPLICIT_GRANT/OAUTH2_RESOURCE_OWNER/OAUTH2_CLIENT_CREDENTIALS) |
No |
>>> tokenEndpoint |
String |
Token endpoint |
No |
> implSpecificInfo |
String |
Other realized information |
No |
serializer |
String |
Serialization Type (JSON/XML/PROTOBUF3) |
Yes |
scopeOfLocality |
String |
Geographical range (MEC_SYSTEM/MEC_HOST/NFVI_POP/ZONE/ZONE_GROUP/NFVI_NODE), default value MEC_HOST |
No |
consumedLocalOnly |
boolean |
Is it only consumed by local APP (true/false) |
No |
isLocal |
boolean |
Is Local Domain (true/false) |
No |
livenessInterval |
integer |
Interval (in seconds) between two consecutive heartbeat messages |
No |
_links |
Object |
Links to resources related to this resource. Shall be absent in HTTP requests. |
No |
>self |
object |
Link to this resource. Shall be present in HTTP responses. |
No |
>>liveness |
string |
Link to the resource where the MEC platform expects the service instance to send the liveness information. |
No |
Return Example
HTTP/1.1 200 OK
{
"serInstanceId": "0bc92b06cc213d2ad8beda71bd0e1460",
"serName": "ExampleService",
"serCategory": {
"href": "/example/catalogue1",
"id": "id12345",
"name": "RNI",
"version": "version1"
},
"version": "ServiceVersion1",
"state": "ACTIVE",
"transportInfo": {
"id": "TransId12345",
"name": "REST",
"description": "REST API",
"type": "REST_HTTP",
"protocol": "HTTP",
"version": "2.0",
"endpoint": {},
"security": {
"oAuth2Info": {
"grantTypes": [
"OAUTH2_CLIENT_CREDENTIALS"
],
"tokenEndpoint": "/mecSerMgmtApi/security/TokenEndPoint"
}
},
"implSpecificInfo": {}
},
"serializer": "JSON",
"scopeOfLocality": "MEC_SYSTEM",
"consumedLocalOnly": false,
"isLocal": true,
"livenessInterval": 60,
"_links": {
"self": {
"liveness" : "/mec_service_mgmt/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/service/0bc92b06cc213d2ad8beda71bd0e1460/liveness"
}
}
}
3. Query transport information¶
Transport information query provides a standardized means to the MEC applications to discover the available transports supported in MEP.
URL
GET mep/mec_service_mgmt/v1/transports
Request parameters
None
Body Parameters
None
Example Request
GET mep/mec_service_mgmt/v1/transports
Return Parameters
Name | Type | Description | Required |
---|---|---|---|
id | string | Transport ID. | Yes |
name | string | Transport name. | Yes |
description | string | Description about the transport. | No |
type | TransportType | Transport type. | Yes |
protocol | string | Name of the protocol used. | Yes |
version | string | Version of the protocol used. | Yes |
endpoint | EndPointInfo | Information about the endpoint to access the transport. | Yes |
security | SecurityInfo | Information about the security used by the transport. | Yes |
implSpecificInfo | Object | Any other implementation specific information. | No |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
[
{
"id": "TransId12345",
"name": "REST",
"description": "REST API",
"type": "REST_HTTP",
"protocol": "HTTP",
"version": "2.0",
"endpoint": {},
"security": {
"oAuth2Info": {
"grantTypes": [
"OAUTH2_CLIENT_CREDENTIALS"
],
"tokenEndpoint": "/mecSerMgmtApi/security/TokenEndPoint"
}
},
"implSpecificInfo": {}
}
]
Exception status code
HTTP Status Code | Description |
---|---|
400 | Bad request, used to indicate that the requested parameters are incorrect. |
403 | The current operation is forbidden. |
404 | The requested resource was not found. |
DNS rule configuration interfaces¶
Using the Mp1 interfaces mec apps can query and activate/deactivate dns rules associated to it. Implementation of this interface are as per the ETSI GS MEC 011 V2.1.1 document.
1. Query all dns rules¶
Query all DNS rules associated with an application.
URL
GET /mep/mec_app_support/v1/applications/{appInstanceId}/dns_rules
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Authorization |
String |
Token information, format: Bearer token information |
header |
Yes |
appInstanceId |
String |
APP Instance ID (UUID) |
path |
Yes |
Body Parameters
None
Example Request
GET /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/dns_rules
Return Parameters
Name |
Type |
Description |
---|---|---|
dnsRuleId |
string |
Rule Id |
domainName |
string |
MEC app domain name |
ipAddressType |
enum {IP_V4, IP_V6} |
MEC app ip address type |
ipAddress |
string |
MEC app ip address |
ttl |
int (non-zero value) |
TTL value |
state |
enum {ACTIVE, INACTIVE} |
State |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
[
{
"dnsRuleId": "20a19292-384c-4d44-ba64-a8e8269f0f25",
"domainName": "voicerecgservice.com",
"ipAddressType": "IP_V4",
"ipAddress": "192.168.27.48",
"ttl": 30,
"state": "ACTIVE"
},
{
"dnsRuleId": "bbc14ed1-92f4-457f-95e8-93aa723a9f12",
"domainName": "facerecgservice.com",
"ipAddressType": "IP_V4",
"ipAddress": "192.168.147.240",
"ttl": 30,
"state": "INACTIVE"
}
]
2. Query a specific dns rule¶
Query single DNS rule associated with an application.
URL
GET /mep/mec_app_support/v1/applications/{appInstanceId}/dns_rules/{dnsRuleId}
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Authorization |
String |
Token information, format: Bearer token information |
header |
Yes |
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
dnsRuleId |
String |
DNS rule identifier(UUID) |
path |
Yes |
Body Parameters
None
Example Request
GET /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/dns_rules/bbc14ed1-92f4-457f-95e8-93aa723a9f12
Return Parameters
Name |
Type |
Description |
---|---|---|
dnsRuleId |
string |
Rule Id |
domainName |
string |
MEC app domain name |
ipAddressType |
enum {IP_V4, IP_V6} |
MEC app ip address type |
ipAddress |
string |
MEC app ip address |
ttl |
int (non-zero value) |
TTL value |
state |
enum {ACTIVE, INACTIVE} |
State |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"dnsRuleId": "bbc14ed1-92f4-457f-95e8-93aa723a9f12",
"domainName": "facerecgservice.com",
"ipAddressType": "IP_V4",
"ipAddress": "192.168.147.240",
"ttl": 30,
"state": "INACTIVE"
}
3. Update a specific dns rule¶
Modify the state of a rule associated with an application. This interface can modify the state from ACTIVE to INACTIVE or vice versa. No other field can be modified using this interface.
URL
PUT /mep/mec_app_support/v1/applications/{appInstanceId}/dns_rules/{dnsRuleId}
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Authorization |
String |
Token information, format: Bearer token information |
header |
Yes |
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
dnsRuleId |
String |
DNS rule identifier(UUID) |
path |
Yes |
Body Parameters
Name |
Type |
Description |
Required |
---|---|---|---|
dnsRuleId |
string |
Rule Id |
No, if present must be same with actual |
domainName |
string |
MEC app domain name |
No, if present must be same with actual |
ipAddressType |
enum {IP_V4, IP_V6} |
MEC app ip address type |
No, if present must be same with actual |
ipAddress |
string |
MEC app ip address |
No, if present must be same with actual |
ttl |
int (non-zero value) |
TTL value |
No, if present must be same with actual |
state |
enum {ACTIVE, INACTIVE} |
State |
Yes |
Example Request
PUT /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/dns_rules/bbc14ed1-92f4-457f-95e8-93aa723a9f12
{
"dnsRuleId": "bbc14ed1-92f4-457f-95e8-93aa723a9f12",
"domainName": "facerecgservice.com",
"ipAddressType": "IP_V4",
"ipAddress": "192.168.147.240",
"ttl": 30,
"state": "ACTIVE"
}
Return Parameters
Name |
Type |
Description |
---|---|---|
dnsRuleId |
string |
Rule Id |
domainName |
string |
MEC app domain name |
ipAddressType |
enum {IP_V4, IP_V6} |
MEC app ip address type |
ipAddress |
string |
MEC app ip address |
ttl |
int (non-zero value) |
TTL value |
state |
enum {ACTIVE, INACTIVE} |
State |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"dnsRuleId": "bbc14ed1-92f4-457f-95e8-93aa723a9f12",
"domainName": "facerecgservice.com",
"ipAddressType": "IP_V4",
"ipAddress": "192.168.147.240",
"ttl": 30,
"state": "ACTIVE"
}
Traffic rule configuration interfaces¶
Using the Mp1 interfaces mec apps can query and modify the traffic rules associated to it. Implementation of this interface are as per the ETSI GS MEC 011 V2.1.1 document.
1. Query all traffic rules¶
Query all traffic rules associated with an application.
URL
GET /mep/mec_app_support/v1/applications/{appInstanceId}/traffic_rules
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Authorization |
String |
Token information, format: Bearer token information |
header |
Yes |
appInstanceId |
String |
APP Instance ID (UUID) |
path |
Yes |
Body Parameters
None
Example Request
GET /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/traffic_rules
Return Parameters
Name |
Type |
Description |
---|---|---|
trafficRuleId |
string |
Traffic rule ID. |
filterType |
enum {FLOW, PACKET} |
Filter type. |
priority |
number (1 ~ 256) |
Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence. |
trafficFilter |
list |
List of traffic filters. |
> srcAddress |
list |
List of source ip address. |
> dstAddress |
list |
List of destination ip address. |
> srcPort |
list |
List of source port address. |
> dstPort |
list |
List of destination port address. |
> protocol |
list |
List of protocols. |
> tag |
list |
List of tags. |
> srcTunnelAddress |
list |
List of source tunnel address. |
> tgtTunnelAddress |
list |
List of target tunnel address. |
> srcTunnelPort |
list |
List of source tunnel ports. |
> dstTunnelPort |
list |
List of destination tunnel ports. |
> qCI |
number |
Match packets with same QCI. |
> dSCP |
number |
Match packets with same DSCP. |
> tC |
number |
Match packets with same TC. |
action |
enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS} |
Action when traffic rule matches. |
dstInterface |
list |
Destination interface parameters. |
> interfaceType |
enum {TUNNEL, MAC, IP} |
Match packets with same TC. |
> tunnelInfo |
object |
Tunnel parameters. |
>> tunnelType |
enum {GTP_U, GRE} |
Tunnel type. |
>> tunnelDstAddress |
string |
Destination IP address. |
>> tunnelSrcAddress |
string |
Source IP address. |
> srcMacAddress |
string |
Source MAC address |
> dstMacAddress |
string |
Destination MAC address. |
> dstIpAddress |
string |
Destination IP address. |
state |
enum {ACTIVE, INACTIVE} |
State of the rule. |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
[
{
"trafficRuleId": "TrafficRule1",
"filterType": "FLOW",
"priority": 1,
"trafficFilter": [
{
"srcAddress": [
"192.158.1.1/28"
],
"dstAddress": [
"192.168.1.1/28"
],
"srcPort": [
"8080"
],
"dstPort": [
"8080"
],
"protocol": [
"TCP"
],
"tag": null,
"srcTunnelAddress": null,
"tgtTunnelAddress": null,
"srcTunnelPort": null,
"dstTunnelPort": null,
"qCI": 2,
"dSCP": 0,
"tC": 1
}
],
"action": "DROP",
"dstInterface": [],
"state": "ACTIVE"
}
]
2. Query a specific traffic rule¶
Query single traffic rule associated with an application.
URL
GET /mep/mec_app_support/v1/applications/{appInstanceId}/traffic_rules/{trafficRuleId}
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Authorization |
String |
Token information, format: Bearer token information |
header |
Yes |
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
trafficRuleId |
String |
Traffic rule identifier(UUID) |
path |
Yes |
Body Parameters
None
Example Request
GET /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/traffic_rules/TrafficRule1
Return Parameters
Name |
Type |
Description |
---|---|---|
trafficRuleId |
string |
Traffic rule ID. |
filterType |
enum {FLOW, PACKET} |
Filter type. |
priority |
number (1 ~ 256) |
Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence. |
trafficFilter |
list |
List of traffic filters. |
> srcAddress |
list |
List of source ip address. |
> dstAddress |
list |
List of destination ip address. |
> srcPort |
list |
List of source port address. |
> dstPort |
list |
List of destination port address. |
> protocol |
list |
List of protocols. |
> tag |
list |
List of tags. |
> srcTunnelAddress |
list |
List of source tunnel address. |
> tgtTunnelAddress |
list |
List of target tunnel address. |
> srcTunnelPort |
list |
List of source tunnel ports. |
> dstTunnelPort |
list |
List of destination tunnel ports. |
> qCI |
number |
Match packets with same QCI. |
> dSCP |
number |
Match packets with same DSCP. |
> tC |
number |
Match packets with same TC. |
action |
enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS} |
Action when traffic rule matches. |
dstInterface |
list |
Destination interface parameters. |
> interfaceType |
enum {TUNNEL, MAC, IP} |
Match packets with same TC. |
> tunnelInfo |
object |
Tunnel parameters. |
>> tunnelType |
enum {GTP_U, GRE} |
Tunnel type. |
>> tunnelDstAddress |
string |
Destination IP address. |
>> tunnelSrcAddress |
string |
Source IP address. |
> srcMacAddress |
string |
Source MAC address |
> dstMacAddress |
string |
Destination MAC address. |
> dstIpAddress |
string |
Destination IP address. |
state |
enum {ACTIVE, INACTIVE} |
State of the rule. |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"trafficRuleId": "TrafficRule1",
"filterType": "FLOW",
"priority": 1,
"trafficFilter": [
{
"srcAddress": [
"192.158.1.1/28"
],
"dstAddress": [
"192.168.1.1/28"
],
"srcPort": [
"8080"
],
"dstPort": [
"8080"
],
"protocol": [
"TCP"
],
"tag": null,
"srcTunnelAddress": null,
"tgtTunnelAddress": null,
"srcTunnelPort": null,
"dstTunnelPort": null,
"qCI": 2,
"dSCP": 0,
"tC": 1
}
],
"action": "DROP",
"dstInterface": [],
"state": "ACTIVE"
}
3. Update a specific traffic rule¶
Modify the traffic rule associated with an application.
URL
PUT /mep/mec_app_support/v1/applications/{appInstanceId}/traffic_rules/{trafficRuleId}
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
Authorization |
String |
Token information, format: Bearer token information |
header |
Yes |
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
trafficRuleId |
String |
Traffic rule identifier(UUID) |
path |
Yes |
Body Parameters
Name |
Type |
Description |
---|---|---|
trafficRuleId |
string |
Traffic rule ID. |
filterType |
enum {FLOW, PACKET} |
Filter type. |
priority |
number (1 ~ 256) |
Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence. |
trafficFilter |
list |
List of traffic filters. |
> srcAddress |
list |
List of source ip address. |
> dstAddress |
list |
List of destination ip address. |
> srcPort |
list |
List of source port address. |
> dstPort |
list |
List of destination port address. |
> protocol |
list |
List of protocols. |
> tag |
list |
List of tags. |
> srcTunnelAddress |
list |
List of source tunnel address. |
> tgtTunnelAddress |
list |
List of target tunnel address. |
> srcTunnelPort |
list |
List of source tunnel ports. |
> dstTunnelPort |
list |
List of destination tunnel ports. |
> qCI |
number |
Match packets with same QCI. |
> dSCP |
number |
Match packets with same DSCP. |
> tC |
number |
Match packets with same TC. |
action |
enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS} |
Action when traffic rule matches. |
dstInterface |
list |
Destination interface parameters. |
> interfaceType |
enum {TUNNEL, MAC, IP} |
Match packets with same TC. |
> tunnelInfo |
object |
Tunnel parameters. |
>> tunnelType |
enum {GTP_U, GRE} |
Tunnel type. |
>> tunnelDstAddress |
string |
Destination IP address. |
>> tunnelSrcAddress |
string |
Source IP address. |
> srcMacAddress |
string |
Source MAC address |
> dstMacAddress |
string |
Destination MAC address. |
> dstIpAddress |
string |
Destination IP address. |
state |
enum {ACTIVE, INACTIVE} |
State of the rule. |
Example Request
PUT /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/traffic_rules/TrafficRule1
{
"trafficRuleId": "TrafficRule1",
"filterType": "FLOW",
"priority": 1,
"trafficFilter": [
{
"srcAddress": [
"192.158.1.1/28"
],
"dstAddress": [
"192.168.1.1/28"
],
"srcPort": [
"8080"
],
"dstPort": [
"8080"
],
"protocol": [
"TCP"
],
"tag": null,
"srcTunnelAddress": null,
"tgtTunnelAddress": null,
"srcTunnelPort": null,
"dstTunnelPort": null,
"qCI": 2,
"dSCP": 0,
"tC": 1
}
],
"action": "DROP",
"dstInterface": [],
"state": "ACTIVE"
}
Return Parameters
Name |
Type |
Description |
---|---|---|
trafficRuleId |
string |
Traffic rule ID. |
filterType |
enum {FLOW, PACKET} |
Filter type. |
priority |
number (1 ~ 256) |
Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence. |
trafficFilter |
list |
List of traffic filters. |
> srcAddress |
list |
List of source ip address. |
> dstAddress |
list |
List of destination ip address. |
> srcPort |
list |
List of source port address. |
> dstPort |
list |
List of destination port address. |
> protocol |
list |
List of protocols. |
> tag |
list |
List of tags. |
> srcTunnelAddress |
list |
List of source tunnel address. |
> tgtTunnelAddress |
list |
List of target tunnel address. |
> srcTunnelPort |
list |
List of source tunnel ports. |
> dstTunnelPort |
list |
List of destination tunnel ports. |
> qCI |
number |
Match packets with same QCI. |
> dSCP |
number |
Match packets with same DSCP. |
> tC |
number |
Match packets with same TC. |
action |
enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS} |
Action when traffic rule matches. |
dstInterface |
list |
Destination interface parameters. |
> interfaceType |
enum {TUNNEL, MAC, IP} |
Match packets with same TC. |
> tunnelInfo |
object |
Tunnel parameters. |
>> tunnelType |
enum {GTP_U, GRE} |
Tunnel type. |
>> tunnelDstAddress |
string |
Destination IP address. |
>> tunnelSrcAddress |
string |
Source IP address. |
> srcMacAddress |
string |
Source MAC address |
> dstMacAddress |
string |
Destination MAC address. |
> dstIpAddress |
string |
Destination IP address. |
state |
enum {ACTIVE, INACTIVE} |
State of the rule. |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"trafficRuleId": "TrafficRule1",
"filterType": "FLOW",
"priority": 1,
"trafficFilter": [
{
"srcAddress": [
"192.158.1.1/28"
],
"dstAddress": [
"192.168.1.1/28"
],
"srcPort": [
"8080"
],
"dstPort": [
"8080"
],
"protocol": [
"TCP"
],
"tag": null,
"srcTunnelAddress": null,
"tgtTunnelAddress": null,
"srcTunnelPort": null,
"dstTunnelPort": null,
"qCI": 2,
"dSCP": 0,
"tC": 1
}
],
"action": "DROP",
"dstInterface": [],
"state": "ACTIVE"
}
Mm5 Interface for appd configurations¶
Using the Mm5 interfaces MECM can create, query, update or delete the appd configurations which includes multiple dns and traffic rules associated to an application. Implementation of this interface are specified in ETSI GS MEC 010-1 V1.1.1 and ETSI GS MEC 010-2 V2.1.1 documents.
1. Create a new appd configurations¶
Create a new appd configuration and associate it with a MEC application. Each configuration can have thirty-two DNS rules and sixteen Traffic rules. There can be only one appd configuration per application at a time and the appd configuration is an asynchronous in nature. Once the request is received in the mep, after validation mep will start a task to handle multiple dns and traffic rules and return a task id to the caller of the API. Using the task-id the caller can check the status of the operation at any time.
URL
POST /mepcfg/app_lcm/v1/applications/{appInstanceId}/appd_configuration
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
Body Parameters
Name |
Type |
Description |
Required |
---|---|---|---|
appTrafficRule |
list |
List of traffic rules. Max 16. |
No |
> trafficRuleId |
string |
Traffic rule ID. |
Yes |
> filterType |
enum {FLOW, PACKET} |
Filter type. |
Yes |
> priority |
number (1 ~ 256) |
Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence. |
Yes |
> trafficFilter |
list |
List of traffic filters. Max 16. |
No |
>> srcAddress |
list |
List of source ip address. Max 64. |
No |
>> dstAddress |
list |
List of destination ip address. Max 64. |
No |
>> srcPort |
list |
List of source port address. |
No |
>> dstPort |
list |
List of destination port address. |
No |
>> protocol |
list |
List of protocols. Max 8. |
Yes |
>> tag |
list |
List of tags. Max 8. |
Yes |
>> srcTunnelAddress |
list |
List of source tunnel address. |
No |
>> tgtTunnelAddress |
list |
List of target tunnel address. |
No |
>> srcTunnelPort |
list |
List of source tunnel ports. |
No |
>> dstTunnelPort |
list |
List of destination tunnel ports. |
No |
>> qCI |
number |
Match packets with same QCI. |
No |
>> dSCP |
number |
Match packets with same DSCP. |
No |
>> tC |
number |
Match packets with same TC. |
No |
> action |
enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS} |
Action when traffic rule matches. |
Yes |
> dstInterface |
list |
Destination interface parameters. Max 2. |
No |
>> interfaceType |
enum {TUNNEL, MAC, IP} |
Match packets with same TC. |
Yes |
>> tunnelInfo |
object |
Tunnel parameters. |
No |
>>> tunnelType |
enum {GTP_U, GRE} |
Tunnel type. |
Yes |
>>> tunnelDstAddress |
string |
Destination IP address. |
No |
>>> tunnelSrcAddress |
string |
Source IP address. |
No |
>> srcMacAddress |
string |
Source MAC address |
No |
>> dstMacAddress |
string |
Destination MAC address. |
No |
>> dstIpAddress |
string |
Destination IP address. |
No |
> state |
enum {ACTIVE, INACTIVE} |
State of the rule. |
No |
appDNSRule |
list |
List of DNS rules. Max 32. |
No |
> dnsRuleId |
string |
DNS rule ID. |
Yes |
> domainName |
string |
Domain name. |
Yes |
> ipAddressType |
enum {IPv4, IPv6} |
IP address type. |
Yes |
> ipAddress |
string |
IP address. |
Yes |
> ttl |
number |
Time To Live value. |
Yes |
> state |
enum {ACTIVE, INACTIVE} |
Rule state. |
Yes |
appSupportMp1 |
bool |
Whether Mp1 interface is supported. |
No |
appName |
string |
Application name. |
Yes |
Example Request
POST /mepcfg/app_lcm/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/appd_configuration
{
"appTrafficRule": [
{
"trafficRuleId": "TrafficRule1",
"filterType": "FLOW",
"priority": 1,
"trafficFilter": [
{
"srcAddress": [
"192.158.1.1/28"
],
"dstAddress": [
"192.168.1.1/28"
],
"srcPort": [
"8080"
],
"dstPort": [
"8080"
],
"protocol": [
"TCP"
],
"qCI": 1,
"dSCP": 0,
"tC": 1
}
],
"action": "DROP",
"state": "ACTIVE"
}
],
"appDNSRule": [
{
"dnsRuleId": "dnsRule1",
"domainName": "facerecgservice.com",
"ipAddressType": "IP_V4",
"ipAddress": "192.168.147.240",
"ttl": 30,
"state": "ACTIVE"
}
],
"appSupportMp1": true,
"appName": "abc1"
}
Return Parameters
Name |
Type |
Description |
---|---|---|
taskId |
string |
Task ID |
appInstanceId |
string |
Application instance ID |
configResult |
string |
Configuration result |
configPhase |
string |
Progress percentage |
Detailed |
string |
Detailed reason |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"taskId": "d464dd0a-d927-4baf-bc2c-d902fb0b2c73",
"appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
"configResult": "PROCESSING",
"configPhase": "0",
"Detailed": "Operation In progress"
}
2. Query appd configuration¶
Query appd configuration associated with an application.
URL
GET /mepcfg/app_lcm/v1/applications/{appInstanceId}/appd_configuration
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
Body Parameters
None
Example Request
GET /mepcfg/app_lcm/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/appd_configuration
Return Parameters
Name |
Type |
Description |
---|---|---|
appTrafficRule |
list |
List of traffic rules. |
> trafficRuleId |
string |
Traffic rule ID. |
> filterType |
enum {FLOW, PACKET} |
Filter type. |
> priority |
number (1 ~ 256) |
Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence. |
> trafficFilter |
list |
List of traffic filters. |
>> srcAddress |
list |
List of source ip address. |
>> dstAddress |
list |
List of destination ip address. |
>> srcPort |
list |
List of source port address. |
>> dstPort |
list |
List of destination port address. |
>> protocol |
list |
List of protocols. |
>> tag |
list |
List of tags. |
>> srcTunnelAddress |
list |
List of source tunnel address. |
>> tgtTunnelAddress |
list |
List of target tunnel address. |
>> srcTunnelPort |
list |
List of source tunnel ports. |
>> dstTunnelPort |
list |
List of destination tunnel ports. |
>> qCI |
number |
Match packets with same QCI. |
>> dSCP |
number |
Match packets with same DSCP. |
>> tC |
number |
Match packets with same TC. |
> action |
enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS} |
Action when traffic rule matches. |
> dstInterface |
list |
Destination interface parameters. |
>> interfaceType |
enum {TUNNEL, MAC, IP} |
Match packets with same TC. |
>> tunnelInfo |
object |
Tunnel parameters. |
>>> tunnelType |
enum {GTP_U, GRE} |
Tunnel type. |
>>> tunnelDstAddress |
string |
Destination IP address. |
>>> tunnelSrcAddress |
string |
Source IP address. |
>> srcMacAddress |
string |
Source MAC address |
>> dstMacAddress |
string |
Destination MAC address. |
>> dstIpAddress |
string |
Destination IP address. |
> state |
enum {ACTIVE, INACTIVE} |
State of the rule. |
appDNSRule |
list |
List of DNS rules. |
> dnsRuleId |
string |
DNS rule ID. |
> domainName |
string |
Domain name. |
> ipAddressType |
enum {IPv4, IPv6} |
IP address type. |
> ipAddress |
string |
IP address. |
> ttl |
number |
Time To Live value. |
> state |
enum {ACTIVE, INACTIVE} |
Rule state. |
appSupportMp1 |
bool |
Whether Mp1 interface is supported. |
appName |
string |
Application name. |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"appTrafficRule": [
{
"trafficRuleId": "TrafficRule1",
"filterType": "FLOW",
"priority": 1,
"trafficFilter": [
{
"srcAddress": [
"192.158.1.1/28"
],
"dstAddress": [
"192.168.1.1/28"
],
"srcPort": [
"8080"
],
"dstPort": [
"8080"
],
"protocol": [
"TCP"
],
"tag": null,
"srcTunnelAddress": null,
"tgtTunnelAddress": null,
"srcTunnelPort": null,
"dstTunnelPort": null,
"qCI": 2,
"dSCP": 0,
"tC": 1
}
],
"action": "DROP",
"dstInterface": [],
"state": "ACTIVE"
}
],
"appDNSRule": [
{
"dnsRuleId": "dnsRule1",
"domainName": "facerecgservice.com",
"ipAddressType": "IP_V4",
"ipAddress": "192.168.147.240",
"ttl": 30,
"state": "ACTIVE"
}
],
"appSupportMp1": true,
"appName": "abc1"
}
3. Modify appd configuration¶
Appd configuration for each applications can be configured using this interface. MEP will take the difference of existing configuration and the new modification input and then act on create/modify/delete of dns and/or traffic rules.
URL
PUT /mepcfg/app_lcm/v1/applications/{appInstanceId}/appd_configuration
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
Body Parameters
Name |
Type |
Description |
Required |
---|---|---|---|
appTrafficRule |
list |
List of traffic rules. Max 16. |
No |
> trafficRuleId |
string |
Traffic rule ID. |
Yes |
> filterType |
enum {FLOW, PACKET} |
Filter type. |
Yes |
> priority |
number (1 ~ 256) |
Priority of the traffic rule. If any conflict in the traffic rules, then higher the priority higher the precedence. |
Yes |
> trafficFilter |
list |
List of traffic filters. Max 16. |
No |
>> srcAddress |
list |
List of source ip address. Max 64. |
No |
>> dstAddress |
list |
List of destination ip address. Max 64. |
No |
>> srcPort |
list |
List of source port address. |
No |
>> dstPort |
list |
List of destination port address. |
No |
>> protocol |
list |
List of protocols. Max 8. |
Yes |
>> tag |
list |
List of tags. Max 8. |
Yes |
>> srcTunnelAddress |
list |
List of source tunnel address. |
No |
>> tgtTunnelAddress |
list |
List of target tunnel address. |
No |
>> srcTunnelPort |
list |
List of source tunnel ports. |
No |
>> dstTunnelPort |
list |
List of destination tunnel ports. |
No |
>> qCI |
number |
Match packets with same QCI. |
No |
>> dSCP |
number |
Match packets with same DSCP. |
No |
>> tC |
number |
Match packets with same TC. |
No |
> action |
enum {DROP, FORWARD_DECAPSULATED, FORWARD_AS_IS, PASSTHROUGH, DUPLICATE_DECAPSULATED, DUPLICATE_AS_IS} |
Action when traffic rule matches. |
Yes |
> dstInterface |
list |
Destination interface parameters. Max 2. |
No |
>> interfaceType |
enum {TUNNEL, MAC, IP} |
Match packets with same TC. |
Yes |
>> tunnelInfo |
object |
Tunnel parameters. |
No |
>>> tunnelType |
enum {GTP_U, GRE} |
Tunnel type. |
Yes |
>>> tunnelDstAddress |
string |
Destination IP address. |
No |
>>> tunnelSrcAddress |
string |
Source IP address. |
No |
>> srcMacAddress |
string |
Source MAC address |
No |
>> dstMacAddress |
string |
Destination MAC address. |
No |
>> dstIpAddress |
string |
Destination IP address. |
No |
> state |
enum {ACTIVE, INACTIVE} |
State of the rule. |
No |
appDNSRule |
list |
List of DNS rules. Max 32. |
No |
> dnsRuleId |
string |
DNS rule ID. |
Yes |
> domainName |
string |
Domain name. |
Yes |
> ipAddressType |
enum {IPv4, IPv6} |
IP address type. |
Yes |
> ipAddress |
string |
IP address. |
Yes |
> ttl |
number |
Time To Live value. |
Yes |
> state |
enum {ACTIVE, INACTIVE} |
Rule state. |
Yes |
appSupportMp1 |
bool |
Whether Mp1 interface is supported. |
No |
appName |
string |
Application name. |
Yes |
Example Request
PUT /mepcfg/app_lcm/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/appd_configuration
{
"appTrafficRule": [
{
"trafficRuleId": "TrafficRule1",
"filterType": "FLOW",
"priority": 1,
"trafficFilter": [
{
"srcAddress": [
"192.158.1.1/28"
],
"dstAddress": [
"192.168.1.1/28"
],
"srcPort": [
"8080"
],
"dstPort": [
"8080"
],
"protocol": [
"TCP"
],
"qCI": 1,
"dSCP": 0,
"tC": 1
}
],
"action": "DROP",
"state": "ACTIVE"
}
],
"appDNSRule": [
{
"dnsRuleId": "dnsRule1",
"domainName": "facerecgservice.com",
"ipAddressType": "IP_V4",
"ipAddress": "192.168.147.240",
"ttl": 30,
"state": "ACTIVE"
}
],
"appSupportMp1": true,
"appName": "abc1"
}
Return Parameters
Name |
Type |
Description |
---|---|---|
taskId |
string |
Task ID |
appInstanceId |
string |
Application instance ID |
configResult |
string |
Configuration result |
configPhase |
string |
Progress percentage |
Detailed |
string |
Detailed reason |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"taskId": "d464dd0a-d927-4baf-bc2c-d902fb0b2c73",
"appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
"configResult": "PROCESSING",
"configPhase": "0",
"Detailed": "Operation In progress"
}
4. Delete appd configuration¶
Delete appd configuration request.
URL
DELETE /mepcfg/app_lcm/v1/applications/{appInstanceId}/appd_configuration
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
Body Parameters
None
Example Request
DELETE /mepcfg/app_lcm/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/appd_configuration
Return Parameters
Name |
Type |
Description |
---|---|---|
taskId |
string |
Task ID |
appInstanceId |
string |
Application instance ID |
configResult |
string |
Configuration result |
configPhase |
string |
Progress percentage |
Detailed |
string |
Detailed reason |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"taskId": "d464dd0a-d927-4baf-bc2c-d902fb0b2c73",
"appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
"configResult": "PROCESSING",
"configPhase": "0",
"Detailed": "Operation In progress"
}
5. Query task status¶
Once the appd configuration create, modify or delete is submitted, mep will create a task and return a task id to the caller and the caller can periodically check the status of the task using this id. This interface calls the mep for the task status.
URL
GET /mepcfg/app_lcm/v1/tasks/{taskId}/appd_configuration
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
taskId |
String |
Task ID(UUID) |
path |
Yes |
Body Parameters
None
Example Request
GET /mepcfg/app_lcm/v1/tasks/d464dd0a-d927-4baf-bc2c-d902fb0b2c73/appd_configuration
Return Parameters
Name |
Type |
Description |
---|---|---|
taskId |
string |
Task ID |
appInstanceId |
string |
Application instance ID |
configResult |
string |
Configuration result |
configPhase |
string |
Progress percentage |
Detailed |
string |
Detailed reason |
Return Code: 200 OK
Example Response
HTTP/1.1 200 OK
{
"taskId": "d464dd0a-d927-4baf-bc2c-d902fb0b2c73",
"appInstanceId": "5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f",
"configResult": "SUCCESS",
"configPhase": "100",
"Detailed": ""
}
Application Termination¶
MEP support termination/stop of instance of an application after MEP receive the request from MECM.
1. App Instance Termination¶
Interface to remove the application’s ak/sk values, unregister the services and delete the DNS and traffic rule.
URL
DELETE /mep/mec_app_support/v1/applications/{appInstanceId}/AppInstanceTermination
Request parameters
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
appInstanceId |
String |
APP Instance ID(UUID) |
header |
Yes |
Example Request
DELETE /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/AppInstanceTermination
Body Parameters
None
Return Code: 200 OK
Example Response
""
2. App Instance Termination Confirmation¶
After the MEC platform receives a request to terminate or stop a MEC application instance, the MEC platform notifies the MEC application instance that it will be terminated or stopped soon incase if graceful termination/stop is subscribed.
URL
POST /mep/mec_app_support/v1/applications/{appInstanceId}/confirm_termination
Request parameters
Name |
Type |
Description |
IN |
Required |
---|---|---|---|---|
appInstanceId |
String |
APP Instance ID(UUID) |
path |
Yes |
Example Request
POST /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/confirm_termination
Body Parameters
{
"notificationType": "AppTerminationNotification",
"operationAction": "STOPPING",
"maxGracefulTimeout": "30",
"_links": {
"subscription": "mep/mec_app_support/v1/applications/6abe4782-2c70-4e47-9a4e-0ee3a1a0fd1e/subscriptions/6abe4782",
"confirmTermination": "/mep/mec_app_support/v1/applications/6abe4782-2c70-4e47-9a4e-0ee3a1a0fd1e/confirm_termination",
},
}
Return Code: 204 No Content
**Example Response**
POST /mep/mec_app_support/v1/applications/5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f/confirm_termination { “operationAction”: “TERMINATING” }
Exception status code
<table border="1" class="docutils">
<thead>
<tr>
<th><strong>Data type</strong></th>
<th><strong>Response codes</strong></th>
<th><strong>Description</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>N/A</td>
<td>204 No Content</td>
<td>The request is acknowledged. The response body shall be empty.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>401 Unauthorized</td>
<td>It is used when the client did not submit the appropriate credentials. In the returned ProblemDetails structure, the "detail" attribute should convey more information about the error.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>403 Forbidden</td>
<td>The operation is not allowed given the current status of the resource. More information shall be provided in the "detail" attribute of the "ProblemDetails" structure.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>404 Not Found</td>
<td>It is used when a client provided a URI that cannot be mapped to a valid resource URI. In the returned ProblemDetails structure, the "detail" attribute should convey more information about the error.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>409 Conflict</td>
<td>The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is because the application instance resource is in NOT_INSTANTIATED state or because there is no termination ongoing. The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more information about the error.</td>
</tr>
<tr>
<td>ProblemDetails</td>
<td>429 Too Many Requests</td>
<td>It is used when a rate limiter has triggered. In the returned ProblemDetails structure, the "detail" attribute should convey more information about the error.</td>
</tr>
</tbody>
</table>
### Query Platform Capabilities(Services)
MEP supports for querying the capabilities(services) registered with it. These capability information will be used by the MECM to display it to the user on its portal. MECM send the capability query to MEP over Mm5 interface.
#### 1. Query all capabilities
Interface to query all capabilities. This interface return the capability list registered to the queried MEP server along with the consumers of it.
**URL**
GET /mepcfg/mec_platform_config/v1/capabilities
**Request parameters**
None
**Body Parameters**
None
**Example Request**
GET /mepcfg/mec_platform_config/v1/capabilities
**Return Parameters**
| Name | Type | Description |
| -------------- | --------------------------- | ------------------------ |
| capabilityId | String | Capability/Service id |
| capabilityName | String | Capability/Service name |
| status | Enum **{ACTIVE, INACTIVE}** | Status |
| version | String | Version info |
| consumers | Array[Object] | Consumer object list |
| >applicationInstanceId | String | Consumer application id |
Return Code: 200 OK
**Example Response**
HTTP/1.1 200 OK [ { “capabilityId”: “16384563dca094183778a41ea7701d15”, “capabilityName”: “FaceRegService”, “status”: “ACTIVE”, “version”: “4.5.8”, “consumers”: [ { “applicationInstanceId”: “5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f” }, { “applicationInstanceId”: “f05a5591-d8f2-4f89-8c0b-8cea6d45712e” }, { “applicationInstanceId”: “86dfc97d-325e-4feb-ac4f-280a0ba42513” } ] }, { “capabilityId”: “f7e898d1c9ea9edd05e1181bc09afc5e”, “capabilityName”: “Location”, “status”: “ACTIVE”, “version”: “v1.19”, “consumers”: [ { “applicationInstanceId”: “88922760-861b-4578-aae5-77b8fcb06142” } ] } ]
#### 2. Query individual capability
Interface to query an individual capability from MEP. This interface return a capability along with the consumers of it.
**URL**
GET /mepcfg/mec_platform_config/v1/capabilities/{capabilityId}
**Request parameters**
| **Name** | **Type** | **Description** | **IN** | **Required** |
| --- | --- | --- | --- | --- |
| capabilityId | String | Capability ID(UUID) | path | Yes |
**Body Parameters**
None
**Example Request**
GET /mepcfg/mec_platform_config/v1/capabilities/16384563dca094183778a41ea7701d15
**Return Parameters**
| Name | Type | Description |
| -------------- | --------------------------- | ------------------------ |
| capabilityId | String | Capability/Service id |
| capabilityName | String | Capability/Service name |
| status | Enum **{ACTIVE, INACTIVE}** | Status |
| version | String | Version info |
| consumers | Array[Object] | Consumer object list |
| >applicationInstanceId | String | Consumer application id |
Return Code: 200 OK
**Example Response**
HTTP/1.1 200 OK { “capabilityId”: “16384563dca094183778a41ea7701d15”, “capabilityName”: “FaceRegService”, “status”: “ACTIVE”, “version”: “4.5.8”, “consumers”: [ { “applicationInstanceId”: “5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f” }, { “applicationInstanceId”: “f05a5591-d8f2-4f89-8c0b-8cea6d45712e” }, { “applicationInstanceId”: “86dfc97d-325e-4feb-ac4f-280a0ba42513” } ] }
### Timing interfaces
Interface to get platform time for MEP applications.
#### 1. Query platform time
Interface to get the current MEP platform time.
**URL**
GET mep/mec_app_support/v1/timing/current_time
**Request parameters**
None
<table border="1" class="docutils">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>seconds</td>
<td>integer</td>
<td>The seconds part of the time in unix time format.</td>
</tr>
<tr>
<td>nanoSeconds</td>
<td>integer</td>
<td>The nano-seconds part of the time in unix time format.</td>
</tr>
<tr>
<td>timeSourceStatus</td>
<td>enum{TRACEABLE, NONTRACEABLE}</td>
<td>1 = TRACEABLE - time source is locked to the UTC time source. 2 = NONTRACEABLE - time source is not locked to the UTC time source</td>
</tr>
</tbody>
</table>
**Example Request**
GET mep/mec_app_support/v1/timing/current_time
**Body Parameters**
None
Return Code: 200 OK
**Example Response**
HTTP/1.1 200 OK { “seconds”: 1627971217, “nanoSeconds”: 869279458, “timeSourceStatus”: “TRACEABLE” }
#### 2. Query timing capability
Interface to get the timing capabilities. The information regarding available packet timing facilities.
**URL**
GET mep/mec_app_support/v1/timing/timing_caps
**Request parameters**
None
Return Parameters:
<table border="1" class="docutils">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td>timeStamp</td>
<td>Object</td>
<td>Time stamp information.</td>
<td>No</td>
</tr>
<tr>
<td>>seconds</td>
<td>integer</td>
<td>The seconds part of the time in unix time format.</td>
<td>Yes</td>
</tr>
<tr>
<td>>nanoSeconds</td>
<td>integer</td>
<td>The nano-seconds part of the time in unix time format.</td>
<td>Yes</td>
</tr>
<tr>
<td>ntpServers</td>
<td>Array[Object]</td>
<td>Details about all NTP server available in the platform.</td>
<td>No</td>
</tr>
<tr>
<td>>ntpServerAddrType</td>
<td>enum{IP_ADDRESS, DNS_NAME}</td>
<td>Address type.</td>
<td>Yes</td>
</tr>
<tr>
<td>>ntpServerAddr</td>
<td>string</td>
<td>NTP server address.</td>
<td>Yes</td>
</tr>
<tr>
<td>>minPollingInterval</td>
<td>integer</td>
<td>Minimum poll interval for NTP messages, in seconds as a power of two Range: 3…17</td>
<td>Yes</td>
</tr>
<tr>
<td>>maxPollingInterval</td>
<td>integer</td>
<td>Maximum poll interval for NTP messages, in seconds as a power of two Range: 3…17</td>
<td>Yes</td>
</tr>
<tr>
<td>>localPriority</td>
<td>integer</td>
<td>Local priority value.</td>
<td>Yes</td>
</tr>
<tr>
<td>>authenticationOption</td>
<td>enum{NONE, SYMMETRIC_KEY, AUTO_KEY}</td>
<td>Available authentication option.</td>
<td>Yes</td>
</tr>
<tr>
<td>>authenticationKeyNum</td>
<td>integer</td>
<td>Authentication key number. This configuration is valid if selected authenticationOption is SymmetricKey</td>
<td>Yes</td>
</tr>
<tr>
<td>ptpMasters</td>
<td>Array[Object]</td>
<td>Details about all PTP server available in the platform.</td>
<td>No</td>
</tr>
<tr>
<td>>ptpMasterIpAddress</td>
<td>string</td>
<td>PTP master IP address.</td>
<td>Yes</td>
</tr>
<tr>
<td>>ptpMasterLocalPriority</td>
<td>integer</td>
<td>Local priority number.</td>
<td>Yes</td>
</tr>
<tr>
<td>>delayReqMaxRate</td>
<td>integer</td>
<td>Acceptable maximum rate of the Delay_Req messages in packets per second</td>
<td>Yes</td>
</tr>
</tbody>
</table>
**Example Request**
GET mep/mec_app_support/v1/timing/timing_caps
**Body Parameters**
None
Return Code: 200 OK
**Example Response**
HTTP/1.1 200 OK { “timeStamp”: { “seconds”: 1627971264, “nanoSeconds”: 478959804 }, “ntpServers”: [ { “ntpServerAddrType”: “DNS_NAME”, “ntpServerAddr”: “mep-ntp”, “minPollingInterval”: 4, “maxPollingInterval”: 17, “localPriority”: 1, “authenticationOption”: “NONE”, “authenticationKeyNum”: 0 } ] }
### Abnormal status code
|**HTTP状态码**|**描述**|
|---|---|
|400|错误的请求,用来表示请求的参数不正确。|
|401|当前请求需要鉴权认证。|
|403|禁止当前操作。|
|404|请求的资源未被发现。|
|412|请求中的先决条件验证失败。|
|414|请求的URI超长,服务器拒绝处理请求。|
|500|内部服务器错误。|
|503|服务不可用。|
## Dns-Server
Mep has a programmable dns server which can perform the name resolution of the MEC applications. This management interface of the dns server is handled using a rest interface and this section cover the details of this interface.
### 1. Create new entry
DNS entry can be added using this interface. Once a record is added, the resource will be available for the device application to query. Using this interface multiple records for a zone can be submitted together.
**URL**
POST /mep/dns_server_mgmt/v1/rrecord
**Request parameters**
None
**Query parameters**
| Name | Type | Description | Required |
| ------------- | --------------------------- | ------------------------ | ------------- |
| zone | string | Zone name. Default is "." | Yes |
**Body Parameters**
| Name | Type | Description | Required |
| ------------- | --------------------------- | ------------------------ | ------------- |
| name | string | Domain name | Yes |
| type | enum **{A, AAAA}** | DNS resource type, A in case of Ipv4 and AAAA for Ipv6 | Yes |
| class | enum **{IN}** | Resource record class | Yes on create |
| ttl | int (non-zero value) | Record TTL value | Yes on create |
| rData | list(string) | IP Address list, Ip type must match with the **type** field | Yes on create |
**Example Request**
POST /mep/dns_server_mgmt/v1/rrecord?zone=”com.” [ { “name”: “www.example.com.”, “type”: “A”, “class”: “IN”, “ttl”: 30, “rData”: [ “172.168.15.101” ] } ]
**Return Parameters**
None
Return Code: 200 Success
**Example Response**
HTTP/1.1 200 Success
### 2. Modify the entry
DNS entry can be modified using this interface. Once a record is modified, the resource will be available for the device application to query. Using this interface multiple records for a zone can be submitted together.
**URL**
PUT /mep/dns_server_mgmt/v1/rrecord/{fqdn}/{rrtype}
**Request parameters**
| **Name** | **Type** | **Description** | **IN** | **Required** |
| --- | --- | --- | --- | --- |
| fqdn | String | Fully Qualified Domain Name | path | Yes |
| rrtype | String | Resource record type of the entry(A or AAAA). | path | Yes |
**Query parameters**
| Name | Type | Description | Required |
| ------------- | --------------------------- | ------------------------ | ------------- |
| zone | string | Zone name. Default is "." | Yes |
**Body Parameters**
| Name | Type | Description | Required |
| ------------- | --------------------------- | ------------------------ | ------------- |
| name | string | Domain name | Yes |
| type | enum **{A, AAAA}** | DNS resource type, A in case of Ipv4 and AAAA for Ipv6 | Yes |
| class | enum **{IN}** | Resource record class | Yes on create |
| ttl | int (non-zero value) | Record TTL value | Yes on create |
| rData | list(string) | IP Address list, Ip type must match with the **type** field | Yes on create |
**Example Request**
PUT /mep/dns_server_mgmt/v1/rrecord/www.example.com/A?zone=”com.” [ { “name”: “www.example.com.”, “type”: “A”, “class”: “IN”, “ttl”: 30, “rData”: [ “172.168.15.201” ] } ]
**Return Parameters**
None
Return Code: 200 Success
**Example Response**
HTTP/1.1 200 Success
### 2. Delete an entry
DNS entry can be deleted from the dns-server using this interface.
**URL**
DELETE /mep/dns_server_mgmt/v1/rrecord/{fqdn}/{rrtype}
**Query parameters**A
| Name | Type | Description | Required |
| ------------- | --------------------------- | ------------------------ | ------------- |
| zone | string | Zone name. Default is "." | Yes |
**Request parameters**
| **Name** | **Type** | **Description** | **IN** | **Required** |
| --- | --- | --- | --- | --- |
| fqdn | String | Fully Qualified Domain Name | path | Yes |
| rrtype | String | Resource record type of the entry(A or AAAA). | path | Yes |
**Body Parameters**
None
**Example Request**
DELETE /mep/dns_server_mgmt/v1/rrecord/www.example.com./A?zone=com.
**Return Parameters**
None
Return Code: 200 Success
**Example Response**
HTTP/1.1 200 Success
## MEP Agent
Mep agent is a component which run as side car with application. It helps to get authenticaion token, do service registration, send heartbeat on behalf of application.
#### 1. Get token
Applicaiontion can call this API to get authentication token from mepauth.
**URL**
GET /mep-agent/v1/token
**Request parameters**
| **Name** | **Type** | **Description** | **IN** | **Required** |
| --- | --- | --- | --- | --- |
| Content-Type | String | MIME type, fill in "application/json" | header | Yes|
**Body Parameters**
None
**Example Request**
GET /mep-agent/v1/token
{ “header”: [ { “key”: “Content-Type”, “value”: “application/json” } ] }
**Return Parameters**
Return code: 200 OK
|Name | Type | Description | Required|
|---|---|---|---|
|access\_token | String | Token| Yes|
|token\_type |String |Token Type(Bearer)| Yes|
|expires\_in | int | Expire time | Yes|
**Example Response**:
HTTP/1.1 200 OK { “access_token”:”xxxx”, “token_type”:”Bearer”, “expires_in”:”3600” }
#### 2. Get producer endpoint by service name
Applicaiontion can call this API to get producer endpoint from mepserver.
**URL**
GET /mep-agent/v1/endpoint/:serName
**Request parameters**
| **Name** | **Type** | **Description** | **IN** | **Required** |
| --- | --- | --- | --- | --- |
| Content-Type | String | MIME type, fill in "application/json" | header | Yes|
| serName | String | service name | path | Yes |
**Body Parameters**
None
**Example Request**
GET /mep-agent/v1/endpoint/serviceName
{ “header”: [ { “key”: “Content-Type”, “value”: “application/json” } ] }
**Return Parameters**
Return code: 200 OK
|Name | Type | Description | Required|
|---|---|---|---|
| endpoint | Object | endpoint | Yes|
|>uris | Array\[String\]| URI格式的服务入口信息列表| Yes|
|>addresses | Array\[Object\] | 服务入口信息地址列表(IP地址+端口号) | No|
|>>host | String | IP地址 | No|
|>>port | String | 端口号 | No|
|>alternative| String | 已实现格式或者外部规范定义的服务入口信息 | No|
**Example Response**
HTTP/1.1 200 OK { “endpoint”: { “uris”: [ “https://mep-api-gw.mep:8443/VideoService145da803354a611ebb15e” ], “addresses”: null, “alternative”: null } }
Dependency¶
MEP-auth third party usage list¶
Artifact |
Version |
---|---|
github.com/agiledragon/gomonkey |
v2.0.1 |
github.com/astaxie/beego |
v1.12.0 |
github.com/dgrijalva/jwt-go/v4 |
v4.0.0-preview1 |
github.com/go-playground/validator/v10 |
v10.2.0 |
github.com/natefinch/lumberjack |
v2.0.0 |
github.com/lib/pq |
v1.7.0 |
github.com/sirupsen/logrus |
v1.6.0 |
github.com/smartystreets/goconvey |
v1.6.4 |
golang.org/x/crypto |
v0.0.0-20200302210943-78000ba7a073 |
MEP-server third party usage list¶
Artifact |
Version |
---|---|
github.com/agiledragon/gomonkey |
v2.0.1 |
github.com/apache/servicecomb-service-center |
v0.0.0-20191027084911-c2dc0caef706 |
github.com/astaxie/beego |
v1.12.0 |
github.com/go-playground/validator/v10 |
v10.2.0 |
github.com/satori/go.uuid |
v1.2.0 |
github.com/stretchr/testify |
v1.6.1 |
golang.org/x/crypto |
v0.0.0-20200302210943-78000ba7a073 |
golang.org/x/net |
v0.0.0-20200301022130-244492dfa37a |
Dns-server third party usage list¶
Artifact |
Version |
---|---|
github.com/agiledragon/gomonkey |
v2.0.1 |
github.com/labstack/echo/v4 |
v4.1.16 |
github.com/miekg/dns |
v1.1.29 |
github.com/sirupsen/logrus |
v1.6.0 |
github.com/stretchr/testify |
v1.6.1 |
go.etcd.io/bbolt |
v1.3.4 |
MEP-agent third party usage list¶
Artifact |
Version |
---|---|
github.com/agiledragon/gomonkey |
v2.0.1 |
github.com/astaxie/beego |
v1.12.0 |
github.com/go-playground/validator/v10 |
v10.2.0 |
github.com/natefinch/lumberjack |
v2.0.0 |
github.com/sirupsen/logrus |
v1.6.0 |
github.com/smartystreets/goconvey |
v1.6.4 |
github.com/stretchr/testify |
v1.6.1 |
gopkg.in/yaml.v2 |
v2.2.8 |
Database Design¶
The MEP database uses an open source PostgreSQL database, only api gateway kong and mepauth use database, and the recommended version is 12.3.
AuthInfoRecord: Store Ak/Sk information.
create table auth_info_record (
app_ins_id varchar(255) not null,
ak varchar(255) not null,
sk varchar(255) not null,
nonce varchar(255) not null,
primary key (app_ins_id)
);
How to Contribute Contribution¶
How to contribute¶
For more information, please refer to Code Warehouse
Contribution to mep-agent¶
This section provides details on how to participate/contribute to the mep-agent project.
Build local development environment¶
This section will guide developers to build mep-agent module locally and help developers to quickly under and develop code
Clone mep-agent code
Open folder by goland
Configure the runtime environment variables MEP_IP=192.168.100.177; MEP_APIGW_PORT=30443; AK=QVUJMSUMgS0VZLS0tLS0; SK=DXPb4sqElKhcHe07Kw5uorayETwId1JOjjOIRomRs5wyszoCR5R7AtVa28KT3lSc; APPINSTID=5abe4782-2c70-4e47-9a4e-0ee3a1a0fd1f; CA_CERT_DOMAIN_NAME=edgeegallery
Run main.go to start mep-agent
After start, can call the api by postman
User Management¶
User Overview¶
Introduction¶
User Management模块是为EdgeGallery项目提供用户管理的基本能力,包括用户注册/登录/权限认证等功能。为AppStore/开发者平台/MECM/ATP提供统一的用户鉴权和认证服务。
Deployment Relationship¶
The User-mgmt module consists primarily of four modules:
Portal: Provide an interface operation for login/logout
Auth-server: Provide JWT service for token generation for API interface access
User-mgmt: provides user account number management, including the ability to acquire/modify user information, password recovery, etc.
Mail: Provides a mailbox service
Relationship between User-mgmt and other modules¶
User-mgmt is a user management module for EdgeGallery:
Users first login to the EdgeGallery platform through User Management
User Management会给登录成功的用户签发AccessToken,用于后台API接口的访问,token默认超时时间12小时,token携带以下数据:
userId: Register the user ID
enableMail: Whether to open mailbox service
ssoSessionId: global SessionId, user single sign-on
userName: username
For detailed implementation of single sign-on, please refer to the section < Feature Design-Single sign-on >
Feature design¶
Feature Info
Feature Name |
Feature description |
Design constraints |
---|---|---|
提供用户注册功能。注册时除提供必须的用户名外,还可以选择提供邮箱地址。建议填写邮箱地址,便于忘记密码后找回密码时进行验证。 |
注册时提供的用户名、邮箱地址必须是唯一的,如果已存在,则无法成功注册。为了方便用户注册,当前不对邮箱地址进行验证。 |
|
可以通过用户名、邮箱地址登录各应用平台Portal。EdgeGallery采取单点登录方式(Single Sign On),即多个应用平台共用一个登录认证平台,一次登录就可以访问互相信任的其他应用系统。 |
目前单点登录系统适用于开发者平台(Developer Portal)、应用仓库(Application Store)、管理系统(MEC Manager)、应用测试认证平台(ATP Portal)。 |
|
After users log in to each application platform, they can enter the user center through “My Account”. You can view/modify personal information and modify passwords in the user center. |
目前不支持修改用户名,只能修改邮箱地址。 |
|
如果用户注册时提供了真实有效的邮箱地址(或者在用户中心修改个人信息时提供),当忘记密码时可以通过邮箱地址重置密码以完成密码找回。通过邮箱地址找回密码时需要进行邮箱验证,验证通过后才可以重置密码。 |
只有当EdgeGallery平台开启了邮箱服务才可以通过邮箱地址找回密码 |
|
The guest is a GUEST account built into the system, and it is automatically logged in when visiting the homepage. When a guest logs in, the user can view most of the functions of the system, but cannot create/delete/modify login operations in the system. |
The default user name and password for the visitor is guest/gest. If you want to modify your password when deployed, please modify it by logging in to the database. If you want to disable the GUEST account, delete it directly from the database. |
|
The user management module defaults to a built-in admin user, who acts as the super administrator of the system. Provide the user with a unified user list management function, which can query users, enable/disable users, and set user role permissions. |
When a user is disabled, the user cannot register; the role authority for the disabled user cannot be set. |
|
The system provides a service for sending verification code to a registered mailbox address, which is used for verifying the mailbox. |
Only when the EdgeGallery platform opens the mailbox service to send the verification code to the mailbox |
User Registration¶
用户注册时,除提供必须的用户名外,还可以选择提供邮箱地址。建议填写邮箱地址,便于忘记密码后找回密码时进行验证。
The system will be checked at the time of registration:
The user name must be greater than 6 digits, and whether the username has been registered.
if the mailbox address is provided, checking whether it meets the mailbox address of the format requirement, and checking whether the mailbox address has been registered.
Graphic Digital Validation Code
Single point entry¶
单点登录系统是基于ServiceComb、Spring Security、Oauth2、JWT、Vue等技术实现,采用OAuth2协议的授权码模式(authorization code)。MECM、AppStore、Developer、Atp应用平台作为客户端,与认证服务器user-mgmt-be进行交互,实现单点登陆与单点注销功能。使用Cookie+Session机制实现用户认证鉴权和超时退出功能,使用JWT存储用户基本信息,减轻认证服务器压力。
The processing time of single sign-on and single point cancellation is illustrated by the two application platforms of MECM and AppStore as an example.
User Center¶
After the user logs in to each application platform, it can enter the user centre through “My account number”.
In the user center, the user can check/modify personal information and modify the password.
目前不支持修改用户名,只能修改邮箱地址。
Password back.¶
Get the code back through the e-mail address.¶
The main interprocessing of the password is recovered by the email address after the user has forgotten the password:
The user enters the mailbox address, completes the graphic digital verification, and then requests the verification code.The system determines whether the mailbox address is registered and, if it is registered, sends the verification code to the mailbox.If not registered, the prompt user mailbox address does not exist.
The user inputs the received verification code and the new password, and returns to the login interface after the modification is successful.
Visitor Registration¶
Visitors are a GUEST account built in the system, which is automatically registered when the home page is accessed.
When logging in, the user can see most of the functions of the system, but cannot create/delete/modify the login operation in the system.
The default user name and password for the visitor is guest/gest. If you want to modify your password when deployed, please modify it by logging in to the database. If you want to disable the GUEST account, delete it directly from the database.
User list management¶
The user management module defaults to the built-in admin user as the super administrator of the system.
The system provides a uniform user list management function for the user, which can inquire the user, enable/disable the user and set the user role authority.
(1) When the user is disabled, the user will not be able to log in.
(2) The role permissions of disabled users cannot be set.
Mailbox Verification¶
It is necessary to send the verification code to the mailbox when validating the mailbox address, and it needs to open the mailbox service.
Opening the mailbox service requires modifying the configuration document application.properties under user-mgmt:
[mail.enabled=true] // mailbox service switch, default false
[spring.mail.host=] // mailbox server
[spring.mail.port=] // Mail server sends port of mail
[spring.mail.username=] // Mail sender
[spring.mail.mail.password=] // sender authorization code
User Interfaces¶
1. AUTH¶
1.1 Registration¶
Registering a system
Before logging in, a graphical verification code is required to pass through the verifyCode parameter.
Resource URI: /login
Method: POST
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
verifyCode |
Graphics Validation Code |
query |
Yes. |
|
username |
用户名/邮箱 |
body |
Yes. |
|
password |
Password. |
body |
Yes. |
Example response:
response 200 OK
1.2 Access to current login user information¶
and obtaining the information of the current login user through the interface after the user login is successful.
Resource URI: /auth/login-info
Method: GET
Example response:
response 200 OK
{
"username": "TestUser1",
"mailAddress": "test@edgegallery.org",
"createTime":"2021-02-24 04:39:23",
"allowed": true,
"userId": "37423702-051a-46b4-bf2b-f190759cc0b8",
"permissions": [
{
"platform": "APPSTORE",
"role": "GUEST"
}
]
}
1.4 ObtainAccessToken¶
The northbound interface needs to be obtained through the interface before callingAccessToken。
Resource URI: /v1/accesstoken
Method: POST
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
userFlag |
用户名/邮箱 |
body |
Yes. |
|
password |
Password. |
body |
Yes. |
Example response:
response 200 OK.
{
"userId": "xxxxx",
"accessToken": "eyJhbGciOiJSUzI1NiIsInR5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
2 USER-MGMT¶
2.1 Registered users¶
registering the user interface, registering successfully returning 200 and returning the user information that has been registered successfully; the interface data is not fully returned to 400.
Before registration, a graphical verification code is required to pass through the verifyCode parameter.
Resource URI: /v1/users
Method: POST
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
verifyCode |
Graphics Validation Code |
query |
Yes. |
|
username |
User name |
body |
Yes. |
Must be a combination of letters or letters and numbers, must start with a letter, between 6 and 30 characters in length |
password |
Password. |
body |
Yes. |
Complexity requirements must be met, must be a combination of number/letter/t number characters, length between 6 and 18 characters |
mailAddress |
Mailbox Address |
body |
not |
If completed, the format requirements of the mailbox address must be met |
Example request:
{
"username": "TestUser1",
"mailAddress": "test@edgegallery.org",
"password": "123.qwe"
}
Example response:
response 201 OK
{
"username": "TestUser1",
"mailAddress": "test@edgegallery.org",
"userId": "37423702-051a-46b4-bf2b-f190759cc0b8",
"permissions": [
{
"platform": "APPSTORE",
"role": "GUEST"
}
]
}
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 403 FORBIDDEN
{
"code": 0,
"message": "string"
}
response 500 INTERNAL ERROR
{
"code": 0,
"message": "string"
}
2.2 Modify password (personal modification password & recover password)¶
Personal password modification includes three scenarios:
the personal password is modified by the original password verification mode in the personal centre after the user is logged in.
(2) After the admin logs in for the first time, it is mandatory to change the personal default password
(3) The password of a non-guest user expires after more than 90 days, and it is mandatory to change the password after logging in
如果用户注册时提供了真实的邮箱地址(也可以在个人中心填写该信息),可以通过邮箱重置密码。需要开启邮件服务才能使用。
Resource URI: /v1/users/password
Method: PUT
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
type |
Modify the type of password |
body |
Yes. |
1 – Password verification modification; 2 – password recovery |
newPassword |
New password after modification |
body |
Yes. |
Complexity requirements must be met, must be a combination of number/letter/t number characters, length between 6 and 18 characters |
oldPassword |
original password |
body |
not |
Required when type= 1 |
mailAddress |
Mailbox Address |
body |
not |
当type=2时,填写已经注册过的邮箱地址 |
verificationCode |
Verification code |
body |
not |
6 valid numbers.Required when type= 2 |
Example request:
{
"type": 2,
"newPassword": "123.qwe",
"oldPassword": "",
"mailAddress": "test@edgegallery.org",
"verificationCode": "123456"
}
Example response:
response 200 OK
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 403 FORBIDDEN
{
"code": 0,
"message": "string"
}
response 500 INTERNAL ERROR
{
"code": 0,
"message": "string"
}
2.3 Check repeat user¶
判断用户名、邮箱地址是否已经注册过,不允许重复注册。
Resource URI: /v1/users/action/uniqueness
Method: POST
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
username |
User name |
body |
Yes. |
Must be a combination of letters or letters and numbers, must start with a letter, between 6 and 30 characters in length |
mailAddress |
Mailbox Address |
body |
not |
If completed, the format requirements of the mailbox address must be met |
Example request:
{
"username": "TestUser1",
"mailAddress": "test@edgegallery.org"
}
Example response:
response 200 OK
{
"username": true or false,
"mailAddress": true or false
}
2.4 List of query users¶
List of user administrators
Resource URI: /v1/users/list
Method: POST
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
username |
User name |
body |
not |
User name keyword for fuzzy query conditions |
mailAddress |
Mailbox Address |
body |
not |
Mailbox address keyword for fuzzy query conditions |
role |
characters |
body |
Yes. |
ALL – All; ADMIN – Manager; TENANT – Tenant; GUEST – Visitors |
status |
state |
body |
Yes. |
-1 – All; 0 – Disabled; 1 – Enable |
createTimeBegin |
Creation Time (i.e. Enrollment Time) Range – Initiation |
body |
not |
From Time, Format: 2021-1-21 |
createTimeEnd |
Creation Time (i.e. Enrollment Time) Range – Termination |
body |
not |
Termination Time, Format: 2021-2-1 |
offset |
Query starting position |
body |
Yes. |
Paging control parameters, indicating the initial location of the query |
limit |
Query Records |
body |
Yes. |
Paging control parameters that indicate the number of query records per page |
sortBy |
Sort field |
body |
not |
Word name for sorting.USERNAME – Sort by username; CREATETIME – Sort by create (registration) time |
sortOrder |
Sort Order |
body |
not |
Sort sequence.ASC – Ascending; DESC – Descending |
Example request:
{
"username": "",
"mailAddress": "",
"role": "",
"status": -1,
"createTimeBegin": "2021-1-21",
"createTimeEnd": "2021-2-1",
"queryCtrl": {
"offset": 0,
"limit": 10,
"sortBy": "USERNAME",
"sortOrder": "DESC"
}
}
Example response:
response 200 OK
{
"totalCount": 20,
"userList": [
{
"username": "TestUser1",
"mailAddress": "test@edgegallery.org",
"userId": "37423702-051a-46b4-bf2b-f190759cc0b8",
"permissions": [
{
"platform": "APPSTORE",
"role": "GUEST"
}
],
"allowed": true,
"createTime": "2021-1-21 10:24:45"
}
]
}
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 403 FORBIDDEN
{
"code": 0,
"message": "string"
}
response 500 INTERNAL SERVER ERROR
{
"code": 0,
"message": "string"
}
2.5 Delete user¶
The user administrator can delete any user based on the user ID
Resource URI: /v1/users/{userId}
Method: DELETE
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
userId |
User ID |
path |
Yes. |
uuid |
Example request:
Example response:
response 200 OK
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 403 FORBIDDEN
{
"code": 0,
"message": "string"
}
2.6 Modifies user personal information¶
The user can modify the personal information and return the modified information.
Resource URI: /v1/users/{userId}
Method: PUT
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
userId |
User ID |
path |
Yes. |
uuid |
username |
User name |
body |
Yes. |
Must be a combination of letters or letters and numbers, must start with a letter, between 6 and 30 characters in length |
mailAddress |
Mailbox Address |
body |
not |
If completed, the format requirements of the mailbox address must be met |
Example request:
{
"username": "TestUser1",
"mailAddress": "test@edgegallery.org"
}
Example response:
response 200 OK
{
"username": "TestUser1",
"mailAddress": "test@edgegallery.org",
"userId": "37423702-051a-46b4-bf2b-f190759cc0b8",
"permissions": [
{
"platform": "APPSTORE",
"role": "GUEST"
}
]
}
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 403 FORBIDDEN
{
"code": 0,
"message": "string"
}
2.7 Disable user¶
The user administrator can disable the user according to the user ID, wherein the user ID is the user ID of the non-built-in user.The user will not be able to register after disabling.
Resource URI: /v1/users/status/{userId}/disallow
Method: PUT
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin
Name |
Definition |
type |
Required |
Describe |
---|---|---|---|---|
userId |
User ID |
path |
Yes. |
uuid |
Example request:
Example response:
response 200 OK
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 403 FORBIDDEN
{
"code": 0,
"message": "string"
}
2.8 Enable users¶
The user administrator can enable the user according to the user ID, wherein the user ID is the user ID of the non-built-in user.
Resource URI: /v1/users/status/{userId}/disallow
Method: PUT
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
userId |
User ID |
path |
Yes. |
uuid |
Example request:
Example response:
response 200 OK
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 403 FORBIDDEN
{
"code": 0,
"message": "string"
}
2.9 User roles are set¶
The user administrator can set the role and the accessible platform thereof according to the user ID.
Resource URI: /v1/users/settings/{userId}
Method: PUT
Role: APPSTORE_ADMIN or DEVELOPER_ADMIN or MECM_ADMIN or LAB_ADMIN or ATP_ADMIN
User: admin
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
userId |
User ID |
path |
Yes. |
uuid |
platform |
Access platform |
body |
Yes. |
User accessible platform |
role |
characters |
body |
Yes. |
The role of the user |
Example request:
{
"permissions": [
{
"platform": "APPSTORE",
"role": "GUEST"
}
]
}
Example response:
response 200 OK
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 403 FORBIDDEN
{
"code": 0,
"message": "string"
}
3 IDENTITY¶
3.1 获取邮件验证码¶
Send the verification code to the designated mailbox, send a successful return 200, and send the failure back to 417.
It is necessary to obtain the graphical verification code before sending the message verification code, which is passed through the verifyCode parameter.
Resource URI: /v1/identity/mail
Method: POST
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
verifyCode |
Graphics Validation Code |
query |
Yes. |
|
mailAddress |
Mailbox Address |
body |
Yes. |
Mailbox address to receive verification code |
Example request:
{
"mailAddress": "test@edgegallery.org"
}
Example response:
response 200 OK
response 400 Bad Request
{
"code": 0,
"message": "string"
}
response 417 Expectation Failed
{
"code": 0,
"message": "string"
}
3.2 获取图形验证码¶
Get picture data stream with verification code
Resource URI: /v1/identity/verifycode-image
Method: GET
The interface does not take any request parameters and returns the binary picture data stream
Validation is valid in 3 minutes
3.3 预校验图形验证码正确性¶
pre-checking if the verification code input by the user is correct
Resource URI: /v1/identity/verifycode-image/precheck
Method: GET
Name |
Definition |
Type |
Required |
Describe |
---|---|---|---|---|
verifyCode |
Graphics Validation Code |
query |
Yes. |
Example response:
response 200 OK
{
"checkResult": true
}
Database design¶
tbl_tenant tenant table¶
Record all the tenant information.
Field |
Type |
Main key |
Description |
---|---|---|---|
tenantid |
string |
key |
Master Key |
username |
string |
- |
The user name at the time of registration requires uniqueness.[5-29] between characters |
password |
string |
- |
when registering, the password needs to satisfy the password complexity requirement, satisfying the combination of the number/letter/special character at least two or more, [6-18] characters.Password in database is stored after using PBKDF2 plus salt value |
company |
string |
- |
User Company Name |
telephonenumber |
string |
- |
the mobile phone number of the user is used for verifying the user identity when the password is recovered, and the 11-bit effective number must be satisfied |
mailaddress |
string |
- |
User email address, which is used to verify the user identity when the password is recovered and must be in a valid mailbox format |
gender |
string |
- |
User Gender |
isallowed |
boolean |
- |
Is the account allowed to be registered |
createtime |
timestamp |
- |
Creation time (i.e. registration time) |
modifytime |
timestamp |
- |
Modify Time |
pweffecttime |
timestamp |
- |
Password effective time |
Initial value:
tenantid | username | password | company | telephonenumber | mailaddress | gender | isallowed | createtime | modifytime | pweffecttime
--------------------------------------+----------------+----------------------------------------------------------------------------------+---------+-----------------+--------+-----------
de3565b1-a7c2-42b9-b281-3f032af29ff7 | guest | 59756fda85ebddee6024d5cc0e6edcde3226693257a9c1eb662c56426b8a4f232b3d56c321adbd91 | company | 13800000000 | 13800000000@edgegallery.org | 1 | t | 初始数据入库时间(now函数值) | 初始数据入库时间(now函数值) | NULL
39937079-99fe-4cd8-881f-04ca8c4fe09d | admin | 472645ad1af0101adaa6769cc865fec3b29fedeba6dc912900a59b1364b7a6bb17bb9a0575854547 | company | 13800000001 | 13800000001@edgegallery.org | 1 | t | 初始数据入库时间(now函数值) | 初始数据入库时间(now函数值) | 初始数据入库时间(now函数值)往前推10年的时间
The default password for the guest account is:guest
The default password for the admin account is:Admin@321
对于admin用户,首次登录后会强制修改默认密码。
对于非guest用户,密码超过90天后过期,登录时会强制修改密码。
tbl_role user role table¶
configuration supported platform and user role, the table initializes at startup and does not support dynamic addition
field |
type |
Master Key |
describe |
---|---|---|---|
id |
string |
key |
Master Key |
platform |
string |
- |
Platform supported |
role |
string |
- |
Role definition supported |
Initial value:
id | platform | role
----+-----------+--------
1 | APPSTORE | GUEST
2 | APPSTORE | TENANT
3 | APPSTORE | ADMIN
4 | DEVELOPER | GUEST
5 | DEVELOPER | TENANT
6 | DEVELOPER | ADMIN
7 | MECM | GUEST
8 | MECM | TENANT
9 | MECM | ADMIN
10 | ATP | GUEST
11 | ATP | TENANT
12 | ATP | ADMIN
13 | LAB | GUEST
14 | LAB | TENANT
15 | LAB | ADMIN
Description:
APPSTORE: Application of warehouse platform
DEVELOPER: Application development integration platform
MECM:MEC management platform
ATP: application authentication test platform
LAB: Laboratory Management Platform
tbl_tenant_role relationship table¶
Relationship to describe tenants and roles
field |
type |
Master Key |
describe |
---|---|---|---|
tenantid |
string |
Tenant ID |
|
roleid |
string |
Role Id |
Initial value:
tenantid | roleid
--------------------------------------+--------
de3565b1-a7c2-42b9-b281-3f032af29ff7 | 1
de3565b1-a7c2-42b9-b281-3f032af29ff7 | 4
de3565b1-a7c2-42b9-b281-3f032af29ff7 | 7
de3565b1-a7c2-42b9-b281-3f032af29ff7 | 10
de3565b1-a7c2-42b9-b281-3f032af29ff7 | 13
39937079-99fe-4cd8-881f-04ca8c4fe09d | 3
39937079-99fe-4cd8-881f-04ca8c4fe09d | 6
39937079-99fe-4cd8-881f-04ca8c4fe09d | 9
39937079-99fe-4cd8-881f-04ca8c4fe09d | 12
39937079-99fe-4cd8-881f-04ca8c4fe09d | 15
Contrast with the initialization data of tbl_tenant,
de3565b1-a7c2-42b9-b281-3f032af29ff7It is a guest user and has the GUEST role of each platform by default;
39937079-99fe-4cd8-881f-04ca8c4fe09dIt is an admin user and has the ADMIN role of each platform by default;
How to contribute¶
For more information, please refer to Code Warehouse
Kubernetes NodePort List¶
Component |
Pod Name |
Service Name |
Node Port |
Internal Port |
---|---|---|---|---|
appstore-be |
appstore-be-0 |
appstore-be-svc |
ClusterIP |
8099 |
appstore-fe |
appstore-fe |
appstore-fe-svc |
30091 |
8443 |
appstore-be-postgres |
appstore-be-postgres-0 |
appstore-be-postgres-svc |
ClusterIP |
5432 |
developer-be |
developer-be-0 |
N/A |
N/A |
N/A |
developer-fe |
developer-fe |
developer-fe-svc |
30092 |
8443 |
developer-be-postgres |
developer-be-postgres-0 |
developer-be-postgres-svc |
ClusterIP |
5432 |
file-system |
file-system |
file-system-svc |
30100 |
9500 |
user-mgmt-postgres |
user-mgmt-postgres |
user-mgmt-postgres |
ClusterIP |
5432 |
healthcheck |
healthcheck |
healthcheck-svc |
6379 |
9527 |
healthcheck-m |
healthcheck-m |
healthcheck-m-svc |
30205 |
9529 |
user-mgmt |
user-mgmt |
user-mgmt-svc |
30067 |
8067 |
user-mgmt-postgres |
user-mgmt-postgres-0 |
user-mgmt-postgres-svc |
ClusterIP |
5432 |
user-mgmt-redis |
user-mgmt-redis-0 |
user-mgmt-redis-svc |
ClusterIP |
6379 |
service-center |
service-center |
service-center |
ClusterIP |
30100 |
mecm-fe |
mecm-fe |
mecm-fe-svc |
30093 |
8443 |
mecm-appo |
mecm-appo |
mecm-appo-svc |
30201 |
8091 |
mecm-apm |
mecm-apm |
mecm-apm-svc |
30202 |
8092 |
mecm-inventory |
mecm-inventory |
mecm-inventory-svc |
30203 |
8093 |
mecm-north |
mecm-north |
mecm-north-svc |
30303 |
8102 |
mecm-applcm-controller |
mecm-applcm-controller |
mecm-applcm-controller-svc |
30204 |
8094 |
mecm-resource-controller |
mecm-resource-controller |
mecm-resource-controller-svc |
31952 |
8098 |
mecm-applcm-k8splugin |
mecm-applcm-k8splugin |
mecm-applcm-k8splugin-svc |
30205 |
8095 |
mepserver |
mepserver-deploy |
mepserver-service |
ClusterIP |
8080 |
mepauth |
mepaauth-deploy |
mepaauth-service |
ClusterIP |
8088 |
kong-apigw |
apigw-kongy |
kong-service |
30443 |
8443 |
mep-postgre-db |
pg-deploy |
pg-service |
ClusterIP |
5432 |
ServiceComb NodePort List¶
Component |
Service Name |
REST Port |
Spring Server Port (default 8080) |
---|---|---|---|
appstore-be |
mec-appstore |
8099 |
8099 |
appstore-fe |
appstore-fe |
8080 |
8443 |
developer-be |
mec-developer |
9082 |
9082 |
developer-fe |
developer-fe |
8080 |
8443 |
user-mgmt |
user-mgmt-be |
8067 |
8067 |
user-mgmt-fe |
user-mgmt-fe |
8080 |
8443 |
All services registered to the service center