Skip to content

Commit

Permalink
adding new GetTaskMetadataWithTaskNetworkConfig functionality to redu…
Browse files Browse the repository at this point in the history
…ce scoping
  • Loading branch information
mye956 committed Sep 24, 2024
1 parent 5585857 commit 1c09ac7
Show file tree
Hide file tree
Showing 8 changed files with 105 additions and 80 deletions.
2 changes: 1 addition & 1 deletion agent/handlers/task_server_setup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4153,7 +4153,7 @@ func TestV4GetTaskMetadataWithTaskNetworkConfig(t *testing.T) {
tc.setStateExpectations(state)
}
tmdsAgentState := agentV4.NewTMDSAgentState(state, statsEngine, ecsClient, clusterName, availabilityzone, vpcID, containerInstanceArn)
actualTaskResponse, err := tmdsAgentState.GetTaskMetadata(v3EndpointID)
actualTaskResponse, err := tmdsAgentState.GetTaskMetadataWithTaskNetworkConfig(v3EndpointID)

assert.NoError(t, err)
assert.Equal(t, tc.expectedTaskNetworkConfig, actualTaskResponse.TaskNetworkConfig)
Expand Down
34 changes: 20 additions & 14 deletions agent/handlers/v4/tmdsstate.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,21 @@ func (s *TMDSAgentState) GetContainerMetadata(v3EndpointID string) (tmdsv4.Conta

// Returns task metadata in v4 format for the task identified by the provided endpointContainerID.
func (s *TMDSAgentState) GetTaskMetadata(v3EndpointID string) (tmdsv4.TaskResponse, error) {
return s.getTaskMetadata(v3EndpointID, false)
return s.getTaskMetadata(v3EndpointID, false, false)
}

// Returns task metadata including task and container instance tags in v4 format for the
// task identified by the provided endpointContainerID.
func (s *TMDSAgentState) GetTaskMetadataWithTags(v3EndpointID string) (tmdsv4.TaskResponse, error) {
return s.getTaskMetadata(v3EndpointID, true)
return s.getTaskMetadata(v3EndpointID, true, false)
}

func (s *TMDSAgentState) GetTaskMetadataWithTaskNetworkConfig(v3EndpointID string) (tmdsv4.TaskResponse, error) {
return s.getTaskMetadata(v3EndpointID, false, true)
}

// Returns task metadata in v4 format for the task identified by the provided endpointContainerID.
func (s *TMDSAgentState) getTaskMetadata(v3EndpointID string, includeTags bool) (tmdsv4.TaskResponse, error) {
func (s *TMDSAgentState) getTaskMetadata(v3EndpointID string, includeTags, includeTaskNetworkConfig bool) (tmdsv4.TaskResponse, error) {
taskARN, ok := s.state.TaskARNByV3EndpointID(v3EndpointID)
if !ok {
return tmdsv4.TaskResponse{}, tmdsv4.NewErrorLookupFailure(fmt.Sprintf(
Expand Down Expand Up @@ -155,18 +159,20 @@ func (s *TMDSAgentState) getTaskMetadata(v3EndpointID string, includeTags bool)
NewPulledContainerResponse(dockerContainer, task.GetPrimaryENI()))
}

taskResponse.FaultInjectionEnabled = task.IsFaultInjectionEnabled()
var taskNetworkConfig *tmdsv4.TaskNetworkConfig
if task.IsNetworkModeHost() {
// For host most, we don't really need the network namespace in order to do anything within the host instance network namespace
// and so we will set this to an arbitrary value such as "host".
// TODO: Will need to find/obtain the interface name of the default network interface on the host instance
taskNetworkConfig = tmdsv4.NewTaskNetworkConfig(task.GetNetworkMode(), defaultHostNetworkNamespace, task.GetDefaultIfname())
} else {
taskNetworkConfig = tmdsv4.NewTaskNetworkConfig(task.GetNetworkMode(), task.GetNetworkNamespace(), task.GetDefaultIfname())
}
if includeTaskNetworkConfig {
taskResponse.FaultInjectionEnabled = task.IsFaultInjectionEnabled()
var taskNetworkConfig *tmdsv4.TaskNetworkConfig
if task.IsNetworkModeHost() {
// For host most, we don't really need the network namespace in order to do anything within the host instance network namespace
// and so we will set this to an arbitrary value such as "host".
// TODO: Will need to find/obtain the interface name of the default network interface on the host instance
taskNetworkConfig = tmdsv4.NewTaskNetworkConfig(task.GetNetworkMode(), defaultHostNetworkNamespace, task.GetDefaultIfname())
} else {
taskNetworkConfig = tmdsv4.NewTaskNetworkConfig(task.GetNetworkMode(), task.GetNetworkNamespace(), task.GetDefaultIfname())
}

taskResponse.TaskNetworkConfig = taskNetworkConfig
taskResponse.TaskNetworkConfig = taskNetworkConfig
}

return *taskResponse, nil
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion ecs-agent/tmds/handlers/fault/v1/handlers/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -737,7 +737,7 @@ func validateRequest(w http.ResponseWriter, request types.NetworkFaultRequest, r
func validateTaskMetadata(w http.ResponseWriter, agentState state.AgentState, requestType string, r *http.Request) (*state.TaskResponse, error) {
var taskMetadata state.TaskResponse
endpointContainerID := mux.Vars(r)[v4.EndpointContainerIDMuxName]
taskMetadata, err := agentState.GetTaskMetadata(endpointContainerID)
taskMetadata, err := agentState.GetTaskMetadataWithTaskNetworkConfig(endpointContainerID)
if err != nil {
code, errResponse := getTaskMetadataErrorResponse(endpointContainerID, requestType, err)
responseBody := types.NewNetworkFaultInjectionErrorResponse(fmt.Sprintf("%v", errResponse))
Expand Down
Loading

0 comments on commit 1c09ac7

Please sign in to comment.