apm
2021-09-18 17:54:53 6 举报
apm操作流程图
作者其他创作
大纲/内容
请求lcmcontroller模块删除分发节点的应用包
Download Application package operationType=download
onboardContainerBasedAppPkg
读取其中的MainServiceTemplate.yaml中的 topology_template 值
说明:根据指定的包声明下载对应的csar应用包
点击应用列表详情按钮
tag镜像到本地仓库push到该仓库
请求lcmcontroller模块分发应用
https://mecmEndPoint/lcmcontroller/v2/tenants/{tenantId}/packages/{packageId}POST
DeCompose application package
请求地址:/apm/v1/tenants/{tenant_id}/packages/{app_package_id}/apptemplateGET
根据tenantId appPackageId 获取csar文件路径
添加应用同步信息apppackageinfo
请求地址: /mecm-apm/apm/v1/tenants/{tenant_id}/packagesPOST
静默删除zip文件
从仓库中拉取镜像
开始
请求地址:/apm/v1/tenants/{tenant_id}/packages/{app_package_id}GET
说明:检索某个租户下的所有应用包
需要的镜像文件解压缩load到docker中
rest请求
将包中存在的镜像加载到docker
请求GET /inventory/v1/mechosts/{mec_host}获取返回的mepmIp解析返回的能力列表capabilities放入上下文中execution.setVariable(\"hw_capabilities_list\
打包成csar文件
apppackagehost 表中的 pkg_host_key = package_id + tenant_id
删除应用包信息
1.从TOSCA.meta文件中解析MainSerivceTemplate.zip压缩文件,解压缩该zip文件,取出其中的TOSCA_VNFD.meta文件2.从TOSCA_VNFD.meta文件中取得MainServiceTemplate.yaml 文件,取出topology template数据从topology 中取出node_templates 为 node列表,从topology 中取出app_configuration 为appConfigs从topology 中取出properties 为propertiesProperties 为AppRule取出mechost下所有应用信息状态为Instantiated的列表转成map key值为appId将解析出的数据放入上下文的app_requireds中3.更新app_rules中的应用名上下文 放入成功的状态, 进入下一步流程
获取状态
在租户文件目录下找到包含Image/SwImageDesc的json文件
获取镜像json信息
保存到取到的信息到appTemplate表中
xxx.mfmetadata:app_product_name: wzhttpdsapp_provider_id: Huaweiapp_package_version: v1.0app_release_data_time: 2021-09-07 00:04app_type: containerapp_class: containerapp_package_description: test读取mf文件的metadata下的所有字段信息存入AppPackageMf
是否已同步该应用
根据类型分发到容器或虚拟机
异步执行流程
rest请求inventory/mepms/{节点ip}
更新应用包同步状态SyncStatus = IN_SYNCOperationalInfo = SUCCESS
更新Host信息(表apppackagehost)更新表状态为正在分发DISTRIBUTE_STATE_PROCESSING = \"Processing\"
说明: 获取某个应用商店应用列表
下载
解压zip包到租户的文件目录下
对比上下文中的hw_capabilities_list和hw_capabilities确保所有的能力都可用
return List<SwImageDescr>
rest请求inventory/mechosts/{节点ip}
是
结束
上传应用
VNFD-Meta-File-Version: 1.0CSAR-Version: 1.1Created-by: EdgeGalleryEntry-Definitions: Definition/MainServiceTemplate.yamlName: Definition/MainServiceTemplate.yamlContent-Type: VNFDName: Definition/nfv_vnfd_types_v1_0.yamlContent-Type: VNFD
解析mf文件信息获取部署类型appDeployType
遍历每一条传入的应用包信息
syncApplicationPackages
点击确认同步按钮
解析包中的SwImageDesc.json文件List<SwImageDescr>
获取inventory中所有repo
获取MEPM节点port
说明:检索应用包信息
请求https://{mepmIP:mepmPort}/lcmcontroller/v2/tenants/packages/{packageId}DELETE
将所有私有库中不存在的镜像上传上去
查询apppackage表内容
参数:access_tokenapp_package_idtenant_id
apm_db
{ \"appId\": \"99fd10b76176465b849163ec177478b6\
请求地址: /mecm-apm/apm/v1/apps/info/appstores/{appStoreIp}GET
getApplicationTemplateInfo
查询所有租户信息中mechost列表
请求地址:/apm/v1/tenants/{tenant_id}/packages/{app_package_id}DELETE
遍历List<SwImageDescr>
说明:检索应用模板信息
应用部署流程:分为三个流程:1.Start create app instance2.Get configuration from inventory3.Get configuration from inventory
说明:删除应用包
通过市场查应用信息
获取应用市场信息
Get MEC host Configuration from inventory inputparameter=mecHost
存入appPackgeInfo
uploadAndDistributeApplicationPackage
获取主节点匹配的节点信息
否
返回List<MecHostDto>
根据选择的同步商店地址生成同步请求地址https://appstoreip:appstoreport/mec/appstore/v1/apps/{appId}/packages/{packageId}/action/download
请求地址:/apm/v1/tenants/{tenant_id}/packages/{app_package_id}/downloadGET
Update task table in db with app rule info
/mec/appstore/v1/apps/{appId}/packages/{packageId}
调用流程图
Get MEC host Configuration from inventory
转成 List<SwImageDescr>
根据IP删除宿主的应用包数据删除apppackagehost表数据删除appTemplate 表数据
保存传入的scar文件
delete task table in db with success info
说明: 点击分发(分发某个应用到边缘节点)
请求地址: /mecm-inventory/inventory/v1/mechostsGET
请求lcmcontroller模块删除实例
点击从应用市场同步
合并所有能力列表为逗号隔开的字符串
将appRepos信息转成map类型,存入syncAppPkg 的repoInfo中
返回文件流,保存到本地
https://{end-point:end-point-port}/lcmcontroller/v2/tenants/{tanantId}/packages/{packageId}/hosts/{hostIP}
分发应用
appinstanceinfo表 存取应用实例信息appruletask 应用规则信息appotenant appo租户id
部署应用
查询apppackagehost表匹配的所有数据存入appPackageDto中的MecHostInfo
说明:删除某个应用包
请求https://inventory-end-point:inventory-end-port/inventory/v1/mechosts/{hostIP}GET返回mepmIp
appstoreIppackageIdappId
delete task table in db with success info operationType=deleteAppRuleTask
遍历所有节点列表,删除每个节点的已分发的应用
wzhttpds.mfmetadata:app_product_name: wzhttpdsapp_provider_id: Huaweiapp_package_version: v1.0app_release_data_time: 2021-09-07 00:04app_type: containerapp_class: containerapp_package_description: testSource: Artifacts/Deployment/Charts/wzhttpds.tgzAlgorithm: SHA-256Hash: f62a2394a1979a67b4e583da6c0275bf84c44db7f2a9a766ade9822d1b57b17cSource: APPD/MainServiceTemplate.zipAlgorithm: SHA-256Hash: 8f5a075fee186c775f8d2774716c9b34eeb0f75af027c87ae8583be19e6f83b5
/inventory/v1/apprepos
解析scar中的template信息
Get configuration from inventory
返回应用packageId
appo_db
https://appstoreEndPoint/mec/appstore/v1/apps
/inventory/v1/appstore/{appstoreIp}
Update record AppInstanceInfo DB, operationType=update operational_status=Created
vm
返回
参数:access_tokenapp_package_idtenant_idappId
获取MEPM节点IP
Update task table in db with app rule info, operationType=updateAppRuleTask
onboardVmBasedAppPkg
AppPackageDto
更新apppackagehost表信息
请求/inventory/v1/tenants/{tenant_id}/mechosts/{mec_host}/appsPOST
Update record AppInstanceInfo DBoperationType=update
获取inventory对应的IP和PORT
match capability
返回该文件的文件流
获取appstore配置信息
说明: 从应用市场同步
update
创建规则任务信息appruletask
获取某个租户下所有应用包
请求appstore下的应用
rest请求/lcmcontroller/v1/tenants/{tenantid}/packages
syncAppPkgFromAppstoreToMecmRepo
读取解压后的文件TOSCA_VNFD.meta
查询包id对应的包信息是否在数据库中的状态
已存在该包信息,返回状态码设置成failed
获取包中的部署类型
点击分发
1)删除apppackage表信息2)删除appTemplate表信息3)删除apmtenant表数据4)删除apppackagehost表对应信息5)获取应用包全路径,静默删除该文件
更新csar包内容
executeProcessAsync
生成中间参数:AppPackageDto dto,PkgSyncInfo syncAppPkg
/mec/appstore/v1/apps/{appId}/packages/{packageId}/action/download
表:mechostinventory
更新数据库apppackageinfo状态为SYNC_INPROGRESS
获取边缘节点列表
createApplicationInstance
遍历所有应用包下的镜像文件加载进docker
获取该appstore下的应用信息
删除已上传镜像删除已下载镜像删除解压缩的文件目录
参数:accessTokentenantIdappPackageNameappPkgVersionhostList
POST
从TOSCA.meta中读取MainServiceTemplate.zip的路径信息
image/SwImageDesc.json[{\"id\":\"f0d5c355-49ba-448f-8ea1-b34a637fb50f\
Add application instance to inventory
查询apppackageinfo表中tenantid匹配的所有包列表数据
更新分发的节点状态apppackagehost表信息status为Distributed
从appstore下载应用到本地
Update record AppInstanceInfo DB
createHost
1)遍历SwImageDesc.json文件中的镜像信 息,添加swImage2)将修改后的数据写入文件3)获取/Artifacts/Deployment/Charts/路 径下tar结尾的文件4)解压缩,获取其中的values.yaml文件内 容加载到Map结构中5)遍历values.yaml文件中的所以key值 取 得imagelocation后的内容 加入了其他信息,重写该key值对应的数 据再重新压缩该文件到压缩包中6)删除临时目录和values.yaml文件7)再压缩到csar文件
不存在已同步的租户信息,新增一条租户信息(apmtenant)
获取mf文件中的app_class信息为appDeployType
createAppPackageEntryInDb
查询表appTemplate信息
如果应用包images下包含
如果有匹配的应用名
Add application instance to inventory, inventory=application,operType=ADD, status=Created
https://mecmEndPoint/lcmcontroller/v2/tenants/{tenantId}/packages/{packageId}GET
返回所有可同步的packageInfo列表List<PkgSyncInfo>
点击部署
请求地址: /mecm-apm/apm/v1/apps/syncPOST
rest请求/lcmcontroller/{tenantid}/packages/{packageId}
参数:file (CSAR文件包)
start create app instance
获取私有库中没有的镜像列表
更新数据库(新增apppackage表信息)
请求https://inventory-end-point:inventory-end-port/inventory/v1/mepms/{hostIP}GET返回mepmPort
syncAppPackageProcessInput
请求lcmcontorller模块上传应用包
入参
Download Application package
说明:上传应用程序包到指定的hosts中
遍历appPackageDto.getMecHostInfo()中的需要分发的服务器列表
packageId + tenantId = id
获取所有inputs value值
Get input parametersrequestAction =CreateAppInstance
更新数据库,分发docker应用程序镜像到节点
读取mf文件中的app_class
返回List<AppRepo>
通过DockerClient将镜像加载到容器
获取inventory中appStore中所有数据
查询appinstanceinfo匹配租户id
Get input parameters
分发应用到节点(distributeApplication)
Start create app instance
请求地址: /appo/v1/tenants/{tenant_id}/app_instancesPOST
topology_template: node_templates: Simple_VNF: type: tosca.nodes.nfv.VNF properties: vnfd_id: EdgeGallery-positioning-service vnfd_version: v1.0 provider: EdgeGallery product_name: MEC software_version: v1.0.0 product_info_name: vMEC_APP product_info_description: EdgeGallery MEC APP flavour_id: default flavour_description: default flavor ve_vnfm_vnf_enable: false ve_vnfm_em_enable: false
appPackageDto
return 错误信息
getAppImageInfo
删除本地docker镜像
将所有从远仓和本地的镜像上传到mecm-repo
return AppTemplate
createAppPackage
apmtenant表 appo租户idapppackage 存租户下的所有应用信息apppackagehost 应用包与host对应关系apptemplate 应用对应的template信息
通过dockerClient拉取远程镜像
match capabilityutilType=matchCapabilities
应用规则信息
container
应用实例信息
解压缩MainServiceTemplate.zip文件
更新imageDesc信息到SwImageDesc.json写入/Artifacts/Deployment/Charts/下的value.yaml
入库数据库appinstanceinfo
VM
请求https://inventoryIp:inventoryPort/inventory/v1/appreposGET
获取appRuleTaskId更新appruletask表信息
getAllAppRepoConfig
解压,读取Image/SwImageDesc/json文件获取images信息
获取appstore end point
同步不在同步状态的镜像信息到harbor mecm私有库
更新apppackage、apppackagehost数据
入库到apptemplate表
请求地址:/apm/v1/tenants/{tenant_id}/packagesGET
onBoard应用包
删除不存在的包
返回List<AppPackageDto>
删除镜像(deleteAppPkgDockerImages)更新数据库状态(updateDistributionStatusOfAllHost)
删除已分发的应用包
请求地址:/apm/v1/tenants/{tenant_id}/packages/{app_package_id}/hosts/{host_ip}DELETE
查询apppackage表
getMepmCfgOfHost
https://mecmEndPoint/lcmcontroller/v2/tenants/{tenantId}/packagesPOST
返回AppTemplateDto
Check if app package sync info exist in DB.
TOSCA.metaTOSCA-Meta-File-Version: 1.0CSAR-Version: 3.25Created-by: EdgeGalleryEntry-Definitions: APPD/MainServiceTemplate.zip
Set<SyncAppPackageDto>
Get MEPM configuration from inventory
createAppInstance
遍历所有需要同步的应用列表
Get MEPM configuration from inventory ,inputparameter=mepm
请求地址:/apm/v1/tenants/{tenant_id}/packages/upload
参数:app_package_idtenant_id
如果文件中imageDescr.getSwImage() 是tar tgz tar.gz结尾如果应用包中包含镜像文件zip结尾,解压到目录下
请求地址: /mecm/apm/apm/vi/tenants/{tenant_id}/packagesGET
0 条评论
下一页