Skip to content

Commit

Permalink
Work in progress
Browse files Browse the repository at this point in the history
  • Loading branch information
VinceMacBuche committed Nov 19, 2017
1 parent faffa56 commit ec9f397
Showing 1 changed file with 26 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

}
}
}
Expand All @@ -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" )
<AGENT type="cfengine-community,cfengine-enterprise">
Expand All @@ -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 {
Expand Down Expand Up @@ -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] ) = {
Expand All @@ -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)
}
Expand Down

0 comments on commit ec9f397

Please sign in to comment.