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