mirror of
https://github.com/fleetdm/fleet
synced 2026-05-23 08:58:41 +00:00
Update return values to be null if the data is not available (#3490)
* Update return values to be null if the data is not available * Return nil in the parent object if neither is available * Improve readability of the code
This commit is contained in:
parent
06a64cdd2c
commit
7b46df569c
3 changed files with 102 additions and 26 deletions
|
|
@ -266,6 +266,6 @@ type HostMDM struct {
|
|||
}
|
||||
|
||||
type MacadminsData struct {
|
||||
Munki HostMunkiInfo `json:"munki"`
|
||||
MDM HostMDM `json:"mobile_device_management"`
|
||||
Munki *HostMunkiInfo `json:"munki"`
|
||||
MDM *HostMDM `json:"mobile_device_management"`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -718,29 +718,38 @@ func (svc *Service) MacadminsData(ctx context.Context, id uint) (*fleet.Macadmin
|
|||
return nil, err
|
||||
}
|
||||
|
||||
version, err := svc.ds.GetMunkiVersion(ctx, id)
|
||||
if err != nil && !fleet.IsNotFound(err) {
|
||||
var munkiInfo *fleet.HostMunkiInfo
|
||||
switch version, err := svc.ds.GetMunkiVersion(ctx, id); {
|
||||
case err != nil && !fleet.IsNotFound(err):
|
||||
return nil, err
|
||||
case err == nil:
|
||||
munkiInfo = &fleet.HostMunkiInfo{Version: version}
|
||||
}
|
||||
|
||||
enrolled, serverURL, installedFromDep, err := svc.ds.GetMDM(ctx, id)
|
||||
if err != nil && !fleet.IsNotFound(err) {
|
||||
var mdm *fleet.HostMDM
|
||||
switch enrolled, serverURL, installedFromDep, err := svc.ds.GetMDM(ctx, id); {
|
||||
case err != nil && !fleet.IsNotFound(err):
|
||||
return nil, err
|
||||
case err == nil:
|
||||
enrollmentStatus := "Unenrolled"
|
||||
if enrolled && !installedFromDep {
|
||||
enrollmentStatus = "Enrolled (manual)"
|
||||
} else if enrolled && installedFromDep {
|
||||
enrollmentStatus = "Enrolled (automated)"
|
||||
}
|
||||
mdm = &fleet.HostMDM{
|
||||
EnrollmentStatus: enrollmentStatus,
|
||||
ServerURL: serverURL,
|
||||
}
|
||||
}
|
||||
|
||||
enrollmentStatus := "Unenrolled"
|
||||
if enrolled && !installedFromDep {
|
||||
enrollmentStatus = "Enrolled (manual)"
|
||||
} else if enrolled && installedFromDep {
|
||||
enrollmentStatus = "Enrolled (automated)"
|
||||
if munkiInfo == nil && mdm == nil {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
data := &fleet.MacadminsData{
|
||||
Munki: fleet.HostMunkiInfo{Version: version},
|
||||
MDM: fleet.HostMDM{
|
||||
EnrollmentStatus: enrollmentStatus,
|
||||
ServerURL: serverURL,
|
||||
},
|
||||
Munki: munkiInfo,
|
||||
MDM: mdm,
|
||||
}
|
||||
|
||||
return data, nil
|
||||
|
|
|
|||
|
|
@ -1600,7 +1600,7 @@ func (s *integrationTestSuite) TestGetMacadminsData() {
|
|||
|
||||
ctx := context.Background()
|
||||
|
||||
host, err := s.ds.NewHost(ctx, &fleet.Host{
|
||||
hostAll, err := s.ds.NewHost(ctx, &fleet.Host{
|
||||
DetailUpdatedAt: time.Now(),
|
||||
LabelUpdatedAt: time.Now(),
|
||||
PolicyUpdatedAt: time.Now(),
|
||||
|
|
@ -1610,36 +1610,103 @@ func (s *integrationTestSuite) TestGetMacadminsData() {
|
|||
Hostname: t.Name() + "foo.local",
|
||||
PrimaryIP: "192.168.1.1",
|
||||
PrimaryMac: "30-65-EC-6F-C4-58",
|
||||
OsqueryHostID: "1",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, host)
|
||||
require.NotNil(t, hostAll)
|
||||
|
||||
require.NoError(t, s.ds.SetOrUpdateMDMData(ctx, host.ID, true, "url", false))
|
||||
require.NoError(t, s.ds.SetOrUpdateMunkiVersion(ctx, host.ID, "1.3.0"))
|
||||
hostNothing, err := s.ds.NewHost(ctx, &fleet.Host{
|
||||
DetailUpdatedAt: time.Now(),
|
||||
LabelUpdatedAt: time.Now(),
|
||||
PolicyUpdatedAt: time.Now(),
|
||||
SeenTime: time.Now(),
|
||||
NodeKey: t.Name() + "2",
|
||||
UUID: t.Name() + "2",
|
||||
Hostname: t.Name() + "foo.local2",
|
||||
PrimaryIP: "192.168.1.2",
|
||||
PrimaryMac: "30-65-EC-6F-C4-59",
|
||||
OsqueryHostID: "2",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, hostNothing)
|
||||
|
||||
hostOnlyMunki, err := s.ds.NewHost(ctx, &fleet.Host{
|
||||
DetailUpdatedAt: time.Now(),
|
||||
LabelUpdatedAt: time.Now(),
|
||||
PolicyUpdatedAt: time.Now(),
|
||||
SeenTime: time.Now(),
|
||||
NodeKey: t.Name() + "3",
|
||||
UUID: t.Name() + "3",
|
||||
Hostname: t.Name() + "foo.local3",
|
||||
PrimaryIP: "192.168.1.3",
|
||||
PrimaryMac: "30-65-EC-6F-C4-5F",
|
||||
OsqueryHostID: "3",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, hostOnlyMunki)
|
||||
|
||||
hostOnlyMDM, err := s.ds.NewHost(ctx, &fleet.Host{
|
||||
DetailUpdatedAt: time.Now(),
|
||||
LabelUpdatedAt: time.Now(),
|
||||
PolicyUpdatedAt: time.Now(),
|
||||
SeenTime: time.Now(),
|
||||
NodeKey: t.Name() + "4",
|
||||
UUID: t.Name() + "4",
|
||||
Hostname: t.Name() + "foo.local4",
|
||||
PrimaryIP: "192.168.1.4",
|
||||
PrimaryMac: "30-65-EC-6F-C4-5A",
|
||||
OsqueryHostID: "4",
|
||||
})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, hostOnlyMDM)
|
||||
|
||||
require.NoError(t, s.ds.SetOrUpdateMDMData(ctx, hostAll.ID, true, "url", false))
|
||||
require.NoError(t, s.ds.SetOrUpdateMunkiVersion(ctx, hostAll.ID, "1.3.0"))
|
||||
|
||||
macadminsData := getMacadminsDataResponse{}
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", host.ID), nil, http.StatusOK, &macadminsData)
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", hostAll.ID), nil, http.StatusOK, &macadminsData)
|
||||
require.NotNil(t, macadminsData.Macadmins)
|
||||
assert.Equal(t, "url", macadminsData.Macadmins.MDM.ServerURL)
|
||||
assert.Equal(t, "Enrolled (manual)", macadminsData.Macadmins.MDM.EnrollmentStatus)
|
||||
assert.Equal(t, "1.3.0", macadminsData.Macadmins.Munki.Version)
|
||||
|
||||
require.NoError(t, s.ds.SetOrUpdateMDMData(ctx, host.ID, true, "url2", true))
|
||||
require.NoError(t, s.ds.SetOrUpdateMunkiVersion(ctx, host.ID, "1.5.0"))
|
||||
require.NoError(t, s.ds.SetOrUpdateMDMData(ctx, hostAll.ID, true, "url2", true))
|
||||
require.NoError(t, s.ds.SetOrUpdateMunkiVersion(ctx, hostAll.ID, "1.5.0"))
|
||||
|
||||
macadminsData = getMacadminsDataResponse{}
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", host.ID), nil, http.StatusOK, &macadminsData)
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", hostAll.ID), nil, http.StatusOK, &macadminsData)
|
||||
require.NotNil(t, macadminsData.Macadmins)
|
||||
assert.Equal(t, "url2", macadminsData.Macadmins.MDM.ServerURL)
|
||||
assert.Equal(t, "Enrolled (automated)", macadminsData.Macadmins.MDM.EnrollmentStatus)
|
||||
assert.Equal(t, "1.5.0", macadminsData.Macadmins.Munki.Version)
|
||||
|
||||
require.NoError(t, s.ds.SetOrUpdateMDMData(ctx, host.ID, false, "url2", false))
|
||||
require.NoError(t, s.ds.SetOrUpdateMDMData(ctx, hostAll.ID, false, "url2", false))
|
||||
|
||||
macadminsData = getMacadminsDataResponse{}
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", host.ID), nil, http.StatusOK, &macadminsData)
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", hostAll.ID), nil, http.StatusOK, &macadminsData)
|
||||
require.NotNil(t, macadminsData.Macadmins)
|
||||
assert.Equal(t, "Unenrolled", macadminsData.Macadmins.MDM.EnrollmentStatus)
|
||||
|
||||
// nothing returns null
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", hostNothing.ID), nil, http.StatusOK, &macadminsData)
|
||||
require.Nil(t, macadminsData.Macadmins)
|
||||
|
||||
// only munki info returns null on mdm
|
||||
require.NoError(t, s.ds.SetOrUpdateMunkiVersion(ctx, hostOnlyMunki.ID, "3.2.0"))
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", hostOnlyMunki.ID), nil, http.StatusOK, &macadminsData)
|
||||
require.NotNil(t, macadminsData.Macadmins)
|
||||
require.Nil(t, macadminsData.Macadmins.MDM)
|
||||
require.NotNil(t, macadminsData.Macadmins.Munki)
|
||||
assert.Equal(t, "3.2.0", macadminsData.Macadmins.Munki.Version)
|
||||
|
||||
// only mdm returns null on munki info
|
||||
require.NoError(t, s.ds.SetOrUpdateMDMData(ctx, hostOnlyMDM.ID, true, "AAA", true))
|
||||
s.DoJSON("GET", fmt.Sprintf("/api/v1/fleet/hosts/%d/macadmins", hostOnlyMDM.ID), nil, http.StatusOK, &macadminsData)
|
||||
require.NotNil(t, macadminsData.Macadmins)
|
||||
require.NotNil(t, macadminsData.Macadmins.MDM)
|
||||
require.Nil(t, macadminsData.Macadmins.Munki)
|
||||
assert.Equal(t, "AAA", macadminsData.Macadmins.MDM.ServerURL)
|
||||
assert.Equal(t, "Enrolled (automated)", macadminsData.Macadmins.MDM.EnrollmentStatus)
|
||||
}
|
||||
|
||||
func (s *integrationTestSuite) TestLabels() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue