Skip to content

Commit

Permalink
chore(packer): ability to add default packer options via spring config (
Browse files Browse the repository at this point in the history
  • Loading branch information
asher committed May 16, 2019
1 parent f85fdf6 commit 0ababe1
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.netflix.spinnaker.rosco.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.ArrayList;
import java.util.List;

@ConfigurationProperties("packer")
@Data
public class RoscoPackerConfigurationProperties {
Boolean timestamp;
List<String> additionalParameters = new ArrayList<>();
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,25 @@

package com.netflix.spinnaker.rosco.providers.util

import com.netflix.spinnaker.rosco.config.RoscoPackerConfigurationProperties
import org.springframework.beans.factory.annotation.Autowired

class LocalJobFriendlyPackerCommandFactory implements PackerCommandFactory {

@Autowired RoscoPackerConfigurationProperties roscoPackerConfigurationProperties

@Override
List<String> buildPackerCommand(String baseCommand,
Map<String, String> parameterMap,
String absoluteVarFilePath,
String absoluteTemplateFilePath) {
def packerCommand = [baseCommand, "packer", "build", "-color=false"]
if (roscoPackerConfigurationProperties.timestamp) {
packerCommand.add("-timestamp-ui")
}

packerCommand.addAll(roscoPackerConfigurationProperties.additionalParameters)

parameterMap.each { key, value ->
if (key && value) {
def keyValuePair = "$key=${value instanceof String ? value.trim() : value}"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.netflix.spinnaker.rosco.providers.util

import com.netflix.spinnaker.rosco.config.RoscoPackerConfigurationProperties
import com.netflix.spinnaker.rosco.jobs.JobRequest
import org.apache.commons.exec.CommandLine
import spock.lang.Shared
Expand All @@ -9,7 +10,9 @@ import spock.lang.Unroll
class LocalJobFriendlyPackerCommandFactorySpec extends Specification implements TestDefaults {

@Shared
LocalJobFriendlyPackerCommandFactory packerCommandFactory = new LocalJobFriendlyPackerCommandFactory()
LocalJobFriendlyPackerCommandFactory packerCommandFactory = new LocalJobFriendlyPackerCommandFactory(
roscoPackerConfigurationProperties: new RoscoPackerConfigurationProperties()
)

@Unroll
void "packerCommand handles baseCommand as null, empty string and real string"() {
Expand Down
8 changes: 8 additions & 0 deletions rosco-web/config/rosco.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ spectator:
webEndpoint:
enabled: false

packer:
# Set this if running Packer >= 1.4.0 for timestamp prepended output
timestamp: false
# Add additional parameters that will always be passed to "packer build" here
# additionalParameters:
# - on-error=abort
# - -var "bakedBy=Rosco"

# If a repository is set here, it will be added by packer as repository when baking images for GCE and AWS.
# It is safe to leave this out (or blank) if you do not need to configure your own repository.
# You can specify an apt repository (used when baking debian based images) and/or a yum repository (used when baking an
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.netflix.spinnaker.rosco

import com.netflix.spinnaker.rosco.config.RoscoPackerConfigurationProperties
import com.netflix.spinnaker.rosco.jobs.config.LocalJobConfig
import com.netflix.spinnaker.rosco.providers.aws.config.RoscoAWSConfiguration
import com.netflix.spinnaker.rosco.providers.azure.config.RoscoAzureConfiguration
Expand Down Expand Up @@ -57,6 +58,7 @@ import javax.servlet.Filter
RoscoDockerConfiguration,
RoscoGoogleConfiguration,
RoscoOracleConfiguration,
RoscoPackerConfigurationProperties,
LocalJobConfig
])
@EnableAutoConfiguration(exclude = [BatchAutoConfiguration, GroovyTemplateAutoConfiguration])
Expand Down

0 comments on commit 0ababe1

Please sign in to comment.