diff --git a/test/endtoend/operator/101_initial_cluster.yaml b/test/endtoend/operator/101_initial_cluster.yaml index 14066e01..0328cf25 100644 --- a/test/endtoend/operator/101_initial_cluster.yaml +++ b/test/endtoend/operator/101_initial_cluster.yaml @@ -8,11 +8,11 @@ metadata: name: example spec: images: - vtctld: vitess/lite:v20.0.2 - vtgate: vitess/lite:v20.0.2 - vttablet: vitess/lite:v20.0.2 - vtorc: vitess/lite:v20.0.2 - vtbackup: vitess/lite:v20.0.2 + vtctld: vitess/lite:v21.0.0-rc1 + vtgate: vitess/lite:v21.0.0-rc1 + vttablet: vitess/lite:v21.0.0-rc1 + vtorc: vitess/lite:v21.0.0-rc1 + vtbackup: vitess/lite:v21.0.0-rc1 mysqld: mysql80Compatible: mysql:8.0.30 mysqldExporter: prom/mysqld-exporter:v0.11.0 diff --git a/test/endtoend/operator/operator.yaml b/test/endtoend/operator/operator.yaml index cec2558f..79eecd9e 100644 --- a/test/endtoend/operator/operator.yaml +++ b/test/endtoend/operator/operator.yaml @@ -2,8 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.1 name: etcdlockservers.planetscale.com spec: group: planetscale.com @@ -61,6 +60,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -90,18 +90,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -132,11 +120,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -145,6 +135,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -164,6 +156,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -202,6 +195,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -233,6 +227,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -252,6 +248,7 @@ spec: items: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -279,6 +276,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -330,8 +329,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.1 name: vitessbackups.planetscale.com spec: group: planetscale.com @@ -383,8 +381,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.1 name: vitessbackupschedules.planetscale.com spec: group: planetscale.com @@ -449,6 +446,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -554,8 +553,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.1 name: vitessbackupstorages.planetscale.com spec: group: planetscale.com @@ -720,8 +718,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.1 name: vitesscells.planetscale.com spec: group: planetscale.com @@ -793,6 +790,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -831,6 +829,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -862,6 +861,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -885,6 +886,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -902,6 +904,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -914,6 +917,14 @@ spec: required: - port type: object + sleep: + properties: + seconds: + format: int64 + type: integer + required: + - seconds + type: object tcpSocket: properties: host: @@ -935,6 +946,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -952,6 +964,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -964,6 +977,14 @@ spec: required: - port type: object + sleep: + properties: + seconds: + format: int64 + type: integer + required: + - seconds + type: object tcpSocket: properties: host: @@ -989,6 +1010,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -1109,6 +1132,7 @@ spec: items: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1157,6 +1181,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -1186,18 +1211,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -1228,11 +1241,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -1241,6 +1256,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -1260,6 +1277,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1298,6 +1316,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1329,6 +1348,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1348,6 +1369,7 @@ spec: items: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -1375,6 +1397,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -1491,8 +1515,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.1 name: vitessclusters.planetscale.com spec: group: planetscale.com @@ -1523,6 +1546,7 @@ spec: enum: - builtin - xtrabackup + - mysqlshell type: string locations: items: @@ -1679,6 +1703,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -1798,6 +1824,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1836,6 +1863,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -1867,6 +1895,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -1890,6 +1920,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1907,6 +1938,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1919,6 +1951,14 @@ spec: required: - port type: object + sleep: + properties: + seconds: + format: int64 + type: integer + required: + - seconds + type: object tcpSocket: properties: host: @@ -1940,6 +1980,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic type: object httpGet: properties: @@ -1957,6 +1998,7 @@ spec: - value type: object type: array + x-kubernetes-list-type: atomic path: type: string port: @@ -1969,6 +2011,14 @@ spec: required: - port type: object + sleep: + properties: + seconds: + format: int64 + type: integer + required: + - seconds + type: object tcpSocket: properties: host: @@ -1994,6 +2044,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -2117,6 +2169,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -2146,18 +2199,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -2188,11 +2229,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2201,6 +2244,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -2220,6 +2265,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -2258,6 +2304,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -2289,6 +2336,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2308,6 +2357,7 @@ spec: items: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -2335,6 +2385,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -2441,6 +2493,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -2470,18 +2523,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -2512,11 +2553,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2525,6 +2568,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -2544,6 +2589,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -2582,6 +2628,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -2613,6 +2660,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -2632,6 +2681,7 @@ spec: items: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -2659,6 +2709,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -2725,6 +2777,7 @@ spec: items: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -2777,6 +2830,14 @@ spec: mysql80Compatible: type: string type: object + mysqldExporter: + type: string + vtbackup: + type: string + vtorc: + type: string + vttablet: + type: string type: object name: maxLength: 63 @@ -2846,6 +2907,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -2875,18 +2937,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -2917,11 +2967,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -2930,6 +2982,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -2991,6 +3045,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -3029,6 +3084,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -3056,6 +3112,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -3080,6 +3138,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -3116,6 +3176,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -3179,6 +3241,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -3284,6 +3348,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -3313,18 +3378,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -3355,11 +3408,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -3368,6 +3423,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -3429,6 +3486,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -3467,6 +3525,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -3494,6 +3553,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -3518,6 +3579,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -3554,6 +3617,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -3617,6 +3682,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -3696,6 +3763,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -3734,6 +3802,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -3765,6 +3834,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -3785,6 +3856,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -3897,6 +3970,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -3935,6 +4009,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -3966,6 +4041,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -3989,6 +4066,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -4046,6 +4125,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -4088,6 +4169,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -4126,6 +4208,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -4157,6 +4240,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4206,6 +4291,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -4349,8 +4436,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.1 name: vitesskeyspaces.planetscale.com spec: group: planetscale.com @@ -4540,6 +4626,7 @@ spec: items: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -4634,6 +4721,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -4663,18 +4751,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -4705,11 +4781,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -4718,6 +4796,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -4779,6 +4859,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -4817,6 +4898,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -4844,6 +4926,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -4868,6 +4952,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -4904,6 +4990,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -4967,6 +5055,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -5072,6 +5162,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -5101,18 +5192,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -5143,11 +5222,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -5156,6 +5237,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -5217,6 +5300,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5255,6 +5339,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5282,6 +5367,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -5306,6 +5393,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -5342,6 +5431,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -5405,6 +5496,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -5518,6 +5611,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5556,6 +5650,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -5587,6 +5682,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -5607,6 +5704,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -5784,8 +5883,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.11.3 - creationTimestamp: null + controller-gen.kubebuilder.io/version: v0.16.1 name: vitessshards.planetscale.com spec: group: planetscale.com @@ -5984,6 +6082,7 @@ spec: items: properties: name: + default: "" type: string type: object x-kubernetes-map-type: atomic @@ -6052,6 +6151,7 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic dataSource: properties: apiGroup: @@ -6081,18 +6181,6 @@ spec: type: object resources: properties: - claims: - items: - properties: - name: - type: string - required: - - name - type: object - type: array - x-kubernetes-list-map-keys: - - name - x-kubernetes-list-type: map limits: additionalProperties: anyOf: @@ -6123,11 +6211,13 @@ spec: items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string @@ -6136,6 +6226,8 @@ spec: x-kubernetes-map-type: atomic storageClassName: type: string + volumeAttributesClassName: + type: string volumeMode: type: string volumeName: @@ -6197,6 +6289,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -6235,6 +6328,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -6262,6 +6356,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -6286,6 +6382,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -6322,6 +6420,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -6385,6 +6485,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -6483,6 +6585,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -6521,6 +6624,7 @@ spec: key: type: string name: + default: "" type: string optional: type: boolean @@ -6552,6 +6656,8 @@ spec: type: string readOnly: type: boolean + recursiveReadOnly: + type: string subPath: type: string subPathExpr: @@ -6572,6 +6678,8 @@ spec: properties: name: type: string + request: + type: string required: - name type: object @@ -6885,7 +6993,7 @@ spec: fieldPath: metadata.name - name: OPERATOR_NAME value: vitess-operator - image: planetscale/vitess-operator:v2.13.1 + image: planetscale/vitess-operator:v2.14.0-rc1 name: vitess-operator resources: limits: diff --git a/test/endtoend/upgrade_test.sh b/test/endtoend/upgrade_test.sh index 618d846e..f1c47413 100755 --- a/test/endtoend/upgrade_test.sh +++ b/test/endtoend/upgrade_test.sh @@ -245,7 +245,7 @@ killall kubectl setupKubectlAccessForCI get_started "operator.yaml" "101_initial_cluster.yaml" -verifyVtGateVersion "20.0.2" +verifyVtGateVersion "21.0.0" checkSemiSyncSetup # Initially too durability policy should be specified verifyDurabilityPolicy "commerce" "semi_sync" diff --git a/tools/get-e2e-test-deps.sh b/tools/get-e2e-test-deps.sh index c74d2ba6..c0cadb19 100755 --- a/tools/get-e2e-test-deps.sh +++ b/tools/get-e2e-test-deps.sh @@ -40,8 +40,8 @@ fi if ! command -v vtctldclient &> /dev/null then echo "Downloading vtctldclient..." - version=20.0.2 - file=vitess-${version}-2592c59.tar.gz + version=21.0.0-rc1 + file=vitess-${version}-7908b43.tar.gz wget https://github.com/vitessio/vitess/releases/download/v${version}/${file} tar -xzf ${file} cd ${file/.tar.gz/}