虚拟化网络功能包 (VNF 包)¶
虚拟化网络功能包 (VNF 包)¶
管理虚拟化网络功能包 (VNF 包) 及其资源。
VNF 包是一个 tar 归档文件,包含管理 VNF 生命周期所需的所有信息。
创建 VNF 包。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
201 - 已创建 |
资源已创建并准备好使用。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
userDefinedData (可选) |
body |
对象 |
VNF 包的用户自定义数据。 |
请求示例¶
{
"userDefinedData":{
"abc":"xyz"
}
}
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
id |
body |
字符串 |
VNF 包的标识符。此标识符由 NFVO 分配。 |
_links |
body |
对象 |
指向与此资源相关的资源的链接。 |
onboardingState |
body |
字符串 |
VNF 包的入职状态。入职状态由“VnfPkgInfo”信息元素中的“onboardingState”属性表示,具有以下值:CREATED:VNF 包信息对象已创建。UPLOADING:VNF 包正在上传。PROCESSING:VNF 包正在处理中,例如验证。ONBOARDED:VNF 包已成功入职。 |
operationalState |
body |
字符串 |
VNF 包的运行状态。运行状态由“VnfPkgInfo”信息元素中的“operationalState”属性表示,具有以下值:ENABLED:VNF 包已启用。DISABLED:VNF 包已禁用。如果“onboardingState”属性的值不等于“ONBOARDED”,则“operationalState”属性的值应等于“DISABLED”。 |
usageState |
body |
字符串 |
VNF 包的使用状态。使用状态由“VnfPkgInfo”信息元素中的“usageState”属性表示,具有以下值:IN_USE:VNF 包正在使用中。NOT_IN_USE:VNF 包未在使用中。如果“onboardingState”属性的值不等于“ONBOARDED”,则“usageState”属性的值应等于“NOT_IN_USE”。 |
userDefinedData |
body |
对象 |
VNF 包的用户自定义数据。 |
响应示例¶
{
"usageState":"NOT_IN_USE",
"userDefinedData":{
"abc":"xyz"
},
"_links":{
"packageContent":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb/package_content"
},
"self":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb"
},
"vnfd":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb/vnfd"
}
},
"onboardingState":"CREATED",
"operationalState":"DISABLED",
"id":"4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb"
}
列出 VNF 包。
如果响应包含带有“rel”属性设置为“next”的 LINK HTTP 标头(参见 IETF RFC 8288 [1]),API 消费者可以向 LINK 标头中通信的 URI 发送 GET 请求,以获取下一页的结果。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
id |
body |
字符串 |
VNF 包的标识符。此标识符由 NFVO 分配。 |
vnfdId |
body |
字符串 |
此标识符由 VNF 提供商管理,以全局唯一的方式标识 VNF 包和 VNFD。它从入职的 VNF 包的 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
vnfProvider |
body |
字符串 |
VNF 包和 VNFD 的提供商。此信息从 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
vnfProductName |
body |
字符串 |
用于标识 VNF 产品的名称。在 VNF 产品生命周期中保持不变。此信息从 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
vnfSoftwareVersion |
body |
字符串 |
VNF 的软件版本。当 VNF 包中包含的软件发生任何更改时,此版本会更改。此信息从 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
vnfdVersion |
body |
字符串 |
VNFD 的版本。此信息从 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
softwareImages |
body |
数组 |
有关 VNF 包工件(即软件镜像)的信息。在 VNF 包内容入职之前,不应存在此属性。否则,除非根据属性选择器请求排除,否则应存在此属性。 |
onboardingState |
body |
字符串 |
VNF 包的入职状态。入职状态由“VnfPkgInfo”信息元素中的“onboardingState”属性表示,具有以下值:CREATED:VNF 包信息对象已创建。UPLOADING:VNF 包正在上传。PROCESSING:VNF 包正在处理中,例如验证。ONBOARDED:VNF 包已成功入职。 |
operationalState |
body |
字符串 |
VNF 包的运行状态。运行状态由“VnfPkgInfo”信息元素中的“operationalState”属性表示,具有以下值:ENABLED:VNF 包已启用。DISABLED:VNF 包已禁用。如果“onboardingState”属性的值不等于“ONBOARDED”,则“operationalState”属性的值应等于“DISABLED”。 |
usageState |
body |
字符串 |
VNF 包的使用状态。使用状态由“VnfPkgInfo”信息元素中的“usageState”属性表示,具有以下值:IN_USE:VNF 包正在使用中。NOT_IN_USE:VNF 包未在使用中。如果“onboardingState”属性的值不等于“ONBOARDED”,则“usageState”属性的值应等于“NOT_IN_USE”。 |
userDefinedData |
body |
对象 |
VNF 包的用户自定义数据。 |
_links |
body |
对象 |
指向与此资源相关的资源的链接。 |
响应示例¶
{
"vnf_packages":[
{
"vnfSoftwareVersion":"1.0",
"usageState":"NOT_IN_USE",
"vnfProductName":"Sample VNF",
"softwareImages":[
{
"imagePath":"",
"diskFormat":"qcow2",
"userMetadata":{
},
"id":"VirtualStorage",
"size":2,
"name":"VrtualStorage",
"checksum":{
"hash":"932fcae93574e242dc3d772d5235061747dfe537668443a1f0567d893614b464",
"algorithm":"sha-256"
},
"minDisk":2,
"version":"0.5.2",
"provider":"provider",
"minRam":8192,
"containerFormat":"bare"
},
{
"imagePath":"",
"diskFormat":"qcow2",
"userMetadata":{
},
"id":"VDU1",
"size":1,
"name":"Software of VDU1",
"checksum":{
"hash":"932fcae93574e242dc3d772d5235061747dfe537668443a1f0567d893614b464",
"algorithm":"sha-256"
},
"minDisk":1,
"version":"0.5.2",
"provider":"provider",
"minRam":0,
"containerFormat":"bare"
}
],
"vnfProvider":"Test VNF Provider",
"userDefinedData":{
"abc":"xyz"
},
"vnfdId":"b3ab49d6-389d-46f9-8650-d0bf778b5e92",
"_links":{
"packageContent":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb/package_content"
},
"self":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb"
},
"vnfd":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb/vnfd"
}
},
"vnfdVersion":"1.0",
"onboardingState":"ONBOARDED",
"operationalState":"DISABLED",
"id":"4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb"
}
]
}
显示给定 VNF 包的信息。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
vnf_package_id |
路径 |
字符串 |
VNF 包的 UUID。 |
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
id |
body |
字符串 |
VNF 包的标识符。此标识符由 NFVO 分配。 |
vnfdId |
body |
字符串 |
此标识符由 VNF 提供商管理,以全局唯一的方式标识 VNF 包和 VNFD。它从入职的 VNF 包的 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
vnfProvider |
body |
字符串 |
VNF 包和 VNFD 的提供商。此信息从 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
vnfProductName |
body |
字符串 |
用于标识 VNF 产品的名称。在 VNF 产品生命周期中保持不变。此信息从 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
vnfSoftwareVersion |
body |
字符串 |
VNF 的软件版本。当 VNF 包中包含的软件发生任何更改时,此版本会更改。此信息从 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
vnfdVersion |
body |
字符串 |
VNFD 的版本。此信息从 VNFD 复制而来。在 VNF 包内容入职后应存在,否则应不存在。 |
softwareImages |
body |
数组 |
有关 VNF 包工件(即软件镜像)的信息。在 VNF 包内容入职之前,不应存在此属性。否则,除非根据属性选择器请求排除,否则应存在此属性。 |
onboardingState |
body |
字符串 |
VNF 包的入职状态。入职状态由“VnfPkgInfo”信息元素中的“onboardingState”属性表示,具有以下值:CREATED:VNF 包信息对象已创建。UPLOADING:VNF 包正在上传。PROCESSING:VNF 包正在处理中,例如验证。ONBOARDED:VNF 包已成功入职。 |
operationalState |
body |
字符串 |
VNF 包的运行状态。运行状态由“VnfPkgInfo”信息元素中的“operationalState”属性表示,具有以下值:ENABLED:VNF 包已启用。DISABLED:VNF 包已禁用。如果“onboardingState”属性的值不等于“ONBOARDED”,则“operationalState”属性的值应等于“DISABLED”。 |
usageState |
body |
字符串 |
VNF 包的使用状态。使用状态由“VnfPkgInfo”信息元素中的“usageState”属性表示,具有以下值:IN_USE:VNF 包正在使用中。NOT_IN_USE:VNF 包未在使用中。如果“onboardingState”属性的值不等于“ONBOARDED”,则“usageState”属性的值应等于“NOT_IN_USE”。 |
userDefinedData |
body |
对象 |
VNF 包的用户自定义数据。 |
_links |
body |
对象 |
指向与此资源相关的资源的链接。 |
响应示例¶
{
"vnfSoftwareVersion":"1.0",
"usageState":"NOT_IN_USE",
"vnfProductName":"Sample VNF",
"softwareImages":[
{
"imagePath":"",
"diskFormat":"qcow2",
"userMetadata":{
},
"id":"VirtualStorage",
"size":2000000000, // unit for 'size` is always in Bytes
"name":"VrtualStorage",
"checksum":{
"hash":"932fcae93574e242dc3d772d5235061747dfe537668443a1f0567d893614b464",
"algorithm":"sha-256"
},
"minDisk":2000000000, // unit for 'minDisk' is always in Bytes
"version":"0.5.2",
"provider":"provider",
"minRam":8192000000, // unit for 'minRam' is always in Bytes
"containerFormat":"bare"
},
{
"imagePath":"",
"diskFormat":"qcow2",
"userMetadata":{
},
"id":"VDU1",
"size":1000000000,
"name":"Software of VDU1",
"checksum":{
"hash":"932fcae93574e242dc3d772d5235061747dfe537668443a1f0567d893614b464",
"algorithm":"sha-256"
},
"minDisk":1000000000,
"version":"0.5.2",
"provider":"provider",
"minRam":0,
"containerFormat":"bare"
}
],
"vnfProvider":"Test VNF Provider",
"userDefinedData":{
"abc":"xyz"
},
"vnfdId":"b3ab49d6-389d-46f9-8650-d0bf778b5e92",
"_links":{
"packageContent":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb/package_content"
},
"self":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb"
},
"vnfd":{
"href":"/vnfpkgm/v1/vnf_packages/4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb/vnfd"
}
},
"vnfdVersion":"1.0",
"onboardingState":"ONBOARDED",
"operationalState":"DISABLED",
"id":"4e8b9d2c-ecb5-408b-a8ce-8ea0890bacbb"
}
删除给定的 VNF 包。
先决条件
VNF 包的 operationalState 值必须为 DISABLED,并且其 usageState 值必须为 NOT_IN_USE。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
204 - No Content |
服务器已通过删除资源来满足请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
vnf_package_id |
路径 |
字符串 |
VNF 包的 UUID。 |
从内容上传给定的 VNF 包。
注意
有关软件镜像校验和的哈希算法,请参阅 软件镜像校验和的哈希算法 部分以获取更多信息。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
202 - Accepted |
请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
vnf_package_id |
路径 |
字符串 |
VNF 包的 UUID。 |
vnf_package_content |
body |
对象 |
VNF 包是一个 tar 归档文件,包含管理 VNF 生命周期所需的所有信息。HTTP 标头“Content-Type”应设置为“application/zip”。 |
从内容上传给定的 VNF 包。
注意
有关软件镜像校验和的哈希算法,请参阅 软件镜像校验和的哈希算法 部分以获取更多信息。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
202 - Accepted |
请求已被接受处理,但处理尚未完成。响应中包含一个“location”头部,其中包含一个链接以检查请求的进度。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
400 - 请求错误 |
请求中的某些内容无效。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
vnf_package_id |
路径 |
字符串 |
VNF 包的 UUID。 |
addressInformation |
body |
字符串 |
VNF 包内容的地址信息。NFVO 可以使用此地址获取 VNF 包。 |
userName (可选) |
body |
字符串 |
用于身份验证的用户名。如果用户名需要但未通过其他方式配置,则应存在。 |
密码 (可选) |
body |
字符串 |
用于身份验证的密码。如果密码需要但未通过其他方式配置,则应存在。 |
更新 VNF 包的信息。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
vnf_package_id |
路径 |
字符串 |
VNF 包的 UUID。 |
operationalState (可选) |
body |
字符串 |
入职 VNF 包实例的新运行状态值。有效值为“ENABLED”和“DISABLED”。请参阅注释。 |
userDefinedData (可选) |
body |
对象 |
要更新的用户自定义数据。对于现有键,该值将被替换。 |
注意
“operationalState”或“userDefinedData”参数中至少应存在一个。如果 VNF 包未入职,则仅使用“userDefinedData”属性更新现有或添加其他用户自定义数据。如果用户传递了具有完全相同键/值对的现有用户自定义数据,则将返回 400 错误。
请求示例¶
{
"operationalState": "DISABLED",
"userDefinedData": {
"key1": "value1",
"key2": "value2"
}
}
响应参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
operationalState (可选) |
body |
字符串 |
入职 VNF 包实例的运行状态的更新值。 |
userDefinedData (可选) |
body |
对象 |
用户自定义数据的更新值。 |
响应示例¶
{
"operationalState":"DISABLED",
"userDefinedData":{
"abc":"xyz"
}
}
读取已入职的 VNF 包的 VNFD。
VNFD 可以实现为单个文件或多个文件的集合。如果 VNFD 以多个文件的形式实现,则应返回嵌入这些文件的 ZIP 文件。如果 VNFD 以单个文件形式实现,则应返回该文件或嵌入该文件的 ZIP 文件。选择格式由 GET 请求中传递的“Accept”HTTP 标头控制。
如果“Accept”标头仅包含“text/plain”并且 VNFD 以单个文件形式实现,则应返回该文件;否则,应返回错误消息。如果“Accept”标头仅包含“application/zip”,则单个文件或构成 VNFD 的多个文件应嵌入在 ZIP 文件中返回。如果“Accept”标头同时包含“text/plain”和“application/zip”,则 NFVO 可以选择为单个文件 VNFD 返回的格式;对于多文件 VNFD,应返回 ZIP 文件。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
错误¶
代码 |
原因 |
|---|---|
400 - 请求错误 |
请求中的某些内容无效。 |
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
406 - 不可接受 |
不可接受,请求的资源只能生成根据请求中发送的“Accept”标头不可接受的内容。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
500 - 内部服务器错误 |
服务内部出现问题。 通常不应发生这种情况。 如果发生这种情况,则表示服务器遇到了一些严重问题。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
vnf_package_id |
路径 |
字符串 |
VNF 包的 UUID。 |
Accept |
标头 |
字符串 |
如果 VNFD 以多个文件的形式实现,则将返回 zip 文件,Content-Type 设置为 application/zip,否则将在响应标头中设置为 text/plain。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Type |
标头 |
字符串 |
如果 VNFD 以多个文件的形式实现,则将返回 zip 文件,Content-Type 设置为 application/zip,否则将在响应标头中设置为 text/plain。 |
使用 HTTP_RANGE 获取已入职的 VNF 包。
GET 方法获取由 NFVO 分配的 VNF 包标识符标识的 VNF 包的内容。
检查“HTTP_RANGE”标头是否具有有效值。如果存在且有效,则获取该范围内的包内容。如果不存在,则获取整个内容。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
206 - 部分内容 |
部分内容,服务器已满足资源的局部 GET 请求。 |
错误¶
代码 |
原因 |
|---|---|
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
416 - 请求范围不满足 |
请求范围不满足,如果请求包含 Range 请求标头字段,并且此字段中的任何范围说明符都不与所选资源的当前范围重叠,并且请求未包含 If-Range 请求标头字段,则服务器应返回带有此状态代码的响应。 |
500 - 内部服务器错误 |
服务内部出现问题。 通常不应发生这种情况。 如果发生这种情况,则表示服务器遇到了一些严重问题。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
vnf_package_id |
路径 |
字符串 |
VNF 包的 UUID。 |
Accept |
标头 |
字符串 |
获取的 VNF 包将在响应标头中以 Content-Type 设置为 application/zip 的形式返回。 |
Range (可选) |
标头 |
字符串 |
要在下载的 VNF 包的字节范围在 Range 标头中指定。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Type |
标头 |
字符串 |
获取的 VNF 包将在响应标头中以 Content-Type 设置为 application/zip 的形式返回。 |
使用 HTTP_RANGE 获取已入职的 VNF 包工件。
GET 方法获取 VNF 包中的工件内容。
检查“HTTP_RANGE”标头是否具有有效值。如果存在且有效,则获取该范围内的工件内容。如果不存在,则获取整个内容。
响应代码¶
成功¶
代码 |
原因 |
|---|---|
200 - 正常 |
请求成功。 |
206 - 部分内容 |
部分内容,服务器已满足资源的局部 GET 请求。 |
错误¶
代码 |
原因 |
|---|---|
401 - 未授权 |
用户必须在发出请求之前进行身份验证。 |
403 - 禁止 |
策略不允许当前用户执行此操作。 |
404 - Not Found |
找不到请求的资源。 |
409 - Conflict |
此操作与此资源的另一个操作冲突。 |
416 - 请求范围不满足 |
请求范围不满足,如果请求包含 Range 请求标头字段,并且此字段中的任何范围说明符都不与所选资源的当前范围重叠,并且请求未包含 If-Range 请求标头字段,则服务器应返回带有此状态代码的响应。 |
请求参数¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
vnf_package_id |
路径 |
字符串 |
VNF 包的 UUID。 |
artifact_path |
路径 |
字符串 |
VNF 包中工件文件的路径。 |
Accept |
标头 |
字符串 |
根据工件文件扩展名,它会自动设置为响应标头中的相应 Mime-Type。找不到相应的 Mime-Type 时,设置为 application/octet-stream。 |
Range (可选) |
标头 |
字符串 |
要在下载的 VNF 包的字节范围在 Range 标头中指定。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
Content-Type |
标头 |
字符串 |
根据工件文件扩展名,它会自动设置为响应标头中的相应 Mime-Type。找不到相应的 Mime-Type 时,设置为 application/octet-stream。 |
参考¶
软件镜像校验和的哈希算法¶
在 VNF 包的 VNF 描述符中添加软件镜像时,建议使用 ETSI_GS_NFV_SOL_004 中定义的 algorithm,并且它还必须与 Glance 服务设置的 hashing_algorithm 配置选项匹配,否则在 VNF 实例化期间将无法验证校验和。Glance 服务中配置的默认 hashing_algorithm 是 sha512,并且操作员可以使用以下任何算法覆盖默认值:sha3_384、sha224、md5、sha512、blake2b、sha3_512、blake2s、sha384、sha1、shake_256、sha256、shake_128 和 sha3_256。