From 60701af4e610b9eeb4e3c60034300148933d69ba Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 19 Sep 2017 18:00:09 +0200 Subject: [PATCH 1/5] Add a tox check which verifies we don't have any file which name is longer than 143 characters. 143 characters seems to be the limit for ecryptfs file system layered on top of ext4. Source: https://askubuntu.com/questions/361976/find-files-with-a-minimum-filename-length Part of LIBCLOUD-946. --- contrib/check_file_names.sh | 34 ++++++++++++++++++++++++++++++++++ tox.ini | 5 ++++- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100755 contrib/check_file_names.sh diff --git a/contrib/check_file_names.sh b/contrib/check_file_names.sh new file mode 100755 index 0000000000..64743474f5 --- /dev/null +++ b/contrib/check_file_names.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +# 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. +# +# Script which checks there are no files which name is longer +# than the allowed limit +# ext4 support file name up to 255 characters long, but layering +# ecrypt on top of it drops the limit to 143 characters + +FILE_NAME_LENGTH_LIMIT=143 + +FILES=$(find libcloud/ -regextype posix-basic -regex ".*/.\{${FILE_NAME_LENGTH_LIMIT},\}") + +if [ "${FILES}" ]; then + echo "Found files which name is longer than ${FILE_NAME_LENGTH_LIMIT} characters" + echo "${FILES}" + exit 1 +fi + +exit 0 diff --git a/tox.ini b/tox.ini index f33912e6ff..1f6983b3b9 100644 --- a/tox.ini +++ b/tox.ini @@ -12,7 +12,7 @@ commands = cp libcloud/test/secrets.py-dist libcloud/test/secrets.py python setup.py test basepython = py2.6: python2.6 - {py2.7,lint,pylint,coverage}: python2.7 + {py2.7,checks,lint,pylint,coverage}: python2.7 docs: python3.5 pypypy: pypy pypypy3: pypy3 @@ -85,6 +85,9 @@ commands = flake8 --ignore=E402 --exclude="test" libcloud/ flake8 --ignore=E402,E902 --max-line-length=160 contrib/ python -mjson.tool libcloud/data/pricing.json +[testenv:checks] +commands = ./contrib/check_file_names.sh + [testenv:integration] deps = -r{toxinidir}/integration/requirements.txt From 942255a6998c37d73cffba8ad90516b34f520c19 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 19 Sep 2017 18:14:44 +0200 Subject: [PATCH 2/5] Run checks step on Travis CI. --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 8109850f5f..fdebbf7fd2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,6 +23,9 @@ addons: matrix: fast_finish: true include: + - env: ENV=checks + python: 2.7 + before_script: TOX_ENV=checks - env: ENV=lint python: 2.7 before_script: TOX_ENV=lint From 9643e3d13db2dc0fa25e55399ead92606679e881 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 19 Sep 2017 18:34:51 +0200 Subject: [PATCH 3/5] Count just the file name length, not the length of the whole path. --- contrib/check_file_names.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/check_file_names.sh b/contrib/check_file_names.sh index 64743474f5..a143a42ec8 100755 --- a/contrib/check_file_names.sh +++ b/contrib/check_file_names.sh @@ -23,7 +23,7 @@ FILE_NAME_LENGTH_LIMIT=143 -FILES=$(find libcloud/ -regextype posix-basic -regex ".*/.\{${FILE_NAME_LENGTH_LIMIT},\}") +FILES=$(find libcloud/ -regextype posix-egrep -regex ".*[^/]{${FILE_NAME_LENGTH_LIMIT},}") if [ "${FILES}" ]; then echo "Found files which name is longer than ${FILE_NAME_LENGTH_LIMIT} characters" From 741d1697bca1c928f68d1c84e710b23c1c5add8f Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 19 Sep 2017 18:35:08 +0200 Subject: [PATCH 4/5] Update Azure driver fixture file names - make sure they are shorter than 143 characters. --- ...s_99999999_providers_Microsoft_Commerce_RateCard.json} | 0 ...bscriptions_99999999_providers_Microsoft_Compute.json} | 0 ...tions_99999999_providers_Microsoft_Compute_disks.json} | 0 ...iders_Microsoft_Compute_locations_eastus_vmSizes.json} | 0 ...s_99999999_providers_Microsoft_Compute_snapshots.json} | 0 ...9999_providers_Microsoft_Compute_virtualMachines.json} | 0 ...00_providers_Microsoft_Compute_disks_test_disk_1.json} | 0 ...roviders_Microsoft_Compute_snapshots_test_snap_1.json} | 0 ...rs_Microsoft_Compute_virtualMachines_test_node_1.json} | 0 ...Compute_virtualMachines_test_node_1_InstanceView.json} | 0 ...rosoft_Network_networkInterfaces_test_node_1_nic.json} | 0 ...eGroups_111111_providers_Microsoft_Compute_disks.json} | 0 ...ups_111111_providers_Microsoft_Compute_snapshots.json} | 0 libcloud/test/compute/test_azure_arm.py | 8 ++++++-- 14 files changed, 6 insertions(+), 2 deletions(-) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Commerce_RateCard.json => _subscriptions_99999999_providers_Microsoft_Commerce_RateCard.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute.json => _subscriptions_99999999_providers_Microsoft_Compute.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_disks.json => _subscriptions_99999999_providers_Microsoft_Compute_disks.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_locations_eastus_vmSizes.json => _subscriptions_99999999_providers_Microsoft_Compute_locations_eastus_vmSizes.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_snapshots.json => _subscriptions_99999999_providers_Microsoft_Compute_snapshots.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_virtualMachines.json => _subscriptions_99999999_providers_Microsoft_Compute_virtualMachines.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_disks_test_disk_1.json => _subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_disks_test_disk_1.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_snapshots_test_snap_1.json => _subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_snapshots_test_snap_1.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1.json => _subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1_InstanceView.json => _subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1_InstanceView.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Network_networkInterfaces_test_node_1_nic.json => _subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Network_networkInterfaces_test_node_1_nic.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_111111_providers_Microsoft_Compute_disks.json => _subscriptions_99999999_resourceGroups_111111_providers_Microsoft_Compute_disks.json} (100%) rename libcloud/test/compute/fixtures/azure_arm/{_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_111111_providers_Microsoft_Compute_snapshots.json => _subscriptions_99999999_resourceGroups_111111_providers_Microsoft_Compute_snapshots.json} (100%) diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Commerce_RateCard.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Commerce_RateCard.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Commerce_RateCard.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Commerce_RateCard.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_disks.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute_disks.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_disks.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute_disks.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_locations_eastus_vmSizes.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute_locations_eastus_vmSizes.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_locations_eastus_vmSizes.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute_locations_eastus_vmSizes.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_snapshots.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute_snapshots.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_snapshots.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute_snapshots.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_virtualMachines.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute_virtualMachines.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_providers_Microsoft_Compute_virtualMachines.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_providers_Microsoft_Compute_virtualMachines.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_disks_test_disk_1.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_disks_test_disk_1.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_disks_test_disk_1.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_disks_test_disk_1.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_snapshots_test_snap_1.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_snapshots_test_snap_1.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_snapshots_test_snap_1.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_snapshots_test_snap_1.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1_InstanceView.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1_InstanceView.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1_InstanceView.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Compute_virtualMachines_test_node_1_InstanceView.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Network_networkInterfaces_test_node_1_nic.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Network_networkInterfaces_test_node_1_nic.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_000000_providers_Microsoft_Network_networkInterfaces_test_node_1_nic.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_000000_providers_Microsoft_Network_networkInterfaces_test_node_1_nic.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_111111_providers_Microsoft_Compute_disks.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_111111_providers_Microsoft_Compute_disks.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_111111_providers_Microsoft_Compute_disks.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_111111_providers_Microsoft_Compute_disks.json diff --git a/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_111111_providers_Microsoft_Compute_snapshots.json b/libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_111111_providers_Microsoft_Compute_snapshots.json similarity index 100% rename from libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_9999_9999_9999_999999999999_resourceGroups_111111_providers_Microsoft_Compute_snapshots.json rename to libcloud/test/compute/fixtures/azure_arm/_subscriptions_99999999_resourceGroups_111111_providers_Microsoft_Compute_snapshots.json diff --git a/libcloud/test/compute/test_azure_arm.py b/libcloud/test/compute/test_azure_arm.py index 38fd484148..eb2789e28b 100644 --- a/libcloud/test/compute/test_azure_arm.py +++ b/libcloud/test/compute/test_azure_arm.py @@ -33,7 +33,7 @@ class AzureNodeDriverTests(LibcloudTestCase): TENANT_ID = '77777777-7777-7777-7777-777777777777' - SUBSCRIPTION_ID = '99999999-9999-9999-9999-999999999999' + SUBSCRIPTION_ID = '99999999' APPLICATION_ID = '55555555-5555-5555-5555-555555555555' APPLICATION_PASS = 'p4ssw0rd' @@ -381,7 +381,11 @@ def _update(self, fixture, body): def __getattr__(self, n): def fn(method, url, body, headers): - fixture = self.fixtures.load(n + ".json") + # Note: We use shorter fixture name so we don't exceed 143 + # character limit for file names + file_name = n.replace('99999999_9999_9999_9999_999999999999', + AzureNodeDriverTests.SUBSCRIPTION_ID) + fixture = self.fixtures.load(file_name + ".json") if method in ('POST', 'PUT'): try: From e7621c80c4c8c6ee67d20d8d360390a99d79aad3 Mon Sep 17 00:00:00 2001 From: Tomaz Muraus Date: Tue, 19 Sep 2017 18:43:37 +0200 Subject: [PATCH 5/5] Add changelog entry. --- CHANGES.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 1df56dd99c..220682b369 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,16 @@ Changes in current version of Apache Libcloud --------------------------------------------- +Common +~~~~~~ + +- Fix an issue with installation failing on some operating system and file + systems combinations (e.g. ecryptfs layered on top of ext4) which don't + support file names longer than 143 characters. (LIBCLOUD-946, GITHUB-1112) + + Reported by Cyrille Verrier. + [Tomaz Muraus] + Compute ~~~~~~~