Skip to content

Commit 8d44ddd

Browse files
refactor(pkg/kilt): move the container serialization to a dedicated function
Signed-off-by: francesco-racciatti <francesco.racciatti@sysdig.com>
1 parent f2528cd commit 8d44ddd

File tree

2 files changed

+62
-16
lines changed

2 files changed

+62
-16
lines changed

pkg/kilt/hocon.go

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,48 +31,59 @@ func NewKiltHocon(definition string, recipeConfig string, sidecarConfig interfac
3131
}
3232
}
3333

34-
func (k *KiltHocon) prepareFullStringConfig(container *gabs.Container, groupName string) (*configuration.Config, error) {
35-
rawVars := ""
34+
func serializeContainerConfiguration(container *gabs.Container, groupName string) (string, error) {
35+
var serialized string
36+
var jsonDoc []byte
37+
var err error
3638

37-
jsonDoc, err := json.Marshal(container.S("Image"))
39+
jsonDoc, err = json.Marshal(container.S("Image"))
3840
if err != nil {
39-
return nil, fmt.Errorf("could not serialize container image: %w", err)
41+
return "", fmt.Errorf("could not serialize container image: %w", err)
4042
}
41-
rawVars += "original.image:" + string(jsonDoc) + "\n"
43+
serialized += "original.image:" + string(jsonDoc) + "\n"
4244

4345
jsonDoc, err = json.Marshal(container.S("Name"))
4446
if err != nil {
45-
return nil, fmt.Errorf("could not serialize container name: %w", err)
47+
return "", fmt.Errorf("could not serialize container name: %w", err)
4648
}
47-
rawVars += "original.container_name:" + string(jsonDoc) + "\n"
49+
serialized += "original.container_name:" + string(jsonDoc) + "\n"
4850

4951
jsonDoc, err = json.Marshal(groupName)
5052
if err != nil {
51-
return nil, fmt.Errorf("could not serialize container group name: %w", err)
53+
return "", fmt.Errorf("could not serialize container group name: %w", err)
5254
}
53-
rawVars += "original.container_group_name:" + string(jsonDoc) + "\n"
55+
serialized += "original.container_group_name:" + string(jsonDoc) + "\n"
5456

5557
jsonDoc, err = json.Marshal(container.S("EntryPoint"))
5658
if err != nil {
57-
return nil, fmt.Errorf("could not serialize container entry point: %w", err)
59+
return "", fmt.Errorf("could not serialize container entry point: %w", err)
5860
}
59-
rawVars += "original.entry_point:" + string(jsonDoc) + "\n"
61+
serialized += "original.entry_point:" + string(jsonDoc) + "\n"
6062

6163
jsonDoc, err = json.Marshal(container.S("Command"))
6264
if err != nil {
63-
return nil, fmt.Errorf("could not serialize container command: %w", err)
65+
return "", fmt.Errorf("could not serialize container command: %w", err)
6466
}
65-
rawVars += "original.command:" + string(jsonDoc) + "\n"
67+
serialized += "original.command:" + string(jsonDoc) + "\n"
6668

6769
rawEnvMap := make(map[string]interface{})
6870
for _, env := range container.S("Environment").Children() {
6971
rawEnvMap[env.S("Name").Data().(string)] = env.S("Value")
7072
}
7173
jsonDoc, err = json.Marshal(rawEnvMap)
7274
if err != nil {
73-
return nil, fmt.Errorf("could not serialize container environment variables: %w", err)
75+
return "", fmt.Errorf("could not serialize container environment variables: %w", err)
76+
}
77+
serialized += "original.environment_variables:" + string(jsonDoc) + "\n"
78+
79+
return serialized, nil
80+
}
81+
82+
func (k *KiltHocon) prepareFullStringConfig(container *gabs.Container, groupName string) (*configuration.Config, error) {
83+
containerConfig, err := serializeContainerConfiguration(container, groupName)
84+
if err != nil {
85+
return nil, err
7486
}
75-
rawVars += "original.environment_variables:" + string(jsonDoc) + "\n"
7687

7788
sidecarConfig := []byte("{}")
7889
if k.sidecarConfig != nil {
@@ -82,7 +93,8 @@ func (k *KiltHocon) prepareFullStringConfig(container *gabs.Container, groupName
8293
}
8394
}
8495

85-
configString := string(rawVars) + "\n" +
96+
configString :=
97+
containerConfig + "\n" +
8698
"config:" + k.recipeConfig + "\n" +
8799
"sidecar_config:" + string(sidecarConfig) + "\n" +
88100
defaults + "\n" +

pkg/kilt/hocon_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,3 +87,37 @@ func TestEnvironmentVariables(t *testing.T) {
8787
container := containers.S("0")
8888
assert.Equal(t, "true", *getEnvByName(container, "PREEXISTING"))
8989
}
90+
91+
func Test_serializeContainerConfiguration(t *testing.T) {
92+
containerJson := `{
93+
"Image": "busybox:latest",
94+
"Name": "busybox",
95+
"EntryPoint": ["/bin/sh"],
96+
"Command": ["-c", "echo hello"],
97+
"Environment": [
98+
{"Name": "TEST", "Value": "true"}
99+
]
100+
}`
101+
102+
expected := `original.image:"busybox:latest"
103+
original.container_name:"busybox"
104+
original.container_group_name:"test-group"
105+
original.entry_point:["/bin/sh"]
106+
original.command:["-c","echo hello"]
107+
original.environment_variables:{"TEST":"true"}
108+
`
109+
110+
container, err := gabs.ParseJSON([]byte(containerJson))
111+
if err != nil {
112+
t.Fatalf("failed to parse JSON: %v", err)
113+
}
114+
115+
groupName := "test-group"
116+
117+
serialized, err := serializeContainerConfiguration(container, groupName)
118+
if err != nil {
119+
t.Fatalf("failed to marshal container configuration: %v", err)
120+
}
121+
122+
assert.Equal(t, expected, serialized)
123+
}

0 commit comments

Comments
 (0)