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