1// Code generated by smithy-go-codegen DO NOT EDIT. 2 3package ec2 4 5import ( 6 "context" 7 "fmt" 8 awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" 9 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" 10 "github.com/aws/aws-sdk-go-v2/service/ec2/types" 11 "github.com/aws/smithy-go/middleware" 12 smithyhttp "github.com/aws/smithy-go/transport/http" 13) 14 15// Describes one or more Traffic Mirror sessions. By default, all Traffic Mirror 16// sessions are described. Alternatively, you can filter the results. 17func (c *Client) DescribeTrafficMirrorSessions(ctx context.Context, params *DescribeTrafficMirrorSessionsInput, optFns ...func(*Options)) (*DescribeTrafficMirrorSessionsOutput, error) { 18 if params == nil { 19 params = &DescribeTrafficMirrorSessionsInput{} 20 } 21 22 result, metadata, err := c.invokeOperation(ctx, "DescribeTrafficMirrorSessions", params, optFns, addOperationDescribeTrafficMirrorSessionsMiddlewares) 23 if err != nil { 24 return nil, err 25 } 26 27 out := result.(*DescribeTrafficMirrorSessionsOutput) 28 out.ResultMetadata = metadata 29 return out, nil 30} 31 32type DescribeTrafficMirrorSessionsInput struct { 33 34 // Checks whether you have the required permissions for the action, without 35 // actually making the request, and provides an error response. If you have the 36 // required permissions, the error response is DryRunOperation. Otherwise, it is 37 // UnauthorizedOperation. 38 DryRun bool 39 40 // One or more filters. The possible values are: 41 // 42 // * description: The Traffic Mirror 43 // session description. 44 // 45 // * network-interface-id: The ID of the Traffic Mirror 46 // session network interface. 47 // 48 // * owner-id: The ID of the account that owns the 49 // Traffic Mirror session. 50 // 51 // * packet-length: The assigned number of packets to 52 // mirror. 53 // 54 // * session-number: The assigned session number. 55 // 56 // * 57 // traffic-mirror-filter-id: The ID of the Traffic Mirror filter. 58 // 59 // * 60 // traffic-mirror-session-id: The ID of the Traffic Mirror session. 61 // 62 // * 63 // traffic-mirror-target-id: The ID of the Traffic Mirror target. 64 // 65 // * 66 // virtual-network-id: The virtual network ID of the Traffic Mirror session. 67 Filters []types.Filter 68 69 // The maximum number of results to return with a single call. To retrieve the 70 // remaining results, make another call with the returned nextToken value. 71 MaxResults int32 72 73 // The token for the next page of results. 74 NextToken *string 75 76 // The ID of the Traffic Mirror session. 77 TrafficMirrorSessionIds []string 78} 79 80type DescribeTrafficMirrorSessionsOutput struct { 81 82 // The token to use to retrieve the next page of results. The value is null when 83 // there are no more results to return. 84 NextToken *string 85 86 // Describes one or more Traffic Mirror sessions. By default, all Traffic Mirror 87 // sessions are described. Alternatively, you can filter the results. 88 TrafficMirrorSessions []types.TrafficMirrorSession 89 90 // Metadata pertaining to the operation's result. 91 ResultMetadata middleware.Metadata 92} 93 94func addOperationDescribeTrafficMirrorSessionsMiddlewares(stack *middleware.Stack, options Options) (err error) { 95 err = stack.Serialize.Add(&awsEc2query_serializeOpDescribeTrafficMirrorSessions{}, middleware.After) 96 if err != nil { 97 return err 98 } 99 err = stack.Deserialize.Add(&awsEc2query_deserializeOpDescribeTrafficMirrorSessions{}, middleware.After) 100 if err != nil { 101 return err 102 } 103 if err = addSetLoggerMiddleware(stack, options); err != nil { 104 return err 105 } 106 if err = awsmiddleware.AddClientRequestIDMiddleware(stack); err != nil { 107 return err 108 } 109 if err = smithyhttp.AddComputeContentLengthMiddleware(stack); err != nil { 110 return err 111 } 112 if err = addResolveEndpointMiddleware(stack, options); err != nil { 113 return err 114 } 115 if err = v4.AddComputePayloadSHA256Middleware(stack); err != nil { 116 return err 117 } 118 if err = addRetryMiddlewares(stack, options); err != nil { 119 return err 120 } 121 if err = addHTTPSignerV4Middleware(stack, options); err != nil { 122 return err 123 } 124 if err = awsmiddleware.AddRawResponseToMetadata(stack); err != nil { 125 return err 126 } 127 if err = awsmiddleware.AddRecordResponseTiming(stack); err != nil { 128 return err 129 } 130 if err = addClientUserAgent(stack); err != nil { 131 return err 132 } 133 if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { 134 return err 135 } 136 if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { 137 return err 138 } 139 if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeTrafficMirrorSessions(options.Region), middleware.Before); err != nil { 140 return err 141 } 142 if err = addRequestIDRetrieverMiddleware(stack); err != nil { 143 return err 144 } 145 if err = addResponseErrorMiddleware(stack); err != nil { 146 return err 147 } 148 if err = addRequestResponseLogging(stack, options); err != nil { 149 return err 150 } 151 return nil 152} 153 154// DescribeTrafficMirrorSessionsAPIClient is a client that implements the 155// DescribeTrafficMirrorSessions operation. 156type DescribeTrafficMirrorSessionsAPIClient interface { 157 DescribeTrafficMirrorSessions(context.Context, *DescribeTrafficMirrorSessionsInput, ...func(*Options)) (*DescribeTrafficMirrorSessionsOutput, error) 158} 159 160var _ DescribeTrafficMirrorSessionsAPIClient = (*Client)(nil) 161 162// DescribeTrafficMirrorSessionsPaginatorOptions is the paginator options for 163// DescribeTrafficMirrorSessions 164type DescribeTrafficMirrorSessionsPaginatorOptions struct { 165 // The maximum number of results to return with a single call. To retrieve the 166 // remaining results, make another call with the returned nextToken value. 167 Limit int32 168 169 // Set to true if pagination should stop if the service returns a pagination token 170 // that matches the most recent token provided to the service. 171 StopOnDuplicateToken bool 172} 173 174// DescribeTrafficMirrorSessionsPaginator is a paginator for 175// DescribeTrafficMirrorSessions 176type DescribeTrafficMirrorSessionsPaginator struct { 177 options DescribeTrafficMirrorSessionsPaginatorOptions 178 client DescribeTrafficMirrorSessionsAPIClient 179 params *DescribeTrafficMirrorSessionsInput 180 nextToken *string 181 firstPage bool 182} 183 184// NewDescribeTrafficMirrorSessionsPaginator returns a new 185// DescribeTrafficMirrorSessionsPaginator 186func NewDescribeTrafficMirrorSessionsPaginator(client DescribeTrafficMirrorSessionsAPIClient, params *DescribeTrafficMirrorSessionsInput, optFns ...func(*DescribeTrafficMirrorSessionsPaginatorOptions)) *DescribeTrafficMirrorSessionsPaginator { 187 options := DescribeTrafficMirrorSessionsPaginatorOptions{} 188 if params.MaxResults != 0 { 189 options.Limit = params.MaxResults 190 } 191 192 for _, fn := range optFns { 193 fn(&options) 194 } 195 196 if params == nil { 197 params = &DescribeTrafficMirrorSessionsInput{} 198 } 199 200 return &DescribeTrafficMirrorSessionsPaginator{ 201 options: options, 202 client: client, 203 params: params, 204 firstPage: true, 205 } 206} 207 208// HasMorePages returns a boolean indicating whether more pages are available 209func (p *DescribeTrafficMirrorSessionsPaginator) HasMorePages() bool { 210 return p.firstPage || p.nextToken != nil 211} 212 213// NextPage retrieves the next DescribeTrafficMirrorSessions page. 214func (p *DescribeTrafficMirrorSessionsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*DescribeTrafficMirrorSessionsOutput, error) { 215 if !p.HasMorePages() { 216 return nil, fmt.Errorf("no more pages available") 217 } 218 219 params := *p.params 220 params.NextToken = p.nextToken 221 222 params.MaxResults = p.options.Limit 223 224 result, err := p.client.DescribeTrafficMirrorSessions(ctx, ¶ms, optFns...) 225 if err != nil { 226 return nil, err 227 } 228 p.firstPage = false 229 230 prevToken := p.nextToken 231 p.nextToken = result.NextToken 232 233 if p.options.StopOnDuplicateToken && prevToken != nil && p.nextToken != nil && *prevToken == *p.nextToken { 234 p.nextToken = nil 235 } 236 237 return result, nil 238} 239 240func newServiceMetadataMiddleware_opDescribeTrafficMirrorSessions(region string) *awsmiddleware.RegisterServiceMetadata { 241 return &awsmiddleware.RegisterServiceMetadata{ 242 Region: region, 243 ServiceID: ServiceID, 244 SigningName: "ec2", 245 OperationName: "DescribeTrafficMirrorSessions", 246 } 247} 248