Skip to content
This repository was archived by the owner on Jan 16, 2023. It is now read-only.

Commit eb4fffb

Browse files
author
jeremy
committed
DEV-41432: Use IP as hostname for argus related devices
1 parent cc8efda commit eb4fffb

File tree

6 files changed

+38
-58
lines changed

6 files changed

+38
-58
lines changed

pkg/device/device.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,6 @@ func buildDevice(c *config.Config, client api.CollectorSetControllerClient, opti
4848
return device
4949
}
5050

51-
// FindByName implements types.DeviceManager.
52-
func (m *Manager) FindByName(name string) (*lm.RestDevice, error) {
53-
return find("name", name, m.LMClient)
54-
}
55-
5651
// FindByDisplayName implements types.DeviceManager.
5752
func (m *Manager) FindByDisplayName(name string) (*lm.RestDevice, error) {
5853
return find("displayName", name, m.LMClient)
@@ -86,9 +81,9 @@ func (m *Manager) UpdateAndReplaceByID(id int32, options ...types.DeviceOption)
8681
return &restResponse.Data, nil
8782
}
8883

89-
// UpdateAndReplaceByName implements types.DeviceManager.
90-
func (m *Manager) UpdateAndReplaceByName(name string, options ...types.DeviceOption) (*lm.RestDevice, error) {
91-
d, err := m.FindByName(name)
84+
// UpdateAndReplaceByDisplayName implements types.DeviceManager.
85+
func (m *Manager) UpdateAndReplaceByDisplayName(name string, options ...types.DeviceOption) (*lm.RestDevice, error) {
86+
d, err := m.FindByDisplayName(name)
9287
if err != nil {
9388
return nil, err
9489
}
@@ -121,9 +116,9 @@ func (m *Manager) UpdateAndReplaceFieldByID(id int32, field string, options ...t
121116
return &restResponse.Data, nil
122117
}
123118

124-
// UpdateAndReplaceFieldByName implements types.DeviceManager.
125-
func (m *Manager) UpdateAndReplaceFieldByName(name string, field string, options ...types.DeviceOption) (*lm.RestDevice, error) {
126-
d, err := m.FindByName(name)
119+
// UpdateAndReplaceFieldByDisplayName implements types.DeviceManager.
120+
func (m *Manager) UpdateAndReplaceFieldByDisplayName(name string, field string, options ...types.DeviceOption) (*lm.RestDevice, error) {
121+
d, err := m.FindByDisplayName(name)
127122
if err != nil {
128123
return nil, err
129124
}
@@ -148,9 +143,9 @@ func (m *Manager) DeleteByID(id int32) error {
148143
return utilities.CheckAllErrors(restResponse, apiResponse, err)
149144
}
150145

151-
// DeleteByName implements types.DeviceManager.
152-
func (m *Manager) DeleteByName(name string) error {
153-
d, err := m.FindByName(name)
146+
// DeleteByDisplayName implements types.DeviceManager.
147+
func (m *Manager) DeleteByDisplayName(name string) error {
148+
d, err := m.FindByDisplayName(name)
154149
if err != nil {
155150
return err
156151
}

pkg/etcd/etcd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func (c *Controller) DiscoverByToken() ([]*Member, error) {
6464

6565
func (c *Controller) addDevice(member *Member) {
6666
// Check if the etcd member has already been added.
67-
d, err := c.FindByName(member.URL.Hostname())
67+
d, err := c.FindByDisplayName(fmtMemberDisplayName(member))
6868
if err != nil {
6969
log.Errorf("Failed to find etcd member %q: %v", member.Name, err)
7070
return

pkg/types/types.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,25 @@ type DeviceManager interface {
3535
type DeviceMapper interface {
3636
// Config returns the Argus config.
3737
Config() *config.Config
38-
// FindByName searches for a device by it's name. It will return a device if and only
39-
// if one device was found, and return nil otherwise.
40-
FindByName(string) (*lm.RestDevice, error)
4138
// FindByDisplayName searches for a device by it's display name. It will return a device if and only if
4239
// one device was found, and return nil otherwise.
4340
FindByDisplayName(string) (*lm.RestDevice, error)
4441
// Add adds a device to a LogicMonitor account.
4542
Add(...DeviceOption) (*lm.RestDevice, error)
4643
// UpdateAndReplaceByID updates a device using the 'replace' OpType.
4744
UpdateAndReplaceByID(int32, ...DeviceOption) (*lm.RestDevice, error)
48-
// UpdateAndReplaceByName updates a device using the 'replace' OpType if and onlt if it does not already exist.
49-
UpdateAndReplaceByName(string, ...DeviceOption) (*lm.RestDevice, error)
45+
// UpdateAndReplaceByDisplayName updates a device using the 'replace' OpType if and onlt if it does not already exist.
46+
UpdateAndReplaceByDisplayName(string, ...DeviceOption) (*lm.RestDevice, error)
5047
// UpdateAndReplaceFieldByID updates a device using the 'replace' OpType for a
5148
// specific field of a device.
5249
UpdateAndReplaceFieldByID(int32, string, ...DeviceOption) (*lm.RestDevice, error)
53-
// UpdateAndReplaceFieldByName updates a device using the 'replace' OpType for a
50+
// UpdateAndReplaceFieldByDisplayName updates a device using the 'replace' OpType for a
5451
// specific field of a device.
55-
UpdateAndReplaceFieldByName(string, string, ...DeviceOption) (*lm.RestDevice, error)
52+
UpdateAndReplaceFieldByDisplayName(string, string, ...DeviceOption) (*lm.RestDevice, error)
5653
// DeleteByID deletes a device by device ID.
5754
DeleteByID(int32) error
58-
// DeleteByName deletes a device by device name.
59-
DeleteByName(string) error
55+
// DeleteByDisplayName deletes a device by device display name.
56+
DeleteByDisplayName(string) error
6057
}
6158

6259
// DeviceOption is the function definition for the functional options pattern.

pkg/watch/node/node.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,12 @@ func (w *Watcher) DeleteFunc() func(obj interface{}) {
8686
log.Debugf("received DELETE event: %s", node.Name)
8787

8888
// Delete the node.
89-
internalAddress := getInternalAddress(node.Status.Addresses).Address
9089
if w.Config().DeleteDevices {
91-
if err := w.DeleteByName(internalAddress); err != nil {
90+
if err := w.DeleteByDisplayName(node.Name); err != nil {
9291
log.Errorf("Failed to delete node: %v", err)
9392
return
9493
}
95-
log.Infof("Deleted node %s", internalAddress)
94+
log.Infof("Deleted node %s", node.Name)
9695
return
9796
}
9897

@@ -113,7 +112,7 @@ func (w *Watcher) add(node *v1.Node) {
113112
}
114113

115114
func (w *Watcher) update(old, new *v1.Node) {
116-
if _, err := w.UpdateAndReplaceByName(old.Name, w.args(new, constants.NodeCategory)...); err != nil {
115+
if _, err := w.UpdateAndReplaceByDisplayName(old.Name, w.args(new, constants.NodeCategory)...); err != nil {
117116
log.Errorf("Failed to update node %q: %v", new.Name, err)
118117
} else {
119118
log.Infof("Updated node %q", old.Name)
@@ -129,7 +128,7 @@ func (w *Watcher) update(old, new *v1.Node) {
129128

130129
// nolint: dupl
131130
func (w *Watcher) move(node *v1.Node) {
132-
if _, err := w.UpdateAndReplaceFieldByName(node.Name, constants.CustomPropertiesFieldName, w.args(node, constants.NodeDeletedCategory)...); err != nil {
131+
if _, err := w.UpdateAndReplaceFieldByDisplayName(node.Name, constants.CustomPropertiesFieldName, w.args(node, constants.NodeDeletedCategory)...); err != nil {
133132
log.Errorf("Failed to move node %q: %v", node.Name, err)
134133
return
135134
}

pkg/watch/pod/pod.go

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
package pod
44

55
import (
6-
"fmt"
76
"github.com/logicmonitor/k8s-argus/pkg/constants"
87
"github.com/logicmonitor/k8s-argus/pkg/types"
98
"github.com/logicmonitor/k8s-argus/pkg/utilities"
@@ -12,7 +11,6 @@ import (
1211
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1312
"k8s.io/apimachinery/pkg/runtime"
1413
"k8s.io/client-go/kubernetes"
15-
"strings"
1614
)
1715

1816
const (
@@ -65,7 +63,7 @@ func (w *Watcher) UpdateFunc() func(oldObj, newObj interface{}) {
6563
}
6664

6765
if new.Status.Phase == v1.PodSucceeded {
68-
if err := w.DeleteByName(old.Name); err != nil {
66+
if err := w.DeleteByDisplayName(old.Name); err != nil {
6967
log.Errorf("Failed to delete pod: %v", err)
7068
return
7169
}
@@ -89,7 +87,7 @@ func (w *Watcher) DeleteFunc() func(obj interface{}) {
8987

9088
// Delete the pod.
9189
if w.Config().DeleteDevices {
92-
if err := w.DeleteByName(pod.Name); err != nil {
90+
if err := w.DeleteByDisplayName(pod.Name); err != nil {
9391
log.Errorf("Failed to delete pod: %v", err)
9492
return
9593
}
@@ -114,7 +112,7 @@ func (w *Watcher) add(pod *v1.Pod) {
114112
}
115113

116114
func (w *Watcher) update(old, new *v1.Pod) {
117-
if _, err := w.UpdateAndReplaceByName(
115+
if _, err := w.UpdateAndReplaceByDisplayName(
118116
old.Name,
119117
w.args(new, constants.PodCategory)...,
120118
); err != nil {
@@ -126,7 +124,7 @@ func (w *Watcher) update(old, new *v1.Pod) {
126124

127125
// nolint: dupl
128126
func (w *Watcher) move(pod *v1.Pod) {
129-
if _, err := w.UpdateAndReplaceFieldByName(pod.Name, constants.CustomPropertiesFieldName, w.args(pod, constants.PodDeletedCategory)...); err != nil {
127+
if _, err := w.UpdateAndReplaceFieldByDisplayName(pod.Name, constants.CustomPropertiesFieldName, w.args(pod, constants.PodDeletedCategory)...); err != nil {
130128
log.Errorf("Failed to move pod %q: %v", pod.Name, err)
131129
return
132130
}
@@ -154,11 +152,7 @@ func getPodDNSName(pod *v1.Pod) string {
154152
if pod.Spec.HostNetwork {
155153
return pod.Name
156154
}
157-
158-
// get the dns name as the format: "pod-ip-address.my-namespace.pod.cluster.local"
159-
podIP := pod.Status.PodIP
160-
podIP = strings.Replace(podIP, ".", "-", -1)
161-
return fmt.Sprintf("%s.%s.pod.cluster.local", podIP, pod.Namespace)
155+
return pod.Status.PodIP
162156
}
163157

164158
// GetPodsMap implements the getting pods map info from k8s
@@ -170,7 +164,7 @@ func GetPodsMap(k8sClient *kubernetes.Clientset, namespace string) (map[string]s
170164
}
171165
for _, podInfo := range podList.Items {
172166
// TODO: we should improve the value of the map to the ip of the pod when changing the name of the device to the ip
173-
podsMap[podInfo.Name] = podInfo.Name
167+
podsMap[podInfo.Name] = getPodDNSName(&podInfo)
174168
}
175169

176170
return podsMap, nil

pkg/watch/service/service.go

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (w *Watcher) DeleteFunc() func(obj interface{}) {
8282

8383
// Delete the service.
8484
if w.Config().DeleteDevices {
85-
if err := w.DeleteByName(fmtServiceName(service)); err != nil {
85+
if err := w.DeleteByDisplayName(service.Spec.ClusterIP); err != nil {
8686
log.Errorf("Failed to delete service: %v", err)
8787
return
8888
}
@@ -100,35 +100,35 @@ func (w *Watcher) add(service *v1.Service) {
100100
if _, err := w.Add(
101101
w.args(service, constants.ServiceCategory)...,
102102
); err != nil {
103-
log.Errorf("Failed to add service %q: %v", service.Name, err)
103+
log.Errorf("Failed to add service %q: %v", fmtServiceDisplayName(service), err)
104104
return
105105
}
106-
log.Infof("Added service %q", fmtServiceName(service))
106+
log.Infof("Added service %q", fmtServiceDisplayName(service))
107107
}
108108

109109
func (w *Watcher) update(old, new *v1.Service) {
110-
if _, err := w.UpdateAndReplaceByName(
111-
fmtServiceName(old),
110+
if _, err := w.UpdateAndReplaceByDisplayName(
111+
old.Spec.ClusterIP,
112112
w.args(new, constants.ServiceCategory)...,
113113
); err != nil {
114-
log.Errorf("Failed to update service %q: %v", fmtServiceName(new), err)
114+
log.Errorf("Failed to update service %q: %v", fmtServiceDisplayName(new), err)
115115
return
116116
}
117-
log.Infof("Updated service %q", old.Name)
117+
log.Infof("Updated service %q", fmtServiceDisplayName(old))
118118
}
119119

120120
func (w *Watcher) move(service *v1.Service) {
121-
if _, err := w.UpdateAndReplaceFieldByName(fmtServiceName(service), constants.CustomPropertiesFieldName, w.args(service, constants.ServiceDeletedCategory)...); err != nil {
122-
log.Errorf("Failed to move service %q: %v", fmtServiceName(service), err)
121+
if _, err := w.UpdateAndReplaceFieldByDisplayName(service.Spec.ClusterIP, constants.CustomPropertiesFieldName, w.args(service, constants.ServiceDeletedCategory)...); err != nil {
122+
log.Errorf("Failed to move service %q: %v", fmtServiceDisplayName(service), err)
123123
return
124124
}
125-
log.Infof("Moved service %q", fmtServiceName(service))
125+
log.Infof("Moved service %q", fmtServiceDisplayName(service))
126126
}
127127

128128
func (w *Watcher) args(service *v1.Service, category string) []types.DeviceOption {
129129
categories := utilities.BuildSystemCategoriesFromLabels(category, service.Labels)
130130
return []types.DeviceOption{
131-
w.Name(fmtServiceName(service)),
131+
w.Name(service.Spec.ClusterIP),
132132
w.ResourceLabels(service.Labels),
133133
w.DisplayName(fmtServiceDisplayName(service)),
134134
w.SystemCategories(categories),
@@ -139,11 +139,6 @@ func (w *Watcher) args(service *v1.Service, category string) []types.DeviceOptio
139139
}
140140
}
141141

142-
// fmtServiceName implements the conversion for the service name
143-
func fmtServiceName(service *v1.Service) string {
144-
return fmt.Sprintf("%s.%s.svc.cluster.local", service.Name, service.Namespace)
145-
}
146-
147142
// FmtServiceDisplayName implements the conversion for the service display name
148143
func fmtServiceDisplayName(service *v1.Service) string {
149144
return fmt.Sprintf("%s-%s", service.Name, string(service.UID))
@@ -158,7 +153,7 @@ func GetServicesMap(k8sClient *kubernetes.Clientset, namespace string) (map[stri
158153
return nil, err
159154
}
160155
for _, serviceInfo := range serviceList.Items {
161-
servicesMap[fmtServiceDisplayName(&serviceInfo)] = fmtServiceName(&serviceInfo)
156+
servicesMap[fmtServiceDisplayName(&serviceInfo)] = serviceInfo.Spec.ClusterIP
162157
}
163158

164159
return servicesMap, nil

0 commit comments

Comments
 (0)