bug-cfengine
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bug in editfiles defineclasses at 1.6.2


From: Ian Spare
Subject: Bug in editfiles defineclasses at 1.6.2
Date: Fri, 9 Mar 2001 16:00:05 +0100

I'm having some problems with editfiles, it's probably best explained with
an example:

control:
   any::
      actionsequence = ( 
                        editfiles.pass1
                        shellcommands.pass1
                        editfiles.pass2
                        shellcommands.pass2
                        )
editfiles:

   any.pass1::
   { /tmp/test.file
       AutoCreate
       EmptyEntireFilePlease
       InsertFile "/etc/motd"
       AppendIfNoSuchLine "# pass1 on the editfiles"
       DefineClasses "pass1_done"
   }

  pass2.pass1_done::
  { /tmp/test.file
        AppendIfNoSuchLine "# pass2 on the editfiles"
        DefineClasses "pass2_done"
  }


shellcommands:


        pass1::
                "/bin/echo pass1 shell >> /tmp/test.file "

        pass2.pass2_done::
                "/bin/echo pass2 shell SUCCESS  >> /tmp/test.file "

So, I'm expecting that on the pass2 of shellcommands I get the
"pass2.pass2_done" run. In fact, it doesn't run. The debug output seems to
show the problem, basically the second pass through of editfiles that should
have defined the pass2_done class actually tried to redefine the class
pass1_done incorrectly. Has anyone else seen this ? (I get the exact same on
1.6.3)

Reference time set to Fri Mar  9 15:51:40 2001

AddClassToHeap(Friday)
AddClassToHeap(Hr15)
AddClassToHeap(Min51)
AddClassToHeap(Min50_55)
AddClassToHeap(Day9)
AddClassToHeap(March)
AddClassToHeap(Yr2001)
WildMatch(-,linux)
WildMatch(-,linux)
WildMatch(sunos,linux)
WildMatch(ultrix,linux)
WildMatch(hp-ux,linux)
WildMatch(hp-ux,linux)
WildMatch(hp-ux,linux)
WildMatch(aix,linux)
WildMatch(linux,linux)
WildMatch(*,i686)
WildMatch(*,2.2.16-22)
AddClassToHeap(linux)
AddClassToHeap(destroy_eur_sas_com)
AddClassToHeap(destroy_eur_sas_com)
AddClassToHeap(eur_sas_com)
Truncating fully qualified hostname destroy.eur.sas.com to destroy
AddClassToHeap(destroy)
GNU Configuration Engine - 
1.6.2
Free Software Foundation 1995-2000
Donated by Mark Burgess, Faculty of Engineering,
Oslo University College, 0254 Oslo, Norway

------------------------------------------------------------------------

Host name is: destroy.eur.sas.com
Operating System Type is linux
Operating System Release is 2.2.16-22
Architecture = i686


Using internal soft-class linux for host destroy.eur.sas.com

The time is now Fri Mar  9 15:51:40 2001


------------------------------------------------------------------------

AddClassToHeap(32_bit)
Additional hard class defined as: 32_bit
AddClassToHeap(linux_2_2_16_22)
AddClassToHeap(i686)
Additional hard class defined as: linux_2_2_16_22
AddClassToHeap(linux_i686)
Additional hard class defined as: linux_i686
AddClassToHeap(linux_i686_2_2_16_22)
Additional hard class defined as: linux_i686_2_2_16_22
AddClassToHeap(linux_i686_2_2_16_22__1_Tue_Aug_22_16_49_06_EDT_2000)
Additional hard class defined as:
linux_i686_2_2_16_22__1_Tue_Aug_22_16_49_06_EDT_2000
AddClassToHeap(linux_gnu)

GNU autoconf class from compile time: linux-gnu

  Careful with this - it might not be correct at run time if you have
  several OS versions with binary compatibilty!

Address given by nameserver: 130.96.14.218
AddClassToHeap(130_96_14)
AddClassToHeap(130_96_14_218)
Found: 2 interfaces
Interface 1: lo
Interface 2: eth0
Adding hostip 130.96.14.218..
AddClassToHeap(130_96_14_218)
Adding hostname destroy.eur.sas.com..
AddClassToHeap(destroy_eur_sas_com)
destroy.eur.sas.com: No preconfiguration file
BEGIN PARSING cf.test
   (No actions pending in )

BEGIN NEW ACTION Control Defintions:
Class:: any::
   (No actions pending in Control Defintions:)
HandleClass(any)
Simple identifier or class = (any)
HandleId(actionsequence)
LEFTBRACK
HandleItem(editfiles.pass1)
simple item = (editfiles.pass1)

(Action is control, storing variable [actionsequence=editfiles.pass1])
Installing item (editfiles.pass1) in the action sequence list
HandleItem(shellcommands.pass1)
simple item = (shellcommands.pass1)

(Action is control, storing variable [actionsequence=shellcommands.pass1])
Installing item (shellcommands.pass1) in the action sequence list
HandleItem(editfiles.pass2)
simple item = (editfiles.pass2)

(Action is control, storing variable [actionsequence=editfiles.pass2])
Installing item (editfiles.pass2) in the action sequence list
HandleItem(shellcommands.pass2)
simple item = (shellcommands.pass2)

(Action is control, storing variable [actionsequence=shellcommands.pass2])
Installing item (shellcommands.pass2) in the action sequence list
RIGHTBRACK
   (No actions pending in Control Defintions:)

BEGIN NEW ACTION Edit Simple Text File:
Class:: any.pass1::
   (No actions pending in Edit Simple Text File:)
HandleClass(any.pass1)
Compound class = (any.pass1) with 2 members
LBRACE
   (No actions pending in Edit Simple Text File:)
InitializeAction()
path = (/tmp/test.file)
Handling Edit of /tmp/test.file, action [AutoCreate] with no data
InstallEditFile(/tmp/test.file,AutoCreate,-)
Handling Edit of /tmp/test.file, action [EmptyEntireFilePlease] with no data
HandleItem(InsertFile)
simple item = (InsertFile)
Handling Edit of /tmp/test.file, action [InsertFile] with data </etc/motd>
HandleItem(AppendIfNoSuchLine)
simple item = (AppendIfNoSuchLine)
Handling Edit of /tmp/test.file, action [AppendIfNoSuchLine] with data <#
pass1 on the editfiles>
HandleItem(DefineClasses)
simple item = (DefineClasses)
Handling Edit of /tmp/test.file, action [DefineClasses] with data
<pass1_done>
AddInstallable(pass1_done)
RBRACE
Class:: pass2.pass1_done::

   [BEGIN InstallPending Edit Simple Text File:
   END InstallPending]

HandleClass(pass2.pass1_done)
Compound class = (pass2.pass1_done) with 2 members
LBRACE
   (No actions pending in Edit Simple Text File:)
InitializeAction()
path = (/tmp/test.file)
HandleItem(AppendIfNoSuchLine)
simple item = (AppendIfNoSuchLine)
Handling Edit of /tmp/test.file, action [AppendIfNoSuchLine] with data <#
pass2 on the editfiles>
HandleItem(DefineClasses)
simple item = (DefineClasses)
Handling Edit of /tmp/test.file, action [DefineClasses] with data
<pass2_done>
AddInstallable(pass2_done)
RBRACE

   [BEGIN InstallPending Edit Simple Text File:
   END InstallPending]


BEGIN NEW ACTION User Shell Commands:
InitializeAction()
Class:: pass1::
   (No actions pending in User Shell Commands:)
HandleClass(pass1)
Simple identifier or class = (pass1)
   (No actions pending in User Shell Commands:)
InitializeAction()
path = (/bin/echo pass1 shell >> /tmp/test.file )
Class:: pass2.pass2_done::

   [BEGIN InstallPending User Shell Commands:
Installing item (/bin/echo pass1 shell >> /tmp/test.file ) in the script
list
Build2DListFromVarstring(/bin/echo pass1 shell >> /tmp/test.file ,sep= )
SplitVarstring(/bin/echo pass1 shell >> /tmp/test.file ,:=58)
AppendTwoDimItem(itemlist, sep= )
Set2DLIst()
Get2DListEnt()
Get2DLIstEnt returns /bin/echo pass1 shell >> /tmp/test.file 
IncrementTwoDimList()
AddInstallable()
AddInstallable()
Get2DListEnt()
   END InstallPending]

HandleClass(pass2.pass2_done)
Compound class = (pass2.pass2_done) with 2 members
   (No actions pending in User Shell Commands:)
InitializeAction()
path = (/bin/echo pass2 shell SUCCESS  >> /tmp/test.file )

   [BEGIN InstallPending User Shell Commands:
Installing item (/bin/echo pass2 shell SUCCESS  >> /tmp/test.file ) in the
script list
Build2DListFromVarstring(/bin/echo pass2 shell SUCCESS  >> /tmp/test.file
,sep= )
SplitVarstring(/bin/echo pass2 shell SUCCESS  >> /tmp/test.file ,:=58)
AppendTwoDimItem(itemlist, sep= )
Set2DLIst()
Get2DListEnt()
Get2DLIstEnt returns /bin/echo pass2 shell SUCCESS  >> /tmp/test.file 
IncrementTwoDimList()
AddInstallable()
AddInstallable()
Get2DListEnt()
   END InstallPending]

(END OF PARSING)
Accepted domain name: eur.sas.com


Defined Classes = ( any redhat redhat_7 redhat_7_0 opt_debug Friday Hr15
Min51 Min50_55 Day9 March Yr2001 linux destroy_eur_sas_com eur_sas_com
destroy 32_bit linux_2_2_16_22 i686 linux_i686 linux_i686_2_2_16_22
linux_i686_2_2_16_22__1_Tue_Aug_22_16_49_06_EDT_2000 linux_gnu 130_96_14
130_96_14_218 )

Negated Classes = ( )

Installable classes = ( pass2 pass1 pass1_done pass2_done )

Global expiry time for locks: 120 minutes

Global anti-spam elapse time: 0 minutes

Extensions which should not be directories = ( )
Suspicious filenames to be warned about = ( )
Directory for /var/run/cfengine/test exists. Okay
Directory for /var/run/cfengine/test exists. Okay
Reference time set to Fri Mar  9 15:51:40 2001

(BuildClassEnvironment)

                  New temporary class additions
                  -----------------------------
                             pass1
---------------------------------------------------------------------
Editing files
---------------------------------------------------------------------

WrapDoEditFile(/tmp/test.file,/tmp/test.file)
FileObjectFilter(/tmp/test.file)
DoEditFile(/tmp/test.file)
IgnoredOrExcluded(/tmp/test.file)
GetLock(editfile.pass1,_tmp_test_file,time=984149500), ExpireAfter=120,
IfElapsed=0
GetLastLock()
CheckOldLock()
SetLock(/var/run/cfengine/lock.cf_test.destroy.editfile.pass1._tmp_test_file
)
cfengine:destroy: Begin editing /tmp/test.file
Emptying entire file
Edit: Inserting file /etc/motd 
Appending [# pass1 on the editfiles]
cfengine:destroy: End editing /tmp/test.file
.....................................................................
CompareToFile(/tmp/test.file)
cfengine:destroy: Edited file /tmp/test.file 
Entering AddEditfileClasses(pass1_done)
AddClassToHeap(pass1_done)
ReleaseCurrentLock(/var/run/cfengine/lock.cf_test.destroy.editfile.pass1._tm
p_test_file)
LockLog(Lock removed normally)
(BuildClassEnvironment)

                  New temporary class additions
                  -----------------------------
                             pass1
---------------------------------------------------------------------
Running shell commands
---------------------------------------------------------------------

GetLock(shellcommand.pass1,_bin_echo_pass1_shell_____tmp_test_file_,time=984
149500), ExpireAfter=120, IfElapsed=0
GetLastLock()
CheckOldLock()
SetLock(/var/run/cfengine/lock.cf_test.destroy.shellcommand.pass1._bin_echo_
pass1_shell_____tmp_test_file_)
cfengine:destroy: Executing script /bin/echo pass1 shell >> /tmp/test.file
...(timeout=0,uid=-1,gid=-1)
(Setting umask to 77)
cfpopen(/bin/echo pass1 shell >> /tmp/test.file )
cfpclose(pp)
cfpopen - Waiting for process 30886
cfengine:destroy: Finished script /bin/echo pass1 shell >> /tmp/test.file 
ReleaseCurrentLock(/var/run/cfengine/lock.cf_test.destroy.shellcommand.pass1
._bin_echo_pass1_shell_____tmp_test_file_)
LockLog(Lock removed normally)
(BuildClassEnvironment)

                  New temporary class additions
                  -----------------------------
                             pass2
---------------------------------------------------------------------
Editing files
---------------------------------------------------------------------

WrapDoEditFile(/tmp/test.file,/tmp/test.file)
FileObjectFilter(/tmp/test.file)
DoEditFile(/tmp/test.file)
IgnoredOrExcluded(/tmp/test.file)
GetLock(editfile.pass2,_tmp_test_file,time=984149500), ExpireAfter=120,
IfElapsed=0
GetLastLock()
CheckOldLock()
SetLock(/var/run/cfengine/lock.cf_test.destroy.editfile.pass2._tmp_test_file
)
cfengine:destroy: Begin editing /tmp/test.file
Appending [# pass2 on the editfiles]
cfengine:destroy: End editing /tmp/test.file
.....................................................................
CompareToFile(/tmp/test.file)
cfengine:destroy: Edited file /tmp/test.file 
cfengine:destroy: The file /tmp/test.file.cfsaved has already been moved to
the repository once.
cfengine:destroy: Multiple update will cause loss of backup. Use
backup=false in copy to override.
Entering AddEditfileClasses(pass1_done)
AddClassToHeap(pass1_done)
ReleaseCurrentLock(/var/run/cfengine/lock.cf_test.destroy.editfile.pass2._tm
p_test_file)
LockLog(Lock removed normally)
(BuildClassEnvironment)

                  New temporary class additions
                  -----------------------------
                             pass2
---------------------------------------------------------------------
Running shell commands
---------------------------------------------------------------------




reply via email to

[Prev in Thread] Current Thread [Next in Thread]