Project

General

Profile

Anomalie #2082

Instanciation en mode conteneur échoue sur une machine trop rapide

Added by Emmanuel GARETTE (2) over 11 years ago. Updated over 11 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
-
Category:
-
Start date:
09/20/2011
Due date:
% Done:

100%

Spent time:
Distribution:
EOLE 2.3

Description

Sur une machine trop rapide, l'instanciation d'un serveur en mode conteneur échoue.

Visiblement Cheetah n'aime pas qu'on templatise 2 fichiers avec le même nom dans un temps très court. Il utilise alors le contenu du 1er template pour créer le second fichier. C'est particulièrement gênant dans le cadre du mode conteneur, en effet, il y a des boucles utilisant un fichier temporaire '/tmp/container.tmpl'. Si je met un sleep(1) dans la boucle, ca fonctionne. Si je retire le sleep(1) tous les fichiers sont identiques.

Je propose donc d'utilise mktemp plutôt que de nommer directement un fichier.

--- cfgparser.py.old    2011-09-20 17:23:54.000000000 +0200
+++ cfgparser.py    2011-09-20 17:28:20.000000000 +0200
@@ -12,6 +12,7 @@
 from glob import glob
 from commands import getstatusoutput
 from shutil import move
+from tempfile import mktemp
 try:
     import json
 except:
@@ -632,7 +633,7 @@
                     except:
                         import traceback
                         traceback.print_exc()
-            inputfile='/tmp/container.tmpl'
+            inputfile=mktemp()
             files = glob(join(inputdir, '*'))
             fd = open(inputfile, 'wa')
             for filename in files:
@@ -644,7 +645,7 @@
             t.process(self)

         for container in containers:
-            inputfile='/tmp/container.tmpl'
+            inputfile=mktemp()
             files = glob(join(self._make_root_path(container), 'interfaces.d', '*'))
             fd = open(inputfile, 'wa')
             for filename in files:
@@ -961,7 +962,7 @@
                 fh.close()

         for container in cname:
-            inputfile='/tmp/container.tmpl'
+            inputfile=mktemp()
             inputdir = join(self._make_root_path(container), 'hosts.d')
             outputfile = join(self._make_root_path(container), config.VIRTBASE, 'etc/hosts')
             files = glob(join(inputdir, '*'))

Associated revisions

Revision eeb9eead (diff)
Added by Walid Nouh about 13 years ago

see #2082 Do not change user's authentication method when a wrong authentication occured

Revision 19656a83 (diff)
Added by Joël Cuissinat over 11 years ago

cfgparser.py : application du patch avec utilisation de mktemp (fixes #2082)

History

#1 Updated by Joël Cuissinat over 11 years ago

  • Target version set to Mises à jour 2.3 - 02 RC

#2 Updated by Joël Cuissinat over 11 years ago

  • Status changed from Nouveau to Résolu
  • % Done changed from 0 to 100

#3 Updated by Fabrice Barconnière over 11 years ago

  • Status changed from Résolu to Fermé
  • Distribution set to EOLE 2.3

Also available in: Atom PDF