Skip to content

Commit 087cccf

Browse files
authored
Use oneAgent.hostGroup in ApplicationMonitoring mode (#2776)
1 parent df8dfb0 commit 087cccf

File tree

6 files changed

+131
-10
lines changed

6 files changed

+131
-10
lines changed

pkg/api/v1beta1/dynakube/properties.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -480,13 +480,22 @@ func (dk *DynaKube) HostGroup() string {
480480

481481
func (dk *DynaKube) HostGroupAsParam() string {
482482
var hostGroup string
483-
if dk.CloudNativeFullstackMode() && dk.Spec.OneAgent.CloudNativeFullStack.Args != nil {
484-
for _, arg := range dk.Spec.OneAgent.CloudNativeFullStack.Args {
485-
key, value := splitArg(arg)
486-
if key == "--set-host-group" {
487-
hostGroup = value
488-
break
489-
}
483+
var args []string
484+
485+
switch {
486+
case dk.CloudNativeFullstackMode() && dk.Spec.OneAgent.CloudNativeFullStack.Args != nil:
487+
args = dk.Spec.OneAgent.CloudNativeFullStack.Args
488+
case dk.ClassicFullStackMode() && dk.Spec.OneAgent.ClassicFullStack.Args != nil:
489+
args = dk.Spec.OneAgent.ClassicFullStack.Args
490+
case dk.HostMonitoringMode() && dk.Spec.OneAgent.HostMonitoring.Args != nil:
491+
args = dk.Spec.OneAgent.HostMonitoring.Args
492+
}
493+
494+
for _, arg := range args {
495+
key, value := splitArg(arg)
496+
if key == "--set-host-group" {
497+
hostGroup = value
498+
break
490499
}
491500
}
492501
return hostGroup

pkg/controllers/dynakube/oneagent/daemonset/arguments.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ func (dsInfo *builderInfo) arguments() ([]string, error) {
3737

3838
dsInfo.appendHostInjectArgs(argMap)
3939

40-
if dsInfo.dynakube.CloudNativeFullstackMode() {
41-
dsInfo.appendHostGroupArg(argMap)
42-
}
40+
dsInfo.appendHostGroupArg(argMap)
4341

4442
return argMap.AsKeyValueStrings(), nil
4543
}

pkg/controllers/dynakube/oneagent/daemonset/arguments_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ const (
1919
testClusterID = "test-cluster-id"
2020
testURL = "https://testing.dev.dynatracelabs.com/api"
2121
testName = "test-name"
22+
23+
testNewHostGroupName = "newhostgroup"
24+
testOldHostGroupArgument = "--set-host-group=oldhostgroup"
25+
testNewHostGroupArgument = "--set-host-group=newhostgroup"
2226
)
2327

2428
func TestArguments(t *testing.T) {
@@ -231,4 +235,70 @@ func TestPodSpec_Arguments(t *testing.T) {
231235
podSpecs := daemonset.Spec.Template.Spec
232236
assert.Contains(t, podSpecs.Containers[0].Args, "--set-host-id-source=k8s-node-name")
233237
})
238+
t.Run(`has host-group for classicFullstack`, func(t *testing.T) {
239+
classicInstance := &dynatracev1beta1.DynaKube{
240+
Spec: dynatracev1beta1.DynaKubeSpec{
241+
OneAgent: dynatracev1beta1.OneAgentSpec{
242+
HostGroup: testNewHostGroupName,
243+
ClassicFullStack: &dynatracev1beta1.HostInjectSpec{
244+
Args: []string{testOldHostGroupArgument},
245+
},
246+
},
247+
},
248+
}
249+
250+
dsInfo := HostMonitoring{
251+
builderInfo{
252+
dynakube: classicInstance,
253+
hostInjectSpec: classicInstance.Spec.OneAgent.ClassicFullStack,
254+
},
255+
}
256+
arguments, err := dsInfo.arguments()
257+
require.NoError(t, err)
258+
assert.Contains(t, arguments, testNewHostGroupArgument)
259+
})
260+
t.Run(`has host-group for cloudNativeFullstack`, func(t *testing.T) {
261+
cloudNativeInstance := &dynatracev1beta1.DynaKube{
262+
Spec: dynatracev1beta1.DynaKubeSpec{
263+
OneAgent: dynatracev1beta1.OneAgentSpec{
264+
HostGroup: testNewHostGroupName,
265+
CloudNativeFullStack: &dynatracev1beta1.CloudNativeFullStackSpec{
266+
HostInjectSpec: dynatracev1beta1.HostInjectSpec{Args: []string{testOldHostGroupArgument}},
267+
},
268+
},
269+
},
270+
}
271+
272+
dsInfo := HostMonitoring{
273+
builderInfo{
274+
dynakube: cloudNativeInstance,
275+
hostInjectSpec: &cloudNativeInstance.Spec.OneAgent.CloudNativeFullStack.HostInjectSpec,
276+
},
277+
}
278+
arguments, err := dsInfo.arguments()
279+
require.NoError(t, err)
280+
assert.Contains(t, arguments, testNewHostGroupArgument)
281+
})
282+
t.Run(`has host-group for HostMonitoring`, func(t *testing.T) {
283+
hostMonitoringInstance := &dynatracev1beta1.DynaKube{
284+
Spec: dynatracev1beta1.DynaKubeSpec{
285+
OneAgent: dynatracev1beta1.OneAgentSpec{
286+
HostGroup: testNewHostGroupName,
287+
HostMonitoring: &dynatracev1beta1.HostInjectSpec{
288+
Args: []string{testOldHostGroupArgument},
289+
},
290+
},
291+
},
292+
}
293+
294+
dsInfo := HostMonitoring{
295+
builderInfo{
296+
dynakube: hostMonitoringInstance,
297+
hostInjectSpec: hostMonitoringInstance.Spec.OneAgent.HostMonitoring,
298+
},
299+
}
300+
arguments, err := dsInfo.arguments()
301+
require.NoError(t, err)
302+
assert.Contains(t, arguments, testNewHostGroupArgument)
303+
})
234304
}

pkg/injection/startup/dtclient_builder.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ func (builder *dtclientBuilder) setOptions() {
3636
builder.addCertCheck()
3737
builder.addProxy()
3838
builder.addNetworkZone()
39+
builder.addHostGroup()
3940
builder.addTrustedCerts()
4041
}
4142

@@ -59,6 +60,12 @@ func (builder *dtclientBuilder) addNetworkZone() {
5960
}
6061
}
6162

63+
func (builder *dtclientBuilder) addHostGroup() {
64+
if builder.config.HostGroup != "" {
65+
builder.options = append(builder.options, dtclient.HostGroup(builder.config.HostGroup))
66+
}
67+
}
68+
6269
func (builder *dtclientBuilder) addTrustedCerts() {
6370
if builder.config.TrustedCAs != "" {
6471
log.Info("using TrustedCAs, check the secret for more details")

pkg/injection/startup/run.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,11 @@ func (runner *Runner) getProcessModuleConfig() (*dtclient.ProcessModuleConfig, e
155155
if runner.config.OneAgentNoProxy != "" {
156156
processModuleConfig = processModuleConfig.AddNoProxy(runner.config.OneAgentNoProxy)
157157
}
158+
159+
if runner.config.HostGroup != "" {
160+
processModuleConfig.AddHostGroup(runner.config.HostGroup)
161+
}
162+
158163
return processModuleConfig, nil
159164
}
160165

pkg/webhook/validation/dynakube/oneagent_test.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,38 @@ func TestOneAgentHostGroup(t *testing.T) {
371371
1,
372372
createDynakubeWithHostGroup([]string{"--set-host-group=arg"}, "field"),
373373
&defaultCSIDaemonSet)
374+
375+
assertAllowedResponseWithWarnings(t,
376+
1,
377+
&dynatracev1beta1.DynaKube{
378+
ObjectMeta: defaultDynakubeObjectMeta,
379+
Spec: dynatracev1beta1.DynaKubeSpec{
380+
APIURL: testApiUrl,
381+
OneAgent: dynatracev1beta1.OneAgentSpec{
382+
ClassicFullStack: &dynatracev1beta1.HostInjectSpec{
383+
Args: []string{"--set-host-group=arg"},
384+
},
385+
HostGroup: "",
386+
},
387+
},
388+
},
389+
&defaultCSIDaemonSet)
390+
391+
assertAllowedResponseWithWarnings(t,
392+
1,
393+
&dynatracev1beta1.DynaKube{
394+
ObjectMeta: defaultDynakubeObjectMeta,
395+
Spec: dynatracev1beta1.DynaKubeSpec{
396+
APIURL: testApiUrl,
397+
OneAgent: dynatracev1beta1.OneAgentSpec{
398+
HostMonitoring: &dynatracev1beta1.HostInjectSpec{
399+
Args: []string{"--set-host-group=arg"},
400+
},
401+
HostGroup: "",
402+
},
403+
},
404+
},
405+
&defaultCSIDaemonSet)
374406
})
375407
}
376408

0 commit comments

Comments
 (0)