更新时间:2024-03-05 GMT+08:00
分享

添加共享访问规则

功能介绍

共享规则添加。

  • 该接口为异步接口,返回为200只是表示接口下发接收成功,后续可以通过查询共享访问规则接口,判断添加共享访问规则是否完成以及是否成功。
  • API的microversions从2.28到2.42版本,支持添加共享访问规则时忽略已存在的访问规则的错误状态。API的microversions通过请求头的X-Openstack-Manila-Api-Version参数指定。

URI

  • POST /v2/{project_id}/shares/{share_id}/action?vpc_ip_base_acl={vpc_ip_base_acl}
  • 参数说明

    参数

    是否必选

    参数类型

    描述

    share_id

    String

    共享的ID。

    project_id

    String

    操作用户的项目ID,获取方法请参见获取项目ID

    vpc_ip_base_acl

    String

    IP地址授权场景的标识符,当前可用值只有enable。值为enable时,表示创建IP地址授权场景的共享访问规则。

    须知:

    为了兼容性,当不设置该参数,或者设置了该参数但是值不为enable时,仍然可以使用接口创建IP地址授权场景的共享访问规则,但是,这种方式已废弃,且后续不再维护。

请求消息头

该操作消息头与普通请求一样,请参见表3

请求消息

  • 参数说明

    参数

    是否必选

    参数类型

    描述

    os-allow_access

    Object

    os-allow_access对象。

    当API的版本号在1.0-2.6之间时,请求体中JSON格式的body体中顶层参数使用"os-"前缀。如果需要使用的API版本大于2.6,则需要去掉"os-"前缀。

  • os-allow_access字段说明:

    参数

    是否必选

    参数类型

    描述

    access_level

    String

    共享访问的权限级别,取值为ro(只读),rw(读写)。默认为rw(读写)。

    access_type

    String

    访问存储的方式。

    • NFS协议文件共享只支持cert,
    • 多协议文件共享支持cert。

    说明

    1. 取值为user,指以用户名的方式访问存储,
    2. 取值为cert,指以VPCid+IP的方式访问存储。

    access_to

    String

    定义访问规则的值。根据场景取值:

    如果access_type为user,则取值为AK。

    如果access_type为cert:
    1. 按照VPC授权的场景,填写VPCID。
    2. 按照IP地址授权的场景进行填写:
      • 如果是NFS共享,填写格式为“VPCID#IP#优先级#用户权限”,其中VPCID、IP、优先级和用户权限字段之间使用“#”分隔,例如“0157b53f-4974-4e80-91c9-098532bcaf00#2.2.2.2/16#100#all_squash,root_squash”。。

    如果是多协议共享,填写格式为“#协议类型#访问存储的方式# VPCID#IP#优先级#用户权限”,例如“#NFS#IP#07207b50-61b4-4e40-b272-e5433105c2d0#1.1.1.1#1#no_all_squash,no_root_squash”

    说明:

    VPCID、IP、优先级和用户权限的说明与限制:

    • VPCID:VPC的ID。
    • IP:ECS主网口上的租户IPv4地址或IPv4地址段。一条规则只支持设置一个IPv4地址或IPv4地址段,使用掩码形式表示一个地址段,如192.168.1.0-192.168.1.255的地址段的格式为192.168.1.0/24,不支持192.168.1.0-255等其他地址段表示形式。输入的IPv4地址/地址段必须合法,且不能为除0.0.0.0/0以外之前0开头的IP地址或地址段,其中当设置为0.0.0.0/0时表示VPC内的任意IP。同时,不能为127以及224~255开头的IP地址或地址段,例如127.0.0.1,224.0.0.1,255.255.255.255,其中以224-239开头的IP地址或地址段是属于D类地址,用于组播;以240-255开头的IP地址或地址段属于E类地址,用于研究。使用非合法的IP或IP地址段可能会导致添加访问规则失败或者添加的访问规则无法生效。
    • 优先级:共享访问规则的优先级。优先级只能是0-100的整数。0表示优先级最高,100表示优先级最低。同一VPC内挂载时会优先使用该优先级高的IP地址/地址段所拥有的权限,存在相同优先级时会随机匹配其中一个IP地址/地址段。例如:用户在执行挂载操作时的IP地址为10.1.1.32,而在已经授权的IP地址/地址段中10.1.1.32(读写)和10.1.1.0/24(只读)均符合要求,则此时会先使用两个地址/地址段中优先级较高的权限。
    • 用户权限:格式为“allSquash,rootSquash”。allSquash和rootSquash之间的权限设置用“,”分割。allSquash的取值为“all_squash”或“no_all_squash”,rootSquash的取值包括"root_squash"或"no_root_squash"。
    须知:
    • 创建IP地址授权的场景的共享访问规则时,API的microversions需要是2.28以及之后的版本,且需要在请求URL中添加vpc_ip_base_acl参数,详细请参考下述的请求样例(按照IP地址授权的场景)。
    • 属于VPC A中的弹性云服务器IP地址可以被成功添加至VPC B的授权IP地址内,但该云服务器无法挂载属于VPC B下的文件系统。弹性云服务器和文件系统所使用的VPC需为同一个。
  • 请求样例(按照IP地址授权的场景)

    POST /v2/{project_id}/shares/{share_id}/action?vpc_ip_base_acl=enable

    NFS共享:添加共享访问规则,共享访问的权限级别为读写,以VPCid+IP的方式访问存储,访问规则的值为“0560a527-0e77-40a6-aa3b-110beecad368#127.0.0.1#1#all_squash,root_squash”。

    { 
        "allow_access": { 
            "access_to": "0560a527-0e77-40a6-aa3b-110beecad368#127.0.0.1#1#all_squash,root_squash", 
            "access_type": "cert", 
            "access_level": "rw" 
        } 
    }

    创建IP地址授权场景的共享访问规则时:

    1. 请求头需要指定X-Openstack-Manila-Api-Version参数,且X-Openstack-Manila-Api-Version的值需要为2.28到2.42之间的版本。

    2. 需要在请求URL中添加vpc_ip_base_acl参数且vpc_ip_base_acl的值需设置为enable。为了兼容性,当不设置该参数,或者设置了该参数但是值不为enable时,仍然可以使用接口创建IP地址授权场景的共享访问规则,但是,这种方式已废弃,且后续不再维护。

响应消息

  • 参数说明

    参数

    参数类型

    描述

    access

    Object

    access对象,如果共享访问规则未更新,这个值为null。

  • access字段说明:

    参数

    参数类型

    描述

    share_id

    String

    添加访问规则共享的ID。

    access_type

    String

    共享访问规则类型。

    access_to

    String

    后端允许或拒绝访问的对象。

    access_level

    String

    共享访问规则级别。

    id

    String

    共享访问规则的ID。

    state

    String

    共享访问规则的状态。API版本在2.28之前,共享访问规则的状态为new, active,或者error;在2.28到2.42之后的版本,共享访问规则的状态为queued_to_apply,applying, active, error, queued_to_deny或者 denying。

    access_key

    String

    访问规则的访问凭据。请求消息头指定的X-Openstack-Manila-Api-Version的值大于等于2.21到2.42时,该字段才存在。

  • 响应样例

    NFS共享:

    {
        "access":{
            "access_key":null,
            "share_id":"7ec1115f-518b-40ff-a998-5599ce2da332",
            "access_type":"cert",
            "access_to":"0560a527-0e77-40a6-aa3b-110beecad368#0.0.0.0/0#1#all_squash,root_squash",
            "access_level":"rw",
            "state":"queued_to_apply",
            "id":"24615391-d58d-4a74-ac5a-520233c9c396",
        }
    }

状态码

  • 正常

    200

  • 异常

    状态码

    说明

    400 Bad Request

    服务器未能处理请求。

    401 Unauthorized

    被请求的页面需要用户名和密码。

    403 Forbidden

    对被请求页面的访问被禁止。

    404 Not Found

    服务器无法找到被请求的页面。

    405 Method Not Allowed

    请求中指定的方法不被允许。

    406 Not Acceptable

    服务器生成的响应无法被客户端所接受。

    407 Proxy Authentication Required

    用户必须首先使用代理服务器进行验证,这样请求才会被处理。

    408 Request Timeout

    请求超出了服务器的等待时间。

    409 Conflict

    由于冲突,请求无法被完成。

    500 Internal Server Error

    请求未完成。服务异常。

    501 Not Implemented

    请求未完成。服务器不支持所请求的功能。

    502 Bad Gateway

    请求未完成。服务器从上游服务器收到一个无效的响应。

    503 Service Unavailable

    请求未完成。系统暂时异常。

    504 Gateway Timeout

    网关超时。

相关文档