云服务器内容精选

  • 管理实现创建服务实例流程 单击管理,会根据服务目录接口返回以下内容弹出服务创建需要界面输入的客户端ID和客户端密钥信息: { "service_instance": { "create": { "parameters": { "properties": { "client_id": { "description": "客户端ID", "type": "string" }, "client_secret": { "description": "客户端密钥", "type": "password" } }, "required": [ "client_id", "client_secret" ], "type": "object" } } } } 服务实例创建失败 服务实例创建后,会根据服务实例最新操作信息接口查询进展,返回创建失败state为falied,则提示如下。 服务实例创建成功 服务实例创建成功后,会根据服务实例最新操作信息接口查询进展,进展完成state为succeeded,则展示服务实例信息接口展示创建成功信息,成功页面主要根据 服务实例信息接口返回的metadata内容及展示图如下: { "metadata": { "display": [ { "description": "安装包名称", "type": "string", "value": "$lk__RomaConnectAdaptorDeploy_a" }, { "description": "状态", "type": "string", "value": "已部署" } ] } } 父主题: 以AstroZero为例的Service Broker接入样例
  • 自定义来源新增 新增商品类型为AstroZero应用的broker来源。 同时以AstroZero为例开发Service Broker接口Demo,提供以下接口进行接口配置: 1)认证凭据 URL POST /baas/auth/v1.0/oauth2/token Headers示例 Content-Type:application/x-www-form-urlencoded 请求示例 { "grant_type": "client_credentials", "client_id": "", "client_secret": "" } 响应示例 { "access_token": "", "expires_in": 3600, "token_type": "Bearer" } 配置图片 认证凭据携带说明:调用服务目录等其他接口时,会取鉴权接口的Body出差中的access_token,放入Header中access-token中,来建立鉴权。 2)服务目录 URL GET /service/CP_DS__AstroZeroBrokerDemo/1.0.0/catalog 请求示例 无 响应示例 { "services": [ { "allow_context_updates": false, "bindable": false, "bindings_retrievable": false, "description": "", "id": "$CP_DS__AstroZeroBrokerDemo_b", "instances_retrievable": false, "name": "$CP_DS__AstroZeroBrokerDemo_b", "plan_updateable": false, "plans": [ { "bindable": false, "description": "", "free": true, "id": "003M000000ppqFT7kFRQ", "name": "CP_DS__AstroZeroBrokerDemo-0.0.9__svc", "plan_updateable": false, "schemas": { "service_binding": null, "service_instance": { "create": { "parameters": { "properties": { "client_id": { "description": "客户端ID", // 创建时需要界面输入入参 "type": "string" }, "client_secret": { "description": "客户端密钥", // 创建时需要界面输入入参 "type": "password" } }, "required": [ "client_id", "client_secret" ], "type": "object" } } } } } ] } ] } 配置图片 3)服务创建 URL PUT /service/CP_DS__AstroZeroBrokerDemo/1.0.0/service_instances/{instance_id} 请求示例 { "context": "string", "maintenance_info": {}, "parameters": { "client_id": "", "client_secret": "" }, "plan_id": "string", "service_id": "string" } 响应示例 { "metadata": { "display": [ { "description": "", "type": "string", "value": "" } ] }, "parameters": { "client_id": "string", "client_secret": "string" } } 配置图片 4)服务实例信息 URL GET /service/CP_DS__AstroZeroBrokerDemo/1.0.0/service_instances/{instance_id} 请求示例 { "plan_id": "string", "service_id": "string" } 响应示例 { "description": "", "instance_usable": false, "state": "", "update_repeatable": false } 5)服务实例信息最新操作 URL GET /service/CP_DS__AstroZeroBrokerDemo/1.0.0/service_instances/{instance_id}/last_operation 请求示例 { "plan_id": "string", "service_id": "string", "operation": "string" } 响应示例 { "description": "string", "instance_usable": false, "state": "string", "update_repeatable": false } 父主题: 以AstroZero为例的Service Broker接入样例
  • 自定义来源接口配置 认证凭据配置(必需)。 详情接口说明参考认证凭据(必需)。 服务目录配置(必需)。 详情接口说明参考服务目录(必需)。 请求地址:用户自定义请求地址,接口类型默认为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务实例创建配置。 详情接口说明参考服务实例创建。 请求地址:用户自定义请求地址,接口类型需为PUT,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务实例绑定配置。 详情接口说明参考服务绑定。 请求地址:用户自定义请求地址,接口类型需为PUT,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务实例信息配置。 详情接口说明参考服务实例信息。 请求地址:用户自定义请求地址,接口类型需为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务绑定信息配置。 详情接口说明参考服务绑定信息。 请求地址:用户自定义请求地址,接口类型需为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务实例最新操作信息。 详情接口说明参考服务实例最新操作信息。 请求地址:用户自定义请求地址,接口类型需为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务绑定最新操作信息 详情接口说明参考服务绑定最新操作信息。 请求地址:用户自定义请求地址,接口类型需为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 父主题: 配置流程
  • 请求消息体 字段名称 类型 必填 说明 instance_id string 是 服务实例ID,全局唯一,当前使用商品实例ID或者用户输入的固定值。 binding_id string 是 绑定ID,同一服务实例下绑定ID不允许重复。 service_id string 否 服务目录中的服务ID,Exchange商品关联的服务。 plan_id string 否 服务目录中的服务计划ID,Exchange商品关联的服务计划。 operation string 否 操作。
  • 响应消息体 字段名称 类型 必填 说明 state string 是 有效值包括:in progress,succeeded,failed,分别对应进行中、操作成功、操作失败,对于进行中的可以继续轮询,其他情况则停止轮询。 description string 否 操作状态的详细信息。 instance_usable boolean 否 服务实例是否可用,主要适用于升级和注销操作的场景。 update_repeatable boolean 否 是否可重复升级,主要适用于升级失败的场景。
  • 响应消息体 字段名称 类型 必填 说明 metadata ServiceBindingMetadata 否 与Exchange页面交互信息。 credentials JSONObject 否 帐号信息。 服务绑定元数据ServiceBindingMetadata 字段名称 类型 必填 说明 expires_at string 否 绑定到期时间,使用ISO 8601格式,形如yyyy-mm-ddThh:mm:ss.ssZ
  • 请求消息体 字段名称 类型 必填 说明 instance_id string 是 服务实例ID,全局唯一,当前使用商品实例ID或者用户输入的固定值。 binding_id string 是 绑定ID,同一服务实例下绑定ID不允许重复。 service_id string 是 服务目录中的服务ID,Exchange商品关联的服务。 plan_id string 是 服务目录中的服务计划ID,Exchange商品关联的服务计划。
  • 响应消息体 字段名称 类型 必填 说明 dashboard_url string 否 服务实例对应仪表板地址。 operation string 否 对于异步操作,返回对应异步操作在第三方系统中的唯一标识,该标识可以作为参数在服务实例最新操作信息接口使用。 parameters JSONObject 否 交互界面用户填写的信息。 metadata ServiceInstanceMetadata 否 与Exchange页面交互信息。 ServiceInstanceMetadata 字段名称 类型 必填 说明 display Display[] 否 服务创建后页面展示内容。 接入点信息Display 字段名称 类型 必填 说明 description string 是 展示描述。 value string 是 展示信息。 tyue string 是 展示类型(string/number/password)。
  • 请求消息体 字段名称 类型 必填 说明 instance_id string 是 服务实例ID,全局唯一,当前使用商品实例ID或者用户输入的固定值。 binding_id string 是 绑定ID,同一服务实例下绑定ID不允许重复。 service_id string 是 服务目录中的服务ID,Exchange商品关联的服务。 plan_id string 是 服务目录中的服务计划ID,Exchange商品关联的服务计划。 parameters JSONObject 否 界面输入信息。
  • 响应消息体 字段名称 类型 必填 说明 dashboard_url string 否 服务实例对应仪表板地址。 operation string 否 对于异步操作,返回对应异步操作在第三方系统中的唯一标识,该标识可以作为参数在服务实例最新操作信息接口使用。 metadata ServiceInstanceMetadata 否 服务实例后与Exchange页面交互信息。 ServiceInstanceMetadata 字段名称 类型 必填 说明 display Display[] 否 服务创建后页面展示内容。 接入点信息Display 字段名称 类型 必填 说明 description string 是 展示描述。 value string 是 展示信息。 tyue string 是 展示类型(string/number/password)。
  • Service Broker介绍 Exchange默认提供一个支持资产通过Service Broker方式接入的适配层,接入方按照既定的接口规范完成接口开发,填写对应的接口信息就可以完成接入,而不需要开发单独的适配器包,每一个新的Service Broker接入对应到一个Service Broker适配器来源。 ROMA Exchange接入Service Broker整体设计如下: 接入Service Broker,主要包括三部分: 1. 系统鉴权,获取与对端系统建立连接时所携带的认证凭据信息。 2. 资产发布时,对端系统需为ROMA Exchange提供服务目录(Catalog)、服务(Service)和服务套餐(Plan)的描述信息,以及服务实例创建更新和服务绑定交互等信息。 3. 订阅实例时,ROMA Exchange通知对端系统去创建服务实例(Service Instance )以及建立服务实例与应用的绑定(Service Binding)。 父主题: 概述
  • 请求消息体 表2 请求消息体参数说明 参数说明 数据类型 必选/可选 描述 id String M - 3、判断用户关联的适配器来源是否授权 POST /service/CP_DS__DigitalStoreService/1.0.1/asset-sources/auth-judge/{id} 查询用户关联的适配器来源,在CP_DS__AssetSourceAttribute表中subjectType为“User”的attributes值是否为空,不为空标识已经授权(true),反之,未授权(false)。 响应消息体 参数说明 数据类型 必选/可选 描述 isAuth Boolean M 是否授权
  • 响应消息体 参数说明 数据类型 必选/可选 描述 sources Source[] M 适配器 count Number M 来源总数 Source结构体 参数说明 数据类型 必选/可选 描述 id String M 来源ID name String M 来源名称 description String O 来源描述 adapterParams String M 适配器的页面参数 configParams String M 适配器来源的配置参数 lastModifiedDate DateTime O 最后修改时间 authorized Number M 授权状态 1-授权 0-未授权 2、取消授权 POST /service/CP_DS__DigitalStoreService/1.0.1/asset-sources/cancel-auth 接口用于查询适配器来源是否已经被发布使用或存在订阅实例,如果被发布使用,不能取消授权。 取消授权操作是将CP_DS__AssetSourceAttribute表中subjectType为“User”的attributes值清空。
  • 数据接口 接口详情请参考第五章节《接口和样式参考.docx》 1、createSourceAttribute 接口用于存储资产来源属性:资产上架页,订购页都可能用,比如Astro轻应用资产上架页用于存储用户鉴权信息。 2、querySourceAttribute 接口用于用户查询来源属性值,资产上架页,订阅页都可能用。 3、filterSourceAttribute 资产上架过滤已被使用的来源属性:以Astro轻应用资产为例,因为不允许同一个资产对象多次被上架,此接口用于过滤已被上架过的资产对象,资产上架页调用。 4、querySubscriptionSourceAttribute 接口用于业务用户根据订阅实例号查询商品和用户属性,订阅页调用,查询订阅自定义属性。同时对订阅实例号与当前用户信息进行校验 5、notifySubscriptionStatus 接口用于适配器通知订阅实例状态,订阅页调用。 变更:为适配多来源底座,在通知订阅状态时,新增sourceId参数作为某一来源下的订阅实例状态,用于区分多来源部署状态划分。 6、recordLog 记录接口日志及操作日志。 7、uploadOBSObject 存入OBS对象,适用于ServiceStage类来源部署时,存入私仓中。 8、downloadOBSObject 获取OBS对象,适用于ServiceStage类来源发布时,从私仓中下载。 9、createOBSBucket 创建OBS桶,适用于serviceStage类安装时使用,创建的OBS桶信息存储进用户级来源属性信息内,每次进行安装时,校验当前用户当前来源下的‘User’级属性信息内是否存在桶信息,存在则直接使用,不存在则创建OBS桶,将桶信息存储进当前来源User级来源属性信息内。 10、fileDownload 附件下载接口,屏蔽基线接口校验,直接从租户公仓下载资源。 11、交互脚本(用于资产管理各个阶段调用适配器逻辑) 命名规范:适配器名称__Interaction 注意:交互脚本命名取适配器命名,否则在安装适配器时无法自动获取脚本脚本,需手动添加适配器交互脚本数据。 格式定义参考: ①提交资产上架申请 exportfunction submitAsset(sourceAttributes:object, sourceId:string):void{ // 实现资产上架时校验或其他操作 } ② 撤销/驳回资产上架申请 exportfunction cancelAsset(sourceAttributes:object, sourceId:string): void{ // 实现资产上架驳回时校验或其他操作 } ③ 资产下架成功 exportfunction unshelfAsset(sourceAttributes:object, sourceId:string): void{ // 实现资产下架成功时校验或其他操作 } ④ 资产上架申请成功 exportfunction submitAssetSuccess(sourceAttributes:object, sourceId:string, subjectId:string): object{ //实现资产上架申请成功是需要触发的操作,新增入参subjectId为来源用户,因审批人发生变更,无法获取发布者信息,故添加入参。 } ⑤资产提交订阅申请 exportfunction subscribeAsset(sourceAttributes:object, sourceId:string): void{ // 资产提交订阅申请时校验或其他操作 } ⑥ 撤销/驳回资产订阅申请 exportfunction cancelSubscribeAsset(sourceAttributes:object, sourceId:string): void{ //撤销/驳回资产订阅申请时校验或其他操作 } ⑦删除资产申请 exportfunction deleteAsset(sourceAttributes:object, sourceId:string):void{ // 实现资产删除时删除相关附件或其他操作 } 交互脚本方法存在返回值时,根据业务需要在基线触发交互处,接收返回数据,并进行处理操作。 7,基线触发脚本:CP_DS__offeringPublishApplication 交互方式: //调用适配器交互方法 const reservedField2 = dataParse['offering']['reservedField2']; const sourceAttributes = dataParse['sourceAttributes']; if(reservedField2 && sourceAttributes){ const sources =newQueryAssetSourcesList().run({ id: reservedField2 }).sources; if(sources.length ==0){ throw new I18nError('CP_DS__NotFoundSource'); } const interactionScript = sources[0].interactionScript; if(interactionScript &&Object.keys(require(interactionScript)).indexOf('submitAssetSuccess')!=-1){ const sourceAttributesTmpl =require(interactionScript).submitAssetSuccess(sourceAttributes, reservedField2, owner); if(sourceAttributesTmpl){ dataParse['sourceAttributes']= sourceAttributesTmpl; } } } 此交互方式触发的适配器方法为submitAssetSuccess,并使用了该方法的返回值,回写进dataParse['sourceAttributes']。其余方法的触发调用与此类似,只需要变更需要触发的方法名称即可。 父主题: 后台
  • 页面交互事件 适配器与Roma Exchange框架有多次交互,主要通过PostMessage和AddEventListener接口实现数据通信。对于适配器页面来说,有多次发送消息事件和接收消息事件,其中每次发送数据之后,ROMA Exchange都会根据监听到的事件名触发对应的动作。 以Astro轻应用适配器的资产对象选择页为例,五次发送消息事件和一次接收消息事件分别介绍如下: 触发数据传输事件 发布者在资产发布页单击资产对象时,适配器资产对象选择页需要获取ROMA Exchange框架传来的“资产来源标识(sourceId)”、“资产来源参数(sourceAttributes)”。 其中,“资产来源标识”用来调接口获取资产对象数据;“资产来源参数”包含了从草稿中获取的数据,用于数据回显;“地址信息”包含了适配器鉴权页的跳转地址,用于未授权情况下的页面跳转。 因此,适配器需执行触发动作给ROMA Exchange,ROMA Exchange监听到该事件时,就会触发数据传递动作。 代码示例: created () { let eventObj = { eventName: 'PARENT_EVENT' params: { message: 'loading' } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 传递页面高度数据 资产对象选择页渲染前,会传递一个页面高度和宽度的数据给ROMA Exchange框架,用以调整弹窗的高度和宽度。 代码示例: mounted () { let div = document.getElementById("***AdaptorConfigWidget"); let eventObj = { eventName: 'PAGELOAD_EVENT', params: { height: div.offsetHeight, width: div.offsetWidth } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 确定事件后传递数据 选择资产对象之后单击确认按钮,适配器会给ROMA Exchange框架传递选择的资产对象数据 代码示例: confirmFun () { let eventObj = { eventName: 'CONFIRM_EVENT', params: { sourceAttributes:{ items: this.items, sourceId: this.sourceId, assetData***: this.assetData*** } } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 取消事件后传递信息 单击取消按钮后,适配器会给ROMA Exchange上架框架传递信息,以提示框架进行弹窗关闭操作。 代码示例: cancelFun () { let eventObj = { eventName: 'CONCEL_EVENT', params: { message: 'Cancel!' } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 传递提示信息 当有警示信息或者异常情况时,适配器会传递提示信息给外层框架,以在外层展示提示信息。 代码示例; messageFun () { let eventObj = { eventName: 'MESSAGE_EVENT', params: { message: 'Warning!' } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 接收数据 在触发事件传输事件之后,ROMA Exchange会传递资产来源的相关数据给适配器。 代码示例; created() { const DICT = { DATA_EVENT: dataFun, } function dataFun (e) { this.sourceId = e.sourceId } window.addEventListener("message", function (e) { var event = JSON.parse(e.data) DICT[event.eventName](event.params) }) }, 因此,适配器中资产对象选择页需要约定以下几个事件: 页面事件类型 事件名称 事件解释 Item消息发送事件 PARENT_EVENT 触发数据传输 PAGELOAD_EVENT 发送高度 CONFIRM_EVENT 确定 CANCEL_EVENT 取消 MESSAGE_EVENT 提示消息 Item消息接收事件 DATA_EVENT 接收数据 其他页面可以根据需求选择事件,但是事件名称应与上表中的一致。 父主题: 前台