Skip to content

Commit

Permalink
Backport of [api] Add NetworkStatus to allocation response into relea…
Browse files Browse the repository at this point in the history
…se/1.5.x (#17803)

This pull request was automerged via backport-assistant
  • Loading branch information
hc-github-team-nomad-core authored Jul 4, 2023
1 parent 6d87ea8 commit 9d30e32
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .changelog/17280.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
api: add missing field NetworkStatus for Allocation
```
10 changes: 10 additions & 0 deletions api/allocations.go
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@ type Allocation struct {
PreviousAllocation string
NextAllocation string
RescheduleTracker *RescheduleTracker
NetworkStatus *AllocNetworkStatus
PreemptedAllocations []string
PreemptedByAllocation string
CreateIndex uint64
Expand Down Expand Up @@ -396,6 +397,15 @@ type AllocDeploymentStatus struct {
ModifyIndex uint64
}

// AllocNetworkStatus captures the status of an allocation's network during runtime.
// Depending on the network mode, an allocation's address may need to be known to other
// systems in Nomad such as service registration.
type AllocNetworkStatus struct {
InterfaceName string
Address string
DNS *DNSConfig
}

type AllocatedResources struct {
Tasks map[string]*AllocatedTaskResources
Shared AllocatedSharedResources
Expand Down
40 changes: 40 additions & 0 deletions api/allocations_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,46 @@ func TestAllocations_CreateIndexSort(t *testing.T) {
must.Eq(t, allocs, expect)
}

func TestAllocations_Info(t *testing.T) {
testutil.RequireRoot(t)
testutil.Parallel(t)

c, s := makeClient(t, nil, func(c *testutil.TestServerConfig) {
c.DevMode = true
})
defer s.Stop()
a := c.Allocations()

// wait for node
_ = oneNodeFromNodeList(t, c.Nodes())

// Create a job and attempt to register it
job := testJob()
resp, wm, err := c.Jobs().Register(job, nil)
must.NoError(t, err)
must.NotNil(t, resp)
must.UUIDv4(t, resp.EvalID)
assertWriteMeta(t, wm)

// List allocations.
qo := &QueryOptions{
WaitIndex: wm.LastIndex,
}
allocs, qm, err := a.List(qo)
must.NoError(t, err)
must.NonZero(t, qm.LastIndex)

// Check that we got one allocation.
must.Len(t, 1, allocs)
must.Eq(t, resp.EvalID, allocs[0].EvalID)

// Fetch alloc info.
qo.WaitIndex = qm.LastIndex
alloc, _, err := a.Info(allocs[0].ID, qo)

must.NotNil(t, alloc.NetworkStatus)
}

func TestAllocations_RescheduleInfo(t *testing.T) {
testutil.Parallel(t)

Expand Down

0 comments on commit 9d30e32

Please sign in to comment.