Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

NetApp Copy and SyncAPI

贡献者 amgrissino

可通过 Web UI 使用的NetApp Copy and Sync功能也可通过 RESTful API 使用。

开始使用

要开始使用复制和同步 API,您需要获取用户令牌和NetApp Console帐户 ID。进行 API 调用时,您需要将令牌和帐户 ID 添加到授权标头。

步骤
  1. 从NetApp Console获取用户令牌。

    POST https://netapp-cloud-account.auth0.com/oauth/token
    Header: Content-Type: application/json
    Body:
    {
                  "username": "<user_email>",
                  "scope": "profile",
                  "audience": "https://api.cloud.netapp.com",
                  "client_id": "UaVhOIXMWQs5i1WdDxauXe5Mqkb34NJQ",
                  "grant_type": "password",
                  "password": "<user_password>"
    }
    备注 如果您使用的是没有客户端 ID 的个人电子邮件帐户,则可以使用默认客户端 ID“QC3AgHk6qdbmC7Yyr82ApBwaaJLwRrNO”。
  2. 获取您的NetApp Console帐户 ID。

    GET https://api.cloudsync.netapp.com/api/accounts
    Headers: Authorization: Bearer <user_token>
    Content-Type: application/json

    此 API 将返回如下响应:

    [
      {
        "accountId": "account-JeL97Ry3",
        "name": "Test"
      }
    ]
  3. 在每个 API 调用的授权标头中添加用户令牌和帐户 ID。

    例子

    以下示例展示了在 Microsoft Azure 中创建数据代理的 API 调用。您只需将 <user_token> 和 <accountId> 替换为您在前面步骤中获得的令牌和 ID。

    POST https://api.cloudsync.netapp.com/api/data-brokers
    Headers: Authorization: Bearer <user_token>
    Content-Type: application/json
    x-account-id: <accountId>
    Body: { "name": "databroker1", "type": "AZURE" }
下一步是什么?

NetApp Console中的用户令牌有一个到期日期。要刷新令牌,您需要再次调用步骤 1 中的 API。

API 响应包含一个“expires_in”字段,用于说明令牌何时过期。

使用列表 API

List API 是异步 API,因此结果不会立即返回(例如: GET /data-brokers/{id}/list-nfs-export-folders`和 `GET /data-brokers/{id}/list-s3-buckets)。来自服务器的唯一响应是 HTTP 状态 202。要获得实际结果,您必须使用 `GET /messages/client`API。

步骤
  1. 调用您想要使用的列表 API。

  2. 使用 `GET /messages/client`API查看操作结果。

  3. 使用相同的 API,并在其后附加您刚刚收到的 ID: GET http://api.cloudsync.netapp.com/api/messages/client?last=<id_from_step_2>

    请注意,每次调用 `GET /messages/client`API。

例子

当你拨打 `list-s3-buckets`API,结果不会立即返回:

GET http://api.cloudsync.netapp.com/api/data-brokers/<data-broker-id>/list-s3-buckets
Headers: Authorization: Bearer <user_token>
Content-Type: application/json
x-account-id: <accountId>

结果是 HTTP 状态代码 202,这意味着消息已被接受,但尚未处理。

要获取操作的结果,需要使用以下API:

GET http://api.cloudsync.netapp.com/api/messages/client
Headers: Authorization: Bearer <user_token>
Content-Type: application/json
x-account-id: <accountId>

结果是一个包含一个 ID 字段的对象的数组。 ID 字段代表服务器发送的最后一条消息。例如:

[
    {
        "header": {
            "requestId": "init",
            "clientId": "init",
            "agentId": "init"
        },
        "payload": {
            "init": {}
        },
        "id": "5801"
    }
]

现在,您可以使用刚刚收到的 ID 进行以下 API 调用:

GET http://api.cloudsync.netapp.com/api/messages/client?last=<id_from_step_2>
Headers: Authorization: Bearer <user_token>
Content-Type: application/json
x-account-id: <accountId>

结果是一组消息。每条消息内部都有一个有效负载对象,它由操作名称(作为键)及其结果(作为值)组成。例如:

[
    {
        "payload": {
            "list-s3-buckets": [
                {
                    "tags": [
                        {
                            "Value": "100$",
                            "Key": "price"
                        }
                    ],
                    "region": {
                        "displayName": "US West (Oregon)",
                        "name": "us-west-2"
                    },
                    "name": "small"
                }
            ]
        },
        "header": {
            "requestId": "f687ac55-2f0c-40e3-9fa6-57fb8c4094a3",
            "clientId": "5beb032f548e6e35f4ed1ba9",
            "agentId": "5bed61f4489fb04e34a9aac6"
        },
        "id": "5802"
    }
]

API 参考

每个复制和同步 API 的文档可从 https://api.cloudsync.netapp.com/docs