From d3a5abec71f2ddefc4fe9c8cd9bb0aaad8b5db80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Elek?= Date: Sat, 29 Jun 2019 01:18:28 +0200 Subject: [PATCH] HDDS-1668. Add liveness probe to the example k8s resources files --- .../src/main/k8s/definitions/ozone/om-ss.yaml | 13 ++-- .../main/k8s/definitions/ozone/s3g-ss.yaml | 5 ++ .../main/k8s/definitions/ozone/scm-ss.yaml | 4 ++ .../minikube/datanode-statefulset.yaml | 6 +- .../k8s/examples/minikube/om-statefulset.yaml | 28 +++----- .../examples/minikube/s3g-statefulset.yaml | 11 +++- .../examples/minikube/scm-statefulset.yaml | 16 +++-- .../main/k8s/examples/ozone-csi/Flekszible | 1 + .../ozone-csi/datanode-daemonset.yaml | 10 ++- .../examples/ozone-csi/datanode-service.yaml | 28 ++++++++ .../ozone-csi/datanode-statefulset.yaml | 66 +++++++++++++++++++ .../examples/ozone-csi/om-statefulset.yaml | 30 ++++----- .../examples/ozone-csi/s3g-statefulset.yaml | 12 ++-- .../examples/ozone-csi/scm-statefulset.yaml | 18 +++-- .../ozone-dev/datanode-statefulset.yaml | 6 +- .../examples/ozone-dev/om-statefulset.yaml | 28 +++----- .../examples/ozone-dev/s3g-statefulset.yaml | 11 +++- .../examples/ozone-dev/scm-statefulset.yaml | 16 +++-- .../examples/ozone/datanode-statefulset.yaml | 6 +- .../k8s/examples/ozone/om-statefulset.yaml | 28 +++----- .../k8s/examples/ozone/s3g-statefulset.yaml | 11 +++- .../k8s/examples/ozone/scm-statefulset.yaml | 16 +++-- 22 files changed, 238 insertions(+), 132 deletions(-) create mode 100644 hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-service.yaml create mode 100644 hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-statefulset.yaml diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/om-ss.yaml b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/om-ss.yaml index 5c2f7cc669..befc21ecf1 100644 --- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/om-ss.yaml +++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/om-ss.yaml @@ -38,13 +38,6 @@ spec: spec: securityContext: fsGroup: 1000 - initContainers: - - name: init - image: "@docker.image@" - args: ["ozone","om","--init"] - env: - - name: WAITFOR - value: scm-0.scm:9876 containers: - name: om image: "@docker.image@" @@ -52,4 +45,10 @@ spec: env: - name: WAITFOR value: scm-0.scm:9876 + - name: ENSURE_OM_INITIALIZED + value: /data/metadata/om/current/VERSION + livenessProbe: + tcpSocket: + port: 9862 + initialDelaySeconds: 30 volumes: [] diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/s3g-ss.yaml b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/s3g-ss.yaml index 43044c90c3..fc8ff9a8e9 100644 --- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/s3g-ss.yaml +++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/s3g-ss.yaml @@ -36,3 +36,8 @@ spec: - name: s3g image: "@docker.image@" args: ["ozone","s3g"] + livenessProbe: + httpGet: + path: / + port: 9878 + initialDelaySeconds: 30 diff --git a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/scm-ss.yaml b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/scm-ss.yaml index b3c36b7d0d..d386afc764 100644 --- a/hadoop-ozone/dist/src/main/k8s/definitions/ozone/scm-ss.yaml +++ b/hadoop-ozone/dist/src/main/k8s/definitions/ozone/scm-ss.yaml @@ -46,3 +46,7 @@ spec: - name: scm image: "@docker.image@" args: ["ozone","scm"] + livenessProbe: + tcpSocket: + port: 9861 + initialDelaySeconds: 30 diff --git a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml index 6c8d1bfdb1..452e258e03 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/datanode-statefulset.yaml @@ -55,12 +55,12 @@ spec: args: - ozone - datanode - envFrom: - - configMapRef: - name: config volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/minikube/om-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/minikube/om-statefulset.yaml index c8ff81b0b9..172df34744 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/om-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/om-statefulset.yaml @@ -39,22 +39,6 @@ spec: spec: securityContext: fsGroup: 1000 - initContainers: - - name: init - image: '@docker.image@' - args: - - ozone - - om - - --init - env: - - name: WAITFOR - value: scm-0.scm:9876 - envFrom: - - configMapRef: - name: config - volumeMounts: - - name: data - mountPath: /data containers: - name: om image: '@docker.image@' @@ -64,12 +48,18 @@ spec: env: - name: WAITFOR value: scm-0.scm:9876 - envFrom: - - configMapRef: - name: config + - name: ENSURE_OM_INITIALIZED + value: /data/metadata/om/current/VERSION + livenessProbe: + tcpSocket: + port: 9862 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/minikube/s3g-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/minikube/s3g-statefulset.yaml index c7e13e55cf..1718fed218 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/s3g-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/s3g-statefulset.yaml @@ -39,12 +39,17 @@ spec: args: - ozone - s3g - envFrom: - - configMapRef: - name: config + livenessProbe: + httpGet: + path: / + port: 9878 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/minikube/scm-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/minikube/scm-statefulset.yaml index e1deed8ab8..7f1606d475 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/minikube/scm-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/minikube/scm-statefulset.yaml @@ -46,24 +46,28 @@ spec: - ozone - scm - --init - envFrom: - - configMapRef: - name: config volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config containers: - name: scm image: '@docker.image@' args: - ozone - scm - envFrom: - - configMapRef: - name: config + livenessProbe: + tcpSocket: + port: 9861 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/Flekszible b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/Flekszible index 7e4f3f1927..5a3b89a549 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/Flekszible +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/Flekszible @@ -21,5 +21,6 @@ import: - path: ozone transformations: - type: ozone/csi + - type: ozone/emptydir - path: pv-test destination: pv-test diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-daemonset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-daemonset.yaml index 6e3b3b96cf..67c8fc2ef6 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-daemonset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-daemonset.yaml @@ -44,12 +44,16 @@ spec: ports: - containerPort: 9870 name: rpc - envFrom: - - configMapRef: - name: config + livenessProbe: + tcpSocket: + port: 9858 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config initContainers: [] volumes: - name: data diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-service.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-service.yaml new file mode 100644 index 0000000000..929e7a2595 --- /dev/null +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-service.yaml @@ -0,0 +1,28 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: datanode +spec: + ports: + - port: 9870 + name: rpc + clusterIP: None + selector: + app: ozone + component: datanode diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-statefulset.yaml new file mode 100644 index 0000000000..452e258e03 --- /dev/null +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/datanode-statefulset.yaml @@ -0,0 +1,66 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: datanode + labels: + app.kubernetes.io/component: ozone +spec: + selector: + matchLabels: + app: ozone + component: datanode + serviceName: datanode + replicas: 3 + template: + metadata: + labels: + app: ozone + component: datanode + annotations: + prdatanodeetheus.io/scrape: "true" + prdatanodeetheus.io/port: "9882" + prdatanodeetheus.io/path: /prom + spec: + affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: component + operator: In + values: + - datanode + topologyKey: kubernetes.io/hostname + securityContext: + fsGroup: 1000 + containers: + - name: datanode + image: '@docker.image@' + args: + - ozone + - datanode + volumeMounts: + - name: data + mountPath: /data + envFrom: + - configMapRef: + name: config + volumes: + - name: data + emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/om-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/om-statefulset.yaml index 884dd46241..172df34744 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/om-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/om-statefulset.yaml @@ -37,22 +37,8 @@ spec: prometheus.io/port: "9874" prometheus.io/path: /prom spec: - initContainers: - - name: init - image: '@docker.image@' - args: - - ozone - - om - - --init - env: - - name: WAITFOR - value: scm-0.scm:9876 - envFrom: - - configMapRef: - name: config - volumeMounts: - - name: data - mountPath: /data + securityContext: + fsGroup: 1000 containers: - name: om image: '@docker.image@' @@ -62,12 +48,18 @@ spec: env: - name: WAITFOR value: scm-0.scm:9876 - envFrom: - - configMapRef: - name: config + - name: ENSURE_OM_INITIALIZED + value: /data/metadata/om/current/VERSION + livenessProbe: + tcpSocket: + port: 9862 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/s3g-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/s3g-statefulset.yaml index b608cde832..1718fed218 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/s3g-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/s3g-statefulset.yaml @@ -39,13 +39,17 @@ spec: args: - ozone - s3g - envFrom: - - configMapRef: - name: config + livenessProbe: + httpGet: + path: / + port: 9878 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data - initContainers: [] + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/scm-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/scm-statefulset.yaml index 55b56722d1..7f1606d475 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/scm-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-csi/scm-statefulset.yaml @@ -37,6 +37,8 @@ spec: prometheus.io/port: "9876" prometheus.io/path: /prom spec: + securityContext: + fsGroup: 1000 initContainers: - name: init image: '@docker.image@' @@ -44,24 +46,28 @@ spec: - ozone - scm - --init - envFrom: - - configMapRef: - name: config volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config containers: - name: scm image: '@docker.image@' args: - ozone - scm - envFrom: - - configMapRef: - name: config + livenessProbe: + tcpSocket: + port: 9861 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-statefulset.yaml index 843aa948e1..b8e43e4bbc 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/datanode-statefulset.yaml @@ -55,9 +55,6 @@ spec: args: - ozone - datanode - envFrom: - - configMapRef: - name: config env: - name: JAEGER_SAMPLER_TYPE value: probabilistic @@ -68,6 +65,9 @@ spec: volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/om-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/om-statefulset.yaml index 8d7e9f1e99..8f57a38baa 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/om-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/om-statefulset.yaml @@ -39,22 +39,6 @@ spec: spec: securityContext: fsGroup: 1000 - initContainers: - - name: init - image: '@docker.image@' - args: - - ozone - - om - - --init - env: - - name: WAITFOR - value: scm-0.scm:9876 - envFrom: - - configMapRef: - name: config - volumeMounts: - - name: data - mountPath: /data containers: - name: om image: '@docker.image@' @@ -64,18 +48,24 @@ spec: env: - name: WAITFOR value: scm-0.scm:9876 + - name: ENSURE_OM_INITIALIZED + value: /data/metadata/om/current/VERSION - name: JAEGER_SAMPLER_TYPE value: probabilistic - name: JAEGER_SAMPLER_PARAM value: "0.01" - name: JAEGER_AGENT_HOST value: jaeger-0.jaeger - envFrom: - - configMapRef: - name: config + livenessProbe: + tcpSocket: + port: 9862 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/s3g-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/s3g-statefulset.yaml index 72d5550422..d6288cd7ea 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/s3g-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/s3g-statefulset.yaml @@ -39,9 +39,11 @@ spec: args: - ozone - s3g - envFrom: - - configMapRef: - name: config + livenessProbe: + httpGet: + path: / + port: 9878 + initialDelaySeconds: 30 env: - name: JAEGER_SAMPLER_TYPE value: probabilistic @@ -52,6 +54,9 @@ spec: volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/scm-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/scm-statefulset.yaml index 8717ff741c..e9b5addab5 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/scm-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone-dev/scm-statefulset.yaml @@ -46,21 +46,22 @@ spec: - ozone - scm - --init - envFrom: - - configMapRef: - name: config volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config containers: - name: scm image: '@docker.image@' args: - ozone - scm - envFrom: - - configMapRef: - name: config + livenessProbe: + tcpSocket: + port: 9861 + initialDelaySeconds: 30 env: - name: JAEGER_SAMPLER_TYPE value: probabilistic @@ -71,6 +72,9 @@ spec: volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: - name: data emptyDir: {} diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml index b74d58e856..d3e957248c 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/datanode-statefulset.yaml @@ -55,12 +55,12 @@ spec: args: - ozone - datanode - envFrom: - - configMapRef: - name: config volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumeClaimTemplates: - metadata: name: data diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml index 6cb53e7501..d35c4dd147 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/om-statefulset.yaml @@ -39,22 +39,6 @@ spec: spec: securityContext: fsGroup: 1000 - initContainers: - - name: init - image: '@docker.image@' - args: - - ozone - - om - - --init - env: - - name: WAITFOR - value: scm-0.scm:9876 - envFrom: - - configMapRef: - name: config - volumeMounts: - - name: data - mountPath: /data containers: - name: om image: '@docker.image@' @@ -64,12 +48,18 @@ spec: env: - name: WAITFOR value: scm-0.scm:9876 - envFrom: - - configMapRef: - name: config + - name: ENSURE_OM_INITIALIZED + value: /data/metadata/om/current/VERSION + livenessProbe: + tcpSocket: + port: 9862 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumes: [] volumeClaimTemplates: - metadata: diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml index 2ad951f922..adc277a598 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/s3g-statefulset.yaml @@ -39,12 +39,17 @@ spec: args: - ozone - s3g - envFrom: - - configMapRef: - name: config + livenessProbe: + httpGet: + path: / + port: 9878 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumeClaimTemplates: - metadata: name: data diff --git a/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml b/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml index a63c3fc52e..780fdd7690 100644 --- a/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml +++ b/hadoop-ozone/dist/src/main/k8s/examples/ozone/scm-statefulset.yaml @@ -46,24 +46,28 @@ spec: - ozone - scm - --init - envFrom: - - configMapRef: - name: config volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config containers: - name: scm image: '@docker.image@' args: - ozone - scm - envFrom: - - configMapRef: - name: config + livenessProbe: + tcpSocket: + port: 9861 + initialDelaySeconds: 30 volumeMounts: - name: data mountPath: /data + envFrom: + - configMapRef: + name: config volumeClaimTemplates: - metadata: name: data