From ec9f3973f284f5503a95103c83f7ada6ddd41966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20Membr=C3=A9?= Date: Sun, 19 Nov 2017 23:23:16 +0100 Subject: [PATCH] Work in progress --- .../rudder/ncf/TechniqueWriter.scala | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/rudder-core/src/main/scala/com/normation/rudder/ncf/TechniqueWriter.scala b/rudder-core/src/main/scala/com/normation/rudder/ncf/TechniqueWriter.scala index bf65073f0aa..87e7ca08e15 100644 --- a/rudder-core/src/main/scala/com/normation/rudder/ncf/TechniqueWriter.scala +++ b/rudder-core/src/main/scala/com/normation/rudder/ncf/TechniqueWriter.scala @@ -55,6 +55,7 @@ import org.eclipse.jgit.lib.PersonIdent import com.normation.rudder.repository.GitPath import net.liftweb.common.Full import com.normation.eventlog.EventActor +import com.normation.rudder.services.user.PersonIdentService class TechniqueWriter( archiver : TechniqueArchiver @@ -97,22 +98,29 @@ class TechniqueWriter( def writeAll(technique : Technique, methods: Map[BundleName, GenericMethod], modId : ModificationId, commiter : EventActor) : Box[Unit] = { for { - _ <- writeTechnique(technique, methods) + _ <- writeTechnique(technique, methods, modId, commiter) res <- writeMetadata(technique, methods) - _ <- archiver.commitFile(technique, metadataPath(technique), modId, commiter., msg) + _ <- archiver.commitFile(technique, metadataPath(technique), modId, commiter , s"Commiting Technique '${technique.bundleName.value}' metadata") } yield { res } } def metadataPath(technique : Technique) = s"techniques/ncf_techniques/${technique.bundleName.value}/${technique.version.value}/metadata.xml" - def writeTechnique(technique : Technique, methods: Map[BundleName, GenericMethod]) : Box[Unit] = { + def writeTechnique(technique : Technique, methods: Map[BundleName, GenericMethod], modId : ModificationId, commiter : EventActor) : Box[Unit] = { import net.liftweb.util.Helpers.tryo tryo { for { writer <- agentSpecific + file <- writer.writeTechniqueFile(technique, methods) + _ <- file match { + case Some(file) => archiver.commitFile(technique, file, modId, commiter , s"Commiting Technique '${technique.bundleName.value}' metadata") + Full(file) + case None => Full("ok") + } } yield { - writer.techniqueFile(technique, methods) + file + } } } @@ -132,14 +140,14 @@ class TechniqueWriter( trait AgentSpecificWriter { - def techniqueFile(technique : Technique, methods : Map[BundleName, GenericMethod] ) + def writeTechniqueFile(technique : Technique, methods : Map[BundleName, GenericMethod] ) : Box[Option[String]] def techniqueMetadata(technique : Technique, methods : Map[BundleName, GenericMethod] ) : NodeSeq } class ClassicTechniqueWriter extends AgentSpecificWriter { - def techniqueFile(technique : Technique, methods : Map[BundleName, GenericMethod]) = () + def writeTechniqueFile(technique : Technique, methods : Map[BundleName, GenericMethod]) = Full(None) def techniqueMetadata(technique : Technique, methods : Map[BundleName, GenericMethod]) = { val completeReporting = technique.methodCalls.exists(m => m.condition != "any" || m.condition != "cfengine-community" ) @@ -166,7 +174,7 @@ class DSCTechniqueWriter extends AgentSpecificWriter{ val genericParams = "-reportId $reportId -techniqueName $techniqueName -auditOnly:$auditOnly" - def techniqueFile(technique : Technique, methods : Map[BundleName, GenericMethod] ) = { + def writeTechniqueFile(technique : Technique, methods : Map[BundleName, GenericMethod] ) = { def writeCall(method : GenericMethod, call: MethodCall) = { val methodParams = (for { @@ -217,8 +225,12 @@ class DSCTechniqueWriter extends AgentSpecificWriter{ }""" - val path = Paths.get(s"/var/rudder/configuration-repository/dsc/ncf/50_techniques/${technique.bundleName.value}.ps1") - Files.write(path, content.getBytes(StandardCharsets.UTF_8)) + net.liftweb.util.Helpers.tryo { + val techniquePath = s"dsc/ncf/50_techniques/${technique.bundleName.value}.ps1" + val path = Paths.get(s"/var/rudder/configuration-repository/${techniquePath}") + Files.write(path, content.getBytes(StandardCharsets.UTF_8)) + Some(techniquePath) + } } def techniqueMetadata(technique : Technique, methods : Map[BundleName, GenericMethod] ) = { @@ -242,15 +254,15 @@ class TechniqueArchiver ( , override val xmlPrettyPrinter : RudderPrettyPrinter , override val relativePath : String , override val gitModificationRepository : GitModificationRepository - , override val encoding : String = "UTF-8" + , personIdentservice : PersonIdentService ) extends Loggable with GitArchiverUtils { - - def commitFile(technique : Technique, gitPath : String, modId: ModificationId, commiter: PersonIdent, msg : String) : Box[GitPath] = { - + override val encoding : String = "UTF-8" + def commitFile(technique : Technique, gitPath : String, modId: ModificationId, commiter: EventActor, msg : String) : Box[GitPath] = { for { - commit <- commitAddFile(modId, commiter, gitPath, msg) + ident <- personIdentservice.getPersonIdentOrDefault(commiter.name) + commit <- commitAddFile(modId,ident, gitPath, msg) } yield { GitPath(gitPath) }