Skip to content

Commit

Permalink
Added possibility to define custom parameters for transformation
Browse files Browse the repository at this point in the history
  • Loading branch information
mfojtik committed Aug 19, 2014
1 parent d005138 commit ef85789
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
2 changes: 1 addition & 1 deletion pkg/template/example/simple.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
},
{
"name": "FOO",
"value": "${BAR}"
"value": "${CUSTOM_PARAM1}"
}
],
"ports": [
Expand Down
7 changes: 4 additions & 3 deletions pkg/template/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ func (s *PValue) Substitute(params ParamMap) {
//
// s := generate.Template("[GET:http://example.com/new]")
// // s: <body from the GET request>
func (p *Template) ProcessParameters() {
func (p *Template) ProcessParameters(customParams []Parameter) {
p.Parameters = append(p.Parameters, customParams...)
for i, _ := range p.Parameters {
p.Parameters[i].Seed = p.Seed
if err := p.Parameters[i].GenerateValue(); err != nil {
Expand Down Expand Up @@ -137,8 +138,8 @@ func (e *Env) Process(params ParamMap) {
}
}

func (t *Template) Transform() ([]byte, error) {
t.ProcessParameters()
func (t *Template) Transform(customParams []Parameter) ([]byte, error) {
t.ProcessParameters(customParams)
t.Process()
return json.Marshal(*t)
}
Expand Down
11 changes: 8 additions & 3 deletions pkg/template/template_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestNewTemplate(t *testing.T) {
}

func TestProcessParameters(t *testing.T) {
sampleTemplate.ProcessParameters()
sampleTemplate.ProcessParameters([]Parameter{})

for _, p := range sampleTemplate.Parameters {
if p.Value == "" {
Expand Down Expand Up @@ -60,13 +60,18 @@ func ExampleTemplate_Transform() {
fmt.Printf("Unable to process example/simple.json template: %v", err)
}

customParams := make([]Parameter, 3)
customParams[0] = Parameter{Name: "CUSTOM_PARAM1", Value: "1"}
customParams[1] = Parameter{Name: "CUSTOM_PARAM2", Value: "2"}
customParams[2] = Parameter{Name: "CUSTOM_PARAM3", Value: "3"}

// In this example, we want always produce the same result:
//
template.Seed = rand.New(rand.NewSource(1337))

result, _ := template.Transform()
result, _ := template.Transform(customParams)

fmt.Println(string(result))
// Output:
// {"id":"example2","buildConfig":null,"imageRepository":null,"parameters":[{"name":"DB_PASSWORD","description":"PostgreSQL admin user password","type":"string","generate":"[a-zA-Z0-9]{8}","value":"bQPdwNJi","Seed":{}},{"name":"DB_USER","description":"PostgreSQL username","type":"string","generate":"admin[a-zA-Z0-9]{4}","value":"adminJwWP","Seed":{}},{"name":"SAMPLE_VAR","description":"Sample","type":"string","generate":"","value":"foo","Seed":{}}],"serviceLinks":[{"from":"database","to":"frontend","export":[{"name":"POSTGRES_ADMIN_USERNAME","value":"adminJwWP"},{"name":"POSTGRES_ADMIN_PASSWORD","value":"bQPdwNJi"},{"name":"POSTGRES_DATABASE_NAME","value":"${DB_NAME}"}]}],"services":[{"name":"database","description":"Standalone PostgreSQL 9.2 database service","labels":{"name":"database-service"},"deploymentConfig":{"deployment":{"podTemplate":{"containers":[{"name":"postgresql-1","image":{"name":"postgres","tag":"9.2"},"env":[{"name":"POSTGRES_ADMIN_USERNAME","value":"adminJwWP"},{"name":"POSTGRES_ADMIN_PASSWORD","value":"bQPdwNJi"},{"name":"FOO","value":"${BAR}"}],"ports":[{"containerPort":5432,"hostPort":5432}]}],"replicas":0}}}}],"Seed":{}}
// {"id":"example2","buildConfig":null,"imageRepository":null,"parameters":[{"name":"DB_PASSWORD","description":"PostgreSQL admin user password","type":"string","generate":"[a-zA-Z0-9]{8}","value":"bQPdwNJi","Seed":{}},{"name":"DB_USER","description":"PostgreSQL username","type":"string","generate":"admin[a-zA-Z0-9]{4}","value":"adminJwWP","Seed":{}},{"name":"SAMPLE_VAR","description":"Sample","type":"string","generate":"","value":"foo","Seed":{}},{"name":"CUSTOM_PARAM1","description":"","type":"","generate":"","value":"1","Seed":{}},{"name":"CUSTOM_PARAM2","description":"","type":"","generate":"","value":"2","Seed":{}},{"name":"CUSTOM_PARAM3","description":"","type":"","generate":"","value":"3","Seed":{}}],"serviceLinks":[{"from":"database","to":"frontend","export":[{"name":"POSTGRES_ADMIN_USERNAME","value":"adminJwWP"},{"name":"POSTGRES_ADMIN_PASSWORD","value":"bQPdwNJi"},{"name":"POSTGRES_DATABASE_NAME","value":"${DB_NAME}"}]}],"services":[{"name":"database","description":"Standalone PostgreSQL 9.2 database service","labels":{"name":"database-service"},"deploymentConfig":{"deployment":{"podTemplate":{"containers":[{"name":"postgresql-1","image":{"name":"postgres","tag":"9.2"},"env":[{"name":"POSTGRES_ADMIN_USERNAME","value":"adminJwWP"},{"name":"POSTGRES_ADMIN_PASSWORD","value":"bQPdwNJi"},{"name":"FOO","value":"1"}],"ports":[{"containerPort":5432,"hostPort":5432}]}],"replicas":0}}}}],"Seed":{}}
}

0 comments on commit ef85789

Please sign in to comment.