Skip to content

Commit 6181ba6

Browse files
committed
Revert "Remove task serialization and use host resource manager for task resources (aws#3723)"
This reverts commit 0a4673a.
1 parent 233ada4 commit 6181ba6

23 files changed

+404
-280
lines changed

agent/acs/handler/acs_handler_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -1418,6 +1418,7 @@ func validateAddedTask(expectedTask apitask.Task, addedTask apitask.Task) error
14181418
Family: addedTask.Family,
14191419
Version: addedTask.Version,
14201420
DesiredStatusUnsafe: addedTask.GetDesiredStatus(),
1421+
StartSequenceNumber: addedTask.StartSequenceNumber,
14211422
}
14221423

14231424
if !reflect.DeepEqual(expectedTask, taskToCompareFromAdded) {

agent/api/ecsclient/client.go

-4
Original file line numberDiff line numberDiff line change
@@ -315,10 +315,6 @@ func (client *APIECSClient) GetHostResources() (map[string]*ecs.Resource, error)
315315
}
316316
resourceMap := make(map[string]*ecs.Resource)
317317
for _, resource := range resources {
318-
if *resource.Name == "PORTS" {
319-
// Except for RCI, TCP Ports are named as PORTS_TCP in agent for Host Resources purpose
320-
resource.Name = utils.Strptr("PORTS_TCP")
321-
}
322318
resourceMap[*resource.Name] = resource
323319
}
324320
return resourceMap, nil

agent/api/task/task.go

+29-11
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333
"github.com/aws/amazon-ecs-agent/agent/config"
3434
"github.com/aws/amazon-ecs-agent/agent/dockerclient"
3535
"github.com/aws/amazon-ecs-agent/agent/dockerclient/dockerapi"
36+
"github.com/aws/amazon-ecs-agent/agent/ecs_client/model/ecs"
3637
"github.com/aws/amazon-ecs-agent/agent/taskresource"
3738
"github.com/aws/amazon-ecs-agent/agent/taskresource/asmauth"
3839
"github.com/aws/amazon-ecs-agent/agent/taskresource/asmsecret"
@@ -48,7 +49,6 @@ import (
4849
apieni "github.com/aws/amazon-ecs-agent/ecs-agent/api/eni"
4950
apierrors "github.com/aws/amazon-ecs-agent/ecs-agent/api/errors"
5051
"github.com/aws/amazon-ecs-agent/ecs-agent/credentials"
51-
"github.com/aws/amazon-ecs-agent/ecs-agent/ecs_client/model/ecs"
5252
"github.com/aws/amazon-ecs-agent/ecs-agent/logger"
5353
"github.com/aws/amazon-ecs-agent/ecs-agent/logger/field"
5454
"github.com/aws/amazon-ecs-agent/ecs-agent/utils/arn"
@@ -235,6 +235,9 @@ type Task struct {
235235
// is handled properly so that the state storage continues to work.
236236
SentStatusUnsafe apitaskstatus.TaskStatus `json:"SentStatus"`
237237

238+
StartSequenceNumber int64
239+
StopSequenceNumber int64
240+
238241
// ExecutionCredentialsID is the ID of credentials that are used by agent to
239242
// perform some action at the task level, such as pulling image from ECR
240243
ExecutionCredentialsID string `json:"executionCredentialsID"`
@@ -310,6 +313,11 @@ func TaskFromACS(acsTask *ecsacs.Task, envelope *ecsacs.PayloadMessage) (*Task,
310313
if err := json.Unmarshal(data, task); err != nil {
311314
return nil, err
312315
}
316+
if task.GetDesiredStatus() == apitaskstatus.TaskRunning && envelope.SeqNum != nil {
317+
task.StartSequenceNumber = *envelope.SeqNum
318+
} else if task.GetDesiredStatus() == apitaskstatus.TaskStopped && envelope.SeqNum != nil {
319+
task.StopSequenceNumber = *envelope.SeqNum
320+
}
313321

314322
// Overrides the container command if it's set
315323
for _, container := range task.Containers {
@@ -2818,6 +2826,22 @@ func (task *Task) GetAppMesh() *apiappmesh.AppMesh {
28182826
return task.AppMesh
28192827
}
28202828

2829+
// GetStopSequenceNumber returns the stop sequence number of a task
2830+
func (task *Task) GetStopSequenceNumber() int64 {
2831+
task.lock.RLock()
2832+
defer task.lock.RUnlock()
2833+
2834+
return task.StopSequenceNumber
2835+
}
2836+
2837+
// SetStopSequenceNumber sets the stop seqence number of a task
2838+
func (task *Task) SetStopSequenceNumber(seqnum int64) {
2839+
task.lock.Lock()
2840+
defer task.lock.Unlock()
2841+
2842+
task.StopSequenceNumber = seqnum
2843+
}
2844+
28212845
// SetPullStartedAt sets the task pullstartedat timestamp and returns whether
28222846
// this field was updated or not
28232847
func (task *Task) SetPullStartedAt(timestamp time.Time) bool {
@@ -3521,6 +3545,10 @@ func (task *Task) IsServiceConnectConnectionDraining() bool {
35213545
//
35223546
// * GPU
35233547
// - Return num of gpus requested (len of GPUIDs field)
3548+
//
3549+
// TODO remove this once ToHostResources is used
3550+
//
3551+
//lint:file-ignore U1000 Ignore all unused code
35243552
func (task *Task) ToHostResources() map[string]*ecs.Resource {
35253553
resources := make(map[string]*ecs.Resource)
35263554
// CPU
@@ -3634,13 +3662,3 @@ func (task *Task) ToHostResources() map[string]*ecs.Resource {
36343662
})
36353663
return resources
36363664
}
3637-
3638-
func (task *Task) HasActiveContainers() bool {
3639-
for _, container := range task.Containers {
3640-
containerStatus := container.GetKnownStatus()
3641-
if containerStatus >= apicontainerstatus.ContainerPulled && containerStatus <= apicontainerstatus.ContainerResourcesProvisioned {
3642-
return true
3643-
}
3644-
}
3645-
return false
3646-
}

agent/api/task/task_test.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import (
4242
"github.com/aws/amazon-ecs-agent/agent/dockerclient"
4343
"github.com/aws/amazon-ecs-agent/agent/dockerclient/dockerapi"
4444
mock_dockerapi "github.com/aws/amazon-ecs-agent/agent/dockerclient/dockerapi/mocks"
45+
"github.com/aws/amazon-ecs-agent/agent/ecs_client/model/ecs"
4546
mock_s3_factory "github.com/aws/amazon-ecs-agent/agent/s3/factory/mocks"
4647
mock_ssm_factory "github.com/aws/amazon-ecs-agent/agent/ssm/factory/mocks"
4748
"github.com/aws/amazon-ecs-agent/agent/taskresource"
@@ -53,7 +54,6 @@ import (
5354
apieni "github.com/aws/amazon-ecs-agent/ecs-agent/api/eni"
5455
"github.com/aws/amazon-ecs-agent/ecs-agent/credentials"
5556
mock_credentials "github.com/aws/amazon-ecs-agent/ecs-agent/credentials/mocks"
56-
"github.com/aws/amazon-ecs-agent/ecs-agent/ecs_client/model/ecs"
5757
"github.com/aws/aws-sdk-go/service/secretsmanager"
5858

5959
"github.com/aws/amazon-ecs-agent/agent/taskresource/asmsecret"
@@ -1861,9 +1861,10 @@ func TestTaskFromACS(t *testing.T) {
18611861
Type: "elastic-inference",
18621862
},
18631863
},
1864-
CPU: 2.0,
1865-
Memory: 512,
1866-
ResourcesMapUnsafe: make(map[string][]taskresource.TaskResource),
1864+
StartSequenceNumber: 42,
1865+
CPU: 2.0,
1866+
Memory: 512,
1867+
ResourcesMapUnsafe: make(map[string][]taskresource.TaskResource),
18671868
}
18681869

18691870
seqNum := int64(42)

agent/api/task/taskvolume_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ func TestMarshalTaskVolumesEFS(t *testing.T) {
119119
"PullStoppedAt": "0001-01-01T00:00:00Z",
120120
"ExecutionStoppedAt": "0001-01-01T00:00:00Z",
121121
"SentStatus": "NONE",
122+
"StartSequenceNumber": 0,
123+
"StopSequenceNumber": 0,
122124
"executionCredentialsID": "",
123125
"ENI": null,
124126
"AppMesh": null,
@@ -166,6 +168,8 @@ func TestUnmarshalTaskVolumesEFS(t *testing.T) {
166168
"PullStoppedAt": "0001-01-01T00:00:00Z",
167169
"ExecutionStoppedAt": "0001-01-01T00:00:00Z",
168170
"SentStatus": "NONE",
171+
"StartSequenceNumber": 0,
172+
"StopSequenceNumber": 0,
169173
"executionCredentialsID": "",
170174
"ENI": null,
171175
"AppMesh": null,

agent/api/task/taskvolume_windows_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ func TestMarshalTaskVolumeFSxWindowsFileServer(t *testing.T) {
7777
"PullStoppedAt": "0001-01-01T00:00:00Z",
7878
"ExecutionStoppedAt": "0001-01-01T00:00:00Z",
7979
"SentStatus": "NONE",
80+
"StartSequenceNumber": 0,
81+
"StopSequenceNumber": 0,
8082
"executionCredentialsID": "",
8183
"ENI": null,
8284
"AppMesh": null,
@@ -116,6 +118,8 @@ func TestUnmarshalTaskVolumeFSxWindowsFileServer(t *testing.T) {
116118
"PullStoppedAt": "0001-01-01T00:00:00Z",
117119
"ExecutionStoppedAt": "0001-01-01T00:00:00Z",
118120
"SentStatus": "NONE",
121+
"StartSequenceNumber": 0,
122+
"StopSequenceNumber": 0,
119123
"executionCredentialsID": "",
120124
"ENI": null,
121125
"AppMesh": null,

agent/app/agent_unix_test.go

-2
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,6 @@ func TestDoStartCgroupInitHappyPath(t *testing.T) {
478478
state.EXPECT().AllImageStates().Return(nil),
479479
state.EXPECT().AllENIAttachments().Return(nil),
480480
state.EXPECT().AllTasks().Return(nil),
481-
state.EXPECT().AllTasks().Return(nil),
482481
client.EXPECT().DiscoverPollEndpoint(gomock.Any()).Do(func(x interface{}) {
483482
// Ensures that the test waits until acs session has bee started
484483
discoverEndpointsInvoked.Done()
@@ -647,7 +646,6 @@ func TestDoStartGPUManagerHappyPath(t *testing.T) {
647646
state.EXPECT().AllImageStates().Return(nil),
648647
state.EXPECT().AllENIAttachments().Return(nil),
649648
state.EXPECT().AllTasks().Return(nil),
650-
state.EXPECT().AllTasks().Return(nil),
651649
client.EXPECT().DiscoverPollEndpoint(gomock.Any()).Do(func(x interface{}) {
652650
// Ensures that the test waits until acs session has been started
653651
discoverEndpointsInvoked.Done()

agent/app/data.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ import (
1818
"strings"
1919

2020
"github.com/aws/amazon-ecs-agent/agent/data"
21+
"github.com/aws/amazon-ecs-agent/agent/ecs_client/model/ecs"
2122
"github.com/aws/amazon-ecs-agent/agent/engine"
2223
"github.com/aws/amazon-ecs-agent/agent/engine/dockerstate"
2324
"github.com/aws/amazon-ecs-agent/agent/engine/execcmd"
2425
"github.com/aws/amazon-ecs-agent/agent/engine/serviceconnect"
2526
"github.com/aws/amazon-ecs-agent/ecs-agent/credentials"
26-
"github.com/aws/amazon-ecs-agent/ecs-agent/ecs_client/model/ecs"
2727
"github.com/aws/amazon-ecs-agent/ecs-agent/eventstream"
2828

2929
"github.com/pkg/errors"

agent/engine/common_integ_test.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -225,16 +225,14 @@ func skipIntegTestIfApplicable(t *testing.T) {
225225
}
226226
}
227227

228-
// Values in host resources from getTestHostResources() should be looked at and CPU/Memory assigned
229-
// accordingly
230228
func createTestContainerWithImageAndName(image string, name string) *apicontainer.Container {
231229
return &apicontainer.Container{
232230
Name: name,
233231
Image: image,
234232
Command: []string{},
235233
Essential: true,
236234
DesiredStatusUnsafe: apicontainerstatus.ContainerRunning,
237-
CPU: 256,
235+
CPU: 1024,
238236
Memory: 128,
239237
}
240238
}

agent/engine/common_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ import (
3232
"github.com/aws/amazon-ecs-agent/agent/dockerclient"
3333
"github.com/aws/amazon-ecs-agent/agent/dockerclient/dockerapi"
3434
mock_dockerapi "github.com/aws/amazon-ecs-agent/agent/dockerclient/dockerapi/mocks"
35+
"github.com/aws/amazon-ecs-agent/agent/ecs_client/model/ecs"
3536
"github.com/aws/amazon-ecs-agent/agent/engine/execcmd"
3637
mock_engine "github.com/aws/amazon-ecs-agent/agent/engine/mocks"
3738
"github.com/aws/amazon-ecs-agent/agent/statechange"
38-
"github.com/aws/amazon-ecs-agent/agent/utils"
3939
"github.com/aws/amazon-ecs-agent/ecs-agent/credentials"
40-
"github.com/aws/amazon-ecs-agent/ecs-agent/ecs_client/model/ecs"
4140
mock_ttime "github.com/aws/amazon-ecs-agent/ecs-agent/utils/ttime/mocks"
41+
"github.com/aws/amazon-ecs-agent/agent/utils"
4242
"github.com/cihub/seelog"
4343
dockercontainer "github.com/docker/docker/api/types/container"
4444
"github.com/golang/mock/gomock"

agent/engine/default.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import (
1919
"github.com/aws/amazon-ecs-agent/agent/config"
2020
"github.com/aws/amazon-ecs-agent/agent/containermetadata"
2121
"github.com/aws/amazon-ecs-agent/agent/dockerclient/dockerapi"
22+
"github.com/aws/amazon-ecs-agent/agent/ecs_client/model/ecs"
2223
"github.com/aws/amazon-ecs-agent/agent/engine/dockerstate"
2324
"github.com/aws/amazon-ecs-agent/agent/engine/execcmd"
2425
"github.com/aws/amazon-ecs-agent/agent/engine/serviceconnect"
2526
"github.com/aws/amazon-ecs-agent/agent/taskresource"
2627
"github.com/aws/amazon-ecs-agent/ecs-agent/credentials"
27-
"github.com/aws/amazon-ecs-agent/ecs-agent/ecs_client/model/ecs"
2828
"github.com/aws/amazon-ecs-agent/ecs-agent/eventstream"
2929
)
3030

agent/engine/docker_image_manager_integ_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -568,23 +568,23 @@ func createImageCleanupHappyTestTask(taskName string) *apitask.Task {
568568
Image: test1Image1Name,
569569
Essential: false,
570570
DesiredStatusUnsafe: apicontainerstatus.ContainerRunning,
571-
CPU: 256,
571+
CPU: 512,
572572
Memory: 256,
573573
},
574574
{
575575
Name: "test2",
576576
Image: test1Image2Name,
577577
Essential: false,
578578
DesiredStatusUnsafe: apicontainerstatus.ContainerRunning,
579-
CPU: 256,
579+
CPU: 512,
580580
Memory: 256,
581581
},
582582
{
583583
Name: "test3",
584584
Image: test1Image3Name,
585585
Essential: false,
586586
DesiredStatusUnsafe: apicontainerstatus.ContainerRunning,
587-
CPU: 256,
587+
CPU: 512,
588588
Memory: 256,
589589
},
590590
},
@@ -603,23 +603,23 @@ func createImageCleanupThresholdTestTask(taskName string) *apitask.Task {
603603
Image: test2Image1Name,
604604
Essential: false,
605605
DesiredStatusUnsafe: apicontainerstatus.ContainerRunning,
606-
CPU: 256,
606+
CPU: 512,
607607
Memory: 256,
608608
},
609609
{
610610
Name: "test2",
611611
Image: test2Image2Name,
612612
Essential: false,
613613
DesiredStatusUnsafe: apicontainerstatus.ContainerRunning,
614-
CPU: 256,
614+
CPU: 512,
615615
Memory: 256,
616616
},
617617
{
618618
Name: "test3",
619619
Image: test2Image3Name,
620620
Essential: false,
621621
DesiredStatusUnsafe: apicontainerstatus.ContainerRunning,
622-
CPU: 256,
622+
CPU: 512,
623623
Memory: 256,
624624
},
625625
},

0 commit comments

Comments
 (0)