Save Storage Policy

根据存储策略ID,更新并保存指定存储策略的配置信息,包括数据存储时长、和存储策略中配置的模型测点信息。

注解

为避免系统资源不足和系统不稳定的问题,更新存储时长的接口在 2.3 CU5 之后暂不可用,如需变更,请联系系统管理员。

请求格式

POST https://{apigw-address}/tsdb-policy/v2.0/policies/{policyId}

请求参数(URI)

名称 位置(Path/Query) 必需/可选 数据类型 描述
policyId Path 必需 String 存储策略ID,可通过 EnOS管理门户 > 时序数据管理 > 存储策略 页面获取指定存储类型的存储策略ID。
orgId Query 必需 String 资产所属的组织ID。如何获取orgId信息>>

请求参数(Body)

名称 必需/可选 数据类型 描述
retention 可选,若模型测点已配置存储时长,此参数为可选。 String 数据存储时长,1M 表示一个月,1y 表示一年。所有可选值有:1M3M6M1y2y3y5y10y15y20y
models 必需 List<JSONObject> 模型测点集合。详见 模型测点结构体

模型测点结构体

名称 必需/可选 数据类型 描述
modelId 必需 String 模型ID。
points 必需 List<JSONObject> 模型中需配置存储策略的测点列表。

错误码

有关错误码的描述,参见 通用错误码

示例

请求示例

url: https://{apigw-address}/tsdb-policy/v2.0/policies/yourPolicyId

method: POST

requestBody:
{
   "models": [
      {
         "modelId": "yourModelId1",
         "points": [
            "yourPointId1",
            "yourPointId2"
         ]
      },
      {
         "modelId": "yourModelId2",
         "points": [
            "yourPointId3",
            "yourPointId4"
         ]
      }
   ],
   "retention": "6M"
}

返回示例

{
  "code": 0,
  "msg": "OK",
  "data": null
}

Java SDK调用示例

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envision.apim.poseidon.request.PoseidonRequest;

public class Sample {
    private static final String API_GATEWAY_URL = "https://{apigw-address}";

    private static class Request extends PoseidonRequest {

        public void setBodyParams(String key, Object value) {
            bodyParams().put(key, value);
        }

        public void setMethod(String method) {
            this.method = method;
        }

        private String method;

        @Override
        public String baseUri() {
            return "";
        }

        @Override
        public String method() {
            return method;
        }
    }

    public static void main(String[] args) {
         Poseidon poseidon = Poseidon.config(
                 PConfig.init()
                         .appKey("AccessKey of your APP")
                         .appSecret("SecretKey of your APP")
         ).method("POST") .header("Content-Type", "application/json");
        Request request = new Request();

        JSONArray models = new JSONArray();
        JSONObject model1 = new JSONObject();
        model1.put("modelId", "yourModelId1");
        model1.put("points", new String[]{"yourPointId1", "yourPointId2"});
        JSONObject model2 = new JSONObject();
        model2.put("modelId", "yourModelId2");
        model2.put("points", new String[]{"yourPointId1", "yourPointId2"});
        models.add(model1);
        models.add(model2);

        request.setBodyParams("models", models);
        request.setBodyParams("retention", "6M");

        String policyId = "yourPolicyId";
        JSONObject resp = poseidon.url(APIM_BASE_URL + "/tsdb-policy/v2.0/policies/" + policyId)
                .queryParam("orgId", "yourOrgId")
                .getResponse(request, JSONObject.class);

        System.out.println(resp);
    }
}