Full Code of jpignata/fargate for AI

master aa1c09cd404e cached
118 files
1.8 MB
513.1k tokens
4173 symbols
1 requests
Download .txt
Showing preview only (1,956K chars total). Download the full file or copy to clipboard to get everything.
Repository: jpignata/fargate
Branch: master
Commit: aa1c09cd404e
Files: 118
Total size: 1.8 MB

Directory structure:
gitextract_6knv8f8q/

├── .circleci/
│   └── config.yml
├── .dockerignore
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── acm/
│   ├── certificate.go
│   ├── certificate_test.go
│   ├── main.go
│   └── mock/
│       ├── client/
│       │   └── client.go
│       └── sdk/
│           ├── acmiface.go
│           └── paginators.go
├── cloudwatchlogs/
│   ├── log_group.go
│   └── main.go
├── cmd/
│   ├── certificate.go
│   ├── certificate_destroy.go
│   ├── certificate_destroy_test.go
│   ├── certificate_import.go
│   ├── certificate_import_test.go
│   ├── certificate_info.go
│   ├── certificate_info_test.go
│   ├── certificate_list.go
│   ├── certificate_list_test.go
│   ├── certificate_request.go
│   ├── certificate_request_test.go
│   ├── certificate_test.go
│   ├── certificate_validate.go
│   ├── certificate_validate_test.go
│   ├── lb.go
│   ├── lb_alias.go
│   ├── lb_alias_test.go
│   ├── lb_create.go
│   ├── lb_create_test.go
│   ├── lb_destroy.go
│   ├── lb_info.go
│   ├── lb_list.go
│   ├── lb_list_test.go
│   ├── logs.go
│   ├── mock/
│   │   └── output.go
│   ├── output.go
│   ├── output_test.go
│   ├── port.go
│   ├── port_test.go
│   ├── root.go
│   ├── root_test.go
│   ├── service.go
│   ├── service_create.go
│   ├── service_deploy.go
│   ├── service_destroy.go
│   ├── service_env.go
│   ├── service_env_list.go
│   ├── service_env_set.go
│   ├── service_env_unset.go
│   ├── service_info.go
│   ├── service_list.go
│   ├── service_logs.go
│   ├── service_ps.go
│   ├── service_restart.go
│   ├── service_scale.go
│   ├── service_update.go
│   ├── string_util.go
│   ├── string_util_test.go
│   ├── task.go
│   ├── task_info.go
│   ├── task_list.go
│   ├── task_logs.go
│   ├── task_ps.go
│   ├── task_run.go
│   ├── task_stop.go
│   ├── testdata/
│   │   ├── certificate.crt
│   │   ├── chain.crt
│   │   └── private.key
│   ├── vpc_operation.go
│   └── vpc_operation_test.go
├── console/
│   └── main.go
├── doc/
│   └── website/
│       ├── index.html
│       └── styles.css
├── docker/
│   └── main.go
├── ec2/
│   ├── eni.go
│   ├── main.go
│   ├── mock/
│   │   ├── client/
│   │   │   └── client.go
│   │   └── sdk/
│   │       └── ec2iface.go
│   ├── vpc.go
│   └── vpc_test.go
├── ecr/
│   ├── main.go
│   └── repository.go
├── ecs/
│   ├── cluster.go
│   ├── main.go
│   ├── service.go
│   ├── task.go
│   └── task_definition.go
├── elbv2/
│   ├── listener.go
│   ├── listener_test.go
│   ├── load_balancer.go
│   ├── load_balancer_test.go
│   ├── main.go
│   ├── mock/
│   │   ├── client/
│   │   │   └── client.go
│   │   └── sdk/
│   │       ├── elbv2iface.go
│   │       └── paginators.go
│   ├── target_group.go
│   └── target_group_test.go
├── git/
│   ├── main.go
│   └── main_test.go
├── go.mod
├── go.sum
├── iam/
│   ├── main.go
│   └── role.go
├── main.go
└── route53/
    ├── hosted_zone.go
    ├── hosted_zone_test.go
    ├── main.go
    └── mock/
        ├── client/
        │   └── client.go
        └── sdk/
            ├── paginators.go
            └── route53iface.go

================================================
FILE CONTENTS
================================================

================================================
FILE: .circleci/config.yml
================================================
version: 2
jobs:
  build:
    docker:
      - image: circleci/golang:1.10
    working_directory: /go/src/github.com/awslabs/fargatecli
    steps:
      - checkout

      - run: git config --global user.email circleci@pignata.com
      - run: git config --global user.name CircleCI

      - run: go get -u github.com/golang/dep/cmd/dep
      - run: dep ensure

      - run: make test


================================================
FILE: .dockerignore
================================================
Dockerfile


================================================
FILE: .gitignore
================================================
.DS_Store
bin
fargate
dist
fargatecli
vendor


================================================
FILE: CHANGELOG.md
================================================
## 0.3.1 (2019-05-09)

### Enhancements

- Added support for ap-south-1, ca-central-1 and ap-northeast-2 regions

## 0.3.0 (2019-03-14)

### Enhancements

- Console output reworked for consistency and brevity
- macOS users get emoji as a type prefix in console output :tada: -- disable
  with --no-emoji if you're not into fun
- Requests and responses from AWS are displayed in full when --verbose is
  passed
- Added additional AWS Fargate regions
- Added --task-command flag to allow overriding of the Docker command used by the container
- If you have a region set in your AWS credentials, use that by default and only fall back to us-east-1 if no region is set
- Added --assign-public-ip boolean flag, which allows you to control whether a task has a public IP address (default: true)

### Bug Fixes

- Environment variable service commands now return a polite error message when
  invoked without the service name. ([#22][issue-22])
- Certificate import command re-implemented to work correctly. Previously calls
  to this command always returned "private key not supported" as we were
  incorrectly encoding it to base64 before passing it to the AWS SDK.

### Chores

- Utilize `dep` for dependency management
- Add contributor guide, updated license to repo

## 0.2.3 (2018-01-19)

### Features

- Support **--task-role** flag in service create and task run to allow passing
  a role name for the tasks to assume. ([#8][issue-8])

### Enhancements

- Use the `ForceNewDeployment` feature of `UpdateService` in service restart
  instead of incrementing the task definition. ([#14][issue-14])

### Bug Fixes

- Fixed issue where we'd stomp on an existing task role on service updates like
  deployments or environment variable changes. ([#8][issue-8])

## 0.2.2 (2018-01-11)

### Bug Fixes

- Fix service update operation to properly validate and run. ([#11][issue-11])
- Bail out early in service info if the requested service is not active meaning
  it has been previously destroyed.

## 0.2.1 (2018-01-02)

### Bug Fixes

- service create will not run if a load balancer is configured without a port.
- service create and task run will no longer create a repository if an image is
  explictly passed.
- service destroy will remove all references the service's target group and
  delete it.
- Fix git repo detection to properly use a git sha image tag rather than a
  time stamp tag. ([#6][issue-6])
- Fail fast if a user attempts to destroy a service scaled above 0.

## 0.2.0 (2017-12-31)

### Features

- Added **--cluster** global flag to allow running commands against other
  clusters rather than the default. If omitted, the default **fargate** cluster
  is used. ([#2][issue-2])
- lb create, service create, and task run now accept an optional **--subnet-id**
  flag to place resources in different VPCs and subnets rather than the
  defaults. If omitted, resources will be placed within the default subnets
  within the default VPC. ([#2][issue-2])
- lb create, service create, and task run now accept an optional
  **--security-group-id** flag to allow applying more restrictive security
  groups to load balancers, services, and tasks. This flag can be passed
  multiple times to apply multiple security groups. If omitted, a permissive
  security group will be applied.

### Bug Fixes

- Resolved crashes with certificates missing resource records. Certificates that
  fail to be issued immediately after request would cause crashes in lb info and
  lb list as the resource record was never generated.

[issue-2]: https://github.com/awslabs/fargatecli/issues/2
[issue-6]: https://github.com/awslabs/fargatecli/issues/6
[issue-8]: https://github.com/awslabs/fargatecli/issues/8
[issue-11]: https://github.com/awslabs/fargatecli/issues/11
[issue-14]: https://github.com/awslabs/fargatecli/issues/14
[issue-22]: https://github.com/awslabs/fargatecli/issues/22


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Amazon Open Source Code of Conduct

This code of conduct provides guidance on participation in Amazon-managed open
source communities, and outlines the process for reporting unacceptable
behavior. As an organization and community, we are committed to providing an
inclusive environment for everyone. Anyone violating this code of conduct may be
removed and banned from the community.

**Our open source communities endeavor to:**
- Use welcoming and inclusive language;
- Be respectful of differing viewpoints at all times;
- Accept constructive criticism and work together toward decisions;
- Focus on what is best for the community and users.

**Our Responsibility.** As contributors, members, or bystanders we each
individually have the responsibility to behave professionally and respectfully
at all times. Disrespectful and unacceptable behaviors include, but are not
limited to: The use of violent threats, abusive, discriminatory, or derogatory
language;
- Offensive comments related to gender, gender identity and expression, sexual
  orientation, disability, mental illness, race, political or religious
  affiliation;
- Posting of sexually explicit or violent content;
- The use of sexualized language and unwelcome sexual attention or advances;
- Public or private
  [harassment](http://todogroup.org/opencodeofconduct/#definitions) of any kind;
- Publishing private information, such as physical or electronic address,
  without permission;
- Other conduct which could reasonably be considered inappropriate in a
  professional setting;
- Advocating for or encouraging any of the above behaviors.

**Enforcement and Reporting Code of Conduct Issues.** Instances of abusive,
harassing, or otherwise unacceptable behavior may be reported by contacting
opensource-codeofconduct@amazon.com. All complaints will be reviewed and
investigated and will result in a response that is deemed necessary and
appropriate to the circumstances.

**Attribution.** _This code of conduct is based on the
[template](http://todogroup.org/opencodeofconduct) established by the [TODO
Group](http://todogroup.org/) and the Scope section from the [Contributor
Covenant version 1.4](http://contributor-covenant.org/version/1/4/)._


================================================
FILE: CONTRIBUTING.md
================================================
**Welcome!** Thank you for considering contributing to this project! If I can
help in anyway to get you going, please feel free to reach out. I'm available by
email and Google Hangouts at john@pignata.com.

# Contributing

## Workflow

- **Did you find a bug?**

  Awesome! Please feel free to open an issue first, or if you have a fix open a
  pull request that describes the bug with code that demonstrates the bug in a
  test and addresses it.

- **Do you want to add a feature?**

  Features begin life as a proposal. Please open a pull request with a proposal
  that explains the feature, its use case, considerations, and design. This will
  allow interested contributors to weigh in, refine the idea, and ensure there's
  no wasted time in the event a feature doesn't fit with our direction.

## Setup

- Ensure you're using golang 1.9+.

  ```console
  go version
  ```

- Install [`dep`][dep] if not present on your system. See their [installation
  instructions][dep-install] and [releases page][dep-releases] for details.

- Install the source code from GitHub

  ```console
  go get github.com/awslabs/fargatecli
  ```

- Run `dep ensure` to install required dependencies

  ```console
  cd $GOPATH/src/github.com/awslabs/fargatecli
  dep ensure
  ```

- Make sure you can run the tests

  ```console
  make test
  ```

## Testing

- Tests can be run via `go test` or `make test`

- To generate mocks as you add functionality, run `make mocks` or use `go
  generate` directly

## Building

- To build a binary for your platform run `make`

- For cross-building for all supported platforms, run `make dist` which builds
  binaries for darwin (64-bit) and linux (Arm, 32-bit, 64-bit).

## Licensing

This project is released under the [Apache 2.0 license][apache].

## Code of Conduct

This project abides by the [Amazon Open Source Code of Conduct][amzn-coc].
Please be nice.

[dep]: https://golang.github.io/dep
[dep-install]: https://golang.github.io/dep/docs/installation.html
[dep-releases]: https://github.com/golang/dep/releases
[amzn-coc]: https://aws.github.io/code-of-conduct
[apache]: http://aws.amazon.com/apache-2-0/


================================================
FILE: Dockerfile
================================================
FROM golang:alpine

RUN apk add --no-cache git upx

WORKDIR /fargate

ADD go.mod .
RUN go mod download

ADD . /fargate
RUN go build -ldflags="-s -w"
RUN upx --brute fargate

FROM alpine

RUN apk add --no-cache ca-certificates

COPY --from=0 /fargate/fargate /usr/local/bin/


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: Makefile
================================================
.PHONY: mocks test build dist

PACKAGES := $(shell go list ./... | grep -v /mock)

mocks:
	go get github.com/golang/mock/mockgen
	go generate $(PACKAGES)

test:
	go test -race -cover $(PACKAGES)

build:
	go build -o bin/fargate main.go

dist:
	GOOS=darwin GOARCH=amd64 go build -o dist/build/fargate-darwin-amd64/fargate main.go
	GOOS=linux GOARCH=amd64 go build -o dist/build/fargate-linux-amd64/fargate main.go
	GOOS=linux GOARCH=386 go build -o dist/build/fargate-linux-386/fargate main.go
	GOOS=linux GOARCH=arm go build -o dist/build/fargate-linux-arm/fargate main.go
	GOOS=windows go get -u github.com/spf13/cobra
	GOOS=windows GOARCH=amd64 go build -o dist/build/fargate-windows-amd64/fargate.exe main.go
	GOOS=windows GOARCH=386 go build -o dist/build/fargate-windows-386/fargate.exe main.go

	cd dist/build/fargate-darwin-amd64 && zip fargate-${FARGATE_VERSION}-darwin-amd64.zip fargate
	cd dist/build/fargate-linux-amd64 && zip fargate-${FARGATE_VERSION}-linux-amd64.zip fargate
	cd dist/build/fargate-linux-386  && zip fargate-${FARGATE_VERSION}-linux-386.zip fargate
	cd dist/build/fargate-linux-arm  && zip fargate-${FARGATE_VERSION}-linux-arm.zip fargate
	cd dist/build/fargate-windows-amd64 && zip fargate-${FARGATE_VERSION}-windows-amd64.zip fargate.exe
	cd dist/build/fargate-windows-386  && zip fargate-${FARGATE_VERSION}-windows-386.zip fargate.exe

	find dist/build -name *.zip -exec mv {} dist \;

	rm -rf dist/build


================================================
FILE: README.md
================================================
# Fargate CLI

[![CircleCI](https://circleci.com/gh/jpignata/fargate/tree/master.svg?style=svg)](https://circleci.com/gh/jpignata/fargate/tree/master)
[![GoDoc](https://godoc.org/github.com/awslabs/fargatecli?status.svg)](https://godoc.org/github.com/awslabs/fargatecli)

# NOTICE

:exclamation: :exclamation: :exclamation: Please note that this project is no longer actively maintained. A better option for new Fargate deployments on AWS is [the AWS Copilot CLI](https://github.com/aws/copilot-cli), which is both more featureful, and actively maintained by AWS. :exclamation: :exclamation: :exclamation:


## Screencast

[![fargate CLI screencast](http://img.youtube.com/vi/P6iY6ovhbfc/0.jpg)](http://www.youtube.com/watch?v=P6iY6ovhbfc)

## Usage

### Configuration

#### Region

By default, fargate uses *us-east-1*. The CLI accepts a --region parameter and
will honor *AWS_REGION* and *AWS_DEFAULT_REGION* environment settings. Note that
specifying a region where all required services aren't available will return an
error.

See the [Region Table][region-table] for a breakdown of what services are
available in which regions.

#### Credentials

fargate is built using the [AWS SDK for Go][go-sdk] which looks for credentials
in the following locations:

1. [Environment Variables][go-env-vars]

1. [Shared Credentials File][go-shared-credentials-file]

1. [EC2 Instance Profile][go-iam-roles-for-ec2-instances]

For more information see [Specifying Credentials][go-specifying-credentials] in
the AWS SDK for Go documentation.

### Commands

- [Tasks](#tasks)
- [Services](#services)
- [Load Balancers](#load-balancers)
- [Certificates](#certificates)

#### Global Flags

| Flag | Default | Description |
| --- | --- | --- |
| --cluster | fargate | ECS cluster name |
| --region | us-east-1 | AWS region |
| --no-color | false | Disable color output |
| --verbose | false | Verbose output |

#### Tasks

Tasks are one-time executions of your container. Instances of your task are run
until you manually stop them either through AWS APIs, the AWS Management
Console, or `fargate task stop`, or until they are interrupted for any reason.

- [list](#fargate-task-list)
- [run](#fargate-task-run)
- [info](#fargate-task-info)
- [ps](#fargate-task-ps)
- [logs](#fargate-task-logs)
- [stop](#fargate-task-stop)

##### fargate task list

```console
fargate task list
```

List running task groups

##### fargate task run

```console
fargate task run <task-group-name> [--num <count>] [--cpu <cpu-units>] [--memory <MiB>]
                                   [--image <docker-image>] [--env <key=value>]
                                   [--task-role <task-role>] [--subnet-id <subnet-id>]
                                   [--security-group-id <security-group-id>]
```

Run new tasks

You must specify a task group name in order to interact with the task(s) in
subsequent commands to view logs, stop and inspect tasks. Task group names do
not have to be unique -- multiple configurations of task instances can be
started with the same task group.

Multiple instances of a task can be run by specifying a number in the --num
flag. If no number is specified, a single task instance will be run.

CPU and memory settings can be optionally specified as CPU units and mebibytes
respectively using the --cpu and --memory flags. Every 1024 CPU units is
equivilent to a single vCPU. AWS Fargate only supports certain combinations of
CPU and memory configurations:

| CPU (CPU Units) | Memory (MiB)                          |
| --------------- | ------------------------------------- |
| 256             | 512, 1024, or 2048                    |
| 512             | 1024 through 4096 in 1GiB increments  |
| 1024            | 2048 through 8192 in 1GiB increments  |
| 2048            | 4096 through 16384 in 1GiB increments |
| 4096            | 8192 through 30720 in 1GiB increments |

If not specified, fargate will launch minimally sized tasks at 0.25 vCPU (256
CPU units) and 0.5GB (512 MiB) of memory.

The Docker container image to use in the task can be optionally specified via
the --image flag. If not specified, fargate will build a new Docker container
image from the current working directory and push it to Amazon ECR in a
repository named for the task group. If the current working directory is a git
repository, the container image will be tagged with the short ref of the HEAD
commit. If not, a timestamp in the format of YYYYMMDDHHMMSS will be used.

Environment variables can be specified via the --env flag. Specify --env with a
key=value parameter multiple times to add multiple variables.

Security groups can optionally be specified for the task by passing the
--security-group-id flag with a security group ID. To add multiple security
groups, pass --security-group-id with a security group ID multiple times. If
--security-group-id is omitted, a permissive security group will be applied to
the task.

By default, the task will be created in the default VPC and attached to the
default VPC subnets for each availability zone. You can override this by
specifying explicit subnets by passing the --subnet-id flag with a subnet ID.

A task role can be optionally specified via the --task-role flag by providing
eith a full IAM role ARN or the name of an IAM role. The tasks will be able to
assume this role.

##### fargate task info

```console
fargate task info <task-group-name> [--task <task-id>]
```

Inspect tasks

Shows extended information for each running task within a task group or for
specific tasks specified with the --task flag. Information includes environment
variables which could differ between tasks in a task group. To inspect multiple
specific tasks within a task group specific --task with a task ID multiple
times.

##### fargate task ps

```console
fargate task ps <task-group-name>
```

List running tasks

##### fargate task logs

```console
fargate task logs <task-group-name> [--follow] [--start <time-expression>] [--end <time-expression>]
                                    [--filter <filter-expression>] [--task <task-id>]
```

Show logs from tasks

Return either a specific segment of task logs or tail logs in real-time using
the --follow option. Logs are prefixed by their log stream name which is in the
format of "fargate/\<task-group-name>/\<task-id>."

Follow will continue to run and return logs until interrupted by Control-C. If
--follow is passed --end cannot be specified.

Logs can be returned for specific tasks within a task group by passing a task
ID via the --task flag. Pass --task with a task ID multiple times in order to
retrieve logs from multiple specific tasks.

A specific window of logs can be requested by passing --start and --end options
with a time expression. The time expression can be either a duration or a
timestamp:

  - Duration (e.g. -1h [one hour ago], -1h10m30s [one hour, ten minutes, and
    thirty seconds ago], 2h [two hours from now])
  - Timestamp with optional timezone in the format of YYYY-MM-DD HH:MM:SS [TZ];
    timezone will default to UTC if omitted (e.g. 2017-12-22 15:10:03 EST)

You can filter logs for specific term by passing a filter expression via the
--filter flag. Pass a single term to search for that term, pass multiple terms
to search for log messages that include all terms. See the [CloudWatch Logs
documentation][cwl-filter-expression] for more details.

##### fargate task stop

```console
fargate task stop <task-group-name> [--task <task-id>]
```

Stop tasks

Stops all tasks within a task group if run with only a task group name or stops
individual tasks if one or more tasks are passed via the --task flag. Specify
--task with a task ID parameter multiple times to stop multiple specific tasks.

#### Services

Services manage long-lived instances of your containers that are run on AWS
Fargate. If your container exits for any reason, the service scheduler will
restart your containers and ensure your service has the desired number of
tasks running. Services can be used in concert with a load balancer to
distribute traffic amongst the tasks in your service.

- [list](#fargate-service-list)
- [create](#fargate-service-create)
- [deploy](#fargate-service-deploy)
- [info](#fargate-service-info)
- [logs](#fargate-service-logs)
- [ps](#fargate-service-ps)
- [scale](#fargate-service-scale)
- [env set](#fargate-service-env-set)
- [env unset](#fargate-service-env-unset)
- [env list](#fargate-service-env-list)
- [update](#fargate-service-update)
- [restart](#fargate-service-restart)
- [destroy](#fargate-service-destroy)

##### fargate service list

```console
fargate service list
```

List services

##### fargate service create

```console
fargate service create <service name> [--cpu <cpu units>] [--memory <MiB>] [--port <port-expression>]
                                      [--lb <load-balancer-name>] [--rule <rule-expression>]
                                      [--image <docker-image>] [--env <key=value>] [--num <count>]
                                      [--task-role <task-role>] [--subnet-id <subnet-id>]
                                      [--security-group-id <security-group-id>]
```

Create a new service

CPU and memory settings can be optionally specified as CPU units and mebibytes
respectively using the --cpu and --memory flags. Every 1024 CPU units is
equivilent to a single vCPU. AWS Fargate only supports certain combinations of
CPU and memory configurations:

| CPU (CPU Units) | Memory (MiB)                          |
| --------------- | ------------------------------------- |
| 256             | 512, 1024, or 2048                    |
| 512             | 1024 through 4096 in 1GiB increments  |
| 1024            | 2048 through 8192 in 1GiB increments  |
| 2048            | 4096 through 16384 in 1GiB increments |
| 4096            | 8192 through 30720 in 1GiB increments |

If not specified, fargate will launch minimally sized tasks at 0.25 vCPU (256
CPU units) and 0.5GB (512 MiB) of memory.

The Docker container image to use in the service can be optionally specified
via the --image flag. If not specified, fargate will build a new Docker
container image from the current working directory and push it to Amazon ECR in
a repository named for the task group. If the current working directory is a
git repository, the container image will be tagged with the short ref of the
HEAD commit. If not, a timestamp in the format of YYYYMMDDHHMMSS will be used.

To use the service with a load balancer, a port must be specified when the
service is created. Specify a port by passing the --port flag and a port
expression of protocol:port-number. For example, if the service listens on port
80 and uses HTTP, specify HTTP:80.  Valid protocols are HTTP, HTTPS, and TCP.
You can only specify a single port.

Services can optionally be configured to use a load balancer. To put a load
balancer in front a service, pass the --lb flag with the name of a load
balancer. If you specify a load balancer, you must also specify a port via the
--port flag to which the load balancer should forward requests. Optionally,
Application Load Balancers can be configured to route HTTP/HTTPS traffic to the
service based upon a rule. Rules are configured by passing one or more rules by
specifying the --rule flag along with a rule expression. Rule expressions are
in the format of TYPE=VALUE. Type can either be PATH or HOST. PATH matches the
PATH of the request and HOST matches the requested hostname in the HTTP
request. Both PATH and HOST types can include up to three wildcard characters:
\* to match multiple characters and ? to match a single character. If rules are
omitted, the service will be the load balancer's default action.

Environment variables can be specified via the --env flag. Specify --env with a
key=value parameter multiple times to add multiple variables.

Specify the desired count of tasks the service should maintain by passing the
--num flag with a number. If you omit this flag, fargate will configure a
service with a desired number of tasks of 1.

Security groups can optionally be specified for the service by passing the
--security-group-id flag with a security group ID. To add multiple security
groups, pass --security-group-id with a security group ID multiple times. If
--security-group-id is omitted, a permissive security group will be applied to
the service.

By default, the service will be created in the default VPC and attached
to the default VPC subnets for each availability zone. You can override this by
specifying explicit subnets by passing the --subnet-id flag with a subnet ID.

A task role can be optionally specified via the --task-role flag by providing
eith a full IAM role ARN or the name of an IAM role. The tasks run by the
service will be able to assume this role.

##### fargate service deploy

```console
fargate service deploy <service-name> [--image <docker-image>]
```

Deploy new image to service

The Docker container image to use in the service can be optionally specified
via the --image flag. If not specified, fargate will build a new Docker
container image from the current working directory and push it to Amazon ECR in
a repository named for the task group. If the current working directory is a
git repository, the container image will be tagged with the short ref of the
HEAD commit. If not, a timestamp in the format of YYYYMMDDHHMMSS will be used.

##### fargate service info

```console
fargate service info <service-name>
```

Inspect service

Show extended information for a service including load balancer configuration,
active deployments, and environment variables.

Deployments show active versions of your service that are running. Multiple
deployments are shown if a service is transitioning due to a deployment or
update to configuration such a CPU, memory, or environment variables.

##### fargate service logs

```console
fargate service logs <service-name> [--follow] [--start <time-expression>] [--end <time-expression>]
                                    [--filter <filter-expression>] [--task <task-id>]
```

Show logs from tasks in a service

Return either a specific segment of service logs or tail logs in real-time
using the --follow option. Logs are prefixed by their log stream name which is
in the format of "fargate/\<service-name>/\<task-id>."

Follow will continue to run and return logs until interrupted by Control-C. If
--follow is passed --end cannot be specified.

Logs can be returned for specific tasks within a service by passing a task ID
via the --task flag. Pass --task with a task ID multiple times in order to
retrieve logs from multiple specific tasks.

A specific window of logs can be requested by passing --start and --end options
with a time expression. The time expression can be either a duration or a
timestamp:

  - Duration (e.g. -1h [one hour ago], -1h10m30s [one hour, ten minutes, and
    thirty seconds ago], 2h [two hours from now])
  - Timestamp with optional timezone in the format of YYYY-MM-DD HH:MM:SS [TZ];
    timezone will default to UTC if omitted (e.g. 2017-12-22 15:10:03 EST)

You can filter logs for specific term by passing a filter expression via the
--filter flag. Pass a single term to search for that term, pass multiple terms
to search for log messages that include all terms. See the [CloudWatch Logs
documentation][cwl-filter-expression] for more details.

##### fargate service ps

```console
fargate service ps <service-name>
```

List running tasks for a service

##### fargate service scale

```console
fargate service scale <service-name> <scale-expression>
```

Scale number of tasks in a service

Changes the number of desired tasks to be run in a service by the given scale
expression. A scale expression can either be an absolute number or a delta
specified with a sign such as +5 or -2.

##### fargate service env set

```console
fargate service env set <service-name> --env <key=value>
```

Set environment variables

At least one environment variable must be specified via the --env flag. Specify
--env with a key=value parameter multiple times to add multiple variables.

##### fargate service env unset

```console
fargate service env unset <service-name> --key <key-name>
```

Unset environment variables

Unsets the environment variable specified via the --key flag. Specify --key with
a key name multiple times to unset multiple variables.

##### fargate service env list

```console
fargate service env list <service-name>
```

Show environment variables

##### fargate service update

```console
fargate service update <service-name> [--cpu <cpu-units>] [--memory <MiB>]
```

Update service configuration

CPU and memory settings are specified as CPU units and mebibytes respectively
using the --cpu and --memory flags. Every 1024 CPU units is equivilent to a
single vCPU. AWS Fargate only supports certain combinations of CPU and memory
configurations:

| CPU (CPU Units) | Memory (MiB)                          |
| --------------- | ------------------------------------- |
| 256             | 512, 1024, or 2048                    |
| 512             | 1024 through 4096 in 1GiB increments  |
| 1024            | 2048 through 8192 in 1GiB increments  |
| 2048            | 4096 through 16384 in 1GiB increments |
| 4096            | 8192 through 30720 in 1GiB increments |

At least one of --cpu or --memory must be specified.

##### fargate service restart

```console
fargate service restart <service-name>
```

Restart service

Creates a new set of tasks for the service and stops the previous tasks. This
is useful if your service needs to reload data cached from an external source,
for example.

##### fargate service destroy

```console
fargate service destroy <service-name>
```

Destroy service

In order to destroy a service, it must first be scaled to 0 running tasks.

#### Load Balancers

Load balancers distribute incoming traffic between the tasks within a service
for HTTP/HTTPS and TCP applications. HTTP/HTTPS load balancers can route to
multiple services based upon rules you specify when you create a new service.

- [list](#fargate-lb-list)
- [create](#fargate-lb-create)
- [destroy](#fargate-lb-destroy)
- [alias](#fargate-lb-alias)
- [info](#fargate-lb-info)

##### fargate lb list

```console
fargate lb list
```

List load balancers

##### fargate lb create

```console
fargate lb create <load-balancer-name> --port <port-expression> [--certificate <certificate-name>]
                                       [--subnet-id <subnet-id>] [--security-group-id <security-group-id>]
                                       [--scheme <lb-scheme>]
```

Create a load balancer

At least one port must be specified for the load balancer listener via the
--port flag and a port expression of protocol:port-number. For example, if you
wanted an HTTP load balancer to listen on port 80, you would specify HTTP:80.
Valid protocols are HTTP, HTTPS, and TCP. You can specify multiple listeners by
passing the --port flag with a port expression multiple times. You cannot mix
TCP ports with HTTP/HTTPS ports on a single load balancer.

You can optionally include certificates to secure HTTPS ports by passed the
--certificate flag along with a certificate name. This option can be specified
multiple times to add additional certificates to a single load balancer which
uses Service Name Identification (SNI) to select the appropriate certificate
for the request.

By default, the load balancer will be created in the default VPC and attached
to the default VPC subnets for each availability zone. You can override this by
specifying explicit subnets by passing the --subnet-id flag with a subnet ID.
HTTP/HTTPS load balancers require at least two subnets attached while a TCP
load balancer requires only one. You may only specify a single subnet from each
availability zone.

Security groups can optionally be specified for HTTP/HTTPS load balancers by
passing the --security-group-id flag with a security group ID. To add multiple
security groups, pass --security-group-id with a security group ID multiple
times. If --security-group-id is omitted, a permissive security group will be
applied to the load balancer.

You can also choose the scheme type for load balancer via the --scheme flag.
By default, load balancers are internet-facing.

##### fargate lb destroy

```console
fargate lb destroy <load-balancer-name>
```

Destroy load balancer

##### fargate lb alias

```console
fargate lb alias <load-balancer-name> <hostname>
```

Create a load balancer alias record

Create an alias record to the load balancer for domains that are hosted within
Amazon Route 53 and within the same AWS account. If you're using another DNS
provider or host your domains in a different account, you will need to manually
create this record.

##### fargate lb info

```console
fargate lb info <load-balancer-name>
```

Inspect load balancer

Returns extended information about a load balancer including a list of
listeners, rules, and certificates in use by the load balancer.


#### Certificates

Certificates are TLS certificates issued by or imported into AWS Certificate
Manager for use in securing traffic between load balancers and end users. ACM
provides TLS certificates free of charge for use within AWS resources.

- [list](#fargate-certificate-list)
- [import](#fargate-certificate-import)
- [request](#fargate-certificate-request)
- [info](#fargate-certificate-info)
- [validate](#fargate-certificate-validate)
- [destroy](#fargate-certificate-destroy)

##### fargate certificate list

```console
fargate certificate list
```

List certificates

##### fargate certificate import

```console
fargate certificate import <domain-name> --certificate <filename> --key <filename> [--chain <filename>]
```

Import a certificate

Upload a certificate from a certificate file, a private key file, and optionally
an intermediate certificate chain file. The files must be PEM-encoded and the
private key must not be encrypted or protected by a passphrase. See the
[AWS Certificate Manager documentation][acm-import-cert] for more details.

##### fargate certificate request

```console
fargate certificate request <domain-name> [--alias <domain-name>]
```

Request a certificate

Certificates can be for a fully qualified domain name (e.g. www.example.com) or
a wildcard domain name (e.g. *.example.com). You can add aliases to a
certificate by specifying additional domain names via the --alias flag. To add
multiple aliases, pass --alias multiple times. By default, AWS Certificate
Manager has a limit of 10 domain names per certificate, but this limit can be
raised by AWS support.

##### fargate certificate info

```console
fargate certificate info <domain-name>
```

Inspect certificate

Show extended information for a certificate. Includes each validation for the
certificate which shows DNS records which must be created to validate domain
ownership.

##### fargate certificate validate

```console
fargate certificate validate <domain-name>
```

Validate certificate ownership

fargate will automatically create DNS validation record to verify ownership for
any domain names that are hosted within Amazon Route 53. If your certificate
has aliases, a validation record will be attempted per alias. Any records whose
domains are hosted in other DNS hosting providers or in other DNS accounts
and cannot be automatically validated will have the necessary records output.
These records are also available in `fargate certificate info \<domain-name>`.

AWS Certificate Manager may take up to several hours after the DNS records are
created to complete validation and issue the certificate.

##### fargate certificate destroy

```console
fargate certificate destroy <domain-name>
```

Destroy certificate

In order to destroy a certificate, it must not be in use by any load balancers or
any other AWS resources.

[region-table]: https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/
[go-sdk]: https://aws.amazon.com/documentation/sdk-for-go/
[go-env-vars]: http://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#environment-variables
[go-shared-credentials-file]: http://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#shared-credentials-file
[go-iam-roles-for-ec2-instances]: http://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#iam-roles-for-ec2-instances
[go-specifying-credentials]: http://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials
[cwl-filter-expression]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html#matching-terms-events
[acm-import-cert]: http://docs.aws.amazon.com/acm/latest/APIReference/API_ImportCertificate.html


================================================
FILE: acm/certificate.go
================================================
package acm

import (
	"fmt"
	"strings"

	"github.com/aws/aws-sdk-go/aws"
	awsacm "github.com/aws/aws-sdk-go/service/acm"
)

// Certificate is a certificate hosted in AWS Certificate Manager.
type Certificate struct {
	ARN                     string
	Status                  string
	SubjectAlternativeNames []string
	DomainName              string
	Validations             []CertificateValidation
	Type                    string
}

// AddValidation adds a certificate validation to a certificate.
func (c *Certificate) AddValidation(v CertificateValidation) {
	c.Validations = append(c.Validations, v)
}

// IsIssued returns true if the certificate's status is ISSUED.
func (c Certificate) IsIssued() bool {
	return c.Status == awsacm.CertificateStatusIssued
}

// IsPendingValidation returns true if the certificate's status is PENDING_VALIDATION.
func (c Certificate) IsPendingValidation() bool {
	return c.Status == awsacm.CertificateStatusPendingValidation
}

// CertificateValidation holds details about how to validate a certificate.
type CertificateValidation struct {
	Status         string
	DomainName     string
	ResourceRecord CertificateResourceRecord
}

// IsFailed returns true if a certificate validation's status is FAILED.
func (v CertificateValidation) IsFailed() bool {
	return v.Status == awsacm.DomainStatusFailed
}

// IsPendingValidation returns true if a certificate validation's status is PENDING_VALIDATION.
func (v CertificateValidation) IsPendingValidation() bool {
	return v.Status == awsacm.DomainStatusPendingValidation
}

// IsSuccess returns true if a certificate validation's status is SUCCESS
func (v CertificateValidation) IsSuccess() bool {
	return v.Status == awsacm.DomainStatusSuccess
}

// ResourceRecordString returns the resource record for display.
func (v CertificateValidation) ResourceRecordString() string {
	if v.ResourceRecord.Type == "" {
		return ""
	}

	return fmt.Sprintf("%s %s -> %s",
		v.ResourceRecord.Type,
		v.ResourceRecord.Name,
		v.ResourceRecord.Value,
	)
}

// CertificateResourceRecord contains the DNS record used to validate a certificate.
type CertificateResourceRecord struct {
	Type  string
	Name  string
	Value string
}

// Certificates is a collection of certificates.
type Certificates []Certificate

// GetCertificates returns certificates for the given domain name.
func (cs Certificates) GetCertificates(domainName string) Certificates {
	var certificates Certificates

	for _, c := range cs {
		if c.DomainName == domainName {
			certificates = append(certificates, c)
		}
	}

	return certificates
}

// ValidateAlias checks an alias' length and number of octets for validity.
func ValidateAlias(alias string) error {
	if len(alias) < 1 || len(alias) > 253 {
		return fmt.Errorf("%s: An alias must be between 1 and 253 characters in length", alias)
	}

	if strings.Count(alias, ".") > 252 {
		return fmt.Errorf("%s: An alias cannot exceed 253 octets", alias)
	}

	if strings.Count(alias, ".") == 0 {
		return fmt.Errorf("%s: An alias requires at least 2 octets", alias)
	}

	return nil
}

// ValidateDomainName checks a domain names length and number of octets for validity.
func ValidateDomainName(domainName string) error {
	if len(domainName) < 1 || len(domainName) > 253 {
		return fmt.Errorf("%s: The domain name must be between 1 and 253 characters in length", domainName)
	}

	if strings.Count(domainName, ".") > 62 {
		return fmt.Errorf("%s: The domain name cannot exceed 63 octets", domainName)
	}

	if strings.Count(domainName, ".") == 0 {
		return fmt.Errorf("%s: The domain name requires at least 2 octets", domainName)
	}

	return nil
}

// DeleteCertificate deletes the certificate identified by the given ARN.
func (acm SDKClient) DeleteCertificate(arn string) error {
	input := &awsacm.DeleteCertificateInput{
		CertificateArn: aws.String(arn),
	}

	if _, err := acm.client.DeleteCertificate(input); err != nil {
		return err
	}

	return nil
}

// ImportCertificate creates a new certificate from the provided certificate, private key, and
// optional certificate chain.
func (acm SDKClient) ImportCertificate(certificate, privateKey, certificateChain []byte) (string, error) {
	input := &awsacm.ImportCertificateInput{
		Certificate: certificate,
		PrivateKey:  privateKey,
	}

	if len(certificateChain) != 0 {
		input.SetCertificateChain(certificateChain)
	}

	resp, err := acm.client.ImportCertificate(input)
	if err != nil {
		return "", err
	}

	return aws.StringValue(resp.CertificateArn), nil
}

// InflateCertificate uses a partially hydrated certificate to fetch the rest of its details and
// set them on the certificate.
func (acm SDKClient) InflateCertificate(c *Certificate) error {
	resp, err := acm.client.DescribeCertificate(
		&awsacm.DescribeCertificateInput{
			CertificateArn: aws.String(c.ARN),
		},
	)

	if err != nil {
		return err
	}

	c.Status = aws.StringValue(resp.Certificate.Status)
	c.SubjectAlternativeNames = aws.StringValueSlice(resp.Certificate.SubjectAlternativeNames)
	c.Type = aws.StringValue(resp.Certificate.Type)

	for _, domainValidation := range resp.Certificate.DomainValidationOptions {
		validation := CertificateValidation{
			Status:     aws.StringValue(domainValidation.ValidationStatus),
			DomainName: aws.StringValue(domainValidation.DomainName),
		}

		if domainValidation.ResourceRecord != nil {
			validation.ResourceRecord = CertificateResourceRecord{
				Type:  aws.StringValue(domainValidation.ResourceRecord.Type),
				Name:  aws.StringValue(domainValidation.ResourceRecord.Name),
				Value: aws.StringValue(domainValidation.ResourceRecord.Value),
			}
		}

		c.AddValidation(validation)
	}

	return nil
}

// ListCertificates returns all certificates associated with the caller's account.
func (acm SDKClient) ListCertificates() (Certificates, error) {
	var certificates Certificates

	input := &awsacm.ListCertificatesInput{}
	handler := func(resp *awsacm.ListCertificatesOutput, lastPage bool) bool {
		for _, cs := range resp.CertificateSummaryList {
			c := Certificate{
				ARN:        aws.StringValue(cs.CertificateArn),
				DomainName: aws.StringValue(cs.DomainName),
			}

			certificates = append(certificates, c)
		}

		return true
	}

	err := acm.client.ListCertificatesPages(input, handler)

	return certificates, err
}

// RequestCertificate creates a new certificate.
func (acm SDKClient) RequestCertificate(domainName string, aliases []string) (string, error) {
	requestCertificateInput := &awsacm.RequestCertificateInput{
		DomainName:       aws.String(domainName),
		ValidationMethod: aws.String(awsacm.ValidationMethodDns),
	}

	if len(aliases) > 0 {
		requestCertificateInput.SetSubjectAlternativeNames(aws.StringSlice(aliases))
	}

	resp, err := acm.client.RequestCertificate(requestCertificateInput)

	if err != nil {
		return "", err
	}

	return aws.StringValue(resp.CertificateArn), nil
}

// ListCertificateDomainNames is bunk and will be refactored out of existence soon.
func (acm *SDKClient) ListCertificateDomainNames(certificateARNs []string) []string {
	var domainNames []string

	certificates, _ := acm.ListCertificates()

	for _, certificate := range certificates {
		for _, certificateARN := range certificateARNs {
			if certificate.ARN == certificateARN {
				domainNames = append(domainNames, certificate.DomainName)
			}
		}
	}

	return domainNames
}


================================================
FILE: acm/certificate_test.go
================================================
package acm

import (
	"errors"
	"fmt"
	"math/rand"
	"reflect"
	"strings"
	"testing"

	"github.com/aws/aws-sdk-go/aws"
	awsacm "github.com/aws/aws-sdk-go/service/acm"
	"github.com/awslabs/fargatecli/acm/mock/sdk"
	"github.com/golang/mock/gomock"
)

func TestValidateAlias(t *testing.T) {
	var tests = []struct {
		in  string
		out error
	}{
		{"valid.example.com", nil},
		{"invalid", errors.New("An alias requires at least 2 octets")},
		{strings.Repeat(".", 253), errors.New("An alias cannot exceed 253 octets")},
		{strings.Repeat("a", 255), errors.New("An alias must be between 1 and 253 characters in length")},
		{"", errors.New("An alias must be between 1 and 253 characters in length")},
	}

	for _, test := range tests {
		err := ValidateAlias(test.in)

		switch {
		case test.out == nil:
			if err != nil {
				t.Errorf("Expected nil, got %s", err)
			}
		default:
			if !strings.Contains(err.Error(), test.out.Error()) {
				t.Errorf("Expected contains %s, got %s", test.out.Error(), err.Error())
			}
		}
	}
}

func TestValidateDomainName(t *testing.T) {
	var tests = []struct {
		in  string
		out error
	}{
		{"valid.example.com", nil},
		{"invalid", errors.New("The domain name requires at least 2 octets")},
		{strings.Repeat(".", 63), errors.New("The domain name cannot exceed 63 octets")},
		{strings.Repeat("a", 255), errors.New("The domain name must be between 1 and 253 characters in length")},
		{"", errors.New("The domain name must be between 1 and 253 characters in length")},
	}

	for _, test := range tests {
		err := ValidateDomainName(test.in)

		switch {
		case test.out == nil:
			if err != nil {
				t.Errorf("Expected nil, got %s", err)
			}
		default:
			if !strings.Contains(err.Error(), test.out.Error()) {
				t.Errorf("Expected contains %s, got %s", test.out.Error(), err.Error())
			}
		}
	}
}

func TestCertificateIsPendingValidation(t *testing.T) {
	var tests = []struct {
		in  Certificate
		out bool
	}{
		{Certificate{Status: "PENDING_VALIDATION"}, true},
		{Certificate{Status: "ISSUED"}, false},
		{Certificate{Status: ""}, false},
	}

	for _, test := range tests {
		if test.in.IsPendingValidation() != test.out {
			t.Errorf("Expected %s to be IsPendingValidation", test.in.Status)
		}
	}
}

func TestCertificateIsIssued(t *testing.T) {
	var tests = []struct {
		in  Certificate
		out bool
	}{
		{Certificate{Status: "ISSUED"}, true},
		{Certificate{Status: "PENDING_VALIDATION"}, false},
		{Certificate{Status: ""}, false},
	}

	for _, test := range tests {
		if test.in.IsIssued() != test.out {
			t.Errorf("Expected %s to be IsIssued", test.in.Status)
		}
	}
}

func TestCertificateValidationIsPendingValidation(t *testing.T) {
	var tests = []struct {
		in  CertificateValidation
		out bool
	}{
		{CertificateValidation{Status: "PENDING_VALIDATION"}, true},
		{CertificateValidation{Status: "SUCCESS"}, false},
		{CertificateValidation{Status: ""}, false},
	}

	for _, test := range tests {
		if test.in.IsPendingValidation() != test.out {
			t.Errorf("Expected %s to be IsPendingValidation", test.in.Status)
		}
	}
}

func TestCertificateValidationIsSuccess(t *testing.T) {
	var tests = []struct {
		in  CertificateValidation
		out bool
	}{
		{CertificateValidation{Status: "SUCCESS"}, true},
		{CertificateValidation{Status: "PENDING_VALIDATION"}, false},
		{CertificateValidation{Status: ""}, false},
	}

	for _, test := range tests {
		if test.in.IsSuccess() != test.out {
			t.Errorf("Expected %s to be IsSuccess", test.in.Status)
		}
	}
}

func TestCertificateValidationIsFailed(t *testing.T) {
	var tests = []struct {
		in  CertificateValidation
		out bool
	}{
		{CertificateValidation{Status: "FAILED"}, true},
		{CertificateValidation{Status: "PENDING_VALIDATION"}, false},
		{CertificateValidation{Status: ""}, false},
	}

	for _, test := range tests {
		if test.in.IsFailed() != test.out {
			t.Errorf("Expected %s to be IsFailed", test.in.Status)
		}
	}
}

func TestCertificateValidationResourceRecordString(t *testing.T) {
	var tests = []struct {
		in  CertificateValidation
		out string
	}{
		{CertificateValidation{}, ""},
		{CertificateValidation{
			ResourceRecord: CertificateResourceRecord{
				Type:  "CNAME",
				Name:  "name",
				Value: "value",
			},
		}, "CNAME name -> value"},
	}

	for _, test := range tests {
		if test.in.ResourceRecordString() != test.out {
			t.Errorf("Expected ResourceRecordString() == CNAME name -> value, got: %s", test.in.ResourceRecordString())
		}
	}
}

func TestCertificatesGetCertificates(t *testing.T) {
	certificates := Certificates{
		Certificate{DomainName: "staging.example.com", ARN: "staging.example.com-1"},
		Certificate{DomainName: "www.example.com", ARN: "www.example.com-1"},
		Certificate{DomainName: "www.example.com", ARN: "www.example.com-2"},
	}

	var empty Certificates
	var tests = []struct {
		in  string
		out Certificates
	}{
		{"staging.example.com", Certificates{certificates[0]}},
		{"www.example.com", Certificates{certificates[1], certificates[2]}},
		{"www.amazon.com", empty},
	}

	for _, test := range tests {
		if !reflect.DeepEqual(certificates.GetCertificates(test.in), test.out) {
			t.Errorf("Expected %+v, got: %+v", test.out, certificates.GetCertificates(test.in))
		}
	}
}

func TestRequestCertificate(t *testing.T) {
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	domainName := "*.example.com"
	aliases := []string{"example-other.com"}
	validationMethod := "DNS"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockACMAPI := sdk.NewMockACMAPI(mockCtrl)
	acm := SDKClient{client: mockACMAPI}

	i := &awsacm.RequestCertificateInput{
		DomainName:              aws.String(domainName),
		ValidationMethod:        aws.String(validationMethod),
		SubjectAlternativeNames: aws.StringSlice(aliases),
	}
	o := &awsacm.RequestCertificateOutput{
		CertificateArn: aws.String(certificateARN),
	}

	mockACMAPI.EXPECT().RequestCertificate(i).Return(o, nil)

	arn, err := acm.RequestCertificate(domainName, aliases)

	if err != nil {
		t.Errorf("Error; %+v", err)
	}

	if arn != certificateARN {
		t.Errorf("Invalid certificate ARN; want: %s, got: %s", certificateARN, arn)
	}
}

func TestRequestCertificateError(t *testing.T) {
	var aliases []string

	domainName := "*.example.com"
	validationMethod := "DNS"

	// Simulating a certificate request with more than 10 domains
	for i := 0; i < 10; i++ {
		aliases = append(aliases, fmt.Sprintf("example-%d.com", i))
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockACMAPI := sdk.NewMockACMAPI(mockCtrl)
	acm := SDKClient{client: mockACMAPI}

	i := &awsacm.RequestCertificateInput{
		DomainName:              aws.String(domainName),
		ValidationMethod:        aws.String(validationMethod),
		SubjectAlternativeNames: aws.StringSlice(aliases),
	}
	o := &awsacm.RequestCertificateOutput{}

	mockACMAPI.EXPECT().RequestCertificate(i).Return(o, errors.New("certificate has too many domains"))

	arn, err := acm.RequestCertificate(domainName, aliases)

	if err == nil {
		t.Errorf("No error; want: %+v", err)
	}

	if arn != "" {
		t.Errorf("Invalid certificate ARN; want: empty, got: %s", arn)
	}
}

func TestListCertificates(t *testing.T) {
	resp := &awsacm.ListCertificatesOutput{
		CertificateSummaryList: []*awsacm.CertificateSummary{
			&awsacm.CertificateSummary{
				DomainName:     aws.String("www.example.com"),
				CertificateArn: aws.String("arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"),
			},
		},
	}

	mockClient := sdk.MockListCertificatesPagesClient{Resp: resp}
	acm := SDKClient{client: mockClient}
	certificates, err := acm.ListCertificates()

	if err != nil {
		t.Errorf("Expected no error, got %+v", err)
	}

	if len(certificates) != 1 {
		t.Errorf("Expected 1 certificate, got %d", len(certificates))
	}

	if certificates[0].DomainName != "www.example.com" {
		t.Errorf("Expected certificate domain to be www.example.com, got %s", certificates[0].DomainName)
	}
}

func TestListCertificatesError(t *testing.T) {
	mockClient := sdk.MockListCertificatesPagesClient{
		Resp:  &awsacm.ListCertificatesOutput{},
		Error: errors.New(":-("),
	}
	acm := SDKClient{client: mockClient}
	certificates, err := acm.ListCertificates()

	if err == nil {
		t.Errorf("Expected error, got nil")
	}

	if len(certificates) > 0 {
		t.Errorf("Expected no certificates, got %d", len(certificates))
	}
}

func TestDeleteCertificate(t *testing.T) {
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockACMAPI := sdk.NewMockACMAPI(mockCtrl)

	acm := SDKClient{client: mockACMAPI}
	i := &awsacm.DeleteCertificateInput{CertificateArn: aws.String(certificateARN)}
	o := &awsacm.DeleteCertificateOutput{}

	mockACMAPI.EXPECT().DeleteCertificate(i).Return(o, nil)

	err := acm.DeleteCertificate(certificateARN)

	if err != nil {
		t.Errorf("Error; %+v", err)
	}
}

func TestDeleteCertificateError(t *testing.T) {
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockACMAPI := sdk.NewMockACMAPI(mockCtrl)

	acm := SDKClient{client: mockACMAPI}
	i := &awsacm.DeleteCertificateInput{CertificateArn: aws.String(certificateARN)}
	o := &awsacm.DeleteCertificateOutput{}

	mockACMAPI.EXPECT().DeleteCertificate(i).Return(o, errors.New(":-("))

	err := acm.DeleteCertificate(certificateARN)

	if err == nil {
		t.Error("Expected error, got nil")
	}
}

func TestInflateCertificate(t *testing.T) {
	domainName := "www.example.com"
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	certificateType := "AMAZON_ISSUED"
	certificateStatus := "PENDING_VALIDATION"
	certificateSANs := []string{"staging.example.com"}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockACMAPI := sdk.NewMockACMAPI(mockCtrl)

	acm := SDKClient{client: mockACMAPI}
	i := &awsacm.DescribeCertificateInput{
		CertificateArn: aws.String(certificateARN),
	}
	o := &awsacm.DescribeCertificateOutput{
		Certificate: &awsacm.CertificateDetail{
			Type:                    aws.String(certificateType),
			Status:                  aws.String(certificateStatus),
			SubjectAlternativeNames: aws.StringSlice(certificateSANs),
			DomainValidationOptions: []*awsacm.DomainValidation{
				&awsacm.DomainValidation{
					ValidationStatus: aws.String("SUCCESS"),
					DomainName:       aws.String("staging.example.com"),
					ResourceRecord: &awsacm.ResourceRecord{
						Name:  aws.String("_beeed67ae3f2d83f6cd3e19a8064947b.staging.example.com"),
						Type:  aws.String("CNAME"),
						Value: aws.String("_6ddc33cd42c3fe3d5eca4cb075013a0a.acm-validations.aws."),
					},
				},
				&awsacm.DomainValidation{
					ValidationStatus: aws.String("PENDING_VALIDATION"),
					DomainName:       aws.String(domainName),
					ResourceRecord: &awsacm.ResourceRecord{
						Name:  aws.String("_beeed67ae3f2d83f6cd3e19a8064947b.www.example.com"),
						Type:  aws.String("CNAME"),
						Value: aws.String("_6ddc33cd42c3fe3d5eca4cb075013a0a.acm-validations.aws."),
					},
				},
			},
		},
	}
	certificate := Certificate{
		DomainName: domainName,
		ARN:        certificateARN,
	}

	mockACMAPI.EXPECT().DescribeCertificate(i).Return(o, nil)

	if err := acm.InflateCertificate(&certificate); err != nil {
		t.Errorf("Expected no error, got %+v", err)
	}

	if certificate.DomainName != domainName {
		t.Errorf("Expected DomainName %s, got %s", domainName, certificate.DomainName)
	}

	if certificate.ARN != certificateARN {
		t.Errorf("Expected ARN %s, got %s", certificateARN, certificate.ARN)
	}

	if certificate.Type != certificateType {
		t.Errorf("Expected type %s, got %s", certificateType, certificate.Type)
	}

	if certificate.Status != certificateStatus {
		t.Errorf("Expected status %s, got %s", certificateStatus, certificate.Status)
	}

	if !reflect.DeepEqual(certificateSANs, certificate.SubjectAlternativeNames) {
		t.Errorf("Expected subject alternative names %v, got %v", certificateSANs, certificate.SubjectAlternativeNames)
	}

	if len(certificate.Validations) != 2 {
		t.Errorf("Expected 2 validations, got %d", len(certificate.Validations))
	}
}

func TestInflateCertificateError(t *testing.T) {
	certificate := Certificate{
		ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
		DomainName: "www.example.com",
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockACMAPI := sdk.NewMockACMAPI(mockCtrl)

	acm := SDKClient{client: mockACMAPI}
	i := &awsacm.DescribeCertificateInput{CertificateArn: aws.String(certificate.ARN)}
	o := &awsacm.DescribeCertificateOutput{}

	mockACMAPI.EXPECT().DescribeCertificate(i).Return(o, errors.New(":-("))

	err := acm.InflateCertificate(&certificate)

	if err == nil {
		t.Error("Expected error, got nil")
	}
}

func TestImportCertificate(t *testing.T) {
	dummy := make([]byte, 10)
	rand.Read(dummy)

	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockACMAPI := sdk.NewMockACMAPI(mockCtrl)

	acm := SDKClient{client: mockACMAPI}
	i := &awsacm.ImportCertificateInput{
		Certificate:      dummy,
		CertificateChain: dummy,
		PrivateKey:       dummy,
	}
	o := &awsacm.ImportCertificateOutput{
		CertificateArn: aws.String(certificateARN),
	}

	mockACMAPI.EXPECT().ImportCertificate(i).Return(o, nil)

	arn, err := acm.ImportCertificate(dummy, dummy, dummy)

	if err != nil {
		t.Errorf("Expected no error, got %s", err)
	}

	if arn != certificateARN {
		t.Errorf("Expected ARN == %s, got: %s", certificateARN, arn)
	}
}

func TestImportCertificateError(t *testing.T) {
	var empty []byte

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockACMAPI := sdk.NewMockACMAPI(mockCtrl)

	acm := SDKClient{client: mockACMAPI}
	i := &awsacm.ImportCertificateInput{
		Certificate:      empty,
		CertificateChain: empty,
		PrivateKey:       empty,
	}
	o := &awsacm.ImportCertificateOutput{}

	mockACMAPI.EXPECT().ImportCertificate(i).Return(o, errors.New(":-("))

	_, err := acm.ImportCertificate(empty, empty, empty)

	if err == nil {
		t.Error("Expected error, got nil")
	}
}


================================================
FILE: acm/main.go
================================================
package acm

//go:generate mockgen -package client -destination=mock/client/client.go github.com/awslabs/fargatecli/acm Client
//go:generate mockgen -package sdk -source ../vendor/github.com/aws/aws-sdk-go/service/acm/acmiface/interface.go -destination=mock/sdk/acmiface.go github.com/aws/aws-sdk-go/service/acm/acmiface ACMAPI

import (
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/acm"
	"github.com/aws/aws-sdk-go/service/acm/acmiface"
)

// Client represents a method for accessing AWS Certificate Manager.
type Client interface {
	DeleteCertificate(string) error
	InflateCertificate(*Certificate) error
	ListCertificates() (Certificates, error)
	RequestCertificate(string, []string) (string, error)
	ImportCertificate([]byte, []byte, []byte) (string, error)
}

// SDKClient implements access to AWS Certificate Manager via the AWS SDK.
type SDKClient struct {
	client acmiface.ACMAPI
}

// New returns an SDKClient configured with the given session.
func New(sess *session.Session) SDKClient {
	return SDKClient{
		client: acm.New(sess),
	}
}


================================================
FILE: acm/mock/client/client.go
================================================
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/awslabs/fargatecli/acm (interfaces: Client)

// Package client is a generated GoMock package.
package client

import (
	acm "github.com/awslabs/fargatecli/acm"
	gomock "github.com/golang/mock/gomock"
	reflect "reflect"
)

// MockClient is a mock of Client interface
type MockClient struct {
	ctrl     *gomock.Controller
	recorder *MockClientMockRecorder
}

// MockClientMockRecorder is the mock recorder for MockClient
type MockClientMockRecorder struct {
	mock *MockClient
}

// NewMockClient creates a new mock instance
func NewMockClient(ctrl *gomock.Controller) *MockClient {
	mock := &MockClient{ctrl: ctrl}
	mock.recorder = &MockClientMockRecorder{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockClient) EXPECT() *MockClientMockRecorder {
	return m.recorder
}

// DeleteCertificate mocks base method
func (m *MockClient) DeleteCertificate(arg0 string) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "DeleteCertificate", arg0)
	ret0, _ := ret[0].(error)
	return ret0
}

// DeleteCertificate indicates an expected call of DeleteCertificate
func (mr *MockClientMockRecorder) DeleteCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCertificate", reflect.TypeOf((*MockClient)(nil).DeleteCertificate), arg0)
}

// ImportCertificate mocks base method
func (m *MockClient) ImportCertificate(arg0, arg1, arg2 []byte) (string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ImportCertificate", arg0, arg1, arg2)
	ret0, _ := ret[0].(string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ImportCertificate indicates an expected call of ImportCertificate
func (mr *MockClientMockRecorder) ImportCertificate(arg0, arg1, arg2 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportCertificate", reflect.TypeOf((*MockClient)(nil).ImportCertificate), arg0, arg1, arg2)
}

// InflateCertificate mocks base method
func (m *MockClient) InflateCertificate(arg0 *acm.Certificate) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "InflateCertificate", arg0)
	ret0, _ := ret[0].(error)
	return ret0
}

// InflateCertificate indicates an expected call of InflateCertificate
func (mr *MockClientMockRecorder) InflateCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InflateCertificate", reflect.TypeOf((*MockClient)(nil).InflateCertificate), arg0)
}

// ListCertificates mocks base method
func (m *MockClient) ListCertificates() (acm.Certificates, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListCertificates")
	ret0, _ := ret[0].(acm.Certificates)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ListCertificates indicates an expected call of ListCertificates
func (mr *MockClientMockRecorder) ListCertificates() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCertificates", reflect.TypeOf((*MockClient)(nil).ListCertificates))
}

// RequestCertificate mocks base method
func (m *MockClient) RequestCertificate(arg0 string, arg1 []string) (string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "RequestCertificate", arg0, arg1)
	ret0, _ := ret[0].(string)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// RequestCertificate indicates an expected call of RequestCertificate
func (mr *MockClientMockRecorder) RequestCertificate(arg0, arg1 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RequestCertificate", reflect.TypeOf((*MockClient)(nil).RequestCertificate), arg0, arg1)
}


================================================
FILE: acm/mock/sdk/acmiface.go
================================================
// Code generated by MockGen. DO NOT EDIT.
// Source: ../vendor/github.com/aws/aws-sdk-go/service/acm/acmiface/interface.go

// Package sdk is a generated GoMock package.
package sdk

import (
	aws "github.com/aws/aws-sdk-go/aws"
	request "github.com/aws/aws-sdk-go/aws/request"
	acm "github.com/aws/aws-sdk-go/service/acm"
	gomock "github.com/golang/mock/gomock"
	reflect "reflect"
)

// MockACMAPI is a mock of ACMAPI interface
type MockACMAPI struct {
	ctrl     *gomock.Controller
	recorder *MockACMAPIMockRecorder
}

// MockACMAPIMockRecorder is the mock recorder for MockACMAPI
type MockACMAPIMockRecorder struct {
	mock *MockACMAPI
}

// NewMockACMAPI creates a new mock instance
func NewMockACMAPI(ctrl *gomock.Controller) *MockACMAPI {
	mock := &MockACMAPI{ctrl: ctrl}
	mock.recorder = &MockACMAPIMockRecorder{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use
func (m *MockACMAPI) EXPECT() *MockACMAPIMockRecorder {
	return m.recorder
}

// AddTagsToCertificate mocks base method
func (m *MockACMAPI) AddTagsToCertificate(arg0 *acm.AddTagsToCertificateInput) (*acm.AddTagsToCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "AddTagsToCertificate", arg0)
	ret0, _ := ret[0].(*acm.AddTagsToCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// AddTagsToCertificate indicates an expected call of AddTagsToCertificate
func (mr *MockACMAPIMockRecorder) AddTagsToCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddTagsToCertificate", reflect.TypeOf((*MockACMAPI)(nil).AddTagsToCertificate), arg0)
}

// AddTagsToCertificateWithContext mocks base method
func (m *MockACMAPI) AddTagsToCertificateWithContext(arg0 aws.Context, arg1 *acm.AddTagsToCertificateInput, arg2 ...request.Option) (*acm.AddTagsToCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "AddTagsToCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.AddTagsToCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// AddTagsToCertificateWithContext indicates an expected call of AddTagsToCertificateWithContext
func (mr *MockACMAPIMockRecorder) AddTagsToCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddTagsToCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).AddTagsToCertificateWithContext), varargs...)
}

// AddTagsToCertificateRequest mocks base method
func (m *MockACMAPI) AddTagsToCertificateRequest(arg0 *acm.AddTagsToCertificateInput) (*request.Request, *acm.AddTagsToCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "AddTagsToCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.AddTagsToCertificateOutput)
	return ret0, ret1
}

// AddTagsToCertificateRequest indicates an expected call of AddTagsToCertificateRequest
func (mr *MockACMAPIMockRecorder) AddTagsToCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddTagsToCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).AddTagsToCertificateRequest), arg0)
}

// DeleteCertificate mocks base method
func (m *MockACMAPI) DeleteCertificate(arg0 *acm.DeleteCertificateInput) (*acm.DeleteCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "DeleteCertificate", arg0)
	ret0, _ := ret[0].(*acm.DeleteCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// DeleteCertificate indicates an expected call of DeleteCertificate
func (mr *MockACMAPIMockRecorder) DeleteCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCertificate", reflect.TypeOf((*MockACMAPI)(nil).DeleteCertificate), arg0)
}

// DeleteCertificateWithContext mocks base method
func (m *MockACMAPI) DeleteCertificateWithContext(arg0 aws.Context, arg1 *acm.DeleteCertificateInput, arg2 ...request.Option) (*acm.DeleteCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "DeleteCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.DeleteCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// DeleteCertificateWithContext indicates an expected call of DeleteCertificateWithContext
func (mr *MockACMAPIMockRecorder) DeleteCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).DeleteCertificateWithContext), varargs...)
}

// DeleteCertificateRequest mocks base method
func (m *MockACMAPI) DeleteCertificateRequest(arg0 *acm.DeleteCertificateInput) (*request.Request, *acm.DeleteCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "DeleteCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.DeleteCertificateOutput)
	return ret0, ret1
}

// DeleteCertificateRequest indicates an expected call of DeleteCertificateRequest
func (mr *MockACMAPIMockRecorder) DeleteCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).DeleteCertificateRequest), arg0)
}

// DescribeCertificate mocks base method
func (m *MockACMAPI) DescribeCertificate(arg0 *acm.DescribeCertificateInput) (*acm.DescribeCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "DescribeCertificate", arg0)
	ret0, _ := ret[0].(*acm.DescribeCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// DescribeCertificate indicates an expected call of DescribeCertificate
func (mr *MockACMAPIMockRecorder) DescribeCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeCertificate", reflect.TypeOf((*MockACMAPI)(nil).DescribeCertificate), arg0)
}

// DescribeCertificateWithContext mocks base method
func (m *MockACMAPI) DescribeCertificateWithContext(arg0 aws.Context, arg1 *acm.DescribeCertificateInput, arg2 ...request.Option) (*acm.DescribeCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "DescribeCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.DescribeCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// DescribeCertificateWithContext indicates an expected call of DescribeCertificateWithContext
func (mr *MockACMAPIMockRecorder) DescribeCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).DescribeCertificateWithContext), varargs...)
}

// DescribeCertificateRequest mocks base method
func (m *MockACMAPI) DescribeCertificateRequest(arg0 *acm.DescribeCertificateInput) (*request.Request, *acm.DescribeCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "DescribeCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.DescribeCertificateOutput)
	return ret0, ret1
}

// DescribeCertificateRequest indicates an expected call of DescribeCertificateRequest
func (mr *MockACMAPIMockRecorder) DescribeCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DescribeCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).DescribeCertificateRequest), arg0)
}

// ExportCertificate mocks base method
func (m *MockACMAPI) ExportCertificate(arg0 *acm.ExportCertificateInput) (*acm.ExportCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ExportCertificate", arg0)
	ret0, _ := ret[0].(*acm.ExportCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ExportCertificate indicates an expected call of ExportCertificate
func (mr *MockACMAPIMockRecorder) ExportCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportCertificate", reflect.TypeOf((*MockACMAPI)(nil).ExportCertificate), arg0)
}

// ExportCertificateWithContext mocks base method
func (m *MockACMAPI) ExportCertificateWithContext(arg0 aws.Context, arg1 *acm.ExportCertificateInput, arg2 ...request.Option) (*acm.ExportCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "ExportCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.ExportCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ExportCertificateWithContext indicates an expected call of ExportCertificateWithContext
func (mr *MockACMAPIMockRecorder) ExportCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).ExportCertificateWithContext), varargs...)
}

// ExportCertificateRequest mocks base method
func (m *MockACMAPI) ExportCertificateRequest(arg0 *acm.ExportCertificateInput) (*request.Request, *acm.ExportCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ExportCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.ExportCertificateOutput)
	return ret0, ret1
}

// ExportCertificateRequest indicates an expected call of ExportCertificateRequest
func (mr *MockACMAPIMockRecorder) ExportCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).ExportCertificateRequest), arg0)
}

// GetCertificate mocks base method
func (m *MockACMAPI) GetCertificate(arg0 *acm.GetCertificateInput) (*acm.GetCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetCertificate", arg0)
	ret0, _ := ret[0].(*acm.GetCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// GetCertificate indicates an expected call of GetCertificate
func (mr *MockACMAPIMockRecorder) GetCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCertificate", reflect.TypeOf((*MockACMAPI)(nil).GetCertificate), arg0)
}

// GetCertificateWithContext mocks base method
func (m *MockACMAPI) GetCertificateWithContext(arg0 aws.Context, arg1 *acm.GetCertificateInput, arg2 ...request.Option) (*acm.GetCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "GetCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.GetCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// GetCertificateWithContext indicates an expected call of GetCertificateWithContext
func (mr *MockACMAPIMockRecorder) GetCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).GetCertificateWithContext), varargs...)
}

// GetCertificateRequest mocks base method
func (m *MockACMAPI) GetCertificateRequest(arg0 *acm.GetCertificateInput) (*request.Request, *acm.GetCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.GetCertificateOutput)
	return ret0, ret1
}

// GetCertificateRequest indicates an expected call of GetCertificateRequest
func (mr *MockACMAPIMockRecorder) GetCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).GetCertificateRequest), arg0)
}

// ImportCertificate mocks base method
func (m *MockACMAPI) ImportCertificate(arg0 *acm.ImportCertificateInput) (*acm.ImportCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ImportCertificate", arg0)
	ret0, _ := ret[0].(*acm.ImportCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ImportCertificate indicates an expected call of ImportCertificate
func (mr *MockACMAPIMockRecorder) ImportCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportCertificate", reflect.TypeOf((*MockACMAPI)(nil).ImportCertificate), arg0)
}

// ImportCertificateWithContext mocks base method
func (m *MockACMAPI) ImportCertificateWithContext(arg0 aws.Context, arg1 *acm.ImportCertificateInput, arg2 ...request.Option) (*acm.ImportCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "ImportCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.ImportCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ImportCertificateWithContext indicates an expected call of ImportCertificateWithContext
func (mr *MockACMAPIMockRecorder) ImportCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).ImportCertificateWithContext), varargs...)
}

// ImportCertificateRequest mocks base method
func (m *MockACMAPI) ImportCertificateRequest(arg0 *acm.ImportCertificateInput) (*request.Request, *acm.ImportCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ImportCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.ImportCertificateOutput)
	return ret0, ret1
}

// ImportCertificateRequest indicates an expected call of ImportCertificateRequest
func (mr *MockACMAPIMockRecorder) ImportCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ImportCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).ImportCertificateRequest), arg0)
}

// ListCertificates mocks base method
func (m *MockACMAPI) ListCertificates(arg0 *acm.ListCertificatesInput) (*acm.ListCertificatesOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListCertificates", arg0)
	ret0, _ := ret[0].(*acm.ListCertificatesOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ListCertificates indicates an expected call of ListCertificates
func (mr *MockACMAPIMockRecorder) ListCertificates(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCertificates", reflect.TypeOf((*MockACMAPI)(nil).ListCertificates), arg0)
}

// ListCertificatesWithContext mocks base method
func (m *MockACMAPI) ListCertificatesWithContext(arg0 aws.Context, arg1 *acm.ListCertificatesInput, arg2 ...request.Option) (*acm.ListCertificatesOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "ListCertificatesWithContext", varargs...)
	ret0, _ := ret[0].(*acm.ListCertificatesOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ListCertificatesWithContext indicates an expected call of ListCertificatesWithContext
func (mr *MockACMAPIMockRecorder) ListCertificatesWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCertificatesWithContext", reflect.TypeOf((*MockACMAPI)(nil).ListCertificatesWithContext), varargs...)
}

// ListCertificatesRequest mocks base method
func (m *MockACMAPI) ListCertificatesRequest(arg0 *acm.ListCertificatesInput) (*request.Request, *acm.ListCertificatesOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListCertificatesRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.ListCertificatesOutput)
	return ret0, ret1
}

// ListCertificatesRequest indicates an expected call of ListCertificatesRequest
func (mr *MockACMAPIMockRecorder) ListCertificatesRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCertificatesRequest", reflect.TypeOf((*MockACMAPI)(nil).ListCertificatesRequest), arg0)
}

// ListCertificatesPages mocks base method
func (m *MockACMAPI) ListCertificatesPages(arg0 *acm.ListCertificatesInput, arg1 func(*acm.ListCertificatesOutput, bool) bool) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListCertificatesPages", arg0, arg1)
	ret0, _ := ret[0].(error)
	return ret0
}

// ListCertificatesPages indicates an expected call of ListCertificatesPages
func (mr *MockACMAPIMockRecorder) ListCertificatesPages(arg0, arg1 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCertificatesPages", reflect.TypeOf((*MockACMAPI)(nil).ListCertificatesPages), arg0, arg1)
}

// ListCertificatesPagesWithContext mocks base method
func (m *MockACMAPI) ListCertificatesPagesWithContext(arg0 aws.Context, arg1 *acm.ListCertificatesInput, arg2 func(*acm.ListCertificatesOutput, bool) bool, arg3 ...request.Option) error {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1, arg2}
	for _, a := range arg3 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "ListCertificatesPagesWithContext", varargs...)
	ret0, _ := ret[0].(error)
	return ret0
}

// ListCertificatesPagesWithContext indicates an expected call of ListCertificatesPagesWithContext
func (mr *MockACMAPIMockRecorder) ListCertificatesPagesWithContext(arg0, arg1, arg2 interface{}, arg3 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1, arg2}, arg3...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCertificatesPagesWithContext", reflect.TypeOf((*MockACMAPI)(nil).ListCertificatesPagesWithContext), varargs...)
}

// ListTagsForCertificate mocks base method
func (m *MockACMAPI) ListTagsForCertificate(arg0 *acm.ListTagsForCertificateInput) (*acm.ListTagsForCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListTagsForCertificate", arg0)
	ret0, _ := ret[0].(*acm.ListTagsForCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ListTagsForCertificate indicates an expected call of ListTagsForCertificate
func (mr *MockACMAPIMockRecorder) ListTagsForCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTagsForCertificate", reflect.TypeOf((*MockACMAPI)(nil).ListTagsForCertificate), arg0)
}

// ListTagsForCertificateWithContext mocks base method
func (m *MockACMAPI) ListTagsForCertificateWithContext(arg0 aws.Context, arg1 *acm.ListTagsForCertificateInput, arg2 ...request.Option) (*acm.ListTagsForCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "ListTagsForCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.ListTagsForCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ListTagsForCertificateWithContext indicates an expected call of ListTagsForCertificateWithContext
func (mr *MockACMAPIMockRecorder) ListTagsForCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTagsForCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).ListTagsForCertificateWithContext), varargs...)
}

// ListTagsForCertificateRequest mocks base method
func (m *MockACMAPI) ListTagsForCertificateRequest(arg0 *acm.ListTagsForCertificateInput) (*request.Request, *acm.ListTagsForCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListTagsForCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.ListTagsForCertificateOutput)
	return ret0, ret1
}

// ListTagsForCertificateRequest indicates an expected call of ListTagsForCertificateRequest
func (mr *MockACMAPIMockRecorder) ListTagsForCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTagsForCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).ListTagsForCertificateRequest), arg0)
}

// RemoveTagsFromCertificate mocks base method
func (m *MockACMAPI) RemoveTagsFromCertificate(arg0 *acm.RemoveTagsFromCertificateInput) (*acm.RemoveTagsFromCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "RemoveTagsFromCertificate", arg0)
	ret0, _ := ret[0].(*acm.RemoveTagsFromCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// RemoveTagsFromCertificate indicates an expected call of RemoveTagsFromCertificate
func (mr *MockACMAPIMockRecorder) RemoveTagsFromCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTagsFromCertificate", reflect.TypeOf((*MockACMAPI)(nil).RemoveTagsFromCertificate), arg0)
}

// RemoveTagsFromCertificateWithContext mocks base method
func (m *MockACMAPI) RemoveTagsFromCertificateWithContext(arg0 aws.Context, arg1 *acm.RemoveTagsFromCertificateInput, arg2 ...request.Option) (*acm.RemoveTagsFromCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "RemoveTagsFromCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.RemoveTagsFromCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// RemoveTagsFromCertificateWithContext indicates an expected call of RemoveTagsFromCertificateWithContext
func (mr *MockACMAPIMockRecorder) RemoveTagsFromCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTagsFromCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).RemoveTagsFromCertificateWithContext), varargs...)
}

// RemoveTagsFromCertificateRequest mocks base method
func (m *MockACMAPI) RemoveTagsFromCertificateRequest(arg0 *acm.RemoveTagsFromCertificateInput) (*request.Request, *acm.RemoveTagsFromCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "RemoveTagsFromCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.RemoveTagsFromCertificateOutput)
	return ret0, ret1
}

// RemoveTagsFromCertificateRequest indicates an expected call of RemoveTagsFromCertificateRequest
func (mr *MockACMAPIMockRecorder) RemoveTagsFromCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveTagsFromCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).RemoveTagsFromCertificateRequest), arg0)
}

// RenewCertificate mocks base method
func (m *MockACMAPI) RenewCertificate(arg0 *acm.RenewCertificateInput) (*acm.RenewCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "RenewCertificate", arg0)
	ret0, _ := ret[0].(*acm.RenewCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// RenewCertificate indicates an expected call of RenewCertificate
func (mr *MockACMAPIMockRecorder) RenewCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RenewCertificate", reflect.TypeOf((*MockACMAPI)(nil).RenewCertificate), arg0)
}

// RenewCertificateWithContext mocks base method
func (m *MockACMAPI) RenewCertificateWithContext(arg0 aws.Context, arg1 *acm.RenewCertificateInput, arg2 ...request.Option) (*acm.RenewCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "RenewCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.RenewCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// RenewCertificateWithContext indicates an expected call of RenewCertificateWithContext
func (mr *MockACMAPIMockRecorder) RenewCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RenewCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).RenewCertificateWithContext), varargs...)
}

// RenewCertificateRequest mocks base method
func (m *MockACMAPI) RenewCertificateRequest(arg0 *acm.RenewCertificateInput) (*request.Request, *acm.RenewCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "RenewCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.RenewCertificateOutput)
	return ret0, ret1
}

// RenewCertificateRequest indicates an expected call of RenewCertificateRequest
func (mr *MockACMAPIMockRecorder) RenewCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RenewCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).RenewCertificateRequest), arg0)
}

// RequestCertificate mocks base method
func (m *MockACMAPI) RequestCertificate(arg0 *acm.RequestCertificateInput) (*acm.RequestCertificateOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "RequestCertificate", arg0)
	ret0, _ := ret[0].(*acm.RequestCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// RequestCertificate indicates an expected call of RequestCertificate
func (mr *MockACMAPIMockRecorder) RequestCertificate(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RequestCertificate", reflect.TypeOf((*MockACMAPI)(nil).RequestCertificate), arg0)
}

// RequestCertificateWithContext mocks base method
func (m *MockACMAPI) RequestCertificateWithContext(arg0 aws.Context, arg1 *acm.RequestCertificateInput, arg2 ...request.Option) (*acm.RequestCertificateOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "RequestCertificateWithContext", varargs...)
	ret0, _ := ret[0].(*acm.RequestCertificateOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// RequestCertificateWithContext indicates an expected call of RequestCertificateWithContext
func (mr *MockACMAPIMockRecorder) RequestCertificateWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RequestCertificateWithContext", reflect.TypeOf((*MockACMAPI)(nil).RequestCertificateWithContext), varargs...)
}

// RequestCertificateRequest mocks base method
func (m *MockACMAPI) RequestCertificateRequest(arg0 *acm.RequestCertificateInput) (*request.Request, *acm.RequestCertificateOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "RequestCertificateRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.RequestCertificateOutput)
	return ret0, ret1
}

// RequestCertificateRequest indicates an expected call of RequestCertificateRequest
func (mr *MockACMAPIMockRecorder) RequestCertificateRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RequestCertificateRequest", reflect.TypeOf((*MockACMAPI)(nil).RequestCertificateRequest), arg0)
}

// ResendValidationEmail mocks base method
func (m *MockACMAPI) ResendValidationEmail(arg0 *acm.ResendValidationEmailInput) (*acm.ResendValidationEmailOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ResendValidationEmail", arg0)
	ret0, _ := ret[0].(*acm.ResendValidationEmailOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ResendValidationEmail indicates an expected call of ResendValidationEmail
func (mr *MockACMAPIMockRecorder) ResendValidationEmail(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResendValidationEmail", reflect.TypeOf((*MockACMAPI)(nil).ResendValidationEmail), arg0)
}

// ResendValidationEmailWithContext mocks base method
func (m *MockACMAPI) ResendValidationEmailWithContext(arg0 aws.Context, arg1 *acm.ResendValidationEmailInput, arg2 ...request.Option) (*acm.ResendValidationEmailOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "ResendValidationEmailWithContext", varargs...)
	ret0, _ := ret[0].(*acm.ResendValidationEmailOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ResendValidationEmailWithContext indicates an expected call of ResendValidationEmailWithContext
func (mr *MockACMAPIMockRecorder) ResendValidationEmailWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResendValidationEmailWithContext", reflect.TypeOf((*MockACMAPI)(nil).ResendValidationEmailWithContext), varargs...)
}

// ResendValidationEmailRequest mocks base method
func (m *MockACMAPI) ResendValidationEmailRequest(arg0 *acm.ResendValidationEmailInput) (*request.Request, *acm.ResendValidationEmailOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ResendValidationEmailRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.ResendValidationEmailOutput)
	return ret0, ret1
}

// ResendValidationEmailRequest indicates an expected call of ResendValidationEmailRequest
func (mr *MockACMAPIMockRecorder) ResendValidationEmailRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ResendValidationEmailRequest", reflect.TypeOf((*MockACMAPI)(nil).ResendValidationEmailRequest), arg0)
}

// UpdateCertificateOptions mocks base method
func (m *MockACMAPI) UpdateCertificateOptions(arg0 *acm.UpdateCertificateOptionsInput) (*acm.UpdateCertificateOptionsOutput, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UpdateCertificateOptions", arg0)
	ret0, _ := ret[0].(*acm.UpdateCertificateOptionsOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// UpdateCertificateOptions indicates an expected call of UpdateCertificateOptions
func (mr *MockACMAPIMockRecorder) UpdateCertificateOptions(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCertificateOptions", reflect.TypeOf((*MockACMAPI)(nil).UpdateCertificateOptions), arg0)
}

// UpdateCertificateOptionsWithContext mocks base method
func (m *MockACMAPI) UpdateCertificateOptionsWithContext(arg0 aws.Context, arg1 *acm.UpdateCertificateOptionsInput, arg2 ...request.Option) (*acm.UpdateCertificateOptionsOutput, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "UpdateCertificateOptionsWithContext", varargs...)
	ret0, _ := ret[0].(*acm.UpdateCertificateOptionsOutput)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// UpdateCertificateOptionsWithContext indicates an expected call of UpdateCertificateOptionsWithContext
func (mr *MockACMAPIMockRecorder) UpdateCertificateOptionsWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCertificateOptionsWithContext", reflect.TypeOf((*MockACMAPI)(nil).UpdateCertificateOptionsWithContext), varargs...)
}

// UpdateCertificateOptionsRequest mocks base method
func (m *MockACMAPI) UpdateCertificateOptionsRequest(arg0 *acm.UpdateCertificateOptionsInput) (*request.Request, *acm.UpdateCertificateOptionsOutput) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UpdateCertificateOptionsRequest", arg0)
	ret0, _ := ret[0].(*request.Request)
	ret1, _ := ret[1].(*acm.UpdateCertificateOptionsOutput)
	return ret0, ret1
}

// UpdateCertificateOptionsRequest indicates an expected call of UpdateCertificateOptionsRequest
func (mr *MockACMAPIMockRecorder) UpdateCertificateOptionsRequest(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateCertificateOptionsRequest", reflect.TypeOf((*MockACMAPI)(nil).UpdateCertificateOptionsRequest), arg0)
}

// WaitUntilCertificateValidated mocks base method
func (m *MockACMAPI) WaitUntilCertificateValidated(arg0 *acm.DescribeCertificateInput) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "WaitUntilCertificateValidated", arg0)
	ret0, _ := ret[0].(error)
	return ret0
}

// WaitUntilCertificateValidated indicates an expected call of WaitUntilCertificateValidated
func (mr *MockACMAPIMockRecorder) WaitUntilCertificateValidated(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitUntilCertificateValidated", reflect.TypeOf((*MockACMAPI)(nil).WaitUntilCertificateValidated), arg0)
}

// WaitUntilCertificateValidatedWithContext mocks base method
func (m *MockACMAPI) WaitUntilCertificateValidatedWithContext(arg0 aws.Context, arg1 *acm.DescribeCertificateInput, arg2 ...request.WaiterOption) error {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1}
	for _, a := range arg2 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "WaitUntilCertificateValidatedWithContext", varargs...)
	ret0, _ := ret[0].(error)
	return ret0
}

// WaitUntilCertificateValidatedWithContext indicates an expected call of WaitUntilCertificateValidatedWithContext
func (mr *MockACMAPIMockRecorder) WaitUntilCertificateValidatedWithContext(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1}, arg2...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "WaitUntilCertificateValidatedWithContext", reflect.TypeOf((*MockACMAPI)(nil).WaitUntilCertificateValidatedWithContext), varargs...)
}


================================================
FILE: acm/mock/sdk/paginators.go
================================================
package sdk

import (
	"github.com/aws/aws-sdk-go/service/acm"
	"github.com/aws/aws-sdk-go/service/acm/acmiface"
)

type MockListCertificatesPagesClient struct {
	acmiface.ACMAPI
	Resp  *acm.ListCertificatesOutput
	Error error
}

func (m MockListCertificatesPagesClient) ListCertificatesPages(in *acm.ListCertificatesInput, fn func(*acm.ListCertificatesOutput, bool) bool) error {
	if m.Error != nil {
		return m.Error
	}

	fn(m.Resp, true)

	return nil
}


================================================
FILE: cloudwatchlogs/log_group.go
================================================
package cloudwatchlogs

import (
	"fmt"
	"time"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awserr"
	awscwl "github.com/aws/aws-sdk-go/service/cloudwatchlogs"
	"github.com/awslabs/fargatecli/console"
)

type GetLogsInput struct {
	Filter         string
	LogGroupName   string
	LogStreamNames []string
	EndTime        time.Time
	StartTime      time.Time
}

type LogLine struct {
	EventId       string
	LogStreamName string
	Message       string
	Timestamp     time.Time
}

func (cwl *CloudWatchLogs) CreateLogGroup(logGroupName string, a ...interface{}) string {
	formattedLogGroupName := fmt.Sprintf(logGroupName, a...)
	_, err := cwl.svc.CreateLogGroup(
		&awscwl.CreateLogGroupInput{
			LogGroupName: aws.String(formattedLogGroupName),
		},
	)

	if err != nil {
		if awsErr, ok := err.(awserr.Error); ok {
			switch awsErr.Code() {
			case awscwl.ErrCodeResourceAlreadyExistsException:
				return formattedLogGroupName
			default:
				console.ErrorExit(awsErr, "Could not create Cloudwatch Logs log group")
			}
		}
	}

	return formattedLogGroupName
}

func (cwl *CloudWatchLogs) GetLogs(i *GetLogsInput) []LogLine {
	var logLines []LogLine

	input := &awscwl.FilterLogEventsInput{
		LogGroupName: aws.String(i.LogGroupName),
		Interleaved:  aws.Bool(true),
	}

	if !i.StartTime.IsZero() {
		input.SetStartTime(i.StartTime.UTC().UnixNano() / int64(time.Millisecond))
	}

	if !i.EndTime.IsZero() {
		input.SetEndTime(i.EndTime.UTC().UnixNano() / int64(time.Millisecond))
	}

	if i.Filter != "" {
		input.SetFilterPattern(i.Filter)
	}

	if len(i.LogStreamNames) > 0 {
		input.SetLogStreamNames(aws.StringSlice(i.LogStreamNames))
	}

	err := cwl.svc.FilterLogEventsPages(
		input,
		func(resp *awscwl.FilterLogEventsOutput, lastPage bool) bool {
			for _, event := range resp.Events {
				logLines = append(logLines,
					LogLine{
						EventId:       aws.StringValue(event.EventId),
						Message:       aws.StringValue(event.Message),
						LogStreamName: aws.StringValue(event.LogStreamName),
						Timestamp:     time.Unix(0, aws.Int64Value(event.Timestamp)*int64(time.Millisecond)),
					},
				)

			}

			return true
		},
	)

	if err != nil {
		console.ErrorExit(err, "Could not get logs")
	}

	return logLines
}


================================================
FILE: cloudwatchlogs/main.go
================================================
package cloudwatchlogs

import (
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/cloudwatchlogs"
)

type CloudWatchLogs struct {
	svc *cloudwatchlogs.CloudWatchLogs
}

func New(sess *session.Session) CloudWatchLogs {
	return CloudWatchLogs{
		svc: cloudwatchlogs.New(sess),
	}
}


================================================
FILE: cmd/certificate.go
================================================
package cmd

import (
	"errors"

	"github.com/awslabs/fargatecli/acm"
	"github.com/spf13/cobra"
)

type certificateOperation struct {
	acm    acm.Client
	output Output
}

func (o certificateOperation) findCertificate(domainName string) (acm.Certificate, error) {
	o.output.Debug("Listing certificates [API=acm Action=ListCertificate]")
	certificates, err := o.acm.ListCertificates()

	if err != nil {
		return acm.Certificate{}, err
	}

	certificates = certificates.GetCertificates(domainName)

	switch {
	case len(certificates) == 0:
		return acm.Certificate{}, errCertificateNotFound
	case len(certificates) > 1:
		return acm.Certificate{}, errCertificateTooManyFound
	}

	o.output.Debug("Describing certificate [API=acm Action=DescribeCertificate ARN=%s]", certificates[0].ARN)

	if err := o.acm.InflateCertificate(&certificates[0]); err != nil {
		return acm.Certificate{}, err
	}

	return certificates[0], nil
}

var (
	errCertificateNotFound     = errors.New("certificate not found")
	errCertificateTooManyFound = errors.New("too many certificates found")

	certificateCmd = &cobra.Command{
		Use:   "certificate",
		Short: "Manage certificates",
		Long: `Manages certificate

Certificates are TLS certificates issued by or imported into AWS Certificate
Manager for use in securing traffic between load balancers and end users. ACM
provides TLS certificates free of charge for use within AWS resources.`,
	}
)

func init() {
	rootCmd.AddCommand(certificateCmd)
}


================================================
FILE: cmd/certificate_destroy.go
================================================
package cmd

import (
	"github.com/awslabs/fargatecli/acm"
	"github.com/spf13/cobra"
)

type certificateDestroyOperation struct {
	certificateOperation
	domainName string
	output     Output
}

func (o certificateDestroyOperation) execute() {
	certificate, err := o.findCertificate(o.domainName)

	if err != nil {
		switch err {
		case errCertificateNotFound:
			o.output.Fatal(err, "Could not find certificate for %s", o.domainName)
			return
		case errCertificateTooManyFound:
			o.output.Fatal(err, "Multiple certificates found for %s, for safety please destroy the one you intend via the AWS CLI", o.domainName)
			return
		default:
			o.output.Fatal(err, "Could not destroy certificate")
			return
		}
	}

	o.output.Debug("Deleting certificate [API=acm Action=DeleteCertificate ARN=%s]", certificate.ARN)
	if err := o.acm.DeleteCertificate(certificate.ARN); err != nil {
		o.output.Fatal(err, "Could not destroy certificate")
		return
	}

	o.output.Info("Destroyed certificate %s", o.domainName)
}

var certificateDestroyCmd = &cobra.Command{
	Use:   "destroy <domain-name>",
	Short: "Destroy certificate",
	Long: `Destroy certificate

In order to destroy a certificate, it must not be in use by any load balancers or
any other AWS resources.`,
	Args: cobra.ExactArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
		certificateDestroyOperation{
			certificateOperation: certificateOperation{acm: acm.New(sess), output: output},
			domainName:           args[0],
			output:               output,
		}.execute()
	},
}

func init() {
	certificateCmd.AddCommand(certificateDestroyCmd)
}


================================================
FILE: cmd/certificate_destroy_test.go
================================================
package cmd

import (
	"errors"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/acm"
	"github.com/awslabs/fargatecli/acm/mock/client"
	"github.com/awslabs/fargatecli/cmd/mock"
)

func TestCertificateDestroyOperation(t *testing.T) {
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	domainName := "example.com"
	certificate := acm.Certificate{
		ARN:        certificateARN,
		DomainName: domainName,
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(acm.Certificates{certificate}, nil)
	mockClient.EXPECT().InflateCertificate(&certificate).Return(nil)
	mockClient.EXPECT().DeleteCertificate(certificateARN).Return(nil)

	certificateDestroyOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: domainName,
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) > 0 {
		for _, fatal := range mockOutput.FatalMsgs {
			t.Errorf(fatal.Msg, fatal.Errors)
		}
	}

	if len(mockOutput.InfoMsgs) == 0 {
		t.Errorf("Expected info output from operation, got none")
	}
}

func TestCertificateDestroyOperationCertNotFound(t *testing.T) {
	domainName := "example.com"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(acm.Certificates{}, nil)

	certificateDestroyOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: domainName,
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected fatal output from operation, got none")
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}

func TestCertificateDestroyOperationMoreThanOneCertFound(t *testing.T) {
	certificateARN1 := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	certificateARN2 := "arn:aws:acm:us-east-1:123456789012:certificate/abcdef01-2345-6789-0abc-def012345678"
	domainName := "example.com"
	certificate1 := acm.Certificate{
		ARN:        certificateARN1,
		DomainName: domainName,
	}
	certificate2 := acm.Certificate{
		ARN:        certificateARN2,
		DomainName: domainName,
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(acm.Certificates{certificate1, certificate2}, nil)

	certificateDestroyOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: domainName,
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected fatal output from operation, got none")
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}

func TestCertificateDestroyOperationListError(t *testing.T) {
	domainName := "example.com"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(acm.Certificates{}, errors.New("something went boom"))

	certificateDestroyOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: domainName,
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected fatal output from operation, got none")
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}

func TestCertificateDestroyOperationDeleteError(t *testing.T) {
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	domainName := "example.com"
	certificate := acm.Certificate{
		ARN:        certificateARN,
		DomainName: domainName,
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(acm.Certificates{certificate}, nil)
	mockClient.EXPECT().InflateCertificate(&certificate).Return(nil)
	mockClient.EXPECT().DeleteCertificate(certificateARN).Return(errors.New(":-("))

	certificateDestroyOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: domainName,
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected fatal output from operation, got none")
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}


================================================
FILE: cmd/certificate_import.go
================================================
package cmd

import (
	"fmt"
	"io/ioutil"

	"github.com/awslabs/fargatecli/acm"
	"github.com/spf13/cobra"
)

type certificateImportOperation struct {
	acm                  acm.Client
	certificate          []byte
	certificateChain     []byte
	certificateChainFile string
	certificateFile      string
	output               Output
	privateKey           []byte
	privateKeyFile       string
}

func (o certificateImportOperation) execute() {
	if errs := o.validate(); len(errs) > 0 {
		o.output.Fatals(errs, "Invalid certificate import parameters")
		return
	}

	if errs := o.readFiles(); len(errs) > 0 {
		o.output.Fatals(errs, "Could not read file(s)")
		return
	}

	o.output.Debug("Importing certificate [API=acm Action=ImportCertificate]")
	arn, err := o.acm.ImportCertificate(o.certificate, o.privateKey, o.certificateChain)

	if err != nil {
		o.output.Fatal(err, "Could not import certificate")
		return
	}

	o.output.Info("Imported certificate [ARN=%s]", arn)
}

func (o certificateImportOperation) validate() []error {
	var errs []error

	if o.certificateFile == "" {
		errs = append(errs, fmt.Errorf("--certificate is required"))
	}

	if o.privateKeyFile == "" {
		errs = append(errs, fmt.Errorf("--key is required"))
	}

	return errs
}

func (o *certificateImportOperation) readFiles() []error {
	var errs []error

	o.output.Debug("Reading certificate [File=%s]", o.certificateFile)
	if certificate, err := ioutil.ReadFile(o.certificateFile); err == nil {
		o.certificate = certificate
	} else {
		errs = append(errs, err)
	}

	o.output.Debug("Reading private key [File=%s]", o.privateKeyFile)
	if privateKey, err := ioutil.ReadFile(o.privateKeyFile); err == nil {
		o.privateKey = privateKey
	} else {
		errs = append(errs, err)
	}

	if o.certificateChainFile != "" {
		o.output.Debug("Reading certificate chain [File=%s]", o.certificateChainFile)
		if certificateChain, err := ioutil.ReadFile(o.certificateChainFile); err == nil {
			o.certificateChain = certificateChain
		} else {
			errs = append(errs, err)
		}
	}

	return errs
}

var certificateImportCmd = &cobra.Command{
	Use:   "import --certificate <certificate-file> --key <key-file> [--chain <chain-file>]",
	Short: "Import a certificate",
	Long: `Import a certificate

Upload a certificate from a certificate file, a private key file, and optionally
an intermediate certificate chain file. The files must be PEM-encoded and the
private key must not be encrypted or protected by a passphrase. See
http://docs.aws.amazon.com/acm/latest/APIReference/API_ImportCertificate.html
for more details.`,
	Run: func(cmd *cobra.Command, args []string) {
		certificateImportOperation{
			acm:                  acm.New(sess),
			certificateChainFile: certificateImportFlags.chain,
			certificateFile:      certificateImportFlags.certificate,
			output:               output,
			privateKeyFile:       certificateImportFlags.key,
		}.execute()
	},
}

var certificateImportFlags struct {
	certificate, key, chain string
}

func init() {
	certificateImportCmd.Flags().StringVarP(&certificateImportFlags.certificate, "certificate", "c", "",
		"Filename of the certificate to import")
	certificateImportCmd.Flags().StringVarP(&certificateImportFlags.key, "key", "k", "",
		"Filename of the private key used to generate the certificate")
	certificateImportCmd.Flags().StringVar(&certificateImportFlags.chain, "chain", "",
		"Filename of intermediate certificate chain")

	certificateCmd.AddCommand(certificateImportCmd)
}


================================================
FILE: cmd/certificate_import_test.go
================================================
package cmd

import (
	"errors"
	"io/ioutil"
	"strings"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/acm/mock/client"
	"github.com/awslabs/fargatecli/cmd/mock"
)

func TestCertificateImportOperation(t *testing.T) {
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	certificate := readFile("testdata/certificate.crt", t)
	privateKey := readFile("testdata/private.key", t)
	certificateChain := readFile("testdata/chain.crt", t)

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ImportCertificate(certificate, privateKey, certificateChain).Return(certificateARN, nil)

	certificateImportOperation{
		acm:                  mockClient,
		certificateChainFile: "testdata/chain.crt",
		certificateFile:      "testdata/certificate.crt",
		output:               mockOutput,
		privateKeyFile:       "testdata/private.key",
	}.execute()

	if len(mockOutput.FatalMsgs) > 0 {
		for _, fatal := range mockOutput.FatalMsgs {
			t.Errorf(fatal.Msg, fatal.Errors)
		}
	}

	if len(mockOutput.InfoMsgs) == 0 {
		t.Errorf("Expected info output from operation, got none")
	}

	if !strings.Contains(mockOutput.InfoMsgs[0], "Imported certificate") {
		t.Errorf("Expected info output to say 'Imported certificate [ARN=%s]', got: %s", certificateARN, mockOutput.InfoMsgs[0])
	}
}

func TestCertificateImportOperationSansChain(t *testing.T) {
	var certificateChain []byte

	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	certificate := readFile("testdata/certificate.crt", t)
	privateKey := readFile("testdata/private.key", t)

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ImportCertificate(certificate, privateKey, certificateChain).Return(certificateARN, nil)

	certificateImportOperation{
		acm:             mockClient,
		certificateFile: "testdata/certificate.crt",
		output:          mockOutput,
		privateKeyFile:  "testdata/private.key",
	}.execute()

	if len(mockOutput.FatalMsgs) > 0 {
		for _, fatal := range mockOutput.FatalMsgs {
			t.Errorf(fatal.Msg, fatal.Errors)
		}
	}

	if len(mockOutput.InfoMsgs) == 0 {
		t.Errorf("Expected info output from operation, got none")
	}

	if !strings.Contains(mockOutput.InfoMsgs[0], "Imported certificate") {
		t.Errorf("Expected info output to say 'Imported certificate [ARN=%s]', got: %s", certificateARN, mockOutput.InfoMsgs[0])
	}
}

func TestCertificateImportOperationMissingParameters(t *testing.T) {
	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	certificateImportOperation{
		acm:    mockClient,
		output: mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected fatal output from operation, got none")
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit, didn't")
	}

	if mockOutput.FatalMsgs[0].Msg != "Invalid certificate import parameters" {
		t.Errorf("Expected fatal output 'Invalid certificate import parameters', got: %s", mockOutput.FatalMsgs[0].Msg)
	}
}

func TestCertificateImportOperationBadFiles(t *testing.T) {
	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	certificateImportOperation{
		acm:                  mockClient,
		certificateChainFile: "pretend",
		certificateFile:      "pretend",
		output:               mockOutput,
		privateKeyFile:       "pretend",
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected fatal output from operation, got none")
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit, didn't")
	}

	if mockOutput.FatalMsgs[0].Msg != "Could not read file(s)" {
		t.Errorf("Expected fatal output 'Could not read file(s)', got: %s", mockOutput.FatalMsgs[0].Msg)
	}
}

func readFile(fileName string, t *testing.T) []byte {
	contents, err := ioutil.ReadFile(fileName)

	if err != nil {
		t.Errorf(err.Error())
	}

	return contents
}

func TestCertificateImportOperationError(t *testing.T) {
	certificate := readFile("testdata/certificate.crt", t)
	privateKey := readFile("testdata/private.key", t)
	certificateChain := readFile("testdata/chain.crt", t)

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ImportCertificate(certificate, privateKey, certificateChain).Return("", errors.New(":-("))

	certificateImportOperation{
		acm:                  mockClient,
		certificateChainFile: "testdata/chain.crt",
		certificateFile:      "testdata/certificate.crt",
		output:               mockOutput,
		privateKeyFile:       "testdata/private.key",
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected fatal output from operation, got none")
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit, didn't")
	}

	if mockOutput.FatalMsgs[0].Msg != "Could not import certificate" {
		t.Errorf("Expected fatal output 'Could not import certificate', got: %s", mockOutput.FatalMsgs[0].Msg)
	}
}


================================================
FILE: cmd/certificate_info.go
================================================
package cmd

import (
	"strings"

	"github.com/awslabs/fargatecli/acm"
	"github.com/spf13/cobra"
)

type certificateInfoOperation struct {
	certificateOperation
	domainName string
	output     Output
}

func (o certificateInfoOperation) execute() {
	certificate, err := o.findCertificate(o.domainName)

	if err != nil {
		switch err {
		case errCertificateNotFound:
			o.output.Info("No certificate found for %s", o.domainName)
		case errCertificateTooManyFound:
			o.output.Fatal(nil, "Multiple certificates found for %s", o.domainName)
		default:
			o.output.Fatal(err, "Could not find certificate for %s", o.domainName)
		}

		return
	}

	o.display(certificate)
}

func (o certificateInfoOperation) display(certificate acm.Certificate) {
	o.output.KeyValue("Domain Name", certificate.DomainName, 0)
	o.output.KeyValue("Status", Titleize(certificate.Status), 0)
	o.output.KeyValue("Type", Titleize(certificate.Type), 0)
	o.output.KeyValue("Subject Alternative Names", strings.Join(certificate.SubjectAlternativeNames, ", "), 0)

	if len(certificate.Validations) > 0 {
		rows := [][]string{
			[]string{"DOMAIN NAME", "STATUS", "RECORD"},
		}

		for _, v := range certificate.Validations {
			rows = append(rows, []string{v.DomainName, Titleize(v.Status), v.ResourceRecordString()})
		}

		o.output.LineBreak()
		o.output.Table("Validations", rows)
	}
}

var certificateInfoCmd = &cobra.Command{
	Use:   "info <domain-name>",
	Short: "Inspect certificate",
	Long: `Inspect certificate

Show extended information for a certificate. Includes each validation for the
certificate which shows DNS records which must be created to validate domain
ownership.`,
	Args: cobra.ExactArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
		certificateInfoOperation{
			certificateOperation: certificateOperation{acm: acm.New(sess), output: output},
			domainName:           args[0],
			output:               output,
		}.execute()
	},
}

func init() {
	certificateCmd.AddCommand(certificateInfoCmd)
}


================================================
FILE: cmd/certificate_info_test.go
================================================
package cmd

import (
	"errors"
	"reflect"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/acm"
	"github.com/awslabs/fargatecli/acm/mock/client"
	"github.com/awslabs/fargatecli/cmd/mock"
)

func TestCertificateInfoOperation(t *testing.T) {
	domainName := "example.com"
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	certificate := acm.Certificate{
		ARN:                     certificateARN,
		DomainName:              domainName,
		Type:                    "AMAZON_ISSUED",
		Status:                  "PENDING_VALIDATION",
		SubjectAlternativeNames: []string{"staging1.example.com", "staging2.example.com"},
		Validations: []acm.CertificateValidation{
			acm.CertificateValidation{
				Status:     "SUCCESS",
				DomainName: "staging.example.com",
				ResourceRecord: acm.CertificateResourceRecord{
					Name:  "_beeed67ae3f2d83f6cd3e19a8064947b.staging.example.com",
					Type:  "CNAME",
					Value: "_6ddc33cd42c3fe3d5eca4cb075013a0a.acm-validations.aws.",
				},
			},
		},
	}
	certificateList := acm.Certificates{certificate}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, nil)
	mockClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)

	certificateInfoOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: domainName,
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) > 0 {
		for _, fatal := range mockOutput.FatalMsgs {
			t.Errorf(fatal.Msg, fatal.Errors)
		}
	}

	if len(mockOutput.KeyValueMsgs) == 0 {
		t.Errorf("Expected key value output from operation, got none")
	}

	if mockOutput.KeyValueMsgs["Domain Name"] != domainName {
		t.Errorf("Expected Domain Name == %s, got %s", domainName, mockOutput.KeyValueMsgs["Domain Name"])
	}

	if mockOutput.KeyValueMsgs["Status"] != "Pending Validation" {
		t.Logf(mockOutput.KeyValueMsgs["Status"])
		t.Logf(Titleize(mockOutput.KeyValueMsgs["Status"]))
		t.Errorf("Expected Status == Pending Validation, got %s", mockOutput.KeyValueMsgs["Status"])
	}

	if mockOutput.KeyValueMsgs["Type"] != "Amazon Issued" {
		t.Errorf("Expected Type == Amazon Issued, got %s", mockOutput.KeyValueMsgs["Type"])
	}

	if mockOutput.KeyValueMsgs["Subject Alternative Names"] != "staging1.example.com, staging2.example.com" {
		t.Errorf(
			"Expected Subject Alternative Names == staging1.example.com, staging2.example.com, got %s",
			mockOutput.KeyValueMsgs["Subject Alternative Names"],
		)
	}

	if len(mockOutput.Tables) != 1 {
		t.Errorf("Expected 1 table, got %d", len(mockOutput.Tables))
	}

	if len(mockOutput.Tables[0].Rows) != 2 {
		t.Errorf("Expected 2 rows , got %d", len(mockOutput.Tables[0].Rows))
	}

	if mockOutput.Tables[0].Header != "Validations" {
		t.Errorf("Expected table with header Validations , got %s", mockOutput.Tables[0].Header)
	}

	if !reflect.DeepEqual(mockOutput.Tables[0].Rows[0], []string{"DOMAIN NAME", "STATUS", "RECORD"}) {
		t.Errorf("Expected table with validation column names , got %+v", mockOutput.Tables[0].Rows[0])
	}

	if mockOutput.Tables[0].Rows[1][0] != "staging.example.com" {
		t.Errorf("Expected Validation Domain Name == staging.example.com, got %s", mockOutput.Tables[0].Rows[1][0])
	}

	if mockOutput.Tables[0].Rows[1][1] != "Success" {
		t.Errorf("Expected Validation Status == Success, got %s", mockOutput.Tables[0].Rows[1][1])
	}

	if mockOutput.Tables[0].Rows[1][2] != "CNAME _beeed67ae3f2d83f6cd3e19a8064947b.staging.example.com -> _6ddc33cd42c3fe3d5eca4cb075013a0a.acm-validations.aws." {
		t.Errorf("Expected Validation Record == CNAME _beeed67ae3f2d83f6cd3e19a8064947b.staging.example.com -> _6ddc33cd42c3fe3d5eca4cb075013a0a.acm-validations.aws., got %s", mockOutput.Tables[0].Rows[1][2])
	}
}

func TestCertificateInfoOperationNotFound(t *testing.T) {
	certificateList := acm.Certificates{}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, nil)

	certificateInfoOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) > 0 {
		for _, fatal := range mockOutput.FatalMsgs {
			t.Errorf(fatal.Msg, fatal.Errors)
		}
	}

	if mockOutput.InfoMsgs[0] != "No certificate found for example.com" {
		t.Errorf("Expected info 'No certificate found for example.com', got: %+v", mockOutput.InfoMsgs)
	}
}

func TestCertificateInfoOperationListError(t *testing.T) {
	certificateList := acm.Certificates{}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, errors.New("boom"))

	certificateInfoOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected error output, received none")
	}

	if mockOutput.FatalMsgs[0].Msg != "Could not find certificate for example.com" {
		t.Errorf("Expected info 'Could not find certificate for example.com', got: %s", mockOutput.FatalMsgs[0].Msg)
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}

func TestCertificateInfoOperationDescribeError(t *testing.T) {
	certificate := acm.Certificate{
		ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
		DomainName: "example.com",
	}
	certificateList := acm.Certificates{certificate}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, nil)
	mockClient.EXPECT().InflateCertificate(gomock.Any()).Return(errors.New("boom"))

	certificateInfoOperation{
		certificateOperation: certificateOperation{
			acm:    mockClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected error output, received none")
	}

	if mockOutput.FatalMsgs[0].Msg != "Could not find certificate for example.com" {
		t.Errorf("Expected info 'Could not find certificate for example.com', got: %s", mockOutput.FatalMsgs[0].Msg)
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}


================================================
FILE: cmd/certificate_list.go
================================================
package cmd

import (
	"context"
	"sort"
	"strings"
	"sync"

	"github.com/awslabs/fargatecli/acm"
	"github.com/spf13/cobra"
	"golang.org/x/time/rate"
)

type certificateListOperation struct {
	acm    acm.Client
	output Output
}

func (o certificateListOperation) execute() {
	certificates, err := o.find()

	if err != nil {
		o.output.Fatal(err, "Could not list certificates")
		return
	}

	if len(certificates) == 0 {
		o.output.Info("No certificates found")
		return
	}

	rows := [][]string{
		[]string{"CERTIFICATE", "TYPE", "STATUS", "SUBJECT ALTERNATIVE NAMES"},
	}

	sort.Slice(certificates, func(i, j int) bool {
		return certificates[i].DomainName < certificates[j].DomainName
	})

	for _, certificate := range certificates {
		rows = append(rows,
			[]string{
				certificate.DomainName,
				Titleize(certificate.Type),
				Titleize(certificate.Status),
				strings.Join(certificate.SubjectAlternativeNames, ", "),
			},
		)
	}

	o.output.Table("", rows)
}

func (o certificateListOperation) find() (acm.Certificates, error) {
	var wg sync.WaitGroup

	o.output.Debug("Listing certificates [API=acm Action=ListCertificates]")
	certificates, err := o.acm.ListCertificates()

	if err != nil {
		return acm.Certificates{}, err
	}

	errs := make(chan error)
	done := make(chan bool)
	limiter := rate.NewLimiter(describeRequestLimitRate, 1)

	for i := 0; i < len(certificates); i++ {
		wg.Add(1)

		go func(index int) {
			defer wg.Done()

			if err := limiter.Wait(context.Background()); err == nil {
				o.output.Debug("Describing certificate [API=acm Action=DescribeCertificate ARN=%s]", certificates[index].ARN)
				if err := o.acm.InflateCertificate(&certificates[index]); err != nil {
					errs <- err
				}
			}
		}(i)
	}

	go func() {
		wg.Wait()
		done <- true
	}()

	select {
	case err := <-errs:
		return acm.Certificates{}, err
	case <-done:
		return certificates, nil
	}
}

func (o certificateListOperation) display(certificates []acm.Certificate) {
}

var certificateListCmd = &cobra.Command{
	Use:   "list",
	Short: "List certificates",
	Run: func(cmd *cobra.Command, args []string) {
		certificateListOperation{
			acm:    acm.New(sess),
			output: output,
		}.execute()
	},
}

func init() {
	certificateCmd.AddCommand(certificateListCmd)
}


================================================
FILE: cmd/certificate_list_test.go
================================================
package cmd

import (
	"errors"
	"reflect"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/acm"
	"github.com/awslabs/fargatecli/acm/mock/client"
	"github.com/awslabs/fargatecli/cmd/mock"
)

func TestCertificateListOperation(t *testing.T) {
	certificateList := acm.Certificates{
		acm.Certificate{
			ARN:                     "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName:              "example.com",
			Type:                    "AMAZON_ISSUED",
			Status:                  "PENDING_VALIDATION",
			SubjectAlternativeNames: []string{"staging1.example.com", "staging2.example.com"},
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, nil)
	mockClient.EXPECT().InflateCertificate(&certificateList[0]).Return(nil)

	certificateListOperation{
		acm:    mockClient,
		output: mockOutput,
	}.execute()

	if len(mockOutput.Tables) != 1 {
		t.Errorf("Expected table, got none")
	}

	if len(mockOutput.Tables[0].Rows) != 2 {
		t.Errorf("Expected table with 2 rows, got %d", len(mockOutput.Tables[0].Rows))
	}

	if !reflect.DeepEqual(
		mockOutput.Tables[0].Rows[0],
		[]string{"CERTIFICATE", "TYPE", "STATUS", "SUBJECT ALTERNATIVE NAMES"},
	) {
		t.Errorf("Expected column headers, found %+v", mockOutput.Tables[0].Rows[0])
	}

	if mockOutput.Tables[0].Rows[1][0] != "example.com" {
		t.Errorf("Expected Domain Name == example.com, found %s", mockOutput.Tables[0].Rows[1][0])
	}

	if mockOutput.Tables[0].Rows[1][1] != "Amazon Issued" {
		t.Errorf("Expected Type == Amazon Issued, found %s", mockOutput.Tables[0].Rows[1][1])
	}

	if mockOutput.Tables[0].Rows[1][2] != "Pending Validation" {
		t.Errorf("Expected Status == Pending Validation, found %s", mockOutput.Tables[0].Rows[1][2])
	}

	if mockOutput.Tables[0].Rows[1][3] != "staging1.example.com, staging2.example.com" {
		t.Errorf("Expected Subject Alternative Names == staging1.example.com, staging2.example.com, found %s", mockOutput.Tables[0].Rows[1][3])
	}
}

func TestCertificateListOperationOrdered(t *testing.T) {
	certificateList := acm.Certificates{
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012-f",
			DomainName: "f.com",
		},
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012-c",
			DomainName: "c.com",
		},
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012-a",
			DomainName: "a.com",
		},
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012-d",
			DomainName: "d.com",
		},
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012-e",
			DomainName: "e.com",
		},
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012-b",
			DomainName: "b.com",
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, nil)
	mockClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil).Times(len(certificateList))

	certificateListOperation{
		acm:    mockClient,
		output: mockOutput,
	}.execute()

	for i, r := range mockOutput.Tables[0].Rows {
		// Skip header and first row
		if i <= 1 {
			continue
		}

		// Compare domain to the domain of the previous row, check it is lexicographically subsequent
		if mockOutput.Tables[0].Rows[i-1][0] > r[0] {
			t.Errorf("Expected alphabetical order, got %+v", mockOutput.Tables[0].Rows[1:len(mockOutput.Tables[0].Rows)+1])
			break
		}
	}
}

func TestCertificateListOperationNotFound(t *testing.T) {
	certificateList := acm.Certificates{}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, nil)

	certificateListOperation{
		acm:    mockClient,
		output: mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) > 0 {
		for _, fatal := range mockOutput.FatalMsgs {
			t.Errorf(fatal.Msg, fatal.Errors)
		}
	}

	if mockOutput.InfoMsgs[0] != "No certificates found" {
		t.Errorf("Expected info 'No certificate found', got: %+v", mockOutput.InfoMsgs)
	}
}

func TestCertificateListOperationListError(t *testing.T) {
	certificateList := acm.Certificates{}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, errors.New("boom"))

	certificateListOperation{
		acm:    mockClient,
		output: mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected error output, received none")
	}

	if mockOutput.FatalMsgs[0].Msg != "Could not list certificates" {
		t.Errorf("Expected info 'Could not list certificates', got: %s", mockOutput.FatalMsgs[0].Msg)
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}

func TestCertificateListOperationDescribeError(t *testing.T) {
	certificate := acm.Certificate{
		ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
		DomainName: "example.com",
	}
	certificateList := acm.Certificates{certificate}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificateList, nil)
	mockClient.EXPECT().InflateCertificate(&certificate).Return(errors.New("boom"))

	certificateListOperation{
		acm:    mockClient,
		output: mockOutput,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected error output, received none")
	}

	if mockOutput.FatalMsgs[0].Msg != "Could not list certificates" {
		t.Errorf("Expected info 'Could not list certificates', got: %s", mockOutput.FatalMsgs[0].Msg)
	}

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}


================================================
FILE: cmd/certificate_request.go
================================================
package cmd

import (
	"github.com/awslabs/fargatecli/acm"
	"github.com/spf13/cobra"
)

type certificateRequestOperation struct {
	acm        acm.Client
	aliases    []string
	output     Output
	domainName string
}

func (o certificateRequestOperation) execute() {
	if errs := o.validate(); len(errs) > 0 {
		o.output.Fatals(errs, "Invalid certificate request parameters")

		return
	}

	o.output.Debug("Requesting certificate [API=acm Action=RequestCertificate]")

	if arn, err := o.acm.RequestCertificate(o.domainName, o.aliases); err == nil {
		o.output.Debug("Requested certificate [ARN=%s]", arn)
	} else {
		o.output.Fatal(err, "Could not request certificate")

		return
	}

	o.output.Info("Requested certificate for %s", o.domainName)
	o.output.LineBreak()
	o.output.Say("You must validate ownership of the domain name for the certificate to be issued.", 0)
	o.output.LineBreak()
	o.output.Say("If your domain is hosted using Amazon Route 53, this can be done automatically by running:", 0)
	o.output.Say("fargate certificate validate %s", 1, o.domainName)
	o.output.LineBreak()
	o.output.Say("If not, you must manually create the DNS records returned by running:", 0)
	o.output.Say("fargate certificate info %s", 1, o.domainName)
}

func (o certificateRequestOperation) validate() []error {
	var errors []error

	if err := acm.ValidateDomainName(o.domainName); err != nil {
		errors = append(errors, err)
	}

	for _, alias := range o.aliases {
		if err := acm.ValidateAlias(alias); err != nil {
			errors = append(errors, err)
		}
	}

	return errors
}

var certificateRequestCmd = &cobra.Command{
	Use:   "request <domain-name>",
	Short: "Request a certificate",
	Long: `Request a certificate

Certificates can be for a fully qualified domain name (e.g. www.example.com) or
a wildcard domain name (e.g. *.example.com). You can add aliases to a
certificate by specifying additional domain names via the --alias flag. To add
multiple aliases, pass --alias multiple times. By default, AWS Certificate
Manager has a limit of 10 domain names per certificate, but this limit can be
raised by AWS support.`,
	Args: cobra.ExactArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
		certificateRequestOperation{
			acm:        acm.New(sess),
			aliases:    certificateRequestFlags.aliases,
			output:     output,
			domainName: args[0],
		}.execute()
	},
}

var certificateRequestFlags struct {
	aliases []string
}

func init() {
	certificateRequestCmd.Flags().StringSliceVarP(&certificateRequestFlags.aliases, "alias", "a", []string{},
		`Additional domain names to be included in the certificate (can be specified multiple times)`)

	certificateCmd.AddCommand(certificateRequestCmd)
}


================================================
FILE: cmd/certificate_request_test.go
================================================
package cmd

import (
	"fmt"
	"strings"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/acm/mock/client"
	"github.com/awslabs/fargatecli/cmd/mock"
)

func TestCertificateRequestOperation(t *testing.T) {
	certificateARN := "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012"
	domainName := "example.com"
	aliases := []string{"www.example.com"}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	operation := certificateRequestOperation{
		acm:        mockClient,
		aliases:    aliases,
		domainName: domainName,
		output:     mockOutput,
	}

	mockClient.EXPECT().RequestCertificate(domainName, aliases).Return(certificateARN, nil)

	operation.execute()

	if len(mockOutput.InfoMsgs) == 0 {
		t.Errorf("Expected info output from operation, got none")
	}
}

func TestCertificateRequestOperationError(t *testing.T) {
	domainName := "example.com"
	aliases := []string{}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	operation := certificateRequestOperation{
		acm:        mockClient,
		aliases:    aliases,
		domainName: domainName,
		output:     mockOutput,
	}

	mockClient.EXPECT().RequestCertificate(domainName, aliases).Return("", fmt.Errorf("oops, something went wrong"))

	operation.execute()

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}

	if len(mockOutput.FatalMsgs) == 0 {
		t.Errorf("Expected error output from operation, got none")
	}
}

func TestCertificateRequestOperationInvalid(t *testing.T) {
	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	operation := certificateRequestOperation{
		acm:        mockClient,
		domainName: "z", // Invalid
		output:     mockOutput,
	}

	operation.execute()

	if !mockOutput.Exited {
		t.Errorf("Expected premature exit; didn't")
	}
}

func TestCertificateRequestOperationValidateInvalidDomainName(t *testing.T) {
	operation := certificateRequestOperation{
		domainName: "z", // Invalid
	}

	errs := operation.validate()

	if len(errs) != 1 {
		t.Errorf("Invalid number of errors; want 1, got: %d", len(errs))
	}

	if strings.Index(errs[0].Error(), "The domain name requires at least 2 octets") == -1 {
		t.Errorf("Unexpected error; want: 'The domain name requires at leasr 2 octets', got: %s", errs[0].Error())
	}
}

func TestCertificateRequestOperationValidateInvalidAlias(t *testing.T) {
	operation := certificateRequestOperation{
		domainName: "example.com",
		aliases:    []string{"z"}, // Invalid
	}

	errs := operation.validate()

	if len(errs) != 1 {
		t.Errorf("Invalid number of errors; want 1, got: %d", len(errs))
	}

	if strings.Index(errs[0].Error(), "An alias requires at least 2 octets") == -1 {
		t.Errorf("Unexpected error; want: 'An alias requires at least 2 octets', got: %s", errs[0].Error())
	}
}


================================================
FILE: cmd/certificate_test.go
================================================
package cmd

import (
	"reflect"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/acm"
	"github.com/awslabs/fargatecli/acm/mock/client"
	"github.com/awslabs/fargatecli/cmd/mock"
)

func TestFindCertificate(t *testing.T) {
	certificate := acm.Certificate{
		DomainName: "www.example.com",
		ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
		Status:     "ISSUED",
		Type:       "AMAZON_ISSUED",
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(acm.Certificates{certificate}, nil)
	mockClient.EXPECT().InflateCertificate(&certificate).Return(nil)

	operation := certificateOperation{
		acm:    mockClient,
		output: mockOutput,
	}
	foundCertificate, err := operation.findCertificate("www.example.com")

	if err != nil {
		t.Errorf("Expected no error, got %v", err)
	}

	if !reflect.DeepEqual(foundCertificate, certificate) {
		t.Errorf("Expected to find %+v, got: %v", certificate, foundCertificate)
	}
}

func TestFindCertificateNotFound(t *testing.T) {
	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(acm.Certificates{}, nil)

	operation := certificateOperation{
		acm:    mockClient,
		output: mockOutput,
	}
	foundCertificate, err := operation.findCertificate("www.example.com")

	if err != errCertificateNotFound {
		t.Errorf("Expected errCertificateNotFound, got %v", err)
	}

	if !reflect.DeepEqual(foundCertificate, acm.Certificate{}) {
		t.Errorf("Expected empty Certificate, got: %v", foundCertificate)
	}
}

func TestFindCertificateTooManyFound(t *testing.T) {
	certificates := acm.Certificates{
		acm.Certificate{DomainName: "www.example.com", ARN: "arn:1"},
		acm.Certificate{DomainName: "www.example.com", ARN: "arn:2"},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockClient := client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockClient.EXPECT().ListCertificates().Return(certificates, nil)

	operation := certificateOperation{
		acm:    mockClient,
		output: mockOutput,
	}
	foundCertificate, err := operation.findCertificate("www.example.com")

	if err != errCertificateTooManyFound {
		t.Errorf("Expected errCertificateTooManyFound, got %v", err)
	}

	if !reflect.DeepEqual(foundCertificate, acm.Certificate{}) {
		t.Errorf("Expected empty Certificate, got: %v", foundCertificate)
	}
}


================================================
FILE: cmd/certificate_validate.go
================================================
package cmd

import (
	"fmt"

	"github.com/awslabs/fargatecli/acm"
	"github.com/awslabs/fargatecli/route53"
	"github.com/spf13/cobra"
)

type certificateValidateOperation struct {
	certificateOperation
	domainName string
	output     Output
	route53    route53.Client
}

func (o certificateValidateOperation) execute() {
	certificate, err := o.findCertificate(o.domainName)

	if err != nil {
		o.output.Fatal(err, "Could not validate certificate")
		return
	}

	if !certificate.IsPendingValidation() {
		o.output.Fatal(fmt.Errorf("certificate %s is in state %s", o.domainName, Humanize(certificate.Status)), "Could not validate certificate")
		return
	}

	o.output.Debug("Listing hosted zones [API=route53 Action=ListHostedZones]")
	hostedZones, err := o.route53.ListHostedZones()

	if err != nil {
		o.output.Fatal(err, "Could not validate certificate")
		return
	}

	for _, v := range certificate.Validations {
		switch {
		case v.IsPendingValidation():
			if zone, ok := hostedZones.FindSuperDomainOf(v.DomainName); ok {
				o.output.Debug("Creating resource record [API=route53 Action=ChangeResourceRecordSets HostedZone=%s]", zone.ID)
				id, err := o.route53.CreateResourceRecord(
					route53.CreateResourceRecordInput{
						HostedZoneID: zone.ID,
						RecordType:   v.ResourceRecord.Type,
						Name:         v.ResourceRecord.Name,
						Value:        v.ResourceRecord.Value,
					},
				)

				if err != nil {
					o.output.Fatal(err, "Could not validate certificate")
					return
				}

				o.output.Debug("Created resource record [ChangeID=%s]", id)
				o.output.Info("[%s] created validation record", v.DomainName)
			} else {
				o.output.Warn("[%s] could not find zone in Amazon Route 53", v.DomainName)
			}
		case v.IsSuccess():
			o.output.Info("[%s] already validated", v.DomainName)
		case v.IsFailed():
			o.output.Fatal(nil, "[%s] failed validation", v.DomainName)
			return
		default:
			o.output.Warn("[%s] unexpected status: %s", v.DomainName, Humanize(v.Status))
		}
	}
}

var certificateValidateCmd = &cobra.Command{
	Use:   "validate <domain-name>",
	Args:  cobra.ExactArgs(1),
	Short: "Validate certificate ownership",
	Long: `Validate certificate ownership

fargate will automatically create DNS validation record to verify ownership for
any domain names that are hosted within Amazon Route 53. If your certificate
has aliases, a validation record will be attempted per alias. Any records whose
domains are hosted in other DNS hosting providers or in other DNS accounts
and cannot be automatically validated will have the necessary records output.
These records are also available in fargate certificate info \<domain-name>.

AWS Certificate Manager may take up to several hours after the DNS records are
created to complete validation and issue the certificate.`,
	Run: func(cmd *cobra.Command, args []string) {
		certificateValidateOperation{
			certificateOperation: certificateOperation{acm: acm.New(sess), output: output},
			domainName:           args[0],
			output:               output,
			route53:              route53.New(sess),
		}.execute()
	},
}

func init() {
	certificateCmd.AddCommand(certificateValidateCmd)
}


================================================
FILE: cmd/certificate_validate_test.go
================================================
package cmd

import (
	"errors"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/acm"
	acmclient "github.com/awslabs/fargatecli/acm/mock/client"
	"github.com/awslabs/fargatecli/cmd/mock"
	"github.com/awslabs/fargatecli/route53"
	route53client "github.com/awslabs/fargatecli/route53/mock/client"
)

func TestCertificateValidateOperation(t *testing.T) {
	resourceRecordType := "CNAME"
	resourceRecordName := "_beeed67ae3f2d83f6cd3e19a8064947b.staging.example.com"
	resourceRecordValue := "_6ddc33cd42c3fe3d5eca4cb075013a0a.acm-validations.aws."

	hostedZones := route53.HostedZones{
		route53.HostedZone{
			Name: "example.com.",
			ID:   "Z2FDTNDATAQYW2",
		},
	}
	certificates := acm.Certificates{
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName: "example.com",
			Status:     "PENDING_VALIDATION",
			Type:       "AMAZON_ISSUED",
			Validations: []acm.CertificateValidation{
				acm.CertificateValidation{
					Status:     "PENDING_VALIDATION",
					DomainName: "example.com",
					ResourceRecord: acm.CertificateResourceRecord{
						Name:  resourceRecordName,
						Type:  resourceRecordType,
						Value: resourceRecordValue,
					},
				},
			},
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	createResourceRecordInput := route53.CreateResourceRecordInput{
		HostedZoneID: hostedZones[0].ID,
		RecordType:   resourceRecordType,
		Name:         resourceRecordName,
		Value:        resourceRecordValue,
	}

	mockACMClient.EXPECT().ListCertificates().Return(certificates, nil)
	mockACMClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(hostedZones, nil)
	mockRoute53Client.EXPECT().CreateResourceRecord(createResourceRecordInput).Return("/change/1", nil)

	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.InfoMsgs) == 0 {
		t.Error("Expected info output, got none")
	} else if mockOutput.InfoMsgs[0] != "[example.com] created validation record" {
		t.Errorf("Expected info output == '[example.com] created validation record', got: %s", mockOutput.InfoMsgs[0])
	}
}

func TestCertificateValidateOperationFindCertificateError(t *testing.T) {
	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockACMClient.EXPECT().ListCertificates().Return(acm.Certificates{}, errors.New("boom"))

	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Error("Expected fatal output, got none")
	} else if mockOutput.FatalMsgs[0].Msg != "Could not validate certificate" {
		t.Errorf("Expected fatal output == 'Could not validate certificate', got: %+v", mockOutput.FatalMsgs[0])
	}
}

func TestCertificateValidateOperationListHostedZonesError(t *testing.T) {
	certificates := acm.Certificates{
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName: "example.com",
			Status:     "PENDING_VALIDATION",
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockACMClient.EXPECT().ListCertificates().Return(certificates, nil)
	mockACMClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{}, errors.New("boom"))

	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Error("Expected fatal output, got none")
	} else if mockOutput.FatalMsgs[0].Msg != "Could not validate certificate" {
		t.Errorf("Expected fatal output == 'Could not validate certificate', got: %+v", mockOutput.FatalMsgs[0])
	}
}

func TestCertificateValidateOperationInvalidState(t *testing.T) {
	certificates := acm.Certificates{
		acm.Certificate{
			ARN:         "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName:  "example.com",
			Status:      "FAILED",
			Type:        "AMAZON_ISSUED",
			Validations: []acm.CertificateValidation{},
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockACMClient.EXPECT().ListCertificates().Return(certificates, nil)
	mockACMClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)
	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Error("Expected fatal output, got none")
		t.FailNow()
	}

	if mockOutput.FatalMsgs[0].Msg != "Could not validate certificate" {
		t.Errorf("Expected fatal output == 'Could not validate certificate', got: %s", mockOutput.FatalMsgs[0])
	}

	if mockOutput.FatalMsgs[0].Errors[0].Error() != "certificate example.com is in state failed" {
		t.Errorf("Expected error == 'certificate example.com is in state failed', got: %s", mockOutput.FatalMsgs[0].Errors[0])
	}
}

func TestCertificateValidateOperationZoneNotFound(t *testing.T) {
	certificates := acm.Certificates{
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName: "example.com",
			Status:     "PENDING_VALIDATION",
			Type:       "AMAZON_ISSUED",
			Validations: []acm.CertificateValidation{
				acm.CertificateValidation{
					Status:     "PENDING_VALIDATION",
					DomainName: "example.com",
				},
			},
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockACMClient.EXPECT().ListCertificates().Return(certificates, nil)
	mockACMClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{}, nil)

	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.WarnMsgs) == 0 {
		t.Error("Expected warn output, got none")
	} else if mockOutput.WarnMsgs[0] != "[example.com] could not find zone in Amazon Route 53" {
		t.Errorf("Expected warn output == '[example.com] could not find zone in Amaozn Route 53', got: %s", mockOutput.WarnMsgs[0])
	}
}

func TestCertificateValidateOperationValidationSuccess(t *testing.T) {
	certificates := acm.Certificates{
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName: "example.com",
			Status:     "PENDING_VALIDATION",
			Type:       "AMAZON_ISSUED",
			Validations: []acm.CertificateValidation{
				acm.CertificateValidation{
					Status:     "SUCCESS",
					DomainName: "example.com",
				},
			},
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockACMClient.EXPECT().ListCertificates().Return(certificates, nil)
	mockACMClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{}, nil)

	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.InfoMsgs) == 0 {
		t.Error("Expected info output, got none")
	} else if mockOutput.InfoMsgs[0] != "[example.com] already validated" {
		t.Errorf("Expected info output == '[example.com] already validated', got: %s", mockOutput.InfoMsgs[0])
	}
}

func TestCertificateValidateOperationValidationFailed(t *testing.T) {
	certificates := acm.Certificates{
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName: "example.com",
			Status:     "PENDING_VALIDATION",
			Type:       "AMAZON_ISSUED",
			Validations: []acm.CertificateValidation{
				acm.CertificateValidation{
					Status:     "FAILED",
					DomainName: "example.com",
				},
			},
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockACMClient.EXPECT().ListCertificates().Return(certificates, nil)
	mockACMClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{}, nil)

	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Error("Expected fatal output, got none")
	} else if mockOutput.FatalMsgs[0].Msg != "[example.com] failed validation" {
		t.Errorf("Expected fatal output == '[example.com] failed validation', got: %s", mockOutput.FatalMsgs[0])
	}
}

func TestCertificateValidateOperationValidationUnknown(t *testing.T) {
	certificates := acm.Certificates{
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName: "example.com",
			Status:     "PENDING_VALIDATION",
			Type:       "AMAZON_ISSUED",
			Validations: []acm.CertificateValidation{
				acm.CertificateValidation{
					Status:     "SOME_UNKNOWN_STATUS",
					DomainName: "example.com",
				},
			},
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockACMClient.EXPECT().ListCertificates().Return(certificates, nil)
	mockACMClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{}, nil)

	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.WarnMsgs) == 0 {
		t.Error("Expected warn output, got none")
	} else if mockOutput.WarnMsgs[0] != "[example.com] unexpected status: some unknown status" {
		t.Errorf("Expected warn output == '[example.com] unexpected status: some unknown status', got: %s", mockOutput.WarnMsgs[0])
	}
}

func TestCertificateValidateOperationRecordSetError(t *testing.T) {
	resourceRecordType := "CNAME"
	resourceRecordName := "_beeed67ae3f2d83f6cd3e19a8064947b.staging.example.com"
	resourceRecordValue := "_6ddc33cd42c3fe3d5eca4cb075013a0a.acm-validations.aws."

	hostedZones := route53.HostedZones{
		route53.HostedZone{
			Name: "example.com.",
			ID:   "Z2FDTNDATAQYW2",
		},
	}
	certificates := acm.Certificates{
		acm.Certificate{
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
			DomainName: "example.com",
			Status:     "PENDING_VALIDATION",
			Type:       "AMAZON_ISSUED",
			Validations: []acm.CertificateValidation{
				acm.CertificateValidation{
					Status:     "PENDING_VALIDATION",
					DomainName: "example.com",
					ResourceRecord: acm.CertificateResourceRecord{
						Name:  resourceRecordName,
						Type:  resourceRecordType,
						Value: resourceRecordValue,
					},
				},
			},
		},
	}

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	createResourceRecordInput := route53.CreateResourceRecordInput{
		HostedZoneID: hostedZones[0].ID,
		RecordType:   resourceRecordType,
		Name:         resourceRecordName,
		Value:        resourceRecordValue,
	}

	mockACMClient.EXPECT().ListCertificates().Return(certificates, nil)
	mockACMClient.EXPECT().InflateCertificate(gomock.Any()).Return(nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(hostedZones, nil)
	mockRoute53Client.EXPECT().CreateResourceRecord(createResourceRecordInput).Return("", errors.New("boom"))

	certificateValidateOperation{
		certificateOperation: certificateOperation{
			acm:    mockACMClient,
			output: mockOutput,
		},
		domainName: "example.com",
		output:     mockOutput,
		route53:    mockRoute53Client,
	}.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Error("Expected fatal output, got none")
	} else if mockOutput.FatalMsgs[0].Msg != "Could not validate certificate" {
		t.Errorf("Expected fatal output == 'Could not validate certificate', got: %+v", mockOutput.FatalMsgs[0])
	}
}


================================================
FILE: cmd/lb.go
================================================
package cmd

import (
	"errors"

	"github.com/awslabs/fargatecli/elbv2"
	"github.com/spf13/cobra"
)

const defaultTargetGroupFormat = "%s-default"

type lbOperation struct {
	elbv2  elbv2.Client
	output Output
}

func (o lbOperation) findLB(lbName string) (elbv2.LoadBalancer, error) {
	o.output.Debug("Finding load balancer[API=elb2 Action=DescribeLoadBalancers]")
	loadBalancers, err := o.elbv2.DescribeLoadBalancersByName([]string{lbName})

	if err != nil {
		return elbv2.LoadBalancer{}, err
	}

	switch {
	case len(loadBalancers) == 0:
		return elbv2.LoadBalancer{}, errLBNotFound
	case len(loadBalancers) > 1:
		return elbv2.LoadBalancer{}, errLBTooManyFound
	}

	return loadBalancers[0], nil
}

var (
	errLBNotFound     = errors.New("load balancer not found")
	errLBTooManyFound = errors.New("too many load balancers found")

	lbCmd = &cobra.Command{
		Use:   "lb",
		Short: "Manage load balancers",
		Long: `Manage load balancers

Load balancers distribute incoming traffic between the tasks within a service
for HTTP/HTTPS and TCP applications. HTTP/HTTPS load balancers can route to
multiple services based upon rules you specify when you create a new service.`,
	}
)

func init() {
	rootCmd.AddCommand(lbCmd)
}


================================================
FILE: cmd/lb_alias.go
================================================
package cmd

import (
	"github.com/awslabs/fargatecli/elbv2"
	"github.com/awslabs/fargatecli/route53"
	"github.com/spf13/cobra"
)

type lbAliasOperation struct {
	lbOperation
	aliasDomain string
	lbName      string
	output      Output
	route53     route53.Client
}

func (o lbAliasOperation) execute() {
	loadBalancer, err := o.findLB(o.lbName)

	if err != nil {
		o.output.Fatal(err, "Could not alias load balancer")
		return
	}

	hostedZones, err := o.route53.ListHostedZones()

	if err != nil {
		o.output.Fatal(err, "Could not alias load balancer")
		return
	}

	if hostedZone, ok := hostedZones.FindSuperDomainOf(o.aliasDomain); ok {
		o.output.Debug("Creating alias record [API=route53 Action=CreateResourceRecordSet]")
		id, err := o.route53.CreateAlias(
			route53.CreateAliasInput{
				HostedZoneID:       hostedZone.ID,
				RecordType:         "A",
				Name:               o.aliasDomain,
				Target:             loadBalancer.DNSName,
				TargetHostedZoneID: loadBalancer.HostedZoneID,
			},
		)

		if err != nil {
			o.output.Fatal(err, "Could not alias load balancer")
			return
		}

		o.output.Debug("Created alias record [ChangeID=%s]", id)
		o.output.Info("Created alias record (%s -> %s)", o.aliasDomain, loadBalancer.DNSName)
	} else {
		o.output.Warn("Could not find hosted zone for %s", o.aliasDomain)
		o.output.Say("If you're hosting this domain elsewhere or in another AWS account, please manually create the alias record:", 1)
		o.output.Say("%s -> %s", 1, o.aliasDomain, loadBalancer.DNSName)
	}
}

var lbAliasCmd = &cobra.Command{
	Use:   "alias <load-balancer-name> <domain-name>",
	Args:  cobra.ExactArgs(2),
	Short: "Create a load balancer alias record",
	Long: `Create a load balancer alias record

Create an alias record to the load balancer for domains that are hosted within
Amazon Route 53 and within the same AWS account. If you're using another DNS
provider or host your domains in a different account, you will need to manually
create this record.  `,
	Run: func(cmd *cobra.Command, args []string) {
		lbAliasOperation{
			aliasDomain: args[1],
			lbName:      args[0],
			lbOperation: lbOperation{elbv2: elbv2.New(sess), output: output},
			output:      output,
			route53:     route53.New(sess),
		}.execute()
	},
}

func init() {
	lbCmd.AddCommand(lbAliasCmd)
}


================================================
FILE: cmd/lb_alias_test.go
================================================
package cmd

import (
	"errors"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/cmd/mock"
	"github.com/awslabs/fargatecli/elbv2"
	elbv2client "github.com/awslabs/fargatecli/elbv2/mock/client"
	"github.com/awslabs/fargatecli/route53"
	route53client "github.com/awslabs/fargatecli/route53/mock/client"
)

var (
	lb = elbv2.LoadBalancer{
		ARN:              "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188",
		DNSName:          "my-load-balancer-424835706.us-west-2.elb.amazonaws.com",
		HostedZoneID:     "Z2P70J7EXAMPLE",
		VPCID:            "vpc-3ac0fb5f",
		Name:             "web",
		SecurityGroupIDs: []string{"sg-5943793c"},
		Status:           "active",
		SubnetIDs:        []string{"subnet-8360a9e7"},
		Type:             "application",
	}
	hostedZone = route53.HostedZone{
		Name: "example.com.",
		ID:   "Z111111QQQQQQQ",
	}
)

func TestLBAliasOperation(t *testing.T) {
	domainName := "example.com."
	lbName := "web"
	dnsName := "my-load-balancer-424835706.us-west-2.elb.amazonaws.com"
	hostedZoneID := "Z2P70J7EXAMPLE"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockELBV2Client := elbv2client.NewMockClient(mockCtrl)
	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	createAliasInput := route53.CreateAliasInput{
		HostedZoneID:       hostedZone.ID,
		RecordType:         "A",
		Name:               domainName,
		Target:             dnsName,
		TargetHostedZoneID: hostedZoneID,
	}

	operation := lbAliasOperation{
		lbOperation: lbOperation{
			elbv2:  mockELBV2Client,
			output: mockOutput,
		},
		aliasDomain: domainName,
		lbName:      lbName,
		output:      mockOutput,
		route53:     mockRoute53Client,
	}

	mockELBV2Client.EXPECT().DescribeLoadBalancersByName([]string{"web"}).Return(elbv2.LoadBalancers{lb}, nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{hostedZone}, nil)
	mockRoute53Client.EXPECT().CreateAlias(createAliasInput).Return("ID", nil)

	operation.execute()

	if len(mockOutput.InfoMsgs) == 0 {
		t.Errorf("Expected info output from operation, got none")
	}
}

func TestLBAliasOperationFindLBError(t *testing.T) {
	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockELBV2Client := elbv2client.NewMockClient(mockCtrl)
	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	operation := lbAliasOperation{
		lbOperation: lbOperation{
			elbv2:  mockELBV2Client,
			output: mockOutput,
		},
		aliasDomain: "example.com",
		lbName:      "web",
		output:      mockOutput,
		route53:     mockRoute53Client,
	}

	mockELBV2Client.EXPECT().DescribeLoadBalancersByName([]string{"web"}).Return(elbv2.LoadBalancers{}, errors.New("boom"))

	operation.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Error("Expected fatal output, got none")
	} else if mockOutput.FatalMsgs[0].Msg != "Could not alias load balancer" {
		t.Errorf("Expected fatal output == 'Could not alias load balancer', got: %s", mockOutput.FatalMsgs[0])
	}
}

func TestLBAliasOperationListHostedZonesError(t *testing.T) {
	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockELBV2Client := elbv2client.NewMockClient(mockCtrl)
	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	operation := lbAliasOperation{
		lbOperation: lbOperation{
			elbv2:  mockELBV2Client,
			output: mockOutput,
		},
		aliasDomain: "example.com",
		lbName:      "web",
		output:      mockOutput,
		route53:     mockRoute53Client,
	}

	mockELBV2Client.EXPECT().DescribeLoadBalancersByName([]string{"web"}).Return(elbv2.LoadBalancers{elbv2.LoadBalancer{}}, nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{}, errors.New("boom"))

	operation.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Error("Expected fatal output, got none")
	} else if mockOutput.FatalMsgs[0].Msg != "Could not alias load balancer" {
		t.Errorf("Expected fatal output == 'Could not alias load balancer', got: %s", mockOutput.FatalMsgs[0])
	}
}

func TestLBAliasOperationAliasError(t *testing.T) {
	domainName := "example.com."
	lbName := "web"
	dnsName := "my-load-balancer-424835706.us-west-2.elb.amazonaws.com"
	hostedZoneID := "Z2P70J7EXAMPLE"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockELBV2Client := elbv2client.NewMockClient(mockCtrl)
	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	createAliasInput := route53.CreateAliasInput{
		HostedZoneID:       hostedZone.ID,
		RecordType:         "A",
		Name:               domainName,
		Target:             dnsName,
		TargetHostedZoneID: hostedZoneID,
	}

	operation := lbAliasOperation{
		lbOperation: lbOperation{
			elbv2:  mockELBV2Client,
			output: mockOutput,
		},
		aliasDomain: domainName,
		lbName:      lbName,
		output:      mockOutput,
		route53:     mockRoute53Client,
	}

	mockELBV2Client.EXPECT().DescribeLoadBalancersByName([]string{"web"}).Return(elbv2.LoadBalancers{lb}, nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{hostedZone}, nil)
	mockRoute53Client.EXPECT().CreateAlias(createAliasInput).Return("", errors.New("boom"))

	operation.execute()

	if len(mockOutput.FatalMsgs) == 0 {
		t.Error("Expected fatal output, got none")
	} else if mockOutput.FatalMsgs[0].Msg != "Could not alias load balancer" {
		t.Errorf("Expected fatal output == 'Could not alias load balancer', got: %s", mockOutput.FatalMsgs[0])
	}
}

func TestLBAliasOperationHostedZoneNotFound(t *testing.T) {
	domainName := "example.com."
	lbName := "web"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockELBV2Client := elbv2client.NewMockClient(mockCtrl)
	mockRoute53Client := route53client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	operation := lbAliasOperation{
		lbOperation: lbOperation{
			elbv2:  mockELBV2Client,
			output: mockOutput,
		},
		aliasDomain: domainName,
		lbName:      lbName,
		output:      mockOutput,
		route53:     mockRoute53Client,
	}

	mockELBV2Client.EXPECT().DescribeLoadBalancersByName([]string{"web"}).Return(elbv2.LoadBalancers{lb}, nil)
	mockRoute53Client.EXPECT().ListHostedZones().Return(route53.HostedZones{}, nil)

	operation.execute()

	if len(mockOutput.WarnMsgs) == 0 {
		t.Error("Expected warn output, got none")
	} else if mockOutput.WarnMsgs[0] != "Could not find hosted zone for example.com." {
		t.Errorf("Expected warn output == 'Could not find hosted zone for example.com.', got: %s", mockOutput.WarnMsgs[0])
	}
}


================================================
FILE: cmd/lb_create.go
================================================
package cmd

import (
	"fmt"

	"github.com/awslabs/fargatecli/acm"
	"github.com/awslabs/fargatecli/ec2"
	"github.com/awslabs/fargatecli/elbv2"
	"github.com/spf13/cobra"
)

type lbCreateOperation struct {
	certificateARNs []string
	certificateOperation
	elbv2    elbv2.Client
	lbType   string
	lbScheme string
	lbName   string
	output   Output
	ports    []Port
	vpcOperation
}

func (o *lbCreateOperation) setPorts(inputPorts []string) []error {
	var (
		errs      []error
		protocols []string
	)

	if len(inputPorts) == 0 {
		return append(errs, fmt.Errorf("at least one --port must be specified"))
	}

	ports, errs := inflatePorts(inputPorts)

	if len(errs) > 0 {
		return errs
	}

	for _, port := range ports {
		errs = append(errs, validatePort(port)...)
		protocols = append(protocols, port.Protocol)
	}

	for _, protocol := range protocols {
		if protocol == "TCP" {
			for _, protocol := range protocols {
				if protocol == "HTTP" || protocol == "HTTPS" {
					return append(errs, fmt.Errorf("load balancers do not support commingled TCP and HTTP/HTTPS ports"))
				}
			}
		}
	}

	if len(errs) == 0 {
		o.ports = ports
	}

	return errs
}

func (o *lbCreateOperation) inferType() error {
	if len(o.ports) > 0 {
		switch o.ports[0].Protocol {
		case "HTTP", "HTTPS":
			o.lbType = "application"
		case "TCP":
			o.lbType = "network"
		default:
			return fmt.Errorf("could not infer type from port settings")
		}
	}

	return nil
}

func (o *lbCreateOperation) setCertificateARNs(domainNames []string) []error {
	var (
		certificateARNs []string
		errs            []error
	)

	for _, domainName := range domainNames {
		if certificate, err := o.findCertificate(domainName); err == nil {
			if certificate.IsIssued() {
				certificateARNs = append(certificateARNs, certificate.ARN)
			} else {
				errs = append(errs, fmt.Errorf("certificate %s is in state %s", domainName, Humanize(certificate.Status)))
			}
		} else {
			switch err {
			case errCertificateNotFound:
				errs = append(errs, fmt.Errorf("no certificate found for %s", domainName))
			case errCertificateTooManyFound:
				errs = append(errs, fmt.Errorf("multiple certificates found for %s", domainName))
			default:
				errs = append(errs, fmt.Errorf("could not find certificate ARN: %v", err))
			}
		}
	}

	if len(errs) == 0 {
		o.certificateARNs = certificateARNs
	}

	return errs
}

func (o lbCreateOperation) validate() (errs []error) {
	if o.lbName == "" {
		errs = append(errs, fmt.Errorf("--name is required"))
	}

	if o.lbType == "application" && len(o.subnetIDs) < 2 {
		errs = append(errs, fmt.Errorf("HTTP/HTTPS load balancers require two subnet IDs from unique Availability Zones"))
	}

	if o.lbType == "network" && len(o.securityGroupIDs) > 0 {
		errs = append(errs, fmt.Errorf("security groups can only be specified for HTTP/HTTPS load balancers"))
	}

	return
}

func (o lbCreateOperation) execute() {
	defaultTargetGroupName := fmt.Sprintf(defaultTargetGroupFormat, o.lbName)

	loadBalancerARN, err := o.elbv2.CreateLoadBalancer(
		elbv2.CreateLoadBalancerParameters{
			Name:             o.lbName,
			SecurityGroupIDs: o.securityGroupIDs,
			SubnetIDs:        o.subnetIDs,
			Type:             o.lbType,
			Scheme:           o.lbScheme,
		},
	)

	if err != nil {
		o.output.Fatal(err, "Could not create load balancer")
		return
	}

	o.output.Debug("Creating target group [Name=%s]", defaultTargetGroupName)
	defaultTargetGroupARN, err := o.elbv2.CreateTargetGroup(
		elbv2.CreateTargetGroupParameters{
			Name:     defaultTargetGroupName,
			Port:     o.ports[0].Number,
			Protocol: o.ports[0].Protocol,
			VPCID:    o.vpcID,
		},
	)

	if err != nil {
		o.output.Fatal(err, "Could not create default target group")
		return
	}

	o.output.Debug("Created target group [ARN=%s]", defaultTargetGroupARN)

	for _, port := range o.ports {
		o.output.Debug("Creating listener [Port=%d Protocol=%s]", port.Number, port.Protocol)
		listenerARN, err := o.elbv2.CreateListener(
			elbv2.CreateListenerParameters{
				CertificateARNs:       o.certificateARNs,
				DefaultTargetGroupARN: defaultTargetGroupARN,
				LoadBalancerARN:       loadBalancerARN,
				Port:                  port.Number,
				Protocol:              port.Protocol,
			},
		)

		if err != nil {
			o.output.Fatal(err, "Could not create listener")
			return
		}

		o.output.Debug("Created listener [ARN=%s]", listenerARN)
	}

	o.output.Info("Created load balancer %s", o.lbName)
}

func newLBCreateOperation(
	lbName, lbScheme string,
	certificates, ports, securityGroupIDs, subnetIDs []string,
	output Output,
	acm acm.Client,
	ec2 ec2.Client,
	elbv2 elbv2.Client,
) (operation lbCreateOperation, errors []error) {
	operation = lbCreateOperation{
		certificateOperation: certificateOperation{acm: acm, output: output},
		elbv2:                elbv2,
		lbName:               lbName,
		lbScheme:             lbScheme,
		output:               output,
		vpcOperation:         vpcOperation{ec2: ec2, output: output},
	}

	if errs := operation.setPorts(ports); len(errs) > 0 {
		errors = append(errors, errs...)
	}

	if err := operation.inferType(); err != nil {
		errors = append(errors, err)
	}

	if len(certificates) > 0 {
		if errs := operation.setCertificateARNs(certificates); len(errs) > 0 {
			errors = append(errors, errs...)
		}
	}

	if len(subnetIDs) > 0 {
		if err := operation.setSubnetIDs(subnetIDs); err != nil {
			errors = append(errors, err)
		}
	} else {
		if err := operation.setDefaultSubnetIDs(); err != nil {
			errors = append(errors, err)
		}
	}

	if len(securityGroupIDs) > 0 {
		operation.setSecurityGroupIDs(securityGroupIDs)
	} else if operation.lbType == "application" {
		if err := operation.setDefaultSecurityGroupID(); err != nil {
			errors = append(errors, err)
		}
	}

	errors = append(errors, operation.validate()...)

	return
}

var lbCreateCmd = &cobra.Command{
	Use:   "create <load-balancer-name> --port <port-expression>",
	Args:  cobra.ExactArgs(1),
	Short: "Create a load balancer",
	Long: `Create a load balancer

At least one port must be specified for the load balancer listener via the
--port flag and a port expression of protocol:port-number. For example, if you
wanted an HTTP load balancer to listen on port 80, you would specify HTTP:80.
Valid protocols are HTTP, HTTPS, and TCP. You can specify multiple listeners by
passing the --port flag with a port expression multiple times. You cannot mix
TCP ports with HTTP/HTTPS ports on a single load balancer.

You can optionally include certificates to secure HTTPS ports by passed the
--certificate flag along with a certificate name. This option can be specified
multiple times to add additional certificates to a single load balancer which
uses Service Name Identification (SNI) to select the appropriate certificate
for the request.

By default, the load balancer will be created in the default VPC and attached
to the default VPC subnets for each availability zone. You can override this by
specifying explicit subnets by passing the --subnet-id flag with a subnet ID.
HTTP/HTTPS load balancers require at least two subnets attached while a TCP
load balancer requires only one. You may only specify a single subnet from each
availability zone.

Security groups can optionally be specified for HTTP/HTTPS load balancers by
passing the --security-group-id flag with a security group ID. To add multiple
security groups, pass --security-group-id with a security group ID multiple
times. If --security-group-id is omitted, a permissive security group will be
applied to the load balancer.`,
	Run: func(cmd *cobra.Command, args []string) {
		operation, errs := newLBCreateOperation(
			args[0],
			lbCreateFlags.scheme,
			lbCreateFlags.certificates,
			lbCreateFlags.ports,
			lbCreateFlags.securityGroupIDs,
			lbCreateFlags.subnetIDs,
			output,
			acm.New(sess),
			ec2.New(sess),
			elbv2.New(sess),
		)

		if len(errs) > 0 {
			output.Fatals(errs, "Invalid command line flags")
			return
		}

		operation.execute()
	}}

var lbCreateFlags struct {
	scheme           string
	certificates     []string
	ports            []string
	securityGroupIDs []string
	subnetIDs        []string
}

func init() {
	lbCreateCmd.Flags().StringSliceVarP(&lbCreateFlags.certificates, "certificate", "c", []string{},
		"Name of certificate to add (can be specified multiple times)")
	lbCreateCmd.Flags().StringSliceVarP(&lbCreateFlags.ports, "port", "p", []string{},
		"Port to listen on [e.g., 80, 443, http:8080, https:8443, tcp:1935] (can be specified multiple times)")
	lbCreateCmd.Flags().StringSliceVar(&lbCreateFlags.securityGroupIDs, "security-group-id", []string{},
		"ID of a security group to apply to the load balancer (can be specified multiple times)")
	lbCreateCmd.Flags().StringSliceVar(&lbCreateFlags.subnetIDs, "subnet-id", []string{},
		"ID of a subnet to place the load balancer (can be specified multiple times)")
	lbCreateCmd.Flags().StringVarP(&lbCreateFlags.scheme, "scheme", "s", "internet-facing",
		"Scheme of the load balancer")

	lbCmd.AddCommand(lbCreateCmd)
}


================================================
FILE: cmd/lb_create_test.go
================================================
package cmd

import (
	"errors"
	"reflect"
	"testing"

	"github.com/golang/mock/gomock"
	"github.com/awslabs/fargatecli/acm"
	acmclient "github.com/awslabs/fargatecli/acm/mock/client"
	"github.com/awslabs/fargatecli/cmd/mock"
	ec2client "github.com/awslabs/fargatecli/ec2/mock/client"
	"github.com/awslabs/fargatecli/elbv2"
	elbv2client "github.com/awslabs/fargatecli/elbv2/mock/client"
)

var (
	certificates = acm.Certificates{
		acm.Certificate{
			DomainName: "example.com",
			ARN:        "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
		},
	}
)

func TestLBCreateOperation(t *testing.T) {
	lbName := "lb"
	lbType := "application"
	lbARN := "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/lb/50dc6c495c0c9188"
	tgARN := "arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"
	listenerARN := "arn:aws:elasticloadbalancing:us-east-1:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2"
	subnetIDs := []string{"subnet-1234567", "subnet-abcdef8"}
	securityGroupIDs := []string{"sg-1234567"}
	vpcID := "vpc-1234567"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockELBV2Client := elbv2client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockEC2Client := ec2client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	createLoadBalancerInput := elbv2.CreateLoadBalancerParameters{
		Name:             lbName,
		SecurityGroupIDs: securityGroupIDs,
		SubnetIDs:        subnetIDs,
		Type:             lbType,
	}
	createTargetGroupInput := elbv2.CreateTargetGroupParameters{
		Name:     "lb-default",
		Port:     80,
		Protocol: "HTTP",
		VPCID:    vpcID,
	}
	createListenerInput := elbv2.CreateListenerParameters{
		DefaultTargetGroupARN: tgARN,
		LoadBalancerARN:       lbARN,
		Port:                  80,
		Protocol:              "HTTP",
	}

	mockELBV2Client.EXPECT().CreateLoadBalancer(createLoadBalancerInput).Return(lbARN, nil)
	mockELBV2Client.EXPECT().CreateTargetGroup(createTargetGroupInput).Return(tgARN, nil)
	mockELBV2Client.EXPECT().CreateListener(createListenerInput).Return(listenerARN, nil)

	operation := lbCreateOperation{
		certificateOperation: certificateOperation{
			acm: mockACMClient,
		},
		vpcOperation: vpcOperation{
			ec2:              mockEC2Client,
			securityGroupIDs: securityGroupIDs,
			subnetIDs:        subnetIDs,
			vpcID:            vpcID,
		},
		elbv2:  mockELBV2Client,
		lbType: lbType,
		lbName: lbName,
		output: mockOutput,
		ports:  []Port{Port{80, "HTTP"}},
	}

	operation.execute()

	if len(mockOutput.InfoMsgs) != 1 {
		t.Fatalf("expected 1 info msg, got: %d", len(mockOutput.InfoMsgs))
	}

	if expected, got := "Created load balancer lb", mockOutput.InfoMsgs[0]; expected != got {
		t.Errorf("expected: %s, got: %s", expected, got)
	}
}

func TestLBCreateOperationLBError(t *testing.T) {
	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockELBV2Client := elbv2client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockEC2Client := ec2client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	mockELBV2Client.EXPECT().CreateLoadBalancer(gomock.Any()).Return("", errors.New("boom"))

	operation := lbCreateOperation{
		certificateOperation: certificateOperation{
			acm: mockACMClient,
		},
		vpcOperation: vpcOperation{
			ec2: mockEC2Client,
		},
		elbv2:  mockELBV2Client,
		lbType: "application",
		lbName: "web",
		output: mockOutput,
		ports:  []Port{Port{80, "HTTP"}},
	}

	operation.execute()

	if len(mockOutput.FatalMsgs) != 1 {
		t.Fatalf("expected 1 fatal msg, got: %d", len(mockOutput.FatalMsgs))
	}

	if expected, got := "Could not create load balancer", mockOutput.FatalMsgs[0].Msg; expected != got {
		t.Errorf("expected: %s, got: %s", expected, got)
	}
}

func TestLBCreateOperationTargetGroupError(t *testing.T) {
	lbName := "lb"
	lbType := "application"
	lbARN := "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/lb/50dc6c495c0c9188"
	subnetIDs := []string{"subnet-1234567", "subnet-abcdef8"}
	securityGroupIDs := []string{"sg-1234567"}
	vpcID := "vpc-1234567"

	mockCtrl := gomock.NewController(t)
	defer mockCtrl.Finish()

	mockELBV2Client := elbv2client.NewMockClient(mockCtrl)
	mockACMClient := acmclient.NewMockClient(mockCtrl)
	mockEC2Client := ec2client.NewMockClient(mockCtrl)
	mockOutput := &mock.Output{}

	createLoadBalancerInput := elbv2.CreateLoadBalancerParameters{
		Name:             lbName,
		SecurityGroupIDs: securityGroupIDs,
		SubnetIDs:        subnetIDs,
		Type:             lbType,
	}
	createTargetGroupInput := elbv2.CreateTargetGroupParameters{
		Name:     "lb-default",
		Port:     80,
		Protocol: "HTTP",
		VPCID:    vpcID,
	}

	mockELBV2Client.EXPECT().CreateLoadBalancer(createLoadBalancerInput).Return(lbARN, nil)
	mockELBV2Client.EXPECT().CreateTargetGroup(createTargetGroupInput).Return("", errors.New("boom"))

	operation := lbCreateOperation{
		certificateOperation: certificateOperation{
			acm: mockACMClient,
		},
		vpcOperation: vpcOperation{
			ec2:              mockEC2Client,
			securityGroupIDs: securityGroupIDs,
			subnetIDs:        subnetIDs,
			vpcID:            vpcID,
		},
		elbv2:  mockELBV2Client,
		lbType: lbType,
		lbName: lbName,
		output: mockOutput,
		ports:  []Port{Port{80, "HTTP"}},
	}

	operation.execute()

	if len(mockOutput.FatalMsgs) != 1 {
		t.Fatalf("expected 1 fatal msg, got: %d", len(moc
Download .txt
gitextract_6knv8f8q/

├── .circleci/
│   └── config.yml
├── .dockerignore
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── Makefile
├── README.md
├── acm/
│   ├── certificate.go
│   ├── certificate_test.go
│   ├── main.go
│   └── mock/
│       ├── client/
│       │   └── client.go
│       └── sdk/
│           ├── acmiface.go
│           └── paginators.go
├── cloudwatchlogs/
│   ├── log_group.go
│   └── main.go
├── cmd/
│   ├── certificate.go
│   ├── certificate_destroy.go
│   ├── certificate_destroy_test.go
│   ├── certificate_import.go
│   ├── certificate_import_test.go
│   ├── certificate_info.go
│   ├── certificate_info_test.go
│   ├── certificate_list.go
│   ├── certificate_list_test.go
│   ├── certificate_request.go
│   ├── certificate_request_test.go
│   ├── certificate_test.go
│   ├── certificate_validate.go
│   ├── certificate_validate_test.go
│   ├── lb.go
│   ├── lb_alias.go
│   ├── lb_alias_test.go
│   ├── lb_create.go
│   ├── lb_create_test.go
│   ├── lb_destroy.go
│   ├── lb_info.go
│   ├── lb_list.go
│   ├── lb_list_test.go
│   ├── logs.go
│   ├── mock/
│   │   └── output.go
│   ├── output.go
│   ├── output_test.go
│   ├── port.go
│   ├── port_test.go
│   ├── root.go
│   ├── root_test.go
│   ├── service.go
│   ├── service_create.go
│   ├── service_deploy.go
│   ├── service_destroy.go
│   ├── service_env.go
│   ├── service_env_list.go
│   ├── service_env_set.go
│   ├── service_env_unset.go
│   ├── service_info.go
│   ├── service_list.go
│   ├── service_logs.go
│   ├── service_ps.go
│   ├── service_restart.go
│   ├── service_scale.go
│   ├── service_update.go
│   ├── string_util.go
│   ├── string_util_test.go
│   ├── task.go
│   ├── task_info.go
│   ├── task_list.go
│   ├── task_logs.go
│   ├── task_ps.go
│   ├── task_run.go
│   ├── task_stop.go
│   ├── testdata/
│   │   ├── certificate.crt
│   │   ├── chain.crt
│   │   └── private.key
│   ├── vpc_operation.go
│   └── vpc_operation_test.go
├── console/
│   └── main.go
├── doc/
│   └── website/
│       ├── index.html
│       └── styles.css
├── docker/
│   └── main.go
├── ec2/
│   ├── eni.go
│   ├── main.go
│   ├── mock/
│   │   ├── client/
│   │   │   └── client.go
│   │   └── sdk/
│   │       └── ec2iface.go
│   ├── vpc.go
│   └── vpc_test.go
├── ecr/
│   ├── main.go
│   └── repository.go
├── ecs/
│   ├── cluster.go
│   ├── main.go
│   ├── service.go
│   ├── task.go
│   └── task_definition.go
├── elbv2/
│   ├── listener.go
│   ├── listener_test.go
│   ├── load_balancer.go
│   ├── load_balancer_test.go
│   ├── main.go
│   ├── mock/
│   │   ├── client/
│   │   │   └── client.go
│   │   └── sdk/
│   │       ├── elbv2iface.go
│   │       └── paginators.go
│   ├── target_group.go
│   └── target_group_test.go
├── git/
│   ├── main.go
│   └── main_test.go
├── go.mod
├── go.sum
├── iam/
│   ├── main.go
│   └── role.go
├── main.go
└── route53/
    ├── hosted_zone.go
    ├── hosted_zone_test.go
    ├── main.go
    └── mock/
        ├── client/
        │   └── client.go
        └── sdk/
            ├── paginators.go
            └── route53iface.go
Download .txt
Showing preview only (524K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4173 symbols across 101 files)

FILE: acm/certificate.go
  type Certificate (line 12) | type Certificate struct
    method AddValidation (line 22) | func (c *Certificate) AddValidation(v CertificateValidation) {
    method IsIssued (line 27) | func (c Certificate) IsIssued() bool {
    method IsPendingValidation (line 32) | func (c Certificate) IsPendingValidation() bool {
  type CertificateValidation (line 37) | type CertificateValidation struct
    method IsFailed (line 44) | func (v CertificateValidation) IsFailed() bool {
    method IsPendingValidation (line 49) | func (v CertificateValidation) IsPendingValidation() bool {
    method IsSuccess (line 54) | func (v CertificateValidation) IsSuccess() bool {
    method ResourceRecordString (line 59) | func (v CertificateValidation) ResourceRecordString() string {
  type CertificateResourceRecord (line 72) | type CertificateResourceRecord struct
  type Certificates (line 79) | type Certificates
    method GetCertificates (line 82) | func (cs Certificates) GetCertificates(domainName string) Certificates {
  function ValidateAlias (line 95) | func ValidateAlias(alias string) error {
  function ValidateDomainName (line 112) | func ValidateDomainName(domainName string) error {
  method DeleteCertificate (line 129) | func (acm SDKClient) DeleteCertificate(arn string) error {
  method ImportCertificate (line 143) | func (acm SDKClient) ImportCertificate(certificate, privateKey, certific...
  method InflateCertificate (line 163) | func (acm SDKClient) InflateCertificate(c *Certificate) error {
  method ListCertificates (line 199) | func (acm SDKClient) ListCertificates() (Certificates, error) {
  method RequestCertificate (line 222) | func (acm SDKClient) RequestCertificate(domainName string, aliases []str...
  method ListCertificateDomainNames (line 242) | func (acm *SDKClient) ListCertificateDomainNames(certificateARNs []strin...

FILE: acm/certificate_test.go
  function TestValidateAlias (line 17) | func TestValidateAlias(t *testing.T) {
  function TestValidateDomainName (line 45) | func TestValidateDomainName(t *testing.T) {
  function TestCertificateIsPendingValidation (line 73) | func TestCertificateIsPendingValidation(t *testing.T) {
  function TestCertificateIsIssued (line 90) | func TestCertificateIsIssued(t *testing.T) {
  function TestCertificateValidationIsPendingValidation (line 107) | func TestCertificateValidationIsPendingValidation(t *testing.T) {
  function TestCertificateValidationIsSuccess (line 124) | func TestCertificateValidationIsSuccess(t *testing.T) {
  function TestCertificateValidationIsFailed (line 141) | func TestCertificateValidationIsFailed(t *testing.T) {
  function TestCertificateValidationResourceRecordString (line 158) | func TestCertificateValidationResourceRecordString(t *testing.T) {
  function TestCertificatesGetCertificates (line 180) | func TestCertificatesGetCertificates(t *testing.T) {
  function TestRequestCertificate (line 204) | func TestRequestCertificate(t *testing.T) {
  function TestRequestCertificateError (line 238) | func TestRequestCertificateError(t *testing.T) {
  function TestListCertificates (line 275) | func TestListCertificates(t *testing.T) {
  function TestListCertificatesError (line 302) | func TestListCertificatesError(t *testing.T) {
  function TestDeleteCertificate (line 319) | func TestDeleteCertificate(t *testing.T) {
  function TestDeleteCertificateError (line 340) | func TestDeleteCertificateError(t *testing.T) {
  function TestInflateCertificate (line 361) | func TestInflateCertificate(t *testing.T) {
  function TestInflateCertificateError (line 440) | func TestInflateCertificateError(t *testing.T) {
  function TestImportCertificate (line 464) | func TestImportCertificate(t *testing.T) {
  function TestImportCertificateError (line 498) | func TestImportCertificateError(t *testing.T) {

FILE: acm/main.go
  type Client (line 13) | type Client interface
  type SDKClient (line 22) | type SDKClient struct
  function New (line 27) | func New(sess *session.Session) SDKClient {

FILE: acm/mock/client/client.go
  type MockClient (line 14) | type MockClient struct
    method EXPECT (line 32) | func (m *MockClient) EXPECT() *MockClientMockRecorder {
    method DeleteCertificate (line 37) | func (m *MockClient) DeleteCertificate(arg0 string) error {
    method ImportCertificate (line 51) | func (m *MockClient) ImportCertificate(arg0, arg1, arg2 []byte) (strin...
    method InflateCertificate (line 66) | func (m *MockClient) InflateCertificate(arg0 *acm.Certificate) error {
    method ListCertificates (line 80) | func (m *MockClient) ListCertificates() (acm.Certificates, error) {
    method RequestCertificate (line 95) | func (m *MockClient) RequestCertificate(arg0 string, arg1 []string) (s...
  type MockClientMockRecorder (line 20) | type MockClientMockRecorder struct
    method DeleteCertificate (line 45) | func (mr *MockClientMockRecorder) DeleteCertificate(arg0 interface{}) ...
    method ImportCertificate (line 60) | func (mr *MockClientMockRecorder) ImportCertificate(arg0, arg1, arg2 i...
    method InflateCertificate (line 74) | func (mr *MockClientMockRecorder) InflateCertificate(arg0 interface{})...
    method ListCertificates (line 89) | func (mr *MockClientMockRecorder) ListCertificates() *gomock.Call {
    method RequestCertificate (line 104) | func (mr *MockClientMockRecorder) RequestCertificate(arg0, arg1 interf...
  function NewMockClient (line 25) | func NewMockClient(ctrl *gomock.Controller) *MockClient {

FILE: acm/mock/sdk/acmiface.go
  type MockACMAPI (line 16) | type MockACMAPI struct
    method EXPECT (line 34) | func (m *MockACMAPI) EXPECT() *MockACMAPIMockRecorder {
    method AddTagsToCertificate (line 39) | func (m *MockACMAPI) AddTagsToCertificate(arg0 *acm.AddTagsToCertifica...
    method AddTagsToCertificateWithContext (line 54) | func (m *MockACMAPI) AddTagsToCertificateWithContext(arg0 aws.Context,...
    method AddTagsToCertificateRequest (line 74) | func (m *MockACMAPI) AddTagsToCertificateRequest(arg0 *acm.AddTagsToCe...
    method DeleteCertificate (line 89) | func (m *MockACMAPI) DeleteCertificate(arg0 *acm.DeleteCertificateInpu...
    method DeleteCertificateWithContext (line 104) | func (m *MockACMAPI) DeleteCertificateWithContext(arg0 aws.Context, ar...
    method DeleteCertificateRequest (line 124) | func (m *MockACMAPI) DeleteCertificateRequest(arg0 *acm.DeleteCertific...
    method DescribeCertificate (line 139) | func (m *MockACMAPI) DescribeCertificate(arg0 *acm.DescribeCertificate...
    method DescribeCertificateWithContext (line 154) | func (m *MockACMAPI) DescribeCertificateWithContext(arg0 aws.Context, ...
    method DescribeCertificateRequest (line 174) | func (m *MockACMAPI) DescribeCertificateRequest(arg0 *acm.DescribeCert...
    method ExportCertificate (line 189) | func (m *MockACMAPI) ExportCertificate(arg0 *acm.ExportCertificateInpu...
    method ExportCertificateWithContext (line 204) | func (m *MockACMAPI) ExportCertificateWithContext(arg0 aws.Context, ar...
    method ExportCertificateRequest (line 224) | func (m *MockACMAPI) ExportCertificateRequest(arg0 *acm.ExportCertific...
    method GetCertificate (line 239) | func (m *MockACMAPI) GetCertificate(arg0 *acm.GetCertificateInput) (*a...
    method GetCertificateWithContext (line 254) | func (m *MockACMAPI) GetCertificateWithContext(arg0 aws.Context, arg1 ...
    method GetCertificateRequest (line 274) | func (m *MockACMAPI) GetCertificateRequest(arg0 *acm.GetCertificateInp...
    method ImportCertificate (line 289) | func (m *MockACMAPI) ImportCertificate(arg0 *acm.ImportCertificateInpu...
    method ImportCertificateWithContext (line 304) | func (m *MockACMAPI) ImportCertificateWithContext(arg0 aws.Context, ar...
    method ImportCertificateRequest (line 324) | func (m *MockACMAPI) ImportCertificateRequest(arg0 *acm.ImportCertific...
    method ListCertificates (line 339) | func (m *MockACMAPI) ListCertificates(arg0 *acm.ListCertificatesInput)...
    method ListCertificatesWithContext (line 354) | func (m *MockACMAPI) ListCertificatesWithContext(arg0 aws.Context, arg...
    method ListCertificatesRequest (line 374) | func (m *MockACMAPI) ListCertificatesRequest(arg0 *acm.ListCertificate...
    method ListCertificatesPages (line 389) | func (m *MockACMAPI) ListCertificatesPages(arg0 *acm.ListCertificatesI...
    method ListCertificatesPagesWithContext (line 403) | func (m *MockACMAPI) ListCertificatesPagesWithContext(arg0 aws.Context...
    method ListTagsForCertificate (line 422) | func (m *MockACMAPI) ListTagsForCertificate(arg0 *acm.ListTagsForCerti...
    method ListTagsForCertificateWithContext (line 437) | func (m *MockACMAPI) ListTagsForCertificateWithContext(arg0 aws.Contex...
    method ListTagsForCertificateRequest (line 457) | func (m *MockACMAPI) ListTagsForCertificateRequest(arg0 *acm.ListTagsF...
    method RemoveTagsFromCertificate (line 472) | func (m *MockACMAPI) RemoveTagsFromCertificate(arg0 *acm.RemoveTagsFro...
    method RemoveTagsFromCertificateWithContext (line 487) | func (m *MockACMAPI) RemoveTagsFromCertificateWithContext(arg0 aws.Con...
    method RemoveTagsFromCertificateRequest (line 507) | func (m *MockACMAPI) RemoveTagsFromCertificateRequest(arg0 *acm.Remove...
    method RenewCertificate (line 522) | func (m *MockACMAPI) RenewCertificate(arg0 *acm.RenewCertificateInput)...
    method RenewCertificateWithContext (line 537) | func (m *MockACMAPI) RenewCertificateWithContext(arg0 aws.Context, arg...
    method RenewCertificateRequest (line 557) | func (m *MockACMAPI) RenewCertificateRequest(arg0 *acm.RenewCertificat...
    method RequestCertificate (line 572) | func (m *MockACMAPI) RequestCertificate(arg0 *acm.RequestCertificateIn...
    method RequestCertificateWithContext (line 587) | func (m *MockACMAPI) RequestCertificateWithContext(arg0 aws.Context, a...
    method RequestCertificateRequest (line 607) | func (m *MockACMAPI) RequestCertificateRequest(arg0 *acm.RequestCertif...
    method ResendValidationEmail (line 622) | func (m *MockACMAPI) ResendValidationEmail(arg0 *acm.ResendValidationE...
    method ResendValidationEmailWithContext (line 637) | func (m *MockACMAPI) ResendValidationEmailWithContext(arg0 aws.Context...
    method ResendValidationEmailRequest (line 657) | func (m *MockACMAPI) ResendValidationEmailRequest(arg0 *acm.ResendVali...
    method UpdateCertificateOptions (line 672) | func (m *MockACMAPI) UpdateCertificateOptions(arg0 *acm.UpdateCertific...
    method UpdateCertificateOptionsWithContext (line 687) | func (m *MockACMAPI) UpdateCertificateOptionsWithContext(arg0 aws.Cont...
    method UpdateCertificateOptionsRequest (line 707) | func (m *MockACMAPI) UpdateCertificateOptionsRequest(arg0 *acm.UpdateC...
    method WaitUntilCertificateValidated (line 722) | func (m *MockACMAPI) WaitUntilCertificateValidated(arg0 *acm.DescribeC...
    method WaitUntilCertificateValidatedWithContext (line 736) | func (m *MockACMAPI) WaitUntilCertificateValidatedWithContext(arg0 aws...
  type MockACMAPIMockRecorder (line 22) | type MockACMAPIMockRecorder struct
    method AddTagsToCertificate (line 48) | func (mr *MockACMAPIMockRecorder) AddTagsToCertificate(arg0 interface{...
    method AddTagsToCertificateWithContext (line 67) | func (mr *MockACMAPIMockRecorder) AddTagsToCertificateWithContext(arg0...
    method AddTagsToCertificateRequest (line 83) | func (mr *MockACMAPIMockRecorder) AddTagsToCertificateRequest(arg0 int...
    method DeleteCertificate (line 98) | func (mr *MockACMAPIMockRecorder) DeleteCertificate(arg0 interface{}) ...
    method DeleteCertificateWithContext (line 117) | func (mr *MockACMAPIMockRecorder) DeleteCertificateWithContext(arg0, a...
    method DeleteCertificateRequest (line 133) | func (mr *MockACMAPIMockRecorder) DeleteCertificateRequest(arg0 interf...
    method DescribeCertificate (line 148) | func (mr *MockACMAPIMockRecorder) DescribeCertificate(arg0 interface{}...
    method DescribeCertificateWithContext (line 167) | func (mr *MockACMAPIMockRecorder) DescribeCertificateWithContext(arg0,...
    method DescribeCertificateRequest (line 183) | func (mr *MockACMAPIMockRecorder) DescribeCertificateRequest(arg0 inte...
    method ExportCertificate (line 198) | func (mr *MockACMAPIMockRecorder) ExportCertificate(arg0 interface{}) ...
    method ExportCertificateWithContext (line 217) | func (mr *MockACMAPIMockRecorder) ExportCertificateWithContext(arg0, a...
    method ExportCertificateRequest (line 233) | func (mr *MockACMAPIMockRecorder) ExportCertificateRequest(arg0 interf...
    method GetCertificate (line 248) | func (mr *MockACMAPIMockRecorder) GetCertificate(arg0 interface{}) *go...
    method GetCertificateWithContext (line 267) | func (mr *MockACMAPIMockRecorder) GetCertificateWithContext(arg0, arg1...
    method GetCertificateRequest (line 283) | func (mr *MockACMAPIMockRecorder) GetCertificateRequest(arg0 interface...
    method ImportCertificate (line 298) | func (mr *MockACMAPIMockRecorder) ImportCertificate(arg0 interface{}) ...
    method ImportCertificateWithContext (line 317) | func (mr *MockACMAPIMockRecorder) ImportCertificateWithContext(arg0, a...
    method ImportCertificateRequest (line 333) | func (mr *MockACMAPIMockRecorder) ImportCertificateRequest(arg0 interf...
    method ListCertificates (line 348) | func (mr *MockACMAPIMockRecorder) ListCertificates(arg0 interface{}) *...
    method ListCertificatesWithContext (line 367) | func (mr *MockACMAPIMockRecorder) ListCertificatesWithContext(arg0, ar...
    method ListCertificatesRequest (line 383) | func (mr *MockACMAPIMockRecorder) ListCertificatesRequest(arg0 interfa...
    method ListCertificatesPages (line 397) | func (mr *MockACMAPIMockRecorder) ListCertificatesPages(arg0, arg1 int...
    method ListCertificatesPagesWithContext (line 415) | func (mr *MockACMAPIMockRecorder) ListCertificatesPagesWithContext(arg...
    method ListTagsForCertificate (line 431) | func (mr *MockACMAPIMockRecorder) ListTagsForCertificate(arg0 interfac...
    method ListTagsForCertificateWithContext (line 450) | func (mr *MockACMAPIMockRecorder) ListTagsForCertificateWithContext(ar...
    method ListTagsForCertificateRequest (line 466) | func (mr *MockACMAPIMockRecorder) ListTagsForCertificateRequest(arg0 i...
    method RemoveTagsFromCertificate (line 481) | func (mr *MockACMAPIMockRecorder) RemoveTagsFromCertificate(arg0 inter...
    method RemoveTagsFromCertificateWithContext (line 500) | func (mr *MockACMAPIMockRecorder) RemoveTagsFromCertificateWithContext...
    method RemoveTagsFromCertificateRequest (line 516) | func (mr *MockACMAPIMockRecorder) RemoveTagsFromCertificateRequest(arg...
    method RenewCertificate (line 531) | func (mr *MockACMAPIMockRecorder) RenewCertificate(arg0 interface{}) *...
    method RenewCertificateWithContext (line 550) | func (mr *MockACMAPIMockRecorder) RenewCertificateWithContext(arg0, ar...
    method RenewCertificateRequest (line 566) | func (mr *MockACMAPIMockRecorder) RenewCertificateRequest(arg0 interfa...
    method RequestCertificate (line 581) | func (mr *MockACMAPIMockRecorder) RequestCertificate(arg0 interface{})...
    method RequestCertificateWithContext (line 600) | func (mr *MockACMAPIMockRecorder) RequestCertificateWithContext(arg0, ...
    method RequestCertificateRequest (line 616) | func (mr *MockACMAPIMockRecorder) RequestCertificateRequest(arg0 inter...
    method ResendValidationEmail (line 631) | func (mr *MockACMAPIMockRecorder) ResendValidationEmail(arg0 interface...
    method ResendValidationEmailWithContext (line 650) | func (mr *MockACMAPIMockRecorder) ResendValidationEmailWithContext(arg...
    method ResendValidationEmailRequest (line 666) | func (mr *MockACMAPIMockRecorder) ResendValidationEmailRequest(arg0 in...
    method UpdateCertificateOptions (line 681) | func (mr *MockACMAPIMockRecorder) UpdateCertificateOptions(arg0 interf...
    method UpdateCertificateOptionsWithContext (line 700) | func (mr *MockACMAPIMockRecorder) UpdateCertificateOptionsWithContext(...
    method UpdateCertificateOptionsRequest (line 716) | func (mr *MockACMAPIMockRecorder) UpdateCertificateOptionsRequest(arg0...
    method WaitUntilCertificateValidated (line 730) | func (mr *MockACMAPIMockRecorder) WaitUntilCertificateValidated(arg0 i...
    method WaitUntilCertificateValidatedWithContext (line 748) | func (mr *MockACMAPIMockRecorder) WaitUntilCertificateValidatedWithCon...
  function NewMockACMAPI (line 27) | func NewMockACMAPI(ctrl *gomock.Controller) *MockACMAPI {

FILE: acm/mock/sdk/paginators.go
  type MockListCertificatesPagesClient (line 8) | type MockListCertificatesPagesClient struct
    method ListCertificatesPages (line 14) | func (m MockListCertificatesPagesClient) ListCertificatesPages(in *acm...

FILE: cloudwatchlogs/log_group.go
  type GetLogsInput (line 13) | type GetLogsInput struct
  type LogLine (line 21) | type LogLine struct
  method CreateLogGroup (line 28) | func (cwl *CloudWatchLogs) CreateLogGroup(logGroupName string, a ...inte...
  method GetLogs (line 50) | func (cwl *CloudWatchLogs) GetLogs(i *GetLogsInput) []LogLine {

FILE: cloudwatchlogs/main.go
  type CloudWatchLogs (line 8) | type CloudWatchLogs struct
  function New (line 12) | func New(sess *session.Session) CloudWatchLogs {

FILE: cmd/certificate.go
  type certificateOperation (line 10) | type certificateOperation struct
    method findCertificate (line 15) | func (o certificateOperation) findCertificate(domainName string) (acm....
  function init (line 56) | func init() {

FILE: cmd/certificate_destroy.go
  type certificateDestroyOperation (line 8) | type certificateDestroyOperation struct
    method execute (line 14) | func (o certificateDestroyOperation) execute() {
  function init (line 57) | func init() {

FILE: cmd/certificate_destroy_test.go
  function TestCertificateDestroyOperation (line 13) | func TestCertificateDestroyOperation(t *testing.T) {
  function TestCertificateDestroyOperationCertNotFound (line 51) | func TestCertificateDestroyOperationCertNotFound(t *testing.T) {
  function TestCertificateDestroyOperationMoreThanOneCertFound (line 80) | func TestCertificateDestroyOperationMoreThanOneCertFound(t *testing.T) {
  function TestCertificateDestroyOperationListError (line 119) | func TestCertificateDestroyOperationListError(t *testing.T) {
  function TestCertificateDestroyOperationDeleteError (line 148) | func TestCertificateDestroyOperationDeleteError(t *testing.T) {

FILE: cmd/certificate_import.go
  type certificateImportOperation (line 11) | type certificateImportOperation struct
    method execute (line 22) | func (o certificateImportOperation) execute() {
    method validate (line 44) | func (o certificateImportOperation) validate() []error {
    method readFiles (line 58) | func (o *certificateImportOperation) readFiles() []error {
  function init (line 112) | func init() {

FILE: cmd/certificate_import_test.go
  function TestCertificateImportOperation (line 14) | func TestCertificateImportOperation(t *testing.T) {
  function TestCertificateImportOperationSansChain (line 51) | func TestCertificateImportOperationSansChain(t *testing.T) {
  function TestCertificateImportOperationMissingParameters (line 88) | func TestCertificateImportOperationMissingParameters(t *testing.T) {
  function TestCertificateImportOperationBadFiles (line 113) | func TestCertificateImportOperationBadFiles(t *testing.T) {
  function readFile (line 141) | func readFile(fileName string, t *testing.T) []byte {
  function TestCertificateImportOperationError (line 151) | func TestCertificateImportOperationError(t *testing.T) {

FILE: cmd/certificate_info.go
  type certificateInfoOperation (line 10) | type certificateInfoOperation struct
    method execute (line 16) | func (o certificateInfoOperation) execute() {
    method display (line 35) | func (o certificateInfoOperation) display(certificate acm.Certificate) {
  function init (line 73) | func init() {

FILE: cmd/certificate_info_test.go
  function TestCertificateInfoOperation (line 14) | func TestCertificateInfoOperation(t *testing.T) {
  function TestCertificateInfoOperationNotFound (line 115) | func TestCertificateInfoOperationNotFound(t *testing.T) {
  function TestCertificateInfoOperationListError (line 146) | func TestCertificateInfoOperationListError(t *testing.T) {
  function TestCertificateInfoOperationDescribeError (line 179) | func TestCertificateInfoOperationDescribeError(t *testing.T) {

FILE: cmd/certificate_list.go
  type certificateListOperation (line 14) | type certificateListOperation struct
    method execute (line 19) | func (o certificateListOperation) execute() {
    method find (line 54) | func (o certificateListOperation) find() (acm.Certificates, error) {
    method display (line 96) | func (o certificateListOperation) display(certificates []acm.Certifica...
  function init (line 110) | func init() {

FILE: cmd/certificate_list_test.go
  function TestCertificateListOperation (line 14) | func TestCertificateListOperation(t *testing.T) {
  function TestCertificateListOperationOrdered (line 71) | func TestCertificateListOperationOrdered(t *testing.T) {
  function TestCertificateListOperationNotFound (line 127) | func TestCertificateListOperationNotFound(t *testing.T) {
  function TestCertificateListOperationListError (line 154) | func TestCertificateListOperationListError(t *testing.T) {
  function TestCertificateListOperationDescribeError (line 183) | func TestCertificateListOperationDescribeError(t *testing.T) {

FILE: cmd/certificate_request.go
  type certificateRequestOperation (line 8) | type certificateRequestOperation struct
    method execute (line 15) | func (o certificateRequestOperation) execute() {
    method validate (line 43) | func (o certificateRequestOperation) validate() []error {
  function init (line 85) | func init() {

FILE: cmd/certificate_request_test.go
  function TestCertificateRequestOperation (line 13) | func TestCertificateRequestOperation(t *testing.T) {
  function TestCertificateRequestOperationError (line 40) | func TestCertificateRequestOperationError(t *testing.T) {
  function TestCertificateRequestOperationInvalid (line 70) | func TestCertificateRequestOperationInvalid(t *testing.T) {
  function TestCertificateRequestOperationValidateInvalidDomainName (line 90) | func TestCertificateRequestOperationValidateInvalidDomainName(t *testing...
  function TestCertificateRequestOperationValidateInvalidAlias (line 106) | func TestCertificateRequestOperationValidateInvalidAlias(t *testing.T) {

FILE: cmd/certificate_test.go
  function TestFindCertificate (line 13) | func TestFindCertificate(t *testing.T) {
  function TestFindCertificateNotFound (line 45) | func TestFindCertificateNotFound(t *testing.T) {
  function TestFindCertificateTooManyFound (line 69) | func TestFindCertificateTooManyFound(t *testing.T) {

FILE: cmd/certificate_validate.go
  type certificateValidateOperation (line 11) | type certificateValidateOperation struct
    method execute (line 18) | func (o certificateValidateOperation) execute() {
  function init (line 99) | func init() {

FILE: cmd/certificate_validate_test.go
  function TestCertificateValidateOperation (line 15) | func TestCertificateValidateOperation(t *testing.T) {
  function TestCertificateValidateOperationFindCertificateError (line 82) | func TestCertificateValidateOperationFindCertificateError(t *testing.T) {
  function TestCertificateValidateOperationListHostedZonesError (line 109) | func TestCertificateValidateOperationListHostedZonesError(t *testing.T) {
  function TestCertificateValidateOperationInvalidState (line 146) | func TestCertificateValidateOperationInvalidState(t *testing.T) {
  function TestCertificateValidateOperationZoneNotFound (line 190) | func TestCertificateValidateOperationZoneNotFound(t *testing.T) {
  function TestCertificateValidateOperationValidationSuccess (line 234) | func TestCertificateValidateOperationValidationSuccess(t *testing.T) {
  function TestCertificateValidateOperationValidationFailed (line 278) | func TestCertificateValidateOperationValidationFailed(t *testing.T) {
  function TestCertificateValidateOperationValidationUnknown (line 322) | func TestCertificateValidateOperationValidationUnknown(t *testing.T) {
  function TestCertificateValidateOperationRecordSetError (line 366) | func TestCertificateValidateOperationRecordSetError(t *testing.T) {

FILE: cmd/lb.go
  constant defaultTargetGroupFormat (line 10) | defaultTargetGroupFormat = "%s-default"
  type lbOperation (line 12) | type lbOperation struct
    method findLB (line 17) | func (o lbOperation) findLB(lbName string) (elbv2.LoadBalancer, error) {
  function init (line 50) | func init() {

FILE: cmd/lb_alias.go
  type lbAliasOperation (line 9) | type lbAliasOperation struct
    method execute (line 17) | func (o lbAliasOperation) execute() {
  function init (line 79) | func init() {

FILE: cmd/lb_alias_test.go
  function TestLBAliasOperation (line 33) | func TestLBAliasOperation(t *testing.T) {
  function TestLBAliasOperationFindLBError (line 76) | func TestLBAliasOperationFindLBError(t *testing.T) {
  function TestLBAliasOperationListHostedZonesError (line 106) | func TestLBAliasOperationListHostedZonesError(t *testing.T) {
  function TestLBAliasOperationAliasError (line 137) | func TestLBAliasOperationAliasError(t *testing.T) {
  function TestLBAliasOperationHostedZoneNotFound (line 182) | func TestLBAliasOperationHostedZoneNotFound(t *testing.T) {

FILE: cmd/lb_create.go
  type lbCreateOperation (line 12) | type lbCreateOperation struct
    method setPorts (line 24) | func (o *lbCreateOperation) setPorts(inputPorts []string) []error {
    method inferType (line 62) | func (o *lbCreateOperation) inferType() error {
    method setCertificateARNs (line 77) | func (o *lbCreateOperation) setCertificateARNs(domainNames []string) [...
    method validate (line 109) | func (o lbCreateOperation) validate() (errs []error) {
    method execute (line 125) | func (o lbCreateOperation) execute() {
  function newLBCreateOperation (line 183) | func newLBCreateOperation(
  function init (line 298) | func init() {

FILE: cmd/lb_create_test.go
  function TestLBCreateOperation (line 26) | func TestLBCreateOperation(t *testing.T) {
  function TestLBCreateOperationLBError (line 95) | func TestLBCreateOperationLBError(t *testing.T) {
  function TestLBCreateOperationTargetGroupError (line 131) | func TestLBCreateOperationTargetGroupError(t *testing.T) {
  function TestLBCreateOperationListenerError (line 191) | func TestLBCreateOperationListenerError(t *testing.T) {
  function TestSetPorts (line 259) | func TestSetPorts(t *testing.T) {
  function TestSetPortsMissing (line 293) | func TestSetPortsMissing(t *testing.T) {
  function TestSetPortsCommingled (line 306) | func TestSetPortsCommingled(t *testing.T) {
  function TestSetPortsCantInflate (line 319) | func TestSetPortsCantInflate(t *testing.T) {
  function TestSetPortsInvalidNumber (line 332) | func TestSetPortsInvalidNumber(t *testing.T) {
  function TestSetPortsInvalidProtocol (line 345) | func TestSetPortsInvalidProtocol(t *testing.T) {
  function TestInferType (line 358) | func TestInferType(t *testing.T) {
  function TestInferTypeNoPorts (line 387) | func TestInferTypeNoPorts(t *testing.T) {
  function TestInferTypeInvalidProtocol (line 400) | func TestInferTypeInvalidProtocol(t *testing.T) {
  function TestSetCertificateARNs (line 415) | func TestSetCertificateARNs(t *testing.T) {
  function TestSetCertificateARNsNotIssued (line 455) | func TestSetCertificateARNsNotIssued(t *testing.T) {
  function TestSetCertificateARNsNotFound (line 495) | func TestSetCertificateARNsNotFound(t *testing.T) {
  function TestSetCertificateARNsTooManyFound (line 526) | func TestSetCertificateARNsTooManyFound(t *testing.T) {
  function TestSetCertificateARNsError (line 559) | func TestSetCertificateARNsError(t *testing.T) {
  function TestValidate (line 590) | func TestValidate(t *testing.T) {
  function TestValidateNoName (line 606) | func TestValidateNoName(t *testing.T) {
  function TestValidateApplicationLBNoSubnets (line 625) | func TestValidateApplicationLBNoSubnets(t *testing.T) {
  function TestValidateNetworkLBWithSGs (line 642) | func TestValidateNetworkLBWithSGs(t *testing.T) {
  function TestNewLBCreateOperation (line 662) | func TestNewLBCreateOperation(t *testing.T) {
  function TestNewLBCreateOperationDefaults (line 748) | func TestNewLBCreateOperationDefaults(t *testing.T) {
  function TestNewLBCreateOperationDefaultsWithSGCreate (line 787) | func TestNewLBCreateOperationDefaultsWithSGCreate(t *testing.T) {
  function TestNewLBCreateOperationNoName (line 828) | func TestNewLBCreateOperationNoName(t *testing.T) {
  function TestNewLBCreateOperationNoPort (line 858) | func TestNewLBCreateOperationNoPort(t *testing.T) {
  function TestNewLBCreateOperationDefaultSubnets (line 890) | func TestNewLBCreateOperationDefaultSubnets(t *testing.T) {
  function TestNewLBCreateOperationDescribeSubnetsError (line 922) | func TestNewLBCreateOperationDescribeSubnetsError(t *testing.T) {
  function TestNewLBCreateOperationInvalidProtocol (line 952) | func TestNewLBCreateOperationInvalidProtocol(t *testing.T) {
  function TestNewLBCreateOperationUseDefaultSG (line 982) | func TestNewLBCreateOperationUseDefaultSG(t *testing.T) {
  function TestNewLBCreateOperationDefaultSGError (line 1013) | func TestNewLBCreateOperationDefaultSGError(t *testing.T) {
  function TestNewLBCreateOperationCertificateError (line 1044) | func TestNewLBCreateOperationCertificateError(t *testing.T) {

FILE: cmd/lb_destroy.go
  type LoadBalancerDestroyOperation (line 11) | type LoadBalancerDestroyOperation struct
  function init (line 28) | func init() {
  function destroyLoadBalancer (line 32) | func destroyLoadBalancer(operation *LoadBalancerDestroyOperation) {

FILE: cmd/lb_info.go
  type LbInfoOperation (line 17) | type LbInfoOperation struct
  function init (line 34) | func init() {
  function getLoadBalancerInfo (line 38) | func getLoadBalancerInfo(operation *LbInfoOperation) {

FILE: cmd/lb_list.go
  type lbListOperation (line 14) | type lbListOperation struct
    method execute (line 19) | func (o lbListOperation) execute() {
    method find (line 55) | func (o lbListOperation) find() (elbv2.LoadBalancers, error) {
  function init (line 112) | func init() {

FILE: cmd/lb_list_test.go
  function TestLBListOperation (line 14) | func TestLBListOperation(t *testing.T) {
  function TestLBListOperationLBDescribeError (line 115) | func TestLBListOperationLBDescribeError(t *testing.T) {
  function TestLBListOperationListenerDescribeError (line 138) | func TestLBListOperationListenerDescribeError(t *testing.T) {
  function TestLBListOperationNoneFound (line 166) | func TestLBListOperationNoneFound(t *testing.T) {

FILE: cmd/logs.go
  constant timeFormat (line 15) | timeFormat          = "2006-01-02 15:04:05"
  constant timeFormatWithZone (line 16) | timeFormatWithZone  = "2006-01-02 15:04:05 MST"
  constant logStreamNameFormat (line 17) | logStreamNameFormat = "fargate/%s/%s"
  constant eventCacheSize (line 18) | eventCacheSize      = 10000
  type Empty (line 21) | type Empty struct
  type GetLogsOperation (line 23) | type GetLogsOperation struct
    method AddStartTime (line 35) | func (o *GetLogsOperation) AddStartTime(rawStartTime string) {
    method AddEndTime (line 41) | func (o *GetLogsOperation) AddEndTime(rawEndTime string) {
    method AddTasks (line 47) | func (o *GetLogsOperation) AddTasks(tasks []string) {
    method Validate (line 54) | func (o *GetLogsOperation) Validate() {
    method GetStreamColor (line 60) | func (o *GetLogsOperation) GetStreamColor(logStreamName string) int {
    method SeenEvent (line 72) | func (o *GetLogsOperation) SeenEvent(eventId string) bool {
    method parseTime (line 85) | func (o *GetLogsOperation) parseTime(rawTime string) time.Time {
  function GetLogs (line 105) | func GetLogs(operation *GetLogsOperation) {
  function followLogs (line 115) | func followLogs(operation *GetLogsOperation) {
  function getLogs (line 133) | func getLogs(operation *GetLogsOperation) {

FILE: cmd/mock/output.go
  type Output (line 8) | type Output struct
    method Info (line 30) | func (o *Output) Info(msg string, a ...interface{}) {
    method Warn (line 37) | func (o *Output) Warn(msg string, a ...interface{}) {
    method Fatal (line 44) | func (o *Output) Fatal(err error, msg string, a ...interface{}) {
    method Fatals (line 48) | func (o *Output) Fatals(errs []error, msg string, a ...interface{}) {
    method Say (line 56) | func (o *Output) Say(msg string, indent int, a ...interface{}) {
    method Debug (line 63) | func (o *Output) Debug(msg string, a ...interface{}) {
    method KeyValue (line 70) | func (o *Output) KeyValue(key, value string, indent int, a ...interfac...
    method Table (line 81) | func (o *Output) Table(header string, rows [][]string) {
    method LineBreak (line 88) | func (o *Output) LineBreak() {
  type Table (line 20) | type Table struct
  type Fatal (line 25) | type Fatal struct

FILE: cmd/output.go
  type Output (line 26) | type Output interface
  type ConsoleOutput (line 39) | type ConsoleOutput struct
    method Debug (line 48) | func (c ConsoleOutput) Debug(msg string, a ...interface{}) {
    method Say (line 65) | func (c ConsoleOutput) Say(msg string, indent int, a ...interface{}) {
    method Info (line 75) | func (c ConsoleOutput) Info(msg string, a ...interface{}) {
    method Warn (line 90) | func (c ConsoleOutput) Warn(msg string, a ...interface{}) {
    method Fatal (line 105) | func (c ConsoleOutput) Fatal(err error, msg string, a ...interface{}) {
    method Fatals (line 111) | func (c ConsoleOutput) Fatals(errs []error, msg string, a ...interface...
    method KeyValue (line 124) | func (c ConsoleOutput) KeyValue(key, value string, indent int, a ...in...
    method Table (line 133) | func (c ConsoleOutput) Table(header string, rows [][]string) {
    method LineBreak (line 164) | func (c ConsoleOutput) LineBreak() {

FILE: cmd/output_test.go
  function ExampleConsoleOutput_Debug (line 12) | func ExampleConsoleOutput_Debug() {
  function ExampleConsoleOutput_Info (line 17) | func ExampleConsoleOutput_Info() {
  function ExampleConsoleOutput_Fatal (line 22) | func ExampleConsoleOutput_Fatal() {
  function ExampleConsoleOutput_Fatals (line 30) | func ExampleConsoleOutput_Fatals() {
  function ExampleConsoleOutput_KeyValue (line 44) | func ExampleConsoleOutput_KeyValue() {
  function ExampleConsoleOutput_Say (line 56) | func ExampleConsoleOutput_Say() {
  function ExampleConsoleOutput_Warn (line 62) | func ExampleConsoleOutput_Warn() {
  function ExampleConsoleOutput_Table (line 67) | func ExampleConsoleOutput_Table() {

FILE: cmd/port.go
  type Port (line 10) | type Port struct
    method Empty (line 15) | func (p Port) Empty() bool {
    method String (line 19) | func (p Port) String() string {
  function inflatePort (line 29) | func inflatePort(portExpr string) (Port, error) {
  function buildPort (line 45) | func buildPort(inputNumber, inputProtocol string) (Port, error) {
  function inflatePorts (line 59) | func inflatePorts(portExprs []string) ([]Port, []error) {
  function validatePort (line 74) | func validatePort(port Port) (errs []error) {

FILE: cmd/port_test.go
  function TestEmpty (line 7) | func TestEmpty(t *testing.T) {
  function TestString (line 25) | func TestString(t *testing.T) {

FILE: cmd/root.go
  constant version (line 20) | version = "0.3.2"
  constant defaultClusterName (line 22) | defaultClusterName = "fargate"
  constant defaultRegion (line 23) | defaultRegion      = "us-east-1"
  constant mebibytesInGibibyte (line 25) | mebibytesInGibibyte   = 1024
  constant protocolHttp (line 26) | protocolHttp          = "HTTP"
  constant protocolHttps (line 27) | protocolHttps         = "HTTPS"
  constant protocolTcp (line 28) | protocolTcp           = "TCP"
  constant runtimeMacOS (line 29) | runtimeMacOS          = "darwin"
  constant typeApplication (line 30) | typeApplication       = "application"
  constant typeNetwork (line 31) | typeNetwork           = "network"
  constant validRuleTypesPattern (line 32) | validRuleTypesPattern = "(?i)^host|path$"
  constant describeRequestLimitRate (line 34) | describeRequestLimitRate = 10
  function Execute (line 155) | func Execute() {
  function init (line 160) | func init() {
  function extractEnvVars (line 171) | func extractEnvVars(inputEnvVars []string) []ECS.EnvVar {
  function validateCpuAndMemory (line 196) | func validateCpuAndMemory(inputCpuUnits, inputMebibytes string) error {
  function validateMebibytes (line 235) | func validateMebibytes(mebibytes, min, max int64) bool {

FILE: cmd/root_test.go
  function TestValidateCpuAndMemoryWithValidParameters (line 48) | func TestValidateCpuAndMemoryWithValidParameters(t *testing.T) {
  function TestValidateCpuAndMemoryWithInvalidParameters (line 56) | func TestValidateCpuAndMemoryWithInvalidParameters(t *testing.T) {
  function TestValidateCpuAndMemory (line 64) | func TestValidateCpuAndMemory(t *testing.T) {

FILE: cmd/service.go
  constant serviceLogGroupFormat (line 7) | serviceLogGroupFormat = "/fargate/service/%s"
  function init (line 21) | func init() {

FILE: cmd/service_create.go
  constant typeService (line 20) | typeService = "service"
  type ServiceCreateOperation (line 22) | type ServiceCreateOperation struct
    method SetPort (line 40) | func (o *ServiceCreateOperation) SetPort(inputPort string) {
    method Validate (line 60) | func (o *ServiceCreateOperation) Validate() {
    method SetLoadBalancer (line 72) | func (o *ServiceCreateOperation) SetLoadBalancer(lb string) {
    method SetRules (line 96) | func (o *ServiceCreateOperation) SetRules(inputRules []string) {
    method SetEnvVars (line 132) | func (o *ServiceCreateOperation) SetEnvVars(inputEnvVars []string) {
    method SetSecurityGroupIds (line 136) | func (o *ServiceCreateOperation) SetSecurityGroupIds(securityGroupIds ...
  function init (line 269) | func init() {
  function createService (line 286) | func createService(operation *ServiceCreateOperation) {

FILE: cmd/service_deploy.go
  type ServiceDeployOperation (line 12) | type ServiceDeployOperation struct
  function init (line 41) | func init() {
  function deployService (line 47) | func deployService(operation *ServiceDeployOperation) {

FILE: cmd/service_destroy.go
  type ServiceDestroyOperation (line 12) | type ServiceDestroyOperation struct
  function init (line 32) | func init() {
  function destroyService (line 36) | func destroyService(operation *ServiceDestroyOperation) {

FILE: cmd/service_env.go
  function init (line 12) | func init() {

FILE: cmd/service_env_list.go
  type ServiceEnvListOperation (line 9) | type ServiceEnvListOperation struct
  function init (line 26) | func init() {
  function serviceEnvList (line 30) | func serviceEnvList(operation *ServiceEnvListOperation) {

FILE: cmd/service_env_set.go
  type ServiceEnvSetOperation (line 9) | type ServiceEnvSetOperation struct
    method Validate (line 14) | func (o *ServiceEnvSetOperation) Validate() {
    method SetEnvVars (line 20) | func (o *ServiceEnvSetOperation) SetEnvVars(inputEnvVars []string) {
  function init (line 45) | func init() {
  function serviceEnvSet (line 51) | func serviceEnvSet(operation *ServiceEnvSetOperation) {

FILE: cmd/service_env_unset.go
  type ServiceEnvUnsetOperation (line 11) | type ServiceEnvUnsetOperation struct
    method Validate (line 16) | func (o *ServiceEnvUnsetOperation) Validate() {
    method SetKeys (line 22) | func (o *ServiceEnvUnsetOperation) SetKeys(keys []string) {
  function init (line 47) | func init() {
  function serviceEnvUnset (line 53) | func serviceEnvUnset(operation *ServiceEnvUnsetOperation) {

FILE: cmd/service_info.go
  constant statusActive (line 18) | statusActive = "ACTIVE"
  type ServiceInfoOperation (line 20) | type ServiceInfoOperation struct
  function init (line 45) | func init() {
  function getServiceInfo (line 49) | func getServiceInfo(operation *ServiceInfoOperation) {

FILE: cmd/service_list.go
  function init (line 22) | func init() {
  function listServices (line 26) | func listServices() {

FILE: cmd/service_logs.go
  function init (line 64) | func init() {

FILE: cmd/service_ps.go
  type ServiceProcessListOperation (line 14) | type ServiceProcessListOperation struct
  function init (line 31) | func init() {
  function getServiceProcessList (line 35) | func getServiceProcessList(operation *ServiceProcessListOperation) {

FILE: cmd/service_restart.go
  type ServiceRestartOperation (line 9) | type ServiceRestartOperation struct
  function init (line 31) | func init() {
  function restartService (line 35) | func restartService(operation *ServiceRestartOperation) {

FILE: cmd/service_scale.go
  constant validScalePattern (line 13) | validScalePattern = "[-\\+]?[0-9]+"
  type ScaleServiceOperation (line 15) | type ScaleServiceOperation struct
    method SetScale (line 20) | func (o *ScaleServiceOperation) SetScale(scaleExpression string) {
  function init (line 68) | func init() {
  function scaleService (line 72) | func scaleService(operation *ScaleServiceOperation) {

FILE: cmd/service_update.go
  type ServiceUpdateOperation (line 11) | type ServiceUpdateOperation struct
    method Validate (line 18) | func (o *ServiceUpdateOperation) Validate() {
  function init (line 81) | func init() {
  function updateService (line 88) | func updateService(operation *ServiceUpdateOperation) {

FILE: cmd/string_util.go
  function Humanize (line 6) | func Humanize(s string) string {
  function Titleize (line 14) | func Titleize(s string) string {
  function Map (line 22) | func Map(vs []string, f func(string) string) []string {

FILE: cmd/string_util_test.go
  function ExampleHumanize (line 5) | func ExampleHumanize() {
  function ExampleTitleize (line 10) | func ExampleTitleize() {
  function ExampleMap (line 15) | func ExampleMap() {

FILE: cmd/task.go
  constant taskLogGroupFormat (line 7) | taskLogGroupFormat = "/fargate/task/%s"
  function init (line 19) | func init() {

FILE: cmd/task_info.go
  type TaskInfoOperation (line 13) | type TaskInfoOperation struct
  function init (line 41) | func init() {
  function getTaskInfo (line 47) | func getTaskInfo(operation *TaskInfoOperation) {

FILE: cmd/task_list.go
  function init (line 21) | func init() {
  function listTaskGroups (line 25) | func listTaskGroups() {

FILE: cmd/task_logs.go
  function init (line 62) | func init() {

FILE: cmd/task_ps.go
  type TaskProcessListOperation (line 14) | type TaskProcessListOperation struct
  function init (line 31) | func init() {
  function getTaskProcessList (line 35) | func getTaskProcessList(operation *TaskProcessListOperation) {

FILE: cmd/task_run.go
  constant typeTask (line 15) | typeTask string = "task"
  type TaskRunOperation (line 17) | type TaskRunOperation struct
    method Validate (line 30) | func (o *TaskRunOperation) Validate() {
    method SetEnvVars (line 42) | func (o *TaskRunOperation) SetEnvVars(inputEnvVars []string) {
  function init (line 137) | func init() {
  function runTask (line 150) | func runTask(operation *TaskRunOperation) {

FILE: cmd/task_stop.go
  type TaskStopOperation (line 9) | type TaskStopOperation struct
  function init (line 37) | func init() {
  function stopTasks (line 43) | func stopTasks(operation *TaskStopOperation) {

FILE: cmd/vpc_operation.go
  type vpcOperation (line 7) | type vpcOperation struct
    method setSubnetIDs (line 15) | func (o *vpcOperation) setSubnetIDs(subnetIDs []string) error {
    method setSecurityGroupIDs (line 29) | func (o *vpcOperation) setSecurityGroupIDs(securityGroupIDs []string) {
    method setDefaultSecurityGroupID (line 33) | func (o *vpcOperation) setDefaultSecurityGroupID() error {
    method setDefaultSubnetIDs (line 62) | func (o *vpcOperation) setDefaultSubnetIDs() error {

FILE: cmd/vpc_operation_test.go
  function TestSetSubnetIDs (line 12) | func TestSetSubnetIDs(t *testing.T) {
  function TestSetSubnetIDsError (line 45) | func TestSetSubnetIDsError(t *testing.T) {
  function TestSetDefaultSecurityGroupID (line 70) | func TestSetDefaultSecurityGroupID(t *testing.T) {
  function TestSetDefaultSecurityGroupIDLookupError (line 99) | func TestSetDefaultSecurityGroupIDLookupError(t *testing.T) {
  function TestSetDefaultSecurityGroupIDWithCreate (line 124) | func TestSetDefaultSecurityGroupIDWithCreate(t *testing.T) {
  function TestSetDefaultSecurityGroupIDWithCreateError (line 155) | func TestSetDefaultSecurityGroupIDWithCreateError(t *testing.T) {
  function TestSetDefaultSecurityGroupIDWithAuthorizeError (line 181) | func TestSetDefaultSecurityGroupIDWithAuthorizeError(t *testing.T) {
  function TestSetDefaultSubnetIDs (line 208) | func TestSetDefaultSubnetIDs(t *testing.T) {
  function TestSetDefaultSubnetIDsLookupError (line 242) | func TestSetDefaultSubnetIDsLookupError(t *testing.T) {
  function TestSetDefaultSubnetIDsVPCError (line 267) | func TestSetDefaultSubnetIDsVPCError(t *testing.T) {

FILE: console/main.go
  function LogLine (line 36) | func LogLine(prefix, msg string, color int) {
  function KeyValue (line 45) | func KeyValue(key, value string, a ...interface{}) {
  function Header (line 53) | func Header(s string) {
  function Info (line 63) | func Info(msg string, a ...interface{}) {
  function Debug (line 71) | func Debug(msg string, a ...interface{}) {
  function Shell (line 81) | func Shell(msg string, a ...interface{}) {
  function Issue (line 89) | func Issue(msg string, a ...interface{}) {
  function Error (line 97) | func Error(err error, msg string, a ...interface{}) {
  function InfoExit (line 105) | func InfoExit(msg string, a ...interface{}) {
  function ErrorExit (line 110) | func ErrorExit(err error, msg string, a ...interface{}) {
  function IssueExit (line 115) | func IssueExit(msg string, a ...interface{}) {
  function Exit (line 120) | func Exit(code int) {
  function SetVerbose (line 124) | func SetVerbose(verbose bool) {

FILE: docker/main.go
  constant timestampFormat (line 11) | timestampFormat = "20060102150405"
  function GenerateTag (line 13) | func GenerateTag() string {
  type Repository (line 17) | type Repository struct
    method Login (line 27) | func (repository *Repository) Login(username, password string) {
    method Build (line 47) | func (repository *Repository) Build(tag string) {
    method Push (line 65) | func (repository *Repository) Push(tag string) {
    method UriFor (line 83) | func (repository *Repository) UriFor(tag string) string {
  function NewRepository (line 21) | func NewRepository(repositoryUri string) Repository {

FILE: ec2/eni.go
  type Eni (line 9) | type Eni struct
  method DescribeNetworkInterfaces (line 15) | func (ec2 SDKClient) DescribeNetworkInterfaces(eniIds []string) map[stri...

FILE: ec2/main.go
  type Client (line 13) | type Client interface
  type SDKClient (line 22) | type SDKClient struct
  function New (line 27) | func New(sess *session.Session) SDKClient {

FILE: ec2/mock/client/client.go
  type MockClient (line 13) | type MockClient struct
    method EXPECT (line 31) | func (m *MockClient) EXPECT() *MockClientMockRecorder {
    method AuthorizeAllSecurityGroupIngress (line 36) | func (m *MockClient) AuthorizeAllSecurityGroupIngress(arg0 string) err...
    method CreateDefaultSecurityGroup (line 50) | func (m *MockClient) CreateDefaultSecurityGroup() (string, error) {
    method GetDefaultSecurityGroupID (line 65) | func (m *MockClient) GetDefaultSecurityGroupID() (string, error) {
    method GetDefaultSubnetIDs (line 80) | func (m *MockClient) GetDefaultSubnetIDs() ([]string, error) {
    method GetSubnetVPCID (line 95) | func (m *MockClient) GetSubnetVPCID(arg0 string) (string, error) {
  type MockClientMockRecorder (line 19) | type MockClientMockRecorder struct
    method AuthorizeAllSecurityGroupIngress (line 44) | func (mr *MockClientMockRecorder) AuthorizeAllSecurityGroupIngress(arg...
    method CreateDefaultSecurityGroup (line 59) | func (mr *MockClientMockRecorder) CreateDefaultSecurityGroup() *gomock...
    method GetDefaultSecurityGroupID (line 74) | func (mr *MockClientMockRecorder) GetDefaultSecurityGroupID() *gomock....
    method GetDefaultSubnetIDs (line 89) | func (mr *MockClientMockRecorder) GetDefaultSubnetIDs() *gomock.Call {
    method GetSubnetVPCID (line 104) | func (mr *MockClientMockRecorder) GetSubnetVPCID(arg0 interface{}) *go...
  function NewMockClient (line 24) | func NewMockClient(ctrl *gomock.Controller) *MockClient {

FILE: ec2/mock/sdk/ec2iface.go
  type MockEC2API (line 16) | type MockEC2API struct
    method EXPECT (line 34) | func (m *MockEC2API) EXPECT() *MockEC2APIMockRecorder {
    method AcceptReservedInstancesExchangeQuote (line 39) | func (m *MockEC2API) AcceptReservedInstancesExchangeQuote(arg0 *ec2.Ac...
    method AcceptReservedInstancesExchangeQuoteWithContext (line 54) | func (m *MockEC2API) AcceptReservedInstancesExchangeQuoteWithContext(a...
    method AcceptReservedInstancesExchangeQuoteRequest (line 74) | func (m *MockEC2API) AcceptReservedInstancesExchangeQuoteRequest(arg0 ...
    method AcceptTransitGatewayPeeringAttachment (line 89) | func (m *MockEC2API) AcceptTransitGatewayPeeringAttachment(arg0 *ec2.A...
    method AcceptTransitGatewayPeeringAttachmentWithContext (line 104) | func (m *MockEC2API) AcceptTransitGatewayPeeringAttachmentWithContext(...
    method AcceptTransitGatewayPeeringAttachmentRequest (line 124) | func (m *MockEC2API) AcceptTransitGatewayPeeringAttachmentRequest(arg0...
    method AcceptTransitGatewayVpcAttachment (line 139) | func (m *MockEC2API) AcceptTransitGatewayVpcAttachment(arg0 *ec2.Accep...
    method AcceptTransitGatewayVpcAttachmentWithContext (line 154) | func (m *MockEC2API) AcceptTransitGatewayVpcAttachmentWithContext(arg0...
    method AcceptTransitGatewayVpcAttachmentRequest (line 174) | func (m *MockEC2API) AcceptTransitGatewayVpcAttachmentRequest(arg0 *ec...
    method AcceptVpcEndpointConnections (line 189) | func (m *MockEC2API) AcceptVpcEndpointConnections(arg0 *ec2.AcceptVpcE...
    method AcceptVpcEndpointConnectionsWithContext (line 204) | func (m *MockEC2API) AcceptVpcEndpointConnectionsWithContext(arg0 aws....
    method AcceptVpcEndpointConnectionsRequest (line 224) | func (m *MockEC2API) AcceptVpcEndpointConnectionsRequest(arg0 *ec2.Acc...
    method AcceptVpcPeeringConnection (line 239) | func (m *MockEC2API) AcceptVpcPeeringConnection(arg0 *ec2.AcceptVpcPee...
    method AcceptVpcPeeringConnectionWithContext (line 254) | func (m *MockEC2API) AcceptVpcPeeringConnectionWithContext(arg0 aws.Co...
    method AcceptVpcPeeringConnectionRequest (line 274) | func (m *MockEC2API) AcceptVpcPeeringConnectionRequest(arg0 *ec2.Accep...
    method AdvertiseByoipCidr (line 289) | func (m *MockEC2API) AdvertiseByoipCidr(arg0 *ec2.AdvertiseByoipCidrIn...
    method AdvertiseByoipCidrWithContext (line 304) | func (m *MockEC2API) AdvertiseByoipCidrWithContext(arg0 aws.Context, a...
    method AdvertiseByoipCidrRequest (line 324) | func (m *MockEC2API) AdvertiseByoipCidrRequest(arg0 *ec2.AdvertiseByoi...
    method AllocateAddress (line 339) | func (m *MockEC2API) AllocateAddress(arg0 *ec2.AllocateAddressInput) (...
    method AllocateAddressWithContext (line 354) | func (m *MockEC2API) AllocateAddressWithContext(arg0 aws.Context, arg1...
    method AllocateAddressRequest (line 374) | func (m *MockEC2API) AllocateAddressRequest(arg0 *ec2.AllocateAddressI...
    method AllocateHosts (line 389) | func (m *MockEC2API) AllocateHosts(arg0 *ec2.AllocateHostsInput) (*ec2...
    method AllocateHostsWithContext (line 404) | func (m *MockEC2API) AllocateHostsWithContext(arg0 aws.Context, arg1 *...
    method AllocateHostsRequest (line 424) | func (m *MockEC2API) AllocateHostsRequest(arg0 *ec2.AllocateHostsInput...
    method ApplySecurityGroupsToClientVpnTargetNetwork (line 439) | func (m *MockEC2API) ApplySecurityGroupsToClientVpnTargetNetwork(arg0 ...
    method ApplySecurityGroupsToClientVpnTargetNetworkWithContext (line 454) | func (m *MockEC2API) ApplySecurityGroupsToClientVpnTargetNetworkWithCo...
    method ApplySecurityGroupsToClientVpnTargetNetworkRequest (line 474) | func (m *MockEC2API) ApplySecurityGroupsToClientVpnTargetNetworkReques...
    method AssignIpv6Addresses (line 489) | func (m *MockEC2API) AssignIpv6Addresses(arg0 *ec2.AssignIpv6Addresses...
    method AssignIpv6AddressesWithContext (line 504) | func (m *MockEC2API) AssignIpv6AddressesWithContext(arg0 aws.Context, ...
    method AssignIpv6AddressesRequest (line 524) | func (m *MockEC2API) AssignIpv6AddressesRequest(arg0 *ec2.AssignIpv6Ad...
    method AssignPrivateIpAddresses (line 539) | func (m *MockEC2API) AssignPrivateIpAddresses(arg0 *ec2.AssignPrivateI...
    method AssignPrivateIpAddressesWithContext (line 554) | func (m *MockEC2API) AssignPrivateIpAddressesWithContext(arg0 aws.Cont...
    method AssignPrivateIpAddressesRequest (line 574) | func (m *MockEC2API) AssignPrivateIpAddressesRequest(arg0 *ec2.AssignP...
    method AssociateAddress (line 589) | func (m *MockEC2API) AssociateAddress(arg0 *ec2.AssociateAddressInput)...
    method AssociateAddressWithContext (line 604) | func (m *MockEC2API) AssociateAddressWithContext(arg0 aws.Context, arg...
    method AssociateAddressRequest (line 624) | func (m *MockEC2API) AssociateAddressRequest(arg0 *ec2.AssociateAddres...
    method AssociateClientVpnTargetNetwork (line 639) | func (m *MockEC2API) AssociateClientVpnTargetNetwork(arg0 *ec2.Associa...
    method AssociateClientVpnTargetNetworkWithContext (line 654) | func (m *MockEC2API) AssociateClientVpnTargetNetworkWithContext(arg0 a...
    method AssociateClientVpnTargetNetworkRequest (line 674) | func (m *MockEC2API) AssociateClientVpnTargetNetworkRequest(arg0 *ec2....
    method AssociateDhcpOptions (line 689) | func (m *MockEC2API) AssociateDhcpOptions(arg0 *ec2.AssociateDhcpOptio...
    method AssociateDhcpOptionsWithContext (line 704) | func (m *MockEC2API) AssociateDhcpOptionsWithContext(arg0 aws.Context,...
    method AssociateDhcpOptionsRequest (line 724) | func (m *MockEC2API) AssociateDhcpOptionsRequest(arg0 *ec2.AssociateDh...
    method AssociateIamInstanceProfile (line 739) | func (m *MockEC2API) AssociateIamInstanceProfile(arg0 *ec2.AssociateIa...
    method AssociateIamInstanceProfileWithContext (line 754) | func (m *MockEC2API) AssociateIamInstanceProfileWithContext(arg0 aws.C...
    method AssociateIamInstanceProfileRequest (line 774) | func (m *MockEC2API) AssociateIamInstanceProfileRequest(arg0 *ec2.Asso...
    method AssociateRouteTable (line 789) | func (m *MockEC2API) AssociateRouteTable(arg0 *ec2.AssociateRouteTable...
    method AssociateRouteTableWithContext (line 804) | func (m *MockEC2API) AssociateRouteTableWithContext(arg0 aws.Context, ...
    method AssociateRouteTableRequest (line 824) | func (m *MockEC2API) AssociateRouteTableRequest(arg0 *ec2.AssociateRou...
    method AssociateSubnetCidrBlock (line 839) | func (m *MockEC2API) AssociateSubnetCidrBlock(arg0 *ec2.AssociateSubne...
    method AssociateSubnetCidrBlockWithContext (line 854) | func (m *MockEC2API) AssociateSubnetCidrBlockWithContext(arg0 aws.Cont...
    method AssociateSubnetCidrBlockRequest (line 874) | func (m *MockEC2API) AssociateSubnetCidrBlockRequest(arg0 *ec2.Associa...
    method AssociateTransitGatewayMulticastDomain (line 889) | func (m *MockEC2API) AssociateTransitGatewayMulticastDomain(arg0 *ec2....
    method AssociateTransitGatewayMulticastDomainWithContext (line 904) | func (m *MockEC2API) AssociateTransitGatewayMulticastDomainWithContext...
    method AssociateTransitGatewayMulticastDomainRequest (line 924) | func (m *MockEC2API) AssociateTransitGatewayMulticastDomainRequest(arg...
    method AssociateTransitGatewayRouteTable (line 939) | func (m *MockEC2API) AssociateTransitGatewayRouteTable(arg0 *ec2.Assoc...
    method AssociateTransitGatewayRouteTableWithContext (line 954) | func (m *MockEC2API) AssociateTransitGatewayRouteTableWithContext(arg0...
    method AssociateTransitGatewayRouteTableRequest (line 974) | func (m *MockEC2API) AssociateTransitGatewayRouteTableRequest(arg0 *ec...
    method AssociateVpcCidrBlock (line 989) | func (m *MockEC2API) AssociateVpcCidrBlock(arg0 *ec2.AssociateVpcCidrB...
    method AssociateVpcCidrBlockWithContext (line 1004) | func (m *MockEC2API) AssociateVpcCidrBlockWithContext(arg0 aws.Context...
    method AssociateVpcCidrBlockRequest (line 1024) | func (m *MockEC2API) AssociateVpcCidrBlockRequest(arg0 *ec2.AssociateV...
    method AttachClassicLinkVpc (line 1039) | func (m *MockEC2API) AttachClassicLinkVpc(arg0 *ec2.AttachClassicLinkV...
    method AttachClassicLinkVpcWithContext (line 1054) | func (m *MockEC2API) AttachClassicLinkVpcWithContext(arg0 aws.Context,...
    method AttachClassicLinkVpcRequest (line 1074) | func (m *MockEC2API) AttachClassicLinkVpcRequest(arg0 *ec2.AttachClass...
    method AttachInternetGateway (line 1089) | func (m *MockEC2API) AttachInternetGateway(arg0 *ec2.AttachInternetGat...
    method AttachInternetGatewayWithContext (line 1104) | func (m *MockEC2API) AttachInternetGatewayWithContext(arg0 aws.Context...
    method AttachInternetGatewayRequest (line 1124) | func (m *MockEC2API) AttachInternetGatewayRequest(arg0 *ec2.AttachInte...
    method AttachNetworkInterface (line 1139) | func (m *MockEC2API) AttachNetworkInterface(arg0 *ec2.AttachNetworkInt...
    method AttachNetworkInterfaceWithContext (line 1154) | func (m *MockEC2API) AttachNetworkInterfaceWithContext(arg0 aws.Contex...
    method AttachNetworkInterfaceRequest (line 1174) | func (m *MockEC2API) AttachNetworkInterfaceRequest(arg0 *ec2.AttachNet...
    method AttachVolume (line 1189) | func (m *MockEC2API) AttachVolume(arg0 *ec2.AttachVolumeInput) (*ec2.V...
    method AttachVolumeWithContext (line 1204) | func (m *MockEC2API) AttachVolumeWithContext(arg0 aws.Context, arg1 *e...
    method AttachVolumeRequest (line 1224) | func (m *MockEC2API) AttachVolumeRequest(arg0 *ec2.AttachVolumeInput) ...
    method AttachVpnGateway (line 1239) | func (m *MockEC2API) AttachVpnGateway(arg0 *ec2.AttachVpnGatewayInput)...
    method AttachVpnGatewayWithContext (line 1254) | func (m *MockEC2API) AttachVpnGatewayWithContext(arg0 aws.Context, arg...
    method AttachVpnGatewayRequest (line 1274) | func (m *MockEC2API) AttachVpnGatewayRequest(arg0 *ec2.AttachVpnGatewa...
    method AuthorizeClientVpnIngress (line 1289) | func (m *MockEC2API) AuthorizeClientVpnIngress(arg0 *ec2.AuthorizeClie...
    method AuthorizeClientVpnIngressWithContext (line 1304) | func (m *MockEC2API) AuthorizeClientVpnIngressWithContext(arg0 aws.Con...
    method AuthorizeClientVpnIngressRequest (line 1324) | func (m *MockEC2API) AuthorizeClientVpnIngressRequest(arg0 *ec2.Author...
    method AuthorizeSecurityGroupEgress (line 1339) | func (m *MockEC2API) AuthorizeSecurityGroupEgress(arg0 *ec2.AuthorizeS...
    method AuthorizeSecurityGroupEgressWithContext (line 1354) | func (m *MockEC2API) AuthorizeSecurityGroupEgressWithContext(arg0 aws....
    method AuthorizeSecurityGroupEgressRequest (line 1374) | func (m *MockEC2API) AuthorizeSecurityGroupEgressRequest(arg0 *ec2.Aut...
    method AuthorizeSecurityGroupIngress (line 1389) | func (m *MockEC2API) AuthorizeSecurityGroupIngress(arg0 *ec2.Authorize...
    method AuthorizeSecurityGroupIngressWithContext (line 1404) | func (m *MockEC2API) AuthorizeSecurityGroupIngressWithContext(arg0 aws...
    method AuthorizeSecurityGroupIngressRequest (line 1424) | func (m *MockEC2API) AuthorizeSecurityGroupIngressRequest(arg0 *ec2.Au...
    method BundleInstance (line 1439) | func (m *MockEC2API) BundleInstance(arg0 *ec2.BundleInstanceInput) (*e...
    method BundleInstanceWithContext (line 1454) | func (m *MockEC2API) BundleInstanceWithContext(arg0 aws.Context, arg1 ...
    method BundleInstanceRequest (line 1474) | func (m *MockEC2API) BundleInstanceRequest(arg0 *ec2.BundleInstanceInp...
    method CancelBundleTask (line 1489) | func (m *MockEC2API) CancelBundleTask(arg0 *ec2.CancelBundleTaskInput)...
    method CancelBundleTaskWithContext (line 1504) | func (m *MockEC2API) CancelBundleTaskWithContext(arg0 aws.Context, arg...
    method CancelBundleTaskRequest (line 1524) | func (m *MockEC2API) CancelBundleTaskRequest(arg0 *ec2.CancelBundleTas...
    method CancelCapacityReservation (line 1539) | func (m *MockEC2API) CancelCapacityReservation(arg0 *ec2.CancelCapacit...
    method CancelCapacityReservationWithContext (line 1554) | func (m *MockEC2API) CancelCapacityReservationWithContext(arg0 aws.Con...
    method CancelCapacityReservationRequest (line 1574) | func (m *MockEC2API) CancelCapacityReservationRequest(arg0 *ec2.Cancel...
    method CancelConversionTask (line 1589) | func (m *MockEC2API) CancelConversionTask(arg0 *ec2.CancelConversionTa...
    method CancelConversionTaskWithContext (line 1604) | func (m *MockEC2API) CancelConversionTaskWithContext(arg0 aws.Context,...
    method CancelConversionTaskRequest (line 1624) | func (m *MockEC2API) CancelConversionTaskRequest(arg0 *ec2.CancelConve...
    method CancelExportTask (line 1639) | func (m *MockEC2API) CancelExportTask(arg0 *ec2.CancelExportTaskInput)...
    method CancelExportTaskWithContext (line 1654) | func (m *MockEC2API) CancelExportTaskWithContext(arg0 aws.Context, arg...
    method CancelExportTaskRequest (line 1674) | func (m *MockEC2API) CancelExportTaskRequest(arg0 *ec2.CancelExportTas...
    method CancelImportTask (line 1689) | func (m *MockEC2API) CancelImportTask(arg0 *ec2.CancelImportTaskInput)...
    method CancelImportTaskWithContext (line 1704) | func (m *MockEC2API) CancelImportTaskWithContext(arg0 aws.Context, arg...
    method CancelImportTaskRequest (line 1724) | func (m *MockEC2API) CancelImportTaskRequest(arg0 *ec2.CancelImportTas...
    method CancelReservedInstancesListing (line 1739) | func (m *MockEC2API) CancelReservedInstancesListing(arg0 *ec2.CancelRe...
    method CancelReservedInstancesListingWithContext (line 1754) | func (m *MockEC2API) CancelReservedInstancesListingWithContext(arg0 aw...
    method CancelReservedInstancesListingRequest (line 1774) | func (m *MockEC2API) CancelReservedInstancesListingRequest(arg0 *ec2.C...
    method CancelSpotFleetRequests (line 1789) | func (m *MockEC2API) CancelSpotFleetRequests(arg0 *ec2.CancelSpotFleet...
    method CancelSpotFleetRequestsWithContext (line 1804) | func (m *MockEC2API) CancelSpotFleetRequestsWithContext(arg0 aws.Conte...
    method CancelSpotFleetRequestsRequest (line 1824) | func (m *MockEC2API) CancelSpotFleetRequestsRequest(arg0 *ec2.CancelSp...
    method CancelSpotInstanceRequests (line 1839) | func (m *MockEC2API) CancelSpotInstanceRequests(arg0 *ec2.CancelSpotIn...
    method CancelSpotInstanceRequestsWithContext (line 1854) | func (m *MockEC2API) CancelSpotInstanceRequestsWithContext(arg0 aws.Co...
    method CancelSpotInstanceRequestsRequest (line 1874) | func (m *MockEC2API) CancelSpotInstanceRequestsRequest(arg0 *ec2.Cance...
    method ConfirmProductInstance (line 1889) | func (m *MockEC2API) ConfirmProductInstance(arg0 *ec2.ConfirmProductIn...
    method ConfirmProductInstanceWithContext (line 1904) | func (m *MockEC2API) ConfirmProductInstanceWithContext(arg0 aws.Contex...
    method ConfirmProductInstanceRequest (line 1924) | func (m *MockEC2API) ConfirmProductInstanceRequest(arg0 *ec2.ConfirmPr...
    method CopyFpgaImage (line 1939) | func (m *MockEC2API) CopyFpgaImage(arg0 *ec2.CopyFpgaImageInput) (*ec2...
    method CopyFpgaImageWithContext (line 1954) | func (m *MockEC2API) CopyFpgaImageWithContext(arg0 aws.Context, arg1 *...
    method CopyFpgaImageRequest (line 1974) | func (m *MockEC2API) CopyFpgaImageRequest(arg0 *ec2.CopyFpgaImageInput...
    method CopyImage (line 1989) | func (m *MockEC2API) CopyImage(arg0 *ec2.CopyImageInput) (*ec2.CopyIma...
    method CopyImageWithContext (line 2004) | func (m *MockEC2API) CopyImageWithContext(arg0 aws.Context, arg1 *ec2....
    method CopyImageRequest (line 2024) | func (m *MockEC2API) CopyImageRequest(arg0 *ec2.CopyImageInput) (*requ...
    method CopySnapshot (line 2039) | func (m *MockEC2API) CopySnapshot(arg0 *ec2.CopySnapshotInput) (*ec2.C...
    method CopySnapshotWithContext (line 2054) | func (m *MockEC2API) CopySnapshotWithContext(arg0 aws.Context, arg1 *e...
    method CopySnapshotRequest (line 2074) | func (m *MockEC2API) CopySnapshotRequest(arg0 *ec2.CopySnapshotInput) ...
    method CreateCapacityReservation (line 2089) | func (m *MockEC2API) CreateCapacityReservation(arg0 *ec2.CreateCapacit...
    method CreateCapacityReservationWithContext (line 2104) | func (m *MockEC2API) CreateCapacityReservationWithContext(arg0 aws.Con...
    method CreateCapacityReservationRequest (line 2124) | func (m *MockEC2API) CreateCapacityReservationRequest(arg0 *ec2.Create...
    method CreateClientVpnEndpoint (line 2139) | func (m *MockEC2API) CreateClientVpnEndpoint(arg0 *ec2.CreateClientVpn...
    method CreateClientVpnEndpointWithContext (line 2154) | func (m *MockEC2API) CreateClientVpnEndpointWithContext(arg0 aws.Conte...
    method CreateClientVpnEndpointRequest (line 2174) | func (m *MockEC2API) CreateClientVpnEndpointRequest(arg0 *ec2.CreateCl...
    method CreateClientVpnRoute (line 2189) | func (m *MockEC2API) CreateClientVpnRoute(arg0 *ec2.CreateClientVpnRou...
    method CreateClientVpnRouteWithContext (line 2204) | func (m *MockEC2API) CreateClientVpnRouteWithContext(arg0 aws.Context,...
    method CreateClientVpnRouteRequest (line 2224) | func (m *MockEC2API) CreateClientVpnRouteRequest(arg0 *ec2.CreateClien...
    method CreateCustomerGateway (line 2239) | func (m *MockEC2API) CreateCustomerGateway(arg0 *ec2.CreateCustomerGat...
    method CreateCustomerGatewayWithContext (line 2254) | func (m *MockEC2API) CreateCustomerGatewayWithContext(arg0 aws.Context...
    method CreateCustomerGatewayRequest (line 2274) | func (m *MockEC2API) CreateCustomerGatewayRequest(arg0 *ec2.CreateCust...
    method CreateDefaultSubnet (line 2289) | func (m *MockEC2API) CreateDefaultSubnet(arg0 *ec2.CreateDefaultSubnet...
    method CreateDefaultSubnetWithContext (line 2304) | func (m *MockEC2API) CreateDefaultSubnetWithContext(arg0 aws.Context, ...
    method CreateDefaultSubnetRequest (line 2324) | func (m *MockEC2API) CreateDefaultSubnetRequest(arg0 *ec2.CreateDefaul...
    method CreateDefaultVpc (line 2339) | func (m *MockEC2API) CreateDefaultVpc(arg0 *ec2.CreateDefaultVpcInput)...
    method CreateDefaultVpcWithContext (line 2354) | func (m *MockEC2API) CreateDefaultVpcWithContext(arg0 aws.Context, arg...
    method CreateDefaultVpcRequest (line 2374) | func (m *MockEC2API) CreateDefaultVpcRequest(arg0 *ec2.CreateDefaultVp...
    method CreateDhcpOptions (line 2389) | func (m *MockEC2API) CreateDhcpOptions(arg0 *ec2.CreateDhcpOptionsInpu...
    method CreateDhcpOptionsWithContext (line 2404) | func (m *MockEC2API) CreateDhcpOptionsWithContext(arg0 aws.Context, ar...
    method CreateDhcpOptionsRequest (line 2424) | func (m *MockEC2API) CreateDhcpOptionsRequest(arg0 *ec2.CreateDhcpOpti...
    method CreateEgressOnlyInternetGateway (line 2439) | func (m *MockEC2API) CreateEgressOnlyInternetGateway(arg0 *ec2.CreateE...
    method CreateEgressOnlyInternetGatewayWithContext (line 2454) | func (m *MockEC2API) CreateEgressOnlyInternetGatewayWithContext(arg0 a...
    method CreateEgressOnlyInternetGatewayRequest (line 2474) | func (m *MockEC2API) CreateEgressOnlyInternetGatewayRequest(arg0 *ec2....
    method CreateFleet (line 2489) | func (m *MockEC2API) CreateFleet(arg0 *ec2.CreateFleetInput) (*ec2.Cre...
    method CreateFleetWithContext (line 2504) | func (m *MockEC2API) CreateFleetWithContext(arg0 aws.Context, arg1 *ec...
    method CreateFleetRequest (line 2524) | func (m *MockEC2API) CreateFleetRequest(arg0 *ec2.CreateFleetInput) (*...
    method CreateFlowLogs (line 2539) | func (m *MockEC2API) CreateFlowLogs(arg0 *ec2.CreateFlowLogsInput) (*e...
    method CreateFlowLogsWithContext (line 2554) | func (m *MockEC2API) CreateFlowLogsWithContext(arg0 aws.Context, arg1 ...
    method CreateFlowLogsRequest (line 2574) | func (m *MockEC2API) CreateFlowLogsRequest(arg0 *ec2.CreateFlowLogsInp...
    method CreateFpgaImage (line 2589) | func (m *MockEC2API) CreateFpgaImage(arg0 *ec2.CreateFpgaImageInput) (...
    method CreateFpgaImageWithContext (line 2604) | func (m *MockEC2API) CreateFpgaImageWithContext(arg0 aws.Context, arg1...
    method CreateFpgaImageRequest (line 2624) | func (m *MockEC2API) CreateFpgaImageRequest(arg0 *ec2.CreateFpgaImageI...
    method CreateImage (line 2639) | func (m *MockEC2API) CreateImage(arg0 *ec2.CreateImageInput) (*ec2.Cre...
    method CreateImageWithContext (line 2654) | func (m *MockEC2API) CreateImageWithContext(arg0 aws.Context, arg1 *ec...
    method CreateImageRequest (line 2674) | func (m *MockEC2API) CreateImageRequest(arg0 *ec2.CreateImageInput) (*...
    method CreateInstanceExportTask (line 2689) | func (m *MockEC2API) CreateInstanceExportTask(arg0 *ec2.CreateInstance...
    method CreateInstanceExportTaskWithContext (line 2704) | func (m *MockEC2API) CreateInstanceExportTaskWithContext(arg0 aws.Cont...
    method CreateInstanceExportTaskRequest (line 2724) | func (m *MockEC2API) CreateInstanceExportTaskRequest(arg0 *ec2.CreateI...
    method CreateInternetGateway (line 2739) | func (m *MockEC2API) CreateInternetGateway(arg0 *ec2.CreateInternetGat...
    method CreateInternetGatewayWithContext (line 2754) | func (m *MockEC2API) CreateInternetGatewayWithContext(arg0 aws.Context...
    method CreateInternetGatewayRequest (line 2774) | func (m *MockEC2API) CreateInternetGatewayRequest(arg0 *ec2.CreateInte...
    method CreateKeyPair (line 2789) | func (m *MockEC2API) CreateKeyPair(arg0 *ec2.CreateKeyPairInput) (*ec2...
    method CreateKeyPairWithContext (line 2804) | func (m *MockEC2API) CreateKeyPairWithContext(arg0 aws.Context, arg1 *...
    method CreateKeyPairRequest (line 2824) | func (m *MockEC2API) CreateKeyPairRequest(arg0 *ec2.CreateKeyPairInput...
    method CreateLaunchTemplate (line 2839) | func (m *MockEC2API) CreateLaunchTemplate(arg0 *ec2.CreateLaunchTempla...
    method CreateLaunchTemplateWithContext (line 2854) | func (m *MockEC2API) CreateLaunchTemplateWithContext(arg0 aws.Context,...
    method CreateLaunchTemplateRequest (line 2874) | func (m *MockEC2API) CreateLaunchTemplateRequest(arg0 *ec2.CreateLaunc...
    method CreateLaunchTemplateVersion (line 2889) | func (m *MockEC2API) CreateLaunchTemplateVersion(arg0 *ec2.CreateLaunc...
    method CreateLaunchTemplateVersionWithContext (line 2904) | func (m *MockEC2API) CreateLaunchTemplateVersionWithContext(arg0 aws.C...
    method CreateLaunchTemplateVersionRequest (line 2924) | func (m *MockEC2API) CreateLaunchTemplateVersionRequest(arg0 *ec2.Crea...
    method CreateLocalGatewayRoute (line 2939) | func (m *MockEC2API) CreateLocalGatewayRoute(arg0 *ec2.CreateLocalGate...
    method CreateLocalGatewayRouteWithContext (line 2954) | func (m *MockEC2API) CreateLocalGatewayRouteWithContext(arg0 aws.Conte...
    method CreateLocalGatewayRouteRequest (line 2974) | func (m *MockEC2API) CreateLocalGatewayRouteRequest(arg0 *ec2.CreateLo...
    method CreateLocalGatewayRouteTableVpcAssociation (line 2989) | func (m *MockEC2API) CreateLocalGatewayRouteTableVpcAssociation(arg0 *...
    method CreateLocalGatewayRouteTableVpcAssociationWithContext (line 3004) | func (m *MockEC2API) CreateLocalGatewayRouteTableVpcAssociationWithCon...
    method CreateLocalGatewayRouteTableVpcAssociationRequest (line 3024) | func (m *MockEC2API) CreateLocalGatewayRouteTableVpcAssociationRequest...
    method CreateNatGateway (line 3039) | func (m *MockEC2API) CreateNatGateway(arg0 *ec2.CreateNatGatewayInput)...
    method CreateNatGatewayWithContext (line 3054) | func (m *MockEC2API) CreateNatGatewayWithContext(arg0 aws.Context, arg...
    method CreateNatGatewayRequest (line 3074) | func (m *MockEC2API) CreateNatGatewayRequest(arg0 *ec2.CreateNatGatewa...
    method CreateNetworkAcl (line 3089) | func (m *MockEC2API) CreateNetworkAcl(arg0 *ec2.CreateNetworkAclInput)...
    method CreateNetworkAclWithContext (line 3104) | func (m *MockEC2API) CreateNetworkAclWithContext(arg0 aws.Context, arg...
    method CreateNetworkAclRequest (line 3124) | func (m *MockEC2API) CreateNetworkAclRequest(arg0 *ec2.CreateNetworkAc...
    method CreateNetworkAclEntry (line 3139) | func (m *MockEC2API) CreateNetworkAclEntry(arg0 *ec2.CreateNetworkAclE...
    method CreateNetworkAclEntryWithContext (line 3154) | func (m *MockEC2API) CreateNetworkAclEntryWithContext(arg0 aws.Context...
    method CreateNetworkAclEntryRequest (line 3174) | func (m *MockEC2API) CreateNetworkAclEntryRequest(arg0 *ec2.CreateNetw...
    method CreateNetworkInterface (line 3189) | func (m *MockEC2API) CreateNetworkInterface(arg0 *ec2.CreateNetworkInt...
    method CreateNetworkInterfaceWithContext (line 3204) | func (m *MockEC2API) CreateNetworkInterfaceWithContext(arg0 aws.Contex...
    method CreateNetworkInterfaceRequest (line 3224) | func (m *MockEC2API) CreateNetworkInterfaceRequest(arg0 *ec2.CreateNet...
    method CreateNetworkInterfacePermission (line 3239) | func (m *MockEC2API) CreateNetworkInterfacePermission(arg0 *ec2.Create...
    method CreateNetworkInterfacePermissionWithContext (line 3254) | func (m *MockEC2API) CreateNetworkInterfacePermissionWithContext(arg0 ...
    method CreateNetworkInterfacePermissionRequest (line 3274) | func (m *MockEC2API) CreateNetworkInterfacePermissionRequest(arg0 *ec2...
    method CreatePlacementGroup (line 3289) | func (m *MockEC2API) CreatePlacementGroup(arg0 *ec2.CreatePlacementGro...
    method CreatePlacementGroupWithContext (line 3304) | func (m *MockEC2API) CreatePlacementGroupWithContext(arg0 aws.Context,...
    method CreatePlacementGroupRequest (line 3324) | func (m *MockEC2API) CreatePlacementGroupRequest(arg0 *ec2.CreatePlace...
    method CreateReservedInstancesListing (line 3339) | func (m *MockEC2API) CreateReservedInstancesListing(arg0 *ec2.CreateRe...
    method CreateReservedInstancesListingWithContext (line 3354) | func (m *MockEC2API) CreateReservedInstancesListingWithContext(arg0 aw...
    method CreateReservedInstancesListingRequest (line 3374) | func (m *MockEC2API) CreateReservedInstancesListingRequest(arg0 *ec2.C...
    method CreateRoute (line 3389) | func (m *MockEC2API) CreateRoute(arg0 *ec2.CreateRouteInput) (*ec2.Cre...
    method CreateRouteWithContext (line 3404) | func (m *MockEC2API) CreateRouteWithContext(arg0 aws.Context, arg1 *ec...
    method CreateRouteRequest (line 3424) | func (m *MockEC2API) CreateRouteRequest(arg0 *ec2.CreateRouteInput) (*...
    method CreateRouteTable (line 3439) | func (m *MockEC2API) CreateRouteTable(arg0 *ec2.CreateRouteTableInput)...
    method CreateRouteTableWithContext (line 3454) | func (m *MockEC2API) CreateRouteTableWithContext(arg0 aws.Context, arg...
    method CreateRouteTableRequest (line 3474) | func (m *MockEC2API) CreateRouteTableRequest(arg0 *ec2.CreateRouteTabl...
    method CreateSecurityGroup (line 3489) | func (m *MockEC2API) CreateSecurityGroup(arg0 *ec2.CreateSecurityGroup...
    method CreateSecurityGroupWithContext (line 3504) | func (m *MockEC2API) CreateSecurityGroupWithContext(arg0 aws.Context, ...
    method CreateSecurityGroupRequest (line 3524) | func (m *MockEC2API) CreateSecurityGroupRequest(arg0 *ec2.CreateSecuri...
    method CreateSnapshot (line 3539) | func (m *MockEC2API) CreateSnapshot(arg0 *ec2.CreateSnapshotInput) (*e...
    method CreateSnapshotWithContext (line 3554) | func (m *MockEC2API) CreateSnapshotWithContext(arg0 aws.Context, arg1 ...
    method CreateSnapshotRequest (line 3574) | func (m *MockEC2API) CreateSnapshotRequest(arg0 *ec2.CreateSnapshotInp...
    method CreateSnapshots (line 3589) | func (m *MockEC2API) CreateSnapshots(arg0 *ec2.CreateSnapshotsInput) (...
    method CreateSnapshotsWithContext (line 3604) | func (m *MockEC2API) CreateSnapshotsWithContext(arg0 aws.Context, arg1...
    method CreateSnapshotsRequest (line 3624) | func (m *MockEC2API) CreateSnapshotsRequest(arg0 *ec2.CreateSnapshotsI...
    method CreateSpotDatafeedSubscription (line 3639) | func (m *MockEC2API) CreateSpotDatafeedSubscription(arg0 *ec2.CreateSp...
    method CreateSpotDatafeedSubscriptionWithContext (line 3654) | func (m *MockEC2API) CreateSpotDatafeedSubscriptionWithContext(arg0 aw...
    method CreateSpotDatafeedSubscriptionRequest (line 3674) | func (m *MockEC2API) CreateSpotDatafeedSubscriptionRequest(arg0 *ec2.C...
    method CreateSubnet (line 3689) | func (m *MockEC2API) CreateSubnet(arg0 *ec2.CreateSubnetInput) (*ec2.C...
    method CreateSubnetWithContext (line 3704) | func (m *MockEC2API) CreateSubnetWithContext(arg0 aws.Context, arg1 *e...
    method CreateSubnetRequest (line 3724) | func (m *MockEC2API) CreateSubnetRequest(arg0 *ec2.CreateSubnetInput) ...
    method CreateTags (line 3739) | func (m *MockEC2API) CreateTags(arg0 *ec2.CreateTagsInput) (*ec2.Creat...
    method CreateTagsWithContext (line 3754) | func (m *MockEC2API) CreateTagsWithContext(arg0 aws.Context, arg1 *ec2...
    method CreateTagsRequest (line 3774) | func (m *MockEC2API) CreateTagsRequest(arg0 *ec2.CreateTagsInput) (*re...
    method CreateTrafficMirrorFilter (line 3789) | func (m *MockEC2API) CreateTrafficMirrorFilter(arg0 *ec2.CreateTraffic...
    method CreateTrafficMirrorFilterWithContext (line 3804) | func (m *MockEC2API) CreateTrafficMirrorFilterWithContext(arg0 aws.Con...
    method CreateTrafficMirrorFilterRequest (line 3824) | func (m *MockEC2API) CreateTrafficMirrorFilterRequest(arg0 *ec2.Create...
    method CreateTrafficMirrorFilterRule (line 3839) | func (m *MockEC2API) CreateTrafficMirrorFilterRule(arg0 *ec2.CreateTra...
    method CreateTrafficMirrorFilterRuleWithContext (line 3854) | func (m *MockEC2API) CreateTrafficMirrorFilterRuleWithContext(arg0 aws...
    method CreateTrafficMirrorFilterRuleRequest (line 3874) | func (m *MockEC2API) CreateTrafficMirrorFilterRuleRequest(arg0 *ec2.Cr...
    method CreateTrafficMirrorSession (line 3889) | func (m *MockEC2API) CreateTrafficMirrorSession(arg0 *ec2.CreateTraffi...
    method CreateTrafficMirrorSessionWithContext (line 3904) | func (m *MockEC2API) CreateTrafficMirrorSessionWithContext(arg0 aws.Co...
    method CreateTrafficMirrorSessionRequest (line 3924) | func (m *MockEC2API) CreateTrafficMirrorSessionRequest(arg0 *ec2.Creat...
    method CreateTrafficMirrorTarget (line 3939) | func (m *MockEC2API) CreateTrafficMirrorTarget(arg0 *ec2.CreateTraffic...
    method CreateTrafficMirrorTargetWithContext (line 3954) | func (m *MockEC2API) CreateTrafficMirrorTargetWithContext(arg0 aws.Con...
    method CreateTrafficMirrorTargetRequest (line 3974) | func (m *MockEC2API) CreateTrafficMirrorTargetRequest(arg0 *ec2.Create...
    method CreateTransitGateway (line 3989) | func (m *MockEC2API) CreateTransitGateway(arg0 *ec2.CreateTransitGatew...
    method CreateTransitGatewayWithContext (line 4004) | func (m *MockEC2API) CreateTransitGatewayWithContext(arg0 aws.Context,...
    method CreateTransitGatewayRequest (line 4024) | func (m *MockEC2API) CreateTransitGatewayRequest(arg0 *ec2.CreateTrans...
    method CreateTransitGatewayMulticastDomain (line 4039) | func (m *MockEC2API) CreateTransitGatewayMulticastDomain(arg0 *ec2.Cre...
    method CreateTransitGatewayMulticastDomainWithContext (line 4054) | func (m *MockEC2API) CreateTransitGatewayMulticastDomainWithContext(ar...
    method CreateTransitGatewayMulticastDomainRequest (line 4074) | func (m *MockEC2API) CreateTransitGatewayMulticastDomainRequest(arg0 *...
    method CreateTransitGatewayPeeringAttachment (line 4089) | func (m *MockEC2API) CreateTransitGatewayPeeringAttachment(arg0 *ec2.C...
    method CreateTransitGatewayPeeringAttachmentWithContext (line 4104) | func (m *MockEC2API) CreateTransitGatewayPeeringAttachmentWithContext(...
    method CreateTransitGatewayPeeringAttachmentRequest (line 4124) | func (m *MockEC2API) CreateTransitGatewayPeeringAttachmentRequest(arg0...
    method CreateTransitGatewayRoute (line 4139) | func (m *MockEC2API) CreateTransitGatewayRoute(arg0 *ec2.CreateTransit...
    method CreateTransitGatewayRouteWithContext (line 4154) | func (m *MockEC2API) CreateTransitGatewayRouteWithContext(arg0 aws.Con...
    method CreateTransitGatewayRouteRequest (line 4174) | func (m *MockEC2API) CreateTransitGatewayRouteRequest(arg0 *ec2.Create...
    method CreateTransitGatewayRouteTable (line 4189) | func (m *MockEC2API) CreateTransitGatewayRouteTable(arg0 *ec2.CreateTr...
    method CreateTransitGatewayRouteTableWithContext (line 4204) | func (m *MockEC2API) CreateTransitGatewayRouteTableWithContext(arg0 aw...
    method CreateTransitGatewayRouteTableRequest (line 4224) | func (m *MockEC2API) CreateTransitGatewayRouteTableRequest(arg0 *ec2.C...
    method CreateTransitGatewayVpcAttachment (line 4239) | func (m *MockEC2API) CreateTransitGatewayVpcAttachment(arg0 *ec2.Creat...
    method CreateTransitGatewayVpcAttachmentWithContext (line 4254) | func (m *MockEC2API) CreateTransitGatewayVpcAttachmentWithContext(arg0...
    method CreateTransitGatewayVpcAttachmentRequest (line 4274) | func (m *MockEC2API) CreateTransitGatewayVpcAttachmentRequest(arg0 *ec...
    method CreateVolume (line 4289) | func (m *MockEC2API) CreateVolume(arg0 *ec2.CreateVolumeInput) (*ec2.V...
    method CreateVolumeWithContext (line 4304) | func (m *MockEC2API) CreateVolumeWithContext(arg0 aws.Context, arg1 *e...
    method CreateVolumeRequest (line 4324) | func (m *MockEC2API) CreateVolumeRequest(arg0 *ec2.CreateVolumeInput) ...
    method CreateVpc (line 4339) | func (m *MockEC2API) CreateVpc(arg0 *ec2.CreateVpcInput) (*ec2.CreateV...
    method CreateVpcWithContext (line 4354) | func (m *MockEC2API) CreateVpcWithContext(arg0 aws.Context, arg1 *ec2....
    method CreateVpcRequest (line 4374) | func (m *MockEC2API) CreateVpcRequest(arg0 *ec2.CreateVpcInput) (*requ...
    method CreateVpcEndpoint (line 4389) | func (m *MockEC2API) CreateVpcEndpoint(arg0 *ec2.CreateVpcEndpointInpu...
    method CreateVpcEndpointWithContext (line 4404) | func (m *MockEC2API) CreateVpcEndpointWithContext(arg0 aws.Context, ar...
    method CreateVpcEndpointRequest (line 4424) | func (m *MockEC2API) CreateVpcEndpointRequest(arg0 *ec2.CreateVpcEndpo...
    method CreateVpcEndpointConnectionNotification (line 4439) | func (m *MockEC2API) CreateVpcEndpointConnectionNotification(arg0 *ec2...
    method CreateVpcEndpointConnectionNotificationWithContext (line 4454) | func (m *MockEC2API) CreateVpcEndpointConnectionNotificationWithContex...
    method CreateVpcEndpointConnectionNotificationRequest (line 4474) | func (m *MockEC2API) CreateVpcEndpointConnectionNotificationRequest(ar...
    method CreateVpcEndpointServiceConfiguration (line 4489) | func (m *MockEC2API) CreateVpcEndpointServiceConfiguration(arg0 *ec2.C...
    method CreateVpcEndpointServiceConfigurationWithContext (line 4504) | func (m *MockEC2API) CreateVpcEndpointServiceConfigurationWithContext(...
    method CreateVpcEndpointServiceConfigurationRequest (line 4524) | func (m *MockEC2API) CreateVpcEndpointServiceConfigurationRequest(arg0...
    method CreateVpcPeeringConnection (line 4539) | func (m *MockEC2API) CreateVpcPeeringConnection(arg0 *ec2.CreateVpcPee...
    method CreateVpcPeeringConnectionWithContext (line 4554) | func (m *MockEC2API) CreateVpcPeeringConnectionWithContext(arg0 aws.Co...
    method CreateVpcPeeringConnectionRequest (line 4574) | func (m *MockEC2API) CreateVpcPeeringConnectionRequest(arg0 *ec2.Creat...
    method CreateVpnConnection (line 4589) | func (m *MockEC2API) CreateVpnConnection(arg0 *ec2.CreateVpnConnection...
    method CreateVpnConnectionWithContext (line 4604) | func (m *MockEC2API) CreateVpnConnectionWithContext(arg0 aws.Context, ...
    method CreateVpnConnectionRequest (line 4624) | func (m *MockEC2API) CreateVpnConnectionRequest(arg0 *ec2.CreateVpnCon...
    method CreateVpnConnectionRoute (line 4639) | func (m *MockEC2API) CreateVpnConnectionRoute(arg0 *ec2.CreateVpnConne...
    method CreateVpnConnectionRouteWithContext (line 4654) | func (m *MockEC2API) CreateVpnConnectionRouteWithContext(arg0 aws.Cont...
    method CreateVpnConnectionRouteRequest (line 4674) | func (m *MockEC2API) CreateVpnConnectionRouteRequest(arg0 *ec2.CreateV...
    method CreateVpnGateway (line 4689) | func (m *MockEC2API) CreateVpnGateway(arg0 *ec2.CreateVpnGatewayInput)...
    method CreateVpnGatewayWithContext (line 4704) | func (m *MockEC2API) CreateVpnGatewayWithContext(arg0 aws.Context, arg...
    method CreateVpnGatewayRequest (line 4724) | func (m *MockEC2API) CreateVpnGatewayRequest(arg0 *ec2.CreateVpnGatewa...
    method DeleteClientVpnEndpoint (line 4739) | func (m *MockEC2API) DeleteClientVpnEndpoint(arg0 *ec2.DeleteClientVpn...
    method DeleteClientVpnEndpointWithContext (line 4754) | func (m *MockEC2API) DeleteClientVpnEndpointWithContext(arg0 aws.Conte...
    method DeleteClientVpnEndpointRequest (line 4774) | func (m *MockEC2API) DeleteClientVpnEndpointRequest(arg0 *ec2.DeleteCl...
    method DeleteClientVpnRoute (line 4789) | func (m *MockEC2API) DeleteClientVpnRoute(arg0 *ec2.DeleteClientVpnRou...
    method DeleteClientVpnRouteWithContext (line 4804) | func (m *MockEC2API) DeleteClientVpnRouteWithContext(arg0 aws.Context,...
    method DeleteClientVpnRouteRequest (line 4824) | func (m *MockEC2API) DeleteClientVpnRouteRequest(arg0 *ec2.DeleteClien...
    method DeleteCustomerGateway (line 4839) | func (m *MockEC2API) DeleteCustomerGateway(arg0 *ec2.DeleteCustomerGat...
    method DeleteCustomerGatewayWithContext (line 4854) | func (m *MockEC2API) DeleteCustomerGatewayWithContext(arg0 aws.Context...
    method DeleteCustomerGatewayRequest (line 4874) | func (m *MockEC2API) DeleteCustomerGatewayRequest(arg0 *ec2.DeleteCust...
    method DeleteDhcpOptions (line 4889) | func (m *MockEC2API) DeleteDhcpOptions(arg0 *ec2.DeleteDhcpOptionsInpu...
    method DeleteDhcpOptionsWithContext (line 4904) | func (m *MockEC2API) DeleteDhcpOptionsWithContext(arg0 aws.Context, ar...
    method DeleteDhcpOptionsRequest (line 4924) | func (m *MockEC2API) DeleteDhcpOptionsRequest(arg0 *ec2.DeleteDhcpOpti...
    method DeleteEgressOnlyInternetGateway (line 4939) | func (m *MockEC2API) DeleteEgressOnlyInternetGateway(arg0 *ec2.DeleteE...
    method DeleteEgressOnlyInternetGatewayWithContext (line 4954) | func (m *MockEC2API) DeleteEgressOnlyInternetGatewayWithContext(arg0 a...
    method DeleteEgressOnlyInternetGatewayRequest (line 4974) | func (m *MockEC2API) DeleteEgressOnlyInternetGatewayRequest(arg0 *ec2....
    method DeleteFleets (line 4989) | func (m *MockEC2API) DeleteFleets(arg0 *ec2.DeleteFleetsInput) (*ec2.D...
    method DeleteFleetsWithContext (line 5004) | func (m *MockEC2API) DeleteFleetsWithContext(arg0 aws.Context, arg1 *e...
    method DeleteFleetsRequest (line 5024) | func (m *MockEC2API) DeleteFleetsRequest(arg0 *ec2.DeleteFleetsInput) ...
    method DeleteFlowLogs (line 5039) | func (m *MockEC2API) DeleteFlowLogs(arg0 *ec2.DeleteFlowLogsInput) (*e...
    method DeleteFlowLogsWithContext (line 5054) | func (m *MockEC2API) DeleteFlowLogsWithContext(arg0 aws.Context, arg1 ...
    method DeleteFlowLogsRequest (line 5074) | func (m *MockEC2API) DeleteFlowLogsRequest(arg0 *ec2.DeleteFlowLogsInp...
    method DeleteFpgaImage (line 5089) | func (m *MockEC2API) DeleteFpgaImage(arg0 *ec2.DeleteFpgaImageInput) (...
    method DeleteFpgaImageWithContext (line 5104) | func (m *MockEC2API) DeleteFpgaImageWithContext(arg0 aws.Context, arg1...
    method DeleteFpgaImageRequest (line 5124) | func (m *MockEC2API) DeleteFpgaImageRequest(arg0 *ec2.DeleteFpgaImageI...
    method DeleteInternetGateway (line 5139) | func (m *MockEC2API) DeleteInternetGateway(arg0 *ec2.DeleteInternetGat...
    method DeleteInternetGatewayWithContext (line 5154) | func (m *MockEC2API) DeleteInternetGatewayWithContext(arg0 aws.Context...
    method DeleteInternetGatewayRequest (line 5174) | func (m *MockEC2API) DeleteInternetGatewayRequest(arg0 *ec2.DeleteInte...
    method DeleteKeyPair (line 5189) | func (m *MockEC2API) DeleteKeyPair(arg0 *ec2.DeleteKeyPairInput) (*ec2...
    method DeleteKeyPairWithContext (line 5204) | func (m *MockEC2API) DeleteKeyPairWithContext(arg0 aws.Context, arg1 *...
    method DeleteKeyPairRequest (line 5224) | func (m *MockEC2API) DeleteKeyPairRequest(arg0 *ec2.DeleteKeyPairInput...
    method DeleteLaunchTemplate (line 5239) | func (m *MockEC2API) DeleteLaunchTemplate(arg0 *ec2.DeleteLaunchTempla...
    method DeleteLaunchTemplateWithContext (line 5254) | func (m *MockEC2API) DeleteLaunchTemplateWithContext(arg0 aws.Context,...
    method DeleteLaunchTemplateRequest (line 5274) | func (m *MockEC2API) DeleteLaunchTemplateRequest(arg0 *ec2.DeleteLaunc...
    method DeleteLaunchTemplateVersions (line 5289) | func (m *MockEC2API) DeleteLaunchTemplateVersions(arg0 *ec2.DeleteLaun...
    method DeleteLaunchTemplateVersionsWithContext (line 5304) | func (m *MockEC2API) DeleteLaunchTemplateVersionsWithContext(arg0 aws....
    method DeleteLaunchTemplateVersionsRequest (line 5324) | func (m *MockEC2API) DeleteLaunchTemplateVersionsRequest(arg0 *ec2.Del...
    method DeleteLocalGatewayRoute (line 5339) | func (m *MockEC2API) DeleteLocalGatewayRoute(arg0 *ec2.DeleteLocalGate...
    method DeleteLocalGatewayRouteWithContext (line 5354) | func (m *MockEC2API) DeleteLocalGatewayRouteWithContext(arg0 aws.Conte...
    method DeleteLocalGatewayRouteRequest (line 5374) | func (m *MockEC2API) DeleteLocalGatewayRouteRequest(arg0 *ec2.DeleteLo...
    method DeleteLocalGatewayRouteTableVpcAssociation (line 5389) | func (m *MockEC2API) DeleteLocalGatewayRouteTableVpcAssociation(arg0 *...
    method DeleteLocalGatewayRouteTableVpcAssociationWithContext (line 5404) | func (m *MockEC2API) DeleteLocalGatewayRouteTableVpcAssociationWithCon...
    method DeleteLocalGatewayRouteTableVpcAssociationRequest (line 5424) | func (m *MockEC2API) DeleteLocalGatewayRouteTableVpcAssociationRequest...
    method DeleteNatGateway (line 5439) | func (m *MockEC2API) DeleteNatGateway(arg0 *ec2.DeleteNatGatewayInput)...
    method DeleteNatGatewayWithContext (line 5454) | func (m *MockEC2API) DeleteNatGatewayWithContext(arg0 aws.Context, arg...
    method DeleteNatGatewayRequest (line 5474) | func (m *MockEC2API) DeleteNatGatewayRequest(arg0 *ec2.DeleteNatGatewa...
    method DeleteNetworkAcl (line 5489) | func (m *MockEC2API) DeleteNetworkAcl(arg0 *ec2.DeleteNetworkAclInput)...
    method DeleteNetworkAclWithContext (line 5504) | func (m *MockEC2API) DeleteNetworkAclWithContext(arg0 aws.Context, arg...
    method DeleteNetworkAclRequest (line 5524) | func (m *MockEC2API) DeleteNetworkAclRequest(arg0 *ec2.DeleteNetworkAc...
    method DeleteNetworkAclEntry (line 5539) | func (m *MockEC2API) DeleteNetworkAclEntry(arg0 *ec2.DeleteNetworkAclE...
    method DeleteNetworkAclEntryWithContext (line 5554) | func (m *MockEC2API) DeleteNetworkAclEntryWithContext(arg0 aws.Context...
    method DeleteNetworkAclEntryRequest (line 5574) | func (m *MockEC2API) DeleteNetworkAclEntryRequest(arg0 *ec2.DeleteNetw...
    method DeleteNetworkInterface (line 5589) | func (m *MockEC2API) DeleteNetworkInterface(arg0 *ec2.DeleteNetworkInt...
    method DeleteNetworkInterfaceWithContext (line 5604) | func (m *MockEC2API) DeleteNetworkInterfaceWithContext(arg0 aws.Contex...
    method DeleteNetworkInterfaceRequest (line 5624) | func (m *MockEC2API) DeleteNetworkInterfaceRequest(arg0 *ec2.DeleteNet...
    method DeleteNetworkInterfacePermission (line 5639) | func (m *MockEC2API) DeleteNetworkInterfacePermission(arg0 *ec2.Delete...
    method DeleteNetworkInterfacePermissionWithContext (line 5654) | func (m *MockEC2API) DeleteNetworkInterfacePermissionWithContext(arg0 ...
    method DeleteNetworkInterfacePermissionRequest (line 5674) | func (m *MockEC2API) DeleteNetworkInterfacePermissionRequest(arg0 *ec2...
    method DeletePlacementGroup (line 5689) | func (m *MockEC2API) DeletePlacementGroup(arg0 *ec2.DeletePlacementGro...
    method DeletePlacementGroupWithContext (line 5704) | func (m *MockEC2API) DeletePlacementGroupWithContext(arg0 aws.Context,...
    method DeletePlacementGroupRequest (line 5724) | func (m *MockEC2API) DeletePlacementGroupRequest(arg0 *ec2.DeletePlace...
    method DeleteQueuedReservedInstances (line 5739) | func (m *MockEC2API) DeleteQueuedReservedInstances(arg0 *ec2.DeleteQue...
    method DeleteQueuedReservedInstancesWithContext (line 5754) | func (m *MockEC2API) DeleteQueuedReservedInstancesWithContext(arg0 aws...
    method DeleteQueuedReservedInstancesRequest (line 5774) | func (m *MockEC2API) DeleteQueuedReservedInstancesRequest(arg0 *ec2.De...
    method DeleteRoute (line 5789) | func (m *MockEC2API) DeleteRoute(arg0 *ec2.DeleteRouteInput) (*ec2.Del...
    method DeleteRouteWithContext (line 5804) | func (m *MockEC2API) DeleteRouteWithContext(arg0 aws.Context, arg1 *ec...
    method DeleteRouteRequest (line 5824) | func (m *MockEC2API) DeleteRouteRequest(arg0 *ec2.DeleteRouteInput) (*...
    method DeleteRouteTable (line 5839) | func (m *MockEC2API) DeleteRouteTable(arg0 *ec2.DeleteRouteTableInput)...
    method DeleteRouteTableWithContext (line 5854) | func (m *MockEC2API) DeleteRouteTableWithContext(arg0 aws.Context, arg...
    method DeleteRouteTableRequest (line 5874) | func (m *MockEC2API) DeleteRouteTableRequest(arg0 *ec2.DeleteRouteTabl...
    method DeleteSecurityGroup (line 5889) | func (m *MockEC2API) DeleteSecurityGroup(arg0 *ec2.DeleteSecurityGroup...
    method DeleteSecurityGroupWithContext (line 5904) | func (m *MockEC2API) DeleteSecurityGroupWithContext(arg0 aws.Context, ...
    method DeleteSecurityGroupRequest (line 5924) | func (m *MockEC2API) DeleteSecurityGroupRequest(arg0 *ec2.DeleteSecuri...
    method DeleteSnapshot (line 5939) | func (m *MockEC2API) DeleteSnapshot(arg0 *ec2.DeleteSnapshotInput) (*e...
    method DeleteSnapshotWithContext (line 5954) | func (m *MockEC2API) DeleteSnapshotWithContext(arg0 aws.Context, arg1 ...
    method DeleteSnapshotRequest (line 5974) | func (m *MockEC2API) DeleteSnapshotRequest(arg0 *ec2.DeleteSnapshotInp...
    method DeleteSpotDatafeedSubscription (line 5989) | func (m *MockEC2API) DeleteSpotDatafeedSubscription(arg0 *ec2.DeleteSp...
    method DeleteSpotDatafeedSubscriptionWithContext (line 6004) | func (m *MockEC2API) DeleteSpotDatafeedSubscriptionWithContext(arg0 aw...
    method DeleteSpotDatafeedSubscriptionRequest (line 6024) | func (m *MockEC2API) DeleteSpotDatafeedSubscriptionRequest(arg0 *ec2.D...
    method DeleteSubnet (line 6039) | func (m *MockEC2API) DeleteSubnet(arg0 *ec2.DeleteSubnetInput) (*ec2.D...
    method DeleteSubnetWithContext (line 6054) | func (m *MockEC2API) DeleteSubnetWithContext(arg0 aws.Context, arg1 *e...
    method DeleteSubnetRequest (line 6074) | func (m *MockEC2API) DeleteSubnetRequest(arg0 *ec2.DeleteSubnetInput) ...
    method DeleteTags (line 6089) | func (m *MockEC2API) DeleteTags(arg0 *ec2.DeleteTagsInput) (*ec2.Delet...
    method DeleteTagsWithContext (line 6104) | func (m *MockEC2API) DeleteTagsWithContext(arg0 aws.Context, arg1 *ec2...
    method DeleteTagsRequest (line 6124) | func (m *MockEC2API) DeleteTagsRequest(arg0 *ec2.DeleteTagsInput) (*re...
    method DeleteTrafficMirrorFilter (line 6139) | func (m *MockEC2API) DeleteTrafficMirrorFilter(arg0 *ec2.DeleteTraffic...
    method DeleteTrafficMirrorFilterWithContext (line 6154) | func (m *MockEC2API) DeleteTrafficMirrorFilterWithContext(arg0 aws.Con...
    method DeleteTrafficMirrorFilterRequest (line 6174) | func (m *MockEC2API) DeleteTrafficMirrorFilterRequest(arg0 *ec2.Delete...
    method DeleteTrafficMirrorFilterRule (line 6189) | func (m *MockEC2API) DeleteTrafficMirrorFilterRule(arg0 *ec2.DeleteTra...
    method DeleteTrafficMirrorFilterRuleWithContext (line 6204) | func (m *MockEC2API) DeleteTrafficMirrorFilterRuleWithContext(arg0 aws...
    method DeleteTrafficMirrorFilterRuleRequest (line 6224) | func (m *MockEC2API) DeleteTrafficMirrorFilterRuleRequest(arg0 *ec2.De...
    method DeleteTrafficMirrorSession (line 6239) | func (m *MockEC2API) DeleteTrafficMirrorSession(arg0 *ec2.DeleteTraffi...
    method DeleteTrafficMirrorSessionWithContext (line 6254) | func (m *MockEC2API) DeleteTrafficMirrorSessionWithContext(arg0 aws.Co...
    method DeleteTrafficMirrorSessionRequest (line 6274) | func (m *MockEC2API) DeleteTrafficMirrorSessionRequest(arg0 *ec2.Delet...
    method DeleteTrafficMirrorTarget (line 6289) | func (m *MockEC2API) DeleteTrafficMirrorTarget(arg0 *ec2.DeleteTraffic...
    method DeleteTrafficMirrorTargetWithContext (line 6304) | func (m *MockEC2API) DeleteTrafficMirrorTargetWithContext(arg0 aws.Con...
    method DeleteTrafficMirrorTargetRequest (line 6324) | func (m *MockEC2API) DeleteTrafficMirrorTargetRequest(arg0 *ec2.Delete...
    method DeleteTransitGateway (line 6339) | func (m *MockEC2API) DeleteTransitGateway(arg0 *ec2.DeleteTransitGatew...
    method DeleteTransitGatewayWithContext (line 6354) | func (m *MockEC2API) DeleteTransitGatewayWithContext(arg0 aws.Context,...
    method DeleteTransitGatewayRequest (line 6374) | func (m *MockEC2API) DeleteTransitGatewayRequest(arg0 *ec2.DeleteTrans...
    method DeleteTransitGatewayMulticastDomain (line 6389) | func (m *MockEC2API) DeleteTransitGatewayMulticastDomain(arg0 *ec2.Del...
    method DeleteTransitGatewayMulticastDomainWithContext (line 6404) | func (m *MockEC2API) DeleteTransitGatewayMulticastDomainWithContext(ar...
    method DeleteTransitGatewayMulticastDomainRequest (line 6424) | func (m *MockEC2API) DeleteTransitGatewayMulticastDomainRequest(arg0 *...
    method DeleteTransitGatewayPeeringAttachment (line 6439) | func (m *MockEC2API) DeleteTransitGatewayPeeringAttachment(arg0 *ec2.D...
    method DeleteTransitGatewayPeeringAttachmentWithContext (line 6454) | func (m *MockEC2API) DeleteTransitGatewayPeeringAttachmentWithContext(...
    method DeleteTransitGatewayPeeringAttachmentRequest (line 6474) | func (m *MockEC2API) DeleteTransitGatewayPeeringAttachmentRequest(arg0...
    method DeleteTransitGatewayRoute (line 6489) | func (m *MockEC2API) DeleteTransitGatewayRoute(arg0 *ec2.DeleteTransit...
    method DeleteTransitGatewayRouteWithContext (line 6504) | func (m *MockEC2API) DeleteTransitGatewayRouteWithContext(arg0 aws.Con...
    method DeleteTransitGatewayRouteRequest (line 6524) | func (m *MockEC2API) DeleteTransitGatewayRouteRequest(arg0 *ec2.Delete...
    method DeleteTransitGatewayRouteTable (line 6539) | func (m *MockEC2API) DeleteTransitGatewayRouteTable(arg0 *ec2.DeleteTr...
    method DeleteTransitGatewayRouteTableWithContext (line 6554) | func (m *MockEC2API) DeleteTransitGatewayRouteTableWithContext(arg0 aw...
    method DeleteTransitGatewayRouteTableRequest (line 6574) | func (m *MockEC2API) DeleteTransitGatewayRouteTableRequest(arg0 *ec2.D...
    method DeleteTransitGatewayVpcAttachment (line 6589) | func (m *MockEC2API) DeleteTransitGatewayVpcAttachment(arg0 *ec2.Delet...
    method DeleteTransitGatewayVpcAttachmentWithContext (line 6604) | func (m *MockEC2API) DeleteTransitGatewayVpcAttachmentWithContext(arg0...
    method DeleteTransitGatewayVpcAttachmentRequest (line 6624) | func (m *MockEC2API) DeleteTransitGatewayVpcAttachmentRequest(arg0 *ec...
    method DeleteVolume (line 6639) | func (m *MockEC2API) DeleteVolume(arg0 *ec2.DeleteVolumeInput) (*ec2.D...
    method DeleteVolumeWithContext (line 6654) | func (m *MockEC2API) DeleteVolumeWithContext(arg0 aws.Context, arg1 *e...
    method DeleteVolumeRequest (line 6674) | func (m *MockEC2API) DeleteVolumeRequest(arg0 *ec2.DeleteVolumeInput) ...
    method DeleteVpc (line 6689) | func (m *MockEC2API) DeleteVpc(arg0 *ec2.DeleteVpcInput) (*ec2.DeleteV...
    method DeleteVpcWithContext (line 6704) | func (m *MockEC2API) DeleteVpcWithContext(arg0 aws.Context, arg1 *ec2....
    method DeleteVpcRequest (line 6724) | func (m *MockEC2API) DeleteVpcRequest(arg0 *ec2.DeleteVpcInput) (*requ...
    method DeleteVpcEndpointConnectionNotifications (line 6739) | func (m *MockEC2API) DeleteVpcEndpointConnectionNotifications(arg0 *ec...
    method DeleteVpcEndpointConnectionNotificationsWithContext (line 6754) | func (m *MockEC2API) DeleteVpcEndpointConnectionNotificationsWithConte...
    method DeleteVpcEndpointConnectionNotificationsRequest (line 6774) | func (m *MockEC2API) DeleteVpcEndpointConnectionNotificationsRequest(a...
    method DeleteVpcEndpointServiceConfigurations (line 6789) | func (m *MockEC2API) DeleteVpcEndpointServiceConfigurations(arg0 *ec2....
    method DeleteVpcEndpointServiceConfigurationsWithContext (line 6804) | func (m *MockEC2API) DeleteVpcEndpointServiceConfigurationsWithContext...
    method DeleteVpcEndpointServiceConfigurationsRequest (line 6824) | func (m *MockEC2API) DeleteVpcEndpointServiceConfigurationsRequest(arg...
    method DeleteVpcEndpoints (line 6839) | func (m *MockEC2API) DeleteVpcEndpoints(arg0 *ec2.DeleteVpcEndpointsIn...
    method DeleteVpcEndpointsWithContext (line 6854) | func (m *MockEC2API) DeleteVpcEndpointsWithContext(arg0 aws.Context, a...
    method DeleteVpcEndpointsRequest (line 6874) | func (m *MockEC2API) DeleteVpcEndpointsRequest(arg0 *ec2.DeleteVpcEndp...
    method DeleteVpcPeeringConnection (line 6889) | func (m *MockEC2API) DeleteVpcPeeringConnection(arg0 *ec2.DeleteVpcPee...
    method DeleteVpcPeeringConnectionWithContext (line 6904) | func (m *MockEC2API) DeleteVpcPeeringConnectionWithContext(arg0 aws.Co...
    method DeleteVpcPeeringConnectionRequest (line 6924) | func (m *MockEC2API) DeleteVpcPeeringConnectionRequest(arg0 *ec2.Delet...
    method DeleteVpnConnection (line 6939) | func (m *MockEC2API) DeleteVpnConnection(arg0 *ec2.DeleteVpnConnection...
    method DeleteVpnConnectionWithContext (line 6954) | func (m *MockEC2API) DeleteVpnConnectionWithContext(arg0 aws.Context, ...
    method DeleteVpnConnectionRequest (line 6974) | func (m *MockEC2API) DeleteVpnConnectionRequest(arg0 *ec2.DeleteVpnCon...
    method DeleteVpnConnectionRoute (line 6989) | func (m *MockEC2API) DeleteVpnConnectionRoute(arg0 *ec2.DeleteVpnConne...
    method DeleteVpnConnectionRouteWithContext (line 7004) | func (m *MockEC2API) DeleteVpnConnectionRouteWithContext(arg0 aws.Cont...
    method DeleteVpnConnectionRouteRequest (line 7024) | func (m *MockEC2API) DeleteVpnConnectionRouteRequest(arg0 *ec2.DeleteV...
    method DeleteVpnGateway (line 7039) | func (m *MockEC2API) DeleteVpnGateway(arg0 *ec2.DeleteVpnGatewayInput)...
    method DeleteVpnGatewayWithContext (line 7054) | func (m *MockEC2API) DeleteVpnGatewayWithContext(arg0 aws.Context, arg...
    method DeleteVpnGatewayRequest (line 7074) | func (m *MockEC2API) DeleteVpnGatewayRequest(arg0 *ec2.DeleteVpnGatewa...
    method DeprovisionByoipCidr (line 7089) | func (m *MockEC2API) DeprovisionByoipCidr(arg0 *ec2.DeprovisionByoipCi...
    method DeprovisionByoipCidrWithContext (line 7104) | func (m *MockEC2API) DeprovisionByoipCidrWithContext(arg0 aws.Context,...
    method DeprovisionByoipCidrRequest (line 7124) | func (m *MockEC2API) DeprovisionByoipCidrRequest(arg0 *ec2.Deprovision...
    method DeregisterImage (line 7139) | func (m *MockEC2API) DeregisterImage(arg0 *ec2.DeregisterImageInput) (...
    method DeregisterImageWithContext (line 7154) | func (m *MockEC2API) DeregisterImageWithContext(arg0 aws.Context, arg1...
    method DeregisterImageRequest (line 7174) | func (m *MockEC2API) DeregisterImageRequest(arg0 *ec2.DeregisterImageI...
    method DeregisterInstanceEventNotificationAttributes (line 7189) | func (m *MockEC2API) DeregisterInstanceEventNotificationAttributes(arg...
    method DeregisterInstanceEventNotificationAttributesWithContext (line 7204) | func (m *MockEC2API) DeregisterInstanceEventNotificationAttributesWith...
    method DeregisterInstanceEventNotificationAttributesRequest (line 7224) | func (m *MockEC2API) DeregisterInstanceEventNotificationAttributesRequ...
    method DeregisterTransitGatewayMulticastGroupMembers (line 7239) | func (m *MockEC2API) DeregisterTransitGatewayMulticastGroupMembers(arg...
    method DeregisterTransitGatewayMulticastGroupMembersWithContext (line 7254) | func (m *MockEC2API) DeregisterTransitGatewayMulticastGroupMembersWith...
    method DeregisterTransitGatewayMulticastGroupMembersRequest (line 7274) | func (m *MockEC2API) DeregisterTransitGatewayMulticastGroupMembersRequ...
    method DeregisterTransitGatewayMulticastGroupSources (line 7289) | func (m *MockEC2API) DeregisterTransitGatewayMulticastGroupSources(arg...
    method DeregisterTransitGatewayMulticastGroupSourcesWithContext (line 7304) | func (m *MockEC2API) DeregisterTransitGatewayMulticastGroupSourcesWith...
    method DeregisterTransitGatewayMulticastGroupSourcesRequest (line 7324) | func (m *MockEC2API) DeregisterTransitGatewayMulticastGroupSourcesRequ...
    method DescribeAccountAttributes (line 7339) | func (m *MockEC2API) DescribeAccountAttributes(arg0 *ec2.DescribeAccou...
    method DescribeAccountAttributesWithContext (line 7354) | func (m *MockEC2API) DescribeAccountAttributesWithContext(arg0 aws.Con...
    method DescribeAccountAttributesRequest (line 7374) | func (m *MockEC2API) DescribeAccountAttributesRequest(arg0 *ec2.Descri...
    method DescribeAddresses (line 7389) | func (m *MockEC2API) DescribeAddresses(arg0 *ec2.DescribeAddressesInpu...
    method DescribeAddressesWithContext (line 7404) | func (m *MockEC2API) DescribeAddressesWithContext(arg0 aws.Context, ar...
    method DescribeAddressesRequest (line 7424) | func (m *MockEC2API) DescribeAddressesRequest(arg0 *ec2.DescribeAddres...
    method DescribeAggregateIdFormat (line 7439) | func (m *MockEC2API) DescribeAggregateIdFormat(arg0 *ec2.DescribeAggre...
    method DescribeAggregateIdFormatWithContext (line 7454) | func (m *MockEC2API) DescribeAggregateIdFormatWithContext(arg0 aws.Con...
    method DescribeAggregateIdFormatRequest (line 7474) | func (m *MockEC2API) DescribeAggregateIdFormatRequest(arg0 *ec2.Descri...
    method DescribeAvailabilityZones (line 7489) | func (m *MockEC2API) DescribeAvailabilityZones(arg0 *ec2.DescribeAvail...
    method DescribeAvailabilityZonesWithContext (line 7504) | func (m *MockEC2API) DescribeAvailabilityZonesWithContext(arg0 aws.Con...
    method DescribeAvailabilityZonesRequest (line 7524) | func (m *MockEC2API) DescribeAvailabilityZonesRequest(arg0 *ec2.Descri...
    method DescribeBundleTasks (line 7539) | func (m *MockEC2API) DescribeBundleTasks(arg0 *ec2.DescribeBundleTasks...
    method DescribeBundleTasksWithContext (line 7554) | func (m *MockEC2API) DescribeBundleTasksWithContext(arg0 aws.Context, ...
    method DescribeBundleTasksRequest (line 7574) | func (m *MockEC2API) DescribeBundleTasksRequest(arg0 *ec2.DescribeBund...
    method DescribeByoipCidrs (line 7589) | func (m *MockEC2API) DescribeByoipCidrs(arg0 *ec2.DescribeByoipCidrsIn...
    method DescribeByoipCidrsWithContext (line 7604) | func (m *MockEC2API) DescribeByoipCidrsWithContext(arg0 aws.Context, a...
    method DescribeByoipCidrsRequest (line 7624) | func (m *MockEC2API) DescribeByoipCidrsRequest(arg0 *ec2.DescribeByoip...
    method DescribeByoipCidrsPages (line 7639) | func (m *MockEC2API) DescribeByoipCidrsPages(arg0 *ec2.DescribeByoipCi...
    method DescribeByoipCidrsPagesWithContext (line 7653) | func (m *MockEC2API) DescribeByoipCidrsPagesWithContext(arg0 aws.Conte...
    method DescribeCapacityReservations (line 7672) | func (m *MockEC2API) DescribeCapacityReservations(arg0 *ec2.DescribeCa...
    method DescribeCapacityReservationsWithContext (line 7687) | func (m *MockEC2API) DescribeCapacityReservationsWithContext(arg0 aws....
    method DescribeCapacityReservationsRequest (line 7707) | func (m *MockEC2API) DescribeCapacityReservationsRequest(arg0 *ec2.Des...
    method DescribeCapacityReservationsPages (line 7722) | func (m *MockEC2API) DescribeCapacityReservationsPages(arg0 *ec2.Descr...
    method DescribeCapacityReservationsPagesWithContext (line 7736) | func (m *MockEC2API) DescribeCapacityReservationsPagesWithContext(arg0...
    method DescribeClassicLinkInstances (line 7755) | func (m *MockEC2API) DescribeClassicLinkInstances(arg0 *ec2.DescribeCl...
    method DescribeClassicLinkInstancesWithContext (line 7770) | func (m *MockEC2API) DescribeClassicLinkInstancesWithContext(arg0 aws....
    method DescribeClassicLinkInstancesRequest (line 7790) | func (m *MockEC2API) DescribeClassicLinkInstancesRequest(arg0 *ec2.Des...
    method DescribeClassicLinkInstancesPages (line 7805) | func (m *MockEC2API) DescribeClassicLinkInstancesPages(arg0 *ec2.Descr...
    method DescribeClassicLinkInstancesPagesWithContext (line 7819) | func (m *MockEC2API) DescribeClassicLinkInstancesPagesWithContext(arg0...
    method DescribeClientVpnAuthorizationRules (line 7838) | func (m *MockEC2API) DescribeClientVpnAuthorizationRules(arg0 *ec2.Des...
    method DescribeClientVpnAuthorizationRulesWithContext (line 7853) | func (m *MockEC2API) DescribeClientVpnAuthorizationRulesWithContext(ar...
    method DescribeClientVpnAuthorizationRulesRequest (line 7873) | func (m *MockEC2API) DescribeClientVpnAuthorizationRulesRequest(arg0 *...
    method DescribeClientVpnAuthorizationRulesPages (line 7888) | func (m *MockEC2API) DescribeClientVpnAuthorizationRulesPages(arg0 *ec...
    method DescribeClientVpnAuthorizationRulesPagesWithContext (line 7902) | func (m *MockEC2API) DescribeClientVpnAuthorizationRulesPagesWithConte...
    method DescribeClientVpnConnections (line 7921) | func (m *MockEC2API) DescribeClientVpnConnections(arg0 *ec2.DescribeCl...
    method DescribeClientVpnConnectionsWithContext (line 7936) | func (m *MockEC2API) DescribeClientVpnConnectionsWithContext(arg0 aws....
    method DescribeClientVpnConnectionsRequest (line 7956) | func (m *MockEC2API) DescribeClientVpnConnectionsRequest(arg0 *ec2.Des...
    method DescribeClientVpnConnectionsPages (line 7971) | func (m *MockEC2API) DescribeClientVpnConnectionsPages(arg0 *ec2.Descr...
    method DescribeClientVpnConnectionsPagesWithContext (line 7985) | func (m *MockEC2API) DescribeClientVpnConnectionsPagesWithContext(arg0...
    method DescribeClientVpnEndpoints (line 8004) | func (m *MockEC2API) DescribeClientVpnEndpoints(arg0 *ec2.DescribeClie...
    method DescribeClientVpnEndpointsWithContext (line 8019) | func (m *MockEC2API) DescribeClientVpnEndpointsWithContext(arg0 aws.Co...
    method DescribeClientVpnEndpointsRequest (line 8039) | func (m *MockEC2API) DescribeClientVpnEndpointsRequest(arg0 *ec2.Descr...
    method DescribeClientVpnEndpointsPages (line 8054) | func (m *MockEC2API) DescribeClientVpnEndpointsPages(arg0 *ec2.Describ...
    method DescribeClientVpnEndpointsPagesWithContext (line 8068) | func (m *MockEC2API) DescribeClientVpnEndpointsPagesWithContext(arg0 a...
    method DescribeClientVpnRoutes (line 8087) | func (m *MockEC2API) DescribeClientVpnRoutes(arg0 *ec2.DescribeClientV...
    method DescribeClientVpnRoutesWithContext (line 8102) | func (m *MockEC2API) DescribeClientVpnRoutesWithContext(arg0 aws.Conte...
    method DescribeClientVpnRoutesRequest (line 8122) | func (m *MockEC2API) DescribeClientVpnRoutesRequest(arg0 *ec2.Describe...
    method DescribeClientVpnRoutesPages (line 8137) | func (m *MockEC2API) DescribeClientVpnRoutesPages(arg0 *ec2.DescribeCl...
    method DescribeClientVpnRoutesPagesWithContext (line 8151) | func (m *MockEC2API) DescribeClientVpnRoutesPagesWithContext(arg0 aws....
    method DescribeClientVpnTargetNetworks (line 8170) | func (m *MockEC2API) DescribeClientVpnTargetNetworks(arg0 *ec2.Describ...
    method DescribeClientVpnTargetNetworksWithContext (line 8185) | func (m *MockEC2API) DescribeClientVpnTargetNetworksWithContext(arg0 a...
    method DescribeClientVpnTargetNetworksRequest (line 8205) | func (m *MockEC2API) DescribeClientVpnTargetNetworksRequest(arg0 *ec2....
    method DescribeClientVpnTargetNetworksPages (line 8220) | func (m *MockEC2API) DescribeClientVpnTargetNetworksPages(arg0 *ec2.De...
    method DescribeClientVpnTargetNetworksPagesWithContext (line 8234) | func (m *MockEC2API) DescribeClientVpnTargetNetworksPagesWithContext(a...
    method DescribeCoipPools (line 8253) | func (m *MockEC2API) DescribeCoipPools(arg0 *ec2.DescribeCoipPoolsInpu...
    method DescribeCoipPoolsWithContext (line 8268) | func (m *MockEC2API) DescribeCoipPoolsWithContext(arg0 aws.Context, ar...
    method DescribeCoipPoolsRequest (line 8288) | func (m *MockEC2API) DescribeCoipPoolsRequest(arg0 *ec2.DescribeCoipPo...
    method DescribeCoipPoolsPages (line 8303) | func (m *MockEC2API) DescribeCoipPoolsPages(arg0 *ec2.DescribeCoipPool...
    method DescribeCoipPoolsPagesWithContext (line 8317) | func (m *MockEC2API) DescribeCoipPoolsPagesWithContext(arg0 aws.Contex...
    method DescribeConversionTasks (line 8336) | func (m *MockEC2API) DescribeConversionTasks(arg0 *ec2.DescribeConvers...
    method DescribeConversionTasksWithContext (line 8351) | func (m *MockEC2API) DescribeConversionTasksWithContext(arg0 aws.Conte...
    method DescribeConversionTasksRequest (line 8371) | func (m *MockEC2API) DescribeConversionTasksRequest(arg0 *ec2.Describe...
    method DescribeCustomerGateways (line 8386) | func (m *MockEC2API) DescribeCustomerGateways(arg0 *ec2.DescribeCustom...
    method DescribeCustomerGatewaysWithContext (line 8401) | func (m *MockEC2API) DescribeCustomerGatewaysWithContext(arg0 aws.Cont...
    method DescribeCustomerGatewaysRequest (line 8421) | func (m *MockEC2API) DescribeCustomerGatewaysRequest(arg0 *ec2.Describ...
    method DescribeDhcpOptions (line 8436) | func (m *MockEC2API) DescribeDhcpOptions(arg0 *ec2.DescribeDhcpOptions...
    method DescribeDhcpOptionsWithContext (line 8451) | func (m *MockEC2API) DescribeDhcpOptionsWithContext(arg0 aws.Context, ...
    method DescribeDhcpOptionsRequest (line 8471) | func (m *MockEC2API) DescribeDhcpOptionsRequest(arg0 *ec2.DescribeDhcp...
    method DescribeDhcpOptionsPages (line 8486) | func (m *MockEC2API) DescribeDhcpOptionsPages(arg0 *ec2.DescribeDhcpOp...
    method DescribeDhcpOptionsPagesWithContext (line 8500) | func (m *MockEC2API) DescribeDhcpOptionsPagesWithContext(arg0 aws.Cont...
    method DescribeEgressOnlyInternetGateways (line 8519) | func (m *MockEC2API) DescribeEgressOnlyInternetGateways(arg0 *ec2.Desc...
    method DescribeEgressOnlyInternetGatewaysWithContext (line 8534) | func (m *MockEC2API) DescribeEgressOnlyInternetGatewaysWithContext(arg...
    method DescribeEgressOnlyInternetGatewaysRequest (line 8554) | func (m *MockEC2API) DescribeEgressOnlyInternetGatewaysRequest(arg0 *e...
    method DescribeEgressOnlyInternetGatewaysPages (line 8569) | func (m *MockEC2API) DescribeEgressOnlyInternetGatewaysPages(arg0 *ec2...
    method DescribeEgressOnlyInternetGatewaysPagesWithContext (line 8583) | func (m *MockEC2API) DescribeEgressOnlyInternetGatewaysPagesWithContex...
    method DescribeElasticGpus (line 8602) | func (m *MockEC2API) DescribeElasticGpus(arg0 *ec2.DescribeElasticGpus...
    method DescribeElasticGpusWithContext (line 8617) | func (m *MockEC2API) DescribeElasticGpusWithContext(arg0 aws.Context, ...
    method DescribeElasticGpusRequest (line 8637) | func (m *MockEC2API) DescribeElasticGpusRequest(arg0 *ec2.DescribeElas...
    method DescribeExportImageTasks (line 8652) | func (m *MockEC2API) DescribeExportImageTasks(arg0 *ec2.DescribeExport...
    method DescribeExportImageTasksWithContext (line 8667) | func (m *MockEC2API) DescribeExportImageTasksWithContext(arg0 aws.Cont...
    method DescribeExportImageTasksRequest (line 8687) | func (m *MockEC2API) DescribeExportImageTasksRequest(arg0 *ec2.Describ...
    method DescribeExportImageTasksPages (line 8702) | func (m *MockEC2API) DescribeExportImageTasksPages(arg0 *ec2.DescribeE...
    method DescribeExportImageTasksPagesWithContext (line 8716) | func (m *MockEC2API) DescribeExportImageTasksPagesWithContext(arg0 aws...
    method DescribeExportTasks (line 8735) | func (m *MockEC2API) DescribeExportTasks(arg0 *ec2.DescribeExportTasks...
    method DescribeExportTasksWithContext (line 8750) | func (m *MockEC2API) DescribeExportTasksWithContext(arg0 aws.Context, ...
    method DescribeExportTasksRequest (line 8770) | func (m *MockEC2API) DescribeExportTasksRequest(arg0 *ec2.DescribeExpo...
    method DescribeFastSnapshotRestores (line 8785) | func (m *MockEC2API) DescribeFastSnapshotRestores(arg0 *ec2.DescribeFa...
    method DescribeFastSnapshotRestoresWithContext (line 8800) | func (m *MockEC2API) DescribeFastSnapshotRestoresWithContext(arg0 aws....
    method DescribeFastSnapshotRestoresRequest (line 8820) | func (m *MockEC2API) DescribeFastSnapshotRestoresRequest(arg0 *ec2.Des...
    method DescribeFastSnapshotRestoresPages (line 8835) | func (m *MockEC2API) DescribeFastSnapshotRestoresPages(arg0 *ec2.Descr...
    method DescribeFastSnapshotRestoresPagesWithContext (line 8849) | func (m *MockEC2API) DescribeFastSnapshotRestoresPagesWithContext(arg0...
    method DescribeFleetHistory (line 8868) | func (m *MockEC2API) DescribeFleetHistory(arg0 *ec2.DescribeFleetHisto...
    method DescribeFleetHistoryWithContext (line 8883) | func (m *MockEC2API) DescribeFleetHistoryWithContext(arg0 aws.Context,...
    method DescribeFleetHistoryRequest (line 8903) | func (m *MockEC2API) DescribeFleetHistoryRequest(arg0 *ec2.DescribeFle...
    method DescribeFleetInstances (line 8918) | func (m *MockEC2API) DescribeFleetInstances(arg0 *ec2.DescribeFleetIns...
    method DescribeFleetInstancesWithContext (line 8933) | func (m *MockEC2API) DescribeFleetInstancesWithContext(arg0 aws.Contex...
    method DescribeFleetInstancesRequest (line 8953) | func (m *MockEC2API) DescribeFleetInstancesRequest(arg0 *ec2.DescribeF...
    method DescribeFleets (line 8968) | func (m *MockEC2API) DescribeFleets(arg0 *ec2.DescribeFleetsInput) (*e...
    method DescribeFleetsWithContext (line 8983) | func (m *MockEC2API) DescribeFleetsWithContext(arg0 aws.Context, arg1 ...
    method DescribeFleetsRequest (line 9003) | func (m *MockEC2API) DescribeFleetsRequest(arg0 *ec2.DescribeFleetsInp...
    method DescribeFleetsPages (line 9018) | func (m *MockEC2API) DescribeFleetsPages(arg0 *ec2.DescribeFleetsInput...
    method DescribeFleetsPagesWithContext (line 9032) | func (m *MockEC2API) DescribeFleetsPagesWithContext(arg0 aws.Context, ...
    method DescribeFlowLogs (line 9051) | func (m *MockEC2API) DescribeFlowLogs(arg0 *ec2.DescribeFlowLogsInput)...
    method DescribeFlowLogsWithContext (line 9066) | func (m *MockEC2API) DescribeFlowLogsWithContext(arg0 aws.Context, arg...
    method DescribeFlowLogsRequest (line 9086) | func (m *MockEC2API) DescribeFlowLogsRequest(arg0 *ec2.DescribeFlowLog...
    method DescribeFlowLogsPages (line 9101) | func (m *MockEC2API) DescribeFlowLogsPages(arg0 *ec2.DescribeFlowLogsI...
    method DescribeFlowLogsPagesWithContext (line 9115) | func (m *MockEC2API) DescribeFlowLogsPagesWithContext(arg0 aws.Context...
    method DescribeFpgaImageAttribute (line 9134) | func (m *MockEC2API) DescribeFpgaImageAttribute(arg0 *ec2.DescribeFpga...
    method DescribeFpgaImageAttributeWithContext (line 9149) | func (m *MockEC2API) DescribeFpgaImageAttributeWithContext(arg0 aws.Co...
    method DescribeFpgaImageAttributeRequest (line 9169) | func (m *MockEC2API) DescribeFpgaImageAttributeRequest(arg0 *ec2.Descr...
    method DescribeFpgaImages (line 9184) | func (m *MockEC2API) DescribeFpgaImages(arg0 *ec2.DescribeFpgaImagesIn...
    method DescribeFpgaImagesWithContext (line 9199) | func (m *MockEC2API) DescribeFpgaImagesWithContext(arg0 aws.Context, a...
    method DescribeFpgaImagesRequest (line 9219) | func (m *MockEC2API) DescribeFpgaImagesRequest(arg0 *ec2.DescribeFpgaI...
    method DescribeFpgaImagesPages (line 9234) | func (m *MockEC2API) DescribeFpgaImagesPages(arg0 *ec2.DescribeFpgaIma...
    method DescribeFpgaImagesPagesWithContext (line 9248) | func (m *MockEC2API) DescribeFpgaImagesPagesWithContext(arg0 aws.Conte...
    method DescribeHostReservationOfferings (line 9267) | func (m *MockEC2API) DescribeHostReservationOfferings(arg0 *ec2.Descri...
    method DescribeHostReservationOfferingsWithContext (line 9282) | func (m *MockEC2API) DescribeHostReservationOfferingsWithContext(arg0 ...
    method DescribeHostReservationOfferingsRequest (line 9302) | func (m *MockEC2API) DescribeHostReservationOfferingsRequest(arg0 *ec2...
    method DescribeHostReservationOfferingsPages (line 9317) | func (m *MockEC2API) DescribeHostReservationOfferingsPages(arg0 *ec2.D...
    method DescribeHostReservationOfferingsPagesWithContext (line 9331) | func (m *MockEC2API) DescribeHostReservationOfferingsPagesWithContext(...
    method DescribeHostReservations (line 9350) | func (m *MockEC2API) DescribeHostReservations(arg0 *ec2.DescribeHostRe...
    method DescribeHostReservationsWithContext (line 9365) | func (m *MockEC2API) DescribeHostReservationsWithContext(arg0 aws.Cont...
    method DescribeHostReservationsRequest (line 9385) | func (m *MockEC2API) DescribeHostReservationsRequest(arg0 *ec2.Describ...
    method DescribeHostReservationsPages (line 9400) | func (m *MockEC2API) DescribeHostReservationsPages(arg0 *ec2.DescribeH...
    method DescribeHostReservationsPagesWithContext (line 9414) | func (m *MockEC2API) DescribeHostReservationsPagesWithContext(arg0 aws...
    method DescribeHosts (line 9433) | func (m *MockEC2API) DescribeHosts(arg0 *ec2.DescribeHostsInput) (*ec2...
    method DescribeHostsWithContext (line 9448) | func (m *MockEC2API) DescribeHostsWithContext(arg0 aws.Context, arg1 *...
    method DescribeHostsRequest (line 9468) | func (m *MockEC2API) DescribeHostsRequest(arg0 *ec2.DescribeHostsInput...
    method DescribeHostsPages (line 9483) | func (m *MockEC2API) DescribeHostsPages(arg0 *ec2.DescribeHostsInput, ...
    method DescribeHostsPagesWithContext (line 9497) | func (m *MockEC2API) DescribeHostsPagesWithContext(arg0 aws.Context, a...
    method DescribeIamInstanceProfileAssociations (line 9516) | func (m *MockEC2API) DescribeIamInstanceProfileAssociations(arg0 *ec2....
    method DescribeIamInstanceProfileAssociationsWithContext (line 9531) | func (m *MockEC2API) DescribeIamInstanceProfileAssociationsWithContext...
    method DescribeIamInstanceProfileAssociationsRequest (line 9551) | func (m *MockEC2API) DescribeIamInstanceProfileAssociationsRequest(arg...
    method DescribeIamInstanceProfileAssociationsPages (line 9566) | func (m *MockEC2API) DescribeIamInstanceProfileAssociationsPages(arg0 ...
    method DescribeIamInstanceProfileAssociationsPagesWithContext (line 9580) | func (m *MockEC2API) DescribeIamInstanceProfileAssociationsPagesWithCo...
    method DescribeIdFormat (line 9599) | func (m *MockEC2API) DescribeIdFormat(arg0 *ec2.DescribeIdFormatInput)...
    method DescribeIdFormatWithContext (line 9614) | func (m *MockEC2API) DescribeIdFormatWithContext(arg0 aws.Context, arg...
    method DescribeIdFormatRequest (line 9634) | func (m *MockEC2API) DescribeIdFormatRequest(arg0 *ec2.DescribeIdForma...
    method DescribeIdentityIdFormat (line 9649) | func (m *MockEC2API) DescribeIdentityIdFormat(arg0 *ec2.DescribeIdenti...
    method DescribeIdentityIdFormatWithContext (line 9664) | func (m *MockEC2API) DescribeIdentityIdFormatWithContext(arg0 aws.Cont...
    method DescribeIdentityIdFormatRequest (line 9684) | func (m *MockEC2API) DescribeIdentityIdFormatRequest(arg0 *ec2.Describ...
    method DescribeImageAttribute (line 9699) | func (m *MockEC2API) DescribeImageAttribute(arg0 *ec2.DescribeImageAtt...
    method DescribeImageAttributeWithContext (line 9714) | func (m *MockEC2API) DescribeImageAttributeWithContext(arg0 aws.Contex...
    method DescribeImageAttributeRequest (line 9734) | func (m *MockEC2API) DescribeImageAttributeRequest(arg0 *ec2.DescribeI...
    method DescribeImages (line 9749) | func (m *MockEC2API) DescribeImages(arg0 *ec2.DescribeImagesInput) (*e...
    method DescribeImagesWithContext (line 9764) | func (m *MockEC2API) DescribeImagesWithContext(arg0 aws.Context, arg1 ...
    method DescribeImagesRequest (line 9784) | func (m *MockEC2API) DescribeImagesRequest(arg0 *ec2.DescribeImagesInp...
    method DescribeImportImageTasks (line 9799) | func (m *MockEC2API) DescribeImportImageTasks(arg0 *ec2.DescribeImport...
    method DescribeImportImageTasksWithContext (line 9814) | func (m *MockEC2API) DescribeImportImageTasksWithContext(arg0 aws.Cont...
    method DescribeImportImageTasksRequest (line 9834) | func (m *MockEC2API) DescribeImportImageTasksRequest(arg0 *ec2.Describ...
    method DescribeImportImageTasksPages (line 9849) | func (m *MockEC2API) DescribeImportImageTasksPages(arg0 *ec2.DescribeI...
    method DescribeImportImageTasksPagesWithContext (line 9863) | func (m *MockEC2API) DescribeImportImageTasksPagesWithContext(arg0 aws...
    method DescribeImportSnapshotTasks (line 9882) | func (m *MockEC2API) DescribeImportSnapshotTasks(arg0 *ec2.DescribeImp...
    method DescribeImportSnapshotTasksWithContext (line 9897) | func (m *MockEC2API) DescribeImportSnapshotTasksWithContext(arg0 aws.C...
    method DescribeImportSnapshotTasksRequest (line 9917) | func (m *MockEC2API) DescribeImportSnapshotTasksRequest(arg0 *ec2.Desc...
    method DescribeImportSnapshotTasksPages (line 9932) | func (m *MockEC2API) DescribeImportSnapshotTasksPages(arg0 *ec2.Descri...
    method DescribeImportSnapshotTasksPagesWithContext (line 9946) | func (m *MockEC2API) DescribeImportSnapshotTasksPagesWithContext(arg0 ...
    method DescribeInstanceAttribute (line 9965) | func (m *MockEC2API) DescribeInstanceAttribute(arg0 *ec2.DescribeInsta...
    method DescribeInstanceAttributeWithContext (line 9980) | func (m *MockEC2API) DescribeInstanceAttributeWithContext(arg0 aws.Con...
    method DescribeInstanceAttributeRequest (line 10000) | func (m *MockEC2API) DescribeInstanceAttributeRequest(arg0 *ec2.Descri...
    method DescribeInstanceCreditSpecifications (line 10015) | func (m *MockEC2API) DescribeInstanceCreditSpecifications(arg0 *ec2.De...
    method DescribeInstanceCreditSpecificationsWithContext (line 10030) | func (m *MockEC2API) DescribeInstanceCreditSpecificationsWithContext(a...
    method DescribeInstanceCreditSpecificationsRequest (line 10050) | func (m *MockEC2API) DescribeInstanceCreditSpecificationsRequest(arg0 ...
    method DescribeInstanceCreditSpecificationsPages (line 10065) | func (m *MockEC2API) DescribeInstanceCreditSpecificationsPages(arg0 *e...
    method DescribeInstanceCreditSpecificationsPagesWithContext (line 10079) | func (m *MockEC2API) DescribeInstanceCreditSpecificationsPagesWithCont...
    method DescribeInstanceEventNotificationAttributes (line 10098) | func (m *MockEC2API) DescribeInstanceEventNotificationAttributes(arg0 ...
    method DescribeInstanceEventNotificationAttributesWithContext (line 10113) | func (m *MockEC2API) DescribeInstanceEventNotificationAttributesWithCo...
    method DescribeInstanceEventNotificationAttributesRequest (line 10133) | func (m *MockEC2API) DescribeInstanceEventNotificationAttributesReques...
    method DescribeInstanceStatus (line 10148) | func (m *MockEC2API) DescribeInstanceStatus(arg0 *ec2.DescribeInstance...
    method DescribeInstanceStatusWithContext (line 10163) | func (m *MockEC2API) DescribeInstanceStatusWithContext(arg0 aws.Contex...
    method DescribeInstanceStatusRequest (line 10183) | func (m *MockEC2API) DescribeInstanceStatusRequest(arg0 *ec2.DescribeI...
    method DescribeInstanceStatusPages (line 10198) | func (m *MockEC2API) DescribeInstanceStatusPages(arg0 *ec2.DescribeIns...
    method DescribeInstanceStatusPagesWithContext (line 10212) | func (m *MockEC2API) DescribeInstanceStatusPagesWithContext(arg0 aws.C...
    method DescribeInstanceTypeOfferings (line 10231) | func (m *MockEC2API) DescribeInstanceTypeOfferings(arg0 *ec2.DescribeI...
    method DescribeInstanceTypeOfferingsWithContext (line 10246) | func (m *MockEC2API) DescribeInstanceTypeOfferingsWithContext(arg0 aws...
    method DescribeInstanceTypeOfferingsRequest (line 10266) | func (m *MockEC2API) DescribeInstanceTypeOfferingsRequest(arg0 *ec2.De...
    method DescribeInstanceTypeOfferingsPages (line 10281) | func (m *MockEC2API) DescribeInstanceTypeOfferingsPages(arg0 *ec2.Desc...
    method DescribeInstanceTypeOfferingsPagesWithContext (line 10295) | func (m *MockEC2API) DescribeInstanceTypeOfferingsPagesWithContext(arg...
    method DescribeInstanceTypes (line 10314) | func (m *MockEC2API) DescribeInstanceTypes(arg0 *ec2.DescribeInstanceT...
    method DescribeInstanceTypesWithContext (line 10329) | func (m *MockEC2API) DescribeInstanceTypesWithContext(arg0 aws.Context...
    method DescribeInstanceTypesRequest (line 10349) | func (m *MockEC2API) DescribeInstanceTypesRequest(arg0 *ec2.DescribeIn...
    method DescribeInstanceTypesPages (line 10364) | func (m *MockEC2API) DescribeInstanceTypesPages(arg0 *ec2.DescribeInst...
    method DescribeInstanceTypesPagesWithContext (line 10378) | func (m *MockEC2API) DescribeInstanceTypesPagesWithContext(arg0 aws.Co...
    method DescribeInstances (line 10397) | func (m *MockEC2API) DescribeInstances(arg0 *ec2.DescribeInstancesInpu...
    method DescribeInstancesWithContext (line 10412) | func (m *MockEC2API) DescribeInstancesWithContext(arg0 aws.Context, ar...
    method DescribeInstancesRequest (line 10432) | func (m *MockEC2API) DescribeInstancesRequest(arg0 *ec2.DescribeInstan...
    method DescribeInstancesPages (line 10447) | func (m *MockEC2API) DescribeInstancesPages(arg0 *ec2.DescribeInstance...
    method DescribeInstancesPagesWithContext (line 10461) | func (m *MockEC2API) DescribeInstancesPagesWithContext(arg0 aws.Contex...
    method DescribeInternetGateways (line 10480) | func (m *MockEC2API) DescribeInternetGateways(arg0 *ec2.DescribeIntern...
    method DescribeInternetGatewaysWithContext (line 10495) | func (m *MockEC2API) DescribeInternetGatewaysWithContext(arg0 aws.Cont...
    method DescribeInternetGatewaysRequest (line 10515) | func (m *MockEC2API) DescribeInternetGatewaysRequest(arg0 *ec2.Describ...
    method DescribeInternetGatewaysPages (line 10530) | func (m *MockEC2API) DescribeInternetGatewaysPages(arg0 *ec2.DescribeI...
    method DescribeInternetGatewaysPagesWithContext (line 10544) | func (m *MockEC2API) DescribeInternetGatewaysPagesWithContext(arg0 aws...
    method DescribeIpv6Pools (line 10563) | func (m *MockEC2API) DescribeIpv6Pools(arg0 *ec2.DescribeIpv6PoolsInpu...
    method DescribeIpv6PoolsWithContext (line 10578) | func (m *MockEC2API) DescribeIpv6PoolsWithContext(arg0 aws.Context, ar...
    method DescribeIpv6PoolsRequest (line 10598) | func (m *MockEC2API) DescribeIpv6PoolsRequest(arg0 *ec2.DescribeIpv6Po...
    method DescribeIpv6PoolsPages (line 10613) | func (m *MockEC2API) DescribeIpv6PoolsPages(arg0 *ec2.DescribeIpv6Pool...
    method DescribeIpv6PoolsPagesWithContext (line 10627) | func (m *MockEC2API) DescribeIpv6PoolsPagesWithContext(arg0 aws.Contex...
    method DescribeKeyPairs (line 10646) | func (m *MockEC2API) DescribeKeyPairs(arg0 *ec2.DescribeKeyPairsInput)...
    method DescribeKeyPairsWithContext (line 10661) | func (m *MockEC2API) DescribeKeyPairsWithContext(arg0 aws.Context, arg...
    method DescribeKeyPairsRequest (line 10681) | func (m *MockEC2API) DescribeKeyPairsRequest(arg0 *ec2.DescribeKeyPair...
    method DescribeLaunchTemplateVersions (line 10696) | func (m *MockEC2API) DescribeLaunchTemplateVersions(arg0 *ec2.Describe...
    method DescribeLaunchTemplateVersionsWithContext (line 10711) | func (m *MockEC2API) DescribeLaunchTemplateVersionsWithContext(arg0 aw...
    method DescribeLaunchTemplateVersionsRequest (line 10731) | func (m *MockEC2API) DescribeLaunchTemplateVersionsRequest(arg0 *ec2.D...
    method DescribeLaunchTemplateVersionsPages (line 10746) | func (m *MockEC2API) DescribeLaunchTemplateVersionsPages(arg0 *ec2.Des...
    method DescribeLaunchTemplateVersionsPagesWithContext (line 10760) | func (m *MockEC2API) DescribeLaunchTemplateVersionsPagesWithContext(ar...
    method DescribeLaunchTemplates (line 10779) | func (m *MockEC2API) DescribeLaunchTemplates(arg0 *ec2.DescribeLaunchT...
    method DescribeLaunchTemplatesWithContext (line 10794) | func (m *MockEC2API) DescribeLaunchTemplatesWithContext(arg0 aws.Conte...
    method DescribeLaunchTemplatesRequest (line 10814) | func (m *MockEC2API) DescribeLaunchTemplatesRequest(arg0 *ec2.Describe...
    method DescribeLaunchTemplatesPages (line 10829) | func (m *MockEC2API) DescribeLaunchTemplatesPages(arg0 *ec2.DescribeLa...
    method DescribeLaunchTemplatesPagesWithContext (line 10843) | func (m *MockEC2API) DescribeLaunchTemplatesPagesWithContext(arg0 aws....
    method DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociations (line 10862) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVirtualInterfaceGro...
    method DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsWithContext (line 10877) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVirtualInterfaceGro...
    method DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsRequest (line 10897) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVirtualInterfaceGro...
    method DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsPages (line 10912) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVirtualInterfaceGro...
    method DescribeLocalGatewayRouteTableVirtualInterfaceGroupAssociationsPagesWithContext (line 10926) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVirtualInterfaceGro...
    method DescribeLocalGatewayRouteTableVpcAssociations (line 10945) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVpcAssociations(arg...
    method DescribeLocalGatewayRouteTableVpcAssociationsWithContext (line 10960) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVpcAssociationsWith...
    method DescribeLocalGatewayRouteTableVpcAssociationsRequest (line 10980) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVpcAssociationsRequ...
    method DescribeLocalGatewayRouteTableVpcAssociationsPages (line 10995) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVpcAssociationsPage...
    method DescribeLocalGatewayRouteTableVpcAssociationsPagesWithContext (line 11009) | func (m *MockEC2API) DescribeLocalGatewayRouteTableVpcAssociationsPage...
    method DescribeLocalGatewayRouteTables (line 11028) | func (m *MockEC2API) DescribeLocalGatewayRouteTables(arg0 *ec2.Describ...
    method DescribeLocalGatewayRouteTablesWithContext (line 11043) | func (m *MockEC2API) DescribeLocalGatewayRouteTablesWithContext(arg0 a...
    method DescribeLocalGatewayRouteTablesRequest (line 11063) | func (m *MockEC2API) DescribeLocalGatewayRouteTablesRequest(arg0 *ec2....
    method DescribeLocalGatewayRouteTablesPages (line 11078) | func (m *MockEC2API) DescribeLocalGatewayRouteTablesPages(arg0 *ec2.De...
    method DescribeLocalGatewayRouteTablesPagesWithContext (line 11092) | func (m *MockEC2API) DescribeLocalGatewayRouteTablesPagesWithContext(a...
    method DescribeLocalGatewayVirtualInterfaceGroups (line 11111) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfaceGroups(arg0 *...
    method DescribeLocalGatewayVirtualInterfaceGroupsWithContext (line 11126) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfaceGroupsWithCon...
    method DescribeLocalGatewayVirtualInterfaceGroupsRequest (line 11146) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfaceGroupsRequest...
    method DescribeLocalGatewayVirtualInterfaceGroupsPages (line 11161) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfaceGroupsPages(a...
    method DescribeLocalGatewayVirtualInterfaceGroupsPagesWithContext (line 11175) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfaceGroupsPagesWi...
    method DescribeLocalGatewayVirtualInterfaces (line 11194) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfaces(arg0 *ec2.D...
    method DescribeLocalGatewayVirtualInterfacesWithContext (line 11209) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfacesWithContext(...
    method DescribeLocalGatewayVirtualInterfacesRequest (line 11229) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfacesRequest(arg0...
    method DescribeLocalGatewayVirtualInterfacesPages (line 11244) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfacesPages(arg0 *...
    method DescribeLocalGatewayVirtualInterfacesPagesWithContext (line 11258) | func (m *MockEC2API) DescribeLocalGatewayVirtualInterfacesPagesWithCon...
    method DescribeLocalGateways (line 11277) | func (m *MockEC2API) DescribeLocalGateways(arg0 *ec2.DescribeLocalGate...
    method DescribeLocalGatewaysWithContext (line 11292) | func (m *MockEC2API) DescribeLocalGatewaysWithContext(arg0 aws.Context...
    method DescribeLocalGatewaysRequest (line 11312) | func (m *MockEC2API) DescribeLocalGatewaysRequest(arg0 *ec2.DescribeLo...
    method DescribeLocalGatewaysPages (line 11327) | func (m *MockEC2API) DescribeLocalGatewaysPages(arg0 *ec2.DescribeLoca...
    method DescribeLocalGatewaysPagesWithContext (line 11341) | func (m *MockEC2API) DescribeLocalGatewaysPagesWithContext(arg0 aws.Co...
    method DescribeMovingAddresses (line 11360) | func (m *MockEC2API) DescribeMovingAddresses(arg0 *ec2.DescribeMovingA...
    method DescribeMovingAddressesWithContext (line 11375) | func (m *MockEC2API) DescribeMovingAddressesWithContext(arg0 aws.Conte...
    method DescribeMovingAddressesRequest (line 11395) | func (m *MockEC2API) DescribeMovingAddressesRequest(arg0 *ec2.Describe...
    method DescribeMovingAddressesPages (line 11410) | func (m *MockEC2API) DescribeMovingAddressesPages(arg0 *ec2.DescribeMo...
    method DescribeMovingAddressesPagesWithContext (line 11424) | func (m *MockEC2API) DescribeMovingAddressesPagesWithContext(arg0 aws....
    method DescribeNatGateways (line 11443) | func (m *MockEC2API) DescribeNatGateways(arg0 *ec2.DescribeNatGateways...
    method DescribeNatGatewaysWithContext (line 11458) | func (m *MockEC2API) DescribeNatGatewaysWithContext(arg0 aws.Context, ...
    method DescribeNatGatewaysRequest (line 11478) | func (m *MockEC2API) DescribeNatGatewaysRequest(arg0 *ec2.DescribeNatG...
    method DescribeNatGatewaysPages (line 11493) | func (m *MockEC2API) DescribeNatGatewaysPages(arg0 *ec2.DescribeNatGat...
    method DescribeNatGatewaysPagesWithContext (line 11507) | func (m *MockEC2API) DescribeNatGatewaysPagesWithContext(arg0 aws.Cont...
    method DescribeNetworkAcls (line 11526) | func (m *MockEC2API) DescribeNetworkAcls(arg0 *ec2.DescribeNetworkAcls...
    method DescribeNetworkAclsWithContext (line 11541) | func (m *MockEC2API) DescribeNetworkAclsWithContext(arg0 aws.Context, ...
    method DescribeNetworkAclsRequest (line 11561) | func (m *MockEC2API) DescribeNetworkAclsRequest(arg0 *ec2.DescribeNetw...
    method DescribeNetworkAclsPages (line 11576) | func (m *MockEC2API) DescribeNetworkAclsPages(arg0 *ec2.DescribeNetwor...
    method DescribeNetworkAclsPagesWithContext (line 11590) | func (m *MockEC2API) DescribeNetworkAclsPagesWithContext(arg0 aws.Cont...
    method DescribeNetworkInterfaceAttribute (line 11609) | func (m *MockEC2API) DescribeNetworkInterfaceAttribute(arg0 *ec2.Descr...
    method DescribeNetworkInterfaceAttributeWithContext (line 11624) | func (m *MockEC2API) DescribeNetworkInterfaceAttributeWithContext(arg0...
    method DescribeNetworkInterfaceAttributeRequest (line 11644) | func (m *MockEC2API) DescribeNetworkInterfaceAttributeRequest(arg0 *ec...
    method DescribeNetworkInterfacePermissions (line 11659) | func (m *MockEC2API) DescribeNetworkInterfacePermissions(arg0 *ec2.Des...
    method DescribeNetworkInterfacePermissionsWithContext (line 11674) | func (m *MockEC2API) DescribeNetworkInterfacePermissionsWithContext(ar...
    method DescribeNetworkInterfacePermissionsRequest (line 11694) | func (m *MockEC2API) DescribeNetworkInterfacePermissionsRequest(arg0 *...
    method DescribeNetworkInterfacePermissionsPages (line 11709) | func (m *MockEC2API) DescribeNetworkInterfacePermissionsPages(arg0 *ec...
    method DescribeNetworkInterfacePermissionsPagesWithContext (line 11723) | func (m *MockEC2API) DescribeNetworkInterfacePermissionsPagesWithConte...
    method DescribeNetworkInterfaces (line 11742) | func (m *MockEC2API) DescribeNetworkInterfaces(arg0 *ec2.DescribeNetwo...
    method DescribeNetworkInterfacesWithContext (line 11757) | func (m *MockEC2API) DescribeNetworkInterfacesWithContext(arg0 aws.Con...
    method DescribeNetworkInterfacesRequest (line 11777) | func (m *MockEC2API) DescribeNetworkInterfacesRequest(arg0 *ec2.Descri...
    method DescribeNetworkInterfacesPages (line 11792) | func (m *MockEC2API) DescribeNetworkInterfacesPages(arg0 *ec2.Describe...
    method DescribeNetworkInterfacesPagesWithContext (line 11806) | func (m *MockEC2API) DescribeNetworkInterfacesPagesWithContext(arg0 aw...
    method DescribePlacementGroups (line 11825) | func (m *MockEC2API) DescribePlacementGroups(arg0 *ec2.DescribePlaceme...
    method DescribePlacementGroupsWithContext (line 11840) | func (m *MockEC2API) DescribePlacementGroupsWithContext(arg0 aws.Conte...
    method DescribePlacementGroupsRequest (line 11860) | func (m *MockEC2API) DescribePlacementGroupsRequest(arg0 *ec2.Describe...
    method DescribePrefixLists (line 11875) | func (m *MockEC2API) DescribePrefixLists(arg0 *ec2.DescribePrefixLists...
    method DescribePrefixListsWithContext (line 11890) | func (m *MockEC2API) DescribePrefixListsWithContext(arg0 aws.Context, ...
    method DescribePrefixListsRequest (line 11910) | func (m *MockEC2API) DescribePrefixListsRequest(arg0 *ec2.DescribePref...
    method DescribePrefixListsPages (line 11925) | func (m *MockEC2API) DescribePrefixListsPages(arg0 *ec2.DescribePrefix...
    method DescribePrefixListsPagesWithContext (line 11939) | func (m *MockEC2API) DescribePrefixListsPagesWithContext(arg0 aws.Cont...
    method DescribePrincipalIdFormat (line 11958) | func (m *MockEC2API) DescribePrincipalIdFormat(arg0 *ec2.DescribePrinc...
    method DescribePrincipalIdFormatWithContext (line 11973) | func (m *MockEC2API) DescribePrincipalIdFormatWithContext(arg0 aws.Con...
    method DescribePrincipalIdFormatRequest (line 11993) | func (m *MockEC2API) DescribePrincipalIdFormatRequest(arg0 *ec2.Descri...
    method DescribePrincipalIdFormatPages (line 12008) | func (m *MockEC2API) DescribePrincipalIdFormatPages(arg0 *ec2.Describe...
    method DescribePrincipalIdFormatPagesWithContext (line 12022) | func (m *MockEC2API) DescribePrincipalIdFormatPagesWithContext(arg0 aw...
    method DescribePublicIpv4Pools (line 12041) | func (m *MockEC2API) DescribePublicIpv4Pools(arg0 *ec2.DescribePublicI...
    method DescribePublicIpv4PoolsWithContext (line 12056) | func (m *MockEC2API) DescribePublicIpv4PoolsWithContext(arg0 aws.Conte...
    method DescribePublicIpv4PoolsRequest (line 12076) | func (m *MockEC2API) DescribePublicIpv4PoolsRequest(arg0 *ec2.Describe...
    method DescribePublicIpv4PoolsPages (line 12091) | func (m *MockEC2API) DescribePublicIpv4PoolsPages(arg0 *ec2.DescribePu...
    method DescribePublicIpv4PoolsPagesWithContext (line 12105) | func (m *MockEC2API) DescribePublicIpv4PoolsPagesWithContext(arg0 aws....
    method DescribeRegions (line 12124) | func (m *MockEC2API) DescribeRegions(arg0 *ec2.DescribeRegionsInput) (...
    method DescribeRegionsWithContext (line 12139) | func (m *MockEC2API) DescribeRegionsWithContext(arg0 aws.Context, arg1...
    method DescribeRegionsRequest (line 12159) | func (m *MockEC2API) DescribeRegionsRequest(arg0 *ec2.DescribeRegionsI...
    method DescribeReservedInstances (line 12174) | func (m *MockEC2API) DescribeReservedInstances(arg0 *ec2.DescribeReser...
    method DescribeReservedInstancesWithContext (line 12189) | func (m *MockEC2API) DescribeReservedInstancesWithContext(arg0 aws.Con...
    method DescribeReservedInstancesRequest (line 12209) | func (m *MockEC2API) DescribeReservedInstancesRequest(arg0 *ec2.Descri...
    method DescribeReservedInstancesListings (line 12224) | func (m *MockEC2API) DescribeReservedInstancesListings(arg0 *ec2.Descr...
    method DescribeReservedInstancesListingsWithContext (line 12239) | func (m *MockEC2API) DescribeReservedInstancesListingsWithContext(arg0...
    method DescribeReservedInstancesListingsRequest (line 12259) | func (m *MockEC2API) DescribeReservedInstancesListingsRequest(arg0 *ec...
    method DescribeReservedInstancesModifications (line 12274) | func (m *MockEC2API) DescribeReservedInstancesModifications(arg0 *ec2....
    method DescribeReservedInstancesModificationsWithContext (line 12289) | func (m *MockEC2API) DescribeReservedInstancesModificationsWithContext...
    method DescribeReservedInstancesModificationsRequest (line 12309) | func (m *MockEC2API) DescribeReservedInstancesModificationsRequest(arg...
    method DescribeReservedInstancesModificationsPages (line 12324) | func (m *MockEC2API) DescribeReservedInstancesModificationsPages(arg0 ...
    method DescribeReservedInstancesModificationsPagesWithContext (line 12338) | func (m *MockEC2API) DescribeReservedInstancesModificationsPagesWithCo...
    method DescribeReservedInstancesOfferings (line 12357) | func (m *MockEC2API) DescribeReservedInstancesOfferings(arg0 *ec2.Desc...
    method DescribeReservedInstancesOfferingsWithContext (line 12372) | func (m *MockEC2API) DescribeReservedInstancesOfferingsWithContext(arg...
    method DescribeReservedInstancesOfferingsRequest (line 12392) | func (m *MockEC2API) DescribeReservedInstancesOfferingsRequest(arg0 *e...
    method DescribeReservedInstancesOfferingsPages (line 12407) | func (m *MockEC2API) DescribeReservedInstancesOfferingsPages(arg0 *ec2...
    method DescribeReservedInstancesOfferingsPagesWithContext (line 12421) | func (m *MockEC2API) DescribeReservedInstancesOfferingsPagesWithContex...
    method DescribeRouteTables (line 12440) | func (m *MockEC2API) DescribeRouteTables(arg0 *ec2.DescribeRouteTables...
    method DescribeRouteTablesWithContext (line 12455) | func (m *MockEC2API) DescribeRouteTablesWithContext(arg0 aws.Context, ...
    method DescribeRouteTablesRequest (line 12475) | func (m *MockEC2API) DescribeRouteTablesRequest(arg0 *ec2.DescribeRout...
    method DescribeRouteTablesPages (line 12490) | func (m *MockEC2API) DescribeRouteTablesPages(arg0 *ec2.DescribeRouteT...
    method DescribeRouteTablesPagesWithContext (line 12504) | func (m *MockEC2API) DescribeRouteTablesPagesWithContext(arg0 aws.Cont...
    method DescribeScheduledInstanceAvailability (line 12523) | func (m *MockEC2API) DescribeScheduledInstanceAvailability(arg0 *ec2.D...
    method DescribeScheduledInstanceAvailabilityWithContext (line 12538) | func (m *MockEC2API) DescribeScheduledInstanceAvailabilityWithContext(...
    method DescribeScheduledInstanceAvailabilityRequest (line 12558) | func (m *MockEC2API) DescribeScheduledInstanceAvailabilityRequest(arg0...
    method DescribeScheduledInstanceAvailabilityPages (line 12573) | func (m *MockEC2API) DescribeScheduledInstanceAvailabilityPages(arg0 *...
    method DescribeScheduledInstanceAvailabilityPagesWithContext (line 12587) | func (m *MockEC2API) DescribeScheduledInstanceAvailabilityPagesWithCon...
    method DescribeScheduledInstances (line 12606) | func (m *MockEC2API) DescribeScheduledInstances(arg0 *ec2.DescribeSche...
    method DescribeScheduledInstancesWithContext (line 12621) | func (m *MockEC2API) DescribeScheduledInstancesWithContext(arg0 aws.Co...
    method DescribeScheduledInstancesRequest (line 12641) | func (m *MockEC2API) DescribeScheduledInstancesRequest(arg0 *ec2.Descr...
    method DescribeScheduledInstancesPages (line 12656) | func (m *MockEC2API) DescribeScheduledInstancesPages(arg0 *ec2.Describ...
    method DescribeScheduledInstancesPagesWithContext (line 12670) | func (m *MockEC2API) DescribeScheduledInstancesPagesWithContext(arg0 a...
    method DescribeSecurityGroupReferences (line 12689) | func (m *MockEC2API) DescribeSecurityGroupReferences(arg0 *ec2.Describ...
    method DescribeSecurityGroupReferencesWithContext (line 12704) | func (m *MockEC2API) DescribeSecurityGroupReferencesWithContext(arg0 a...
    method DescribeSecurityGroupReferencesRequest (line 12724) | func (m *MockEC2API) DescribeSecurityGroupReferencesRequest(arg0 *ec2....
    method DescribeSecurityGroups (line 12739) | func (m *MockEC2API) DescribeSecurityGroups(arg0 *ec2.DescribeSecurity...
    method DescribeSecurityGroupsWithContext (line 12754) | func (m *MockEC2API) DescribeSecurityGroupsWithContext(arg0 aws.Contex...
    method DescribeSecurityGroupsRequest (line 12774) | func (m *MockEC2API) DescribeSecurityGroupsRequest(arg0 *ec2.DescribeS...
    method DescribeSecurityGroupsPages (line 12789) | func (m *MockEC2API) DescribeSecurityGroupsPages(arg0 *ec2.DescribeSec...
    method DescribeSecurityGroupsPagesWithContext (line 12803) | func (m *MockEC2API) DescribeSecurityGroupsPagesWithContext(arg0 aws.C...
    method DescribeSnapshotAttribute (line 12822) | func (m *MockEC2API) DescribeSnapshotAttribute(arg0 *ec2.DescribeSnaps...
    method DescribeSnapshotAttributeWithContext (line 12837) | func (m *MockEC2API) DescribeSnapshotAttributeWithContext(arg0 aws.Con...
    method DescribeSnapshotAttributeRequest (line 12857) | func (m *MockEC2API) DescribeSnapshotAttributeRequest(arg0 *ec2.Descri...
    method DescribeSnapshots (line 12872) | func (m *MockEC2API) DescribeSnapshots(arg0 *ec2.DescribeSnapshotsInpu...
    method DescribeSnapshotsWithContext (line 12887) | func (m *MockEC2API) DescribeSnapshotsWithContext(arg0 aws.Context, ar...
    method DescribeSnapshotsRequest (line 12907) | func (m *MockEC2API) DescribeSnapshotsRequest(arg0 *ec2.DescribeSnapsh...
    method DescribeSnapshotsPages (line 12922) | func (m *MockEC2API) DescribeSnapshotsPages(arg0 *ec2.DescribeSnapshot...
    method DescribeSnapshotsPagesWithContext (line 12936) | func (m *MockEC2API) DescribeSnapshotsPagesWithContext(arg0 aws.Contex...
    method DescribeSpotDatafeedSubscription (line 12955) | func (m *MockEC2API) DescribeSpotDatafeedSubscription(arg0 *ec2.Descri...
    method DescribeSpotDatafeedSubscriptionWithContext (line 12970) | func (m *MockEC2API) DescribeSpotDatafeedSubscriptionWithContext(arg0 ...
    method DescribeSpotDatafeedSubscriptionRequest (line 12990) | func (m *MockEC2API) DescribeSpotDatafeedSubscriptionRequest(arg0 *ec2...
    method DescribeSpotFleetInstances (line 13005) | func (m *MockEC2API) DescribeSpotFleetInstances(arg0 *ec2.DescribeSpot...
    method DescribeSpotFleetInstancesWithContext (line 13020) | func (m *MockEC2API) DescribeSpotFleetInstancesWithContext(arg0 aws.Co...
    method DescribeSpotFleetInstancesRequest (line 13040) | func (m *MockEC2API) DescribeSpotFleetInstancesRequest(arg0 *ec2.Descr...
    method DescribeSpotFleetRequestHistory (line 13055) | func (m *MockEC2API) DescribeSpotFleetRequestHistory(arg0 *ec2.Describ...
    method DescribeSpotFleetRequestHistoryWithContext (line 13070) | func (m *MockEC2API) DescribeSpotFleetRequestHistoryWithContext(arg0 a...
    method DescribeSpotFleetRequestHistoryRequest (line 13090) | func (m *MockEC2API) DescribeSpotFleetRequestHistoryRequest(arg0 *ec2....
    method DescribeSpotFleetRequests (line 13105) | func (m *MockEC2API) DescribeSpotFleetRequests(arg0 *ec2.DescribeSpotF...
    method DescribeSpotFleetRequestsWithContext (line 13120) | func (m *MockEC2API) DescribeSpotFleetRequestsWithContext(arg0 aws.Con...
    method DescribeSpotFleetRequestsRequest (line 13140) | func (m *MockEC2API) DescribeSpotFleetRequestsRequest(arg0 *ec2.Descri...
    method DescribeSpotFleetRequestsPages (line 13155) | func (m *MockEC2API) DescribeSpotFleetRequestsPages(arg0 *ec2.Describe...
    method DescribeSpotFleetRequestsPagesWithContext (line 13169) | func (m *MockEC2API) DescribeSpotFleetRequestsPagesWithContext(arg0 aw...
    method DescribeSpotInstanceRequests (line 13188) | func (m *MockEC2API) DescribeSpotInstanceRequests(arg0 *ec2.DescribeSp...
    method DescribeSpotInstanceRequestsWithContext (line 13203) | func (m *MockEC2API) DescribeSpotInstanceRequestsWithContext(arg0 aws....
    method DescribeSpotInstanceRequestsRequest (line 13223) | func (m *MockEC2API) DescribeSpotInstanceRequestsRequest(arg0 *ec2.Des...
    method DescribeSpotInstanceRequestsPages (line 13238) | func (m *MockEC2API) DescribeSpotInstanceRequestsPages(arg0 *ec2.Descr...
    method DescribeSpotInstanceRequestsPagesWithContext (line 13252) | func (m *MockEC2API) DescribeSpotInstanceRequestsPagesWithContext(arg0...
    method DescribeSpotPriceHistory (line 13271) | func (m *MockEC2API) DescribeSpotPriceHistory(arg0 *ec2.DescribeSpotPr...
    method DescribeSpotPriceHistoryWithContext (line 13286) | func (m *MockEC2API) DescribeSpotPriceHistoryWithContext(arg0 aws.Cont...
    method DescribeSpotPriceHistoryRequest (line 13306) | func (m *MockEC2API) DescribeSpotPriceHistoryRequest(arg0 *ec2.Describ...
    method DescribeSpotPriceHistoryPages (line 13321) | func (m *MockEC2API) DescribeSpotPriceHistoryPages(arg0 *ec2.DescribeS...
    method DescribeSpotPriceHistoryPagesWithContext (line 13335) | func (m *MockEC2API) DescribeSpotPriceHistoryPagesWithContext(arg0 aws...
    method DescribeStaleSecurityGroups (line 13354) | func (m *MockEC2API) DescribeStaleSecurityGroups(arg0 *ec2.DescribeSta...
    method DescribeStaleSecurityGroupsWithContext (line 13369) | func (m *MockEC2API) DescribeStaleSecurityGroupsWithContext(arg0 aws.C...
    method DescribeStaleSecurityGroupsRequest (line 13389) | func (m *MockEC2API) DescribeStaleSecurityGroupsRequest(arg0 *ec2.Desc...
    method DescribeStaleSecurityGroupsPages (line 13404) | func (m *MockEC2API) DescribeStaleSecurityGroupsPages(arg0 *ec2.Descri...
    method DescribeStaleSecurityGroupsPagesWithContext (line 13418) | func (m *MockEC2API) DescribeStaleSecurityGroupsPagesWithContext(arg0 ...
    method DescribeSubnets (line 13437) | func (m *MockEC2API) DescribeSubnets(arg0 *ec2.DescribeSubnetsInput) (...
    method DescribeSubnetsWithContext (line 13452) | func (m *MockEC2API) DescribeSubnetsWithContext(arg0 aws.Context, arg1...
    method DescribeSubnetsRequest (line 13472) | func (m *MockEC2API) DescribeSubnetsRequest(arg0 *ec2.DescribeSubnetsI...
    method DescribeSubnetsPages (line 13487) | func (m *MockEC2API) DescribeSubnetsPages(arg0 *ec2.DescribeSubnetsInp...
    method DescribeSubnetsPagesWithContext (line 13501) | func (m *MockEC2API) DescribeSubnetsPagesWithContext(arg0 aws.Context,...
    method DescribeTags (line 13520) | func (m *MockEC2API) DescribeTags(arg0 *ec2.DescribeTagsInput) (*ec2.D...
    method DescribeTagsWithContext (line 13535) | func (m *MockEC2API) DescribeTagsWithContext(arg0 aws.Context, arg1 *e...
    method DescribeTagsRequest (line 13555) | func (m *MockEC2API) DescribeTagsRequest(arg0 *ec2.DescribeTagsInput) ...
    method DescribeTagsPages (line 13570) | func (m *MockEC2API) DescribeTagsPages(arg0 *ec2.DescribeTagsInput, ar...
    method DescribeTagsPagesWithContext (line 13584) | func (m *MockEC2API) DescribeTagsPagesWithContext(arg0 aws.Context, ar...
    method DescribeTrafficMirrorFilters (line 13603) | func (m *MockEC2API) DescribeTrafficMirrorFilters(arg0 *ec2.DescribeTr...
    method DescribeTrafficMirrorFiltersWithContext (line 13618) | func (m *MockEC2API) DescribeTrafficMirrorFiltersWithContext(arg0 aws....
    method DescribeTrafficMirrorFiltersRequest (line 13638) | func (m *MockEC2API) DescribeTrafficMirrorFiltersRequest(arg0 *ec2.Des...
    method DescribeTrafficMirrorFiltersPages (line 13653) | func (m *MockEC2API) DescribeTrafficMirrorFiltersPages(arg0 *ec2.Descr...
    method DescribeTrafficMirrorFiltersPagesWithContext (line 13667) | func (m *MockEC2API) DescribeTrafficMirrorFiltersPagesWithContext(arg0...
    method DescribeTrafficMirrorSessions (line 13686) | func (m *MockEC2API) DescribeTrafficMirrorSessions(arg0 *ec2.DescribeT...
    method DescribeTrafficMirrorSessionsWithContext (line 13701) | func (m *MockEC2API) DescribeTrafficMirrorSessionsWithContext(arg0 aws...
    method DescribeTrafficMirrorSessionsRequest (line 13721) | func (m *MockEC2API) DescribeTrafficMirrorSessionsRequest(arg0 *ec2.De...
    method DescribeTrafficMirrorSessionsPages (line 13736) | func (m *MockEC2API) DescribeTrafficMirrorSessionsPages(arg0 *ec2.Desc...
    method DescribeTrafficMirrorSessionsPagesWithContext (line 13750) | func (m *MockEC2API) DescribeTrafficMirrorSessionsPagesWithContext(arg...
    method DescribeTrafficMirrorTargets (line 13769) | func (m *MockEC2API) DescribeTrafficMirrorTargets(arg0 *ec2.DescribeTr...
    method DescribeTrafficMirrorTargetsWithContext (line 13784) | func (m *MockEC2API) DescribeTrafficMirrorTargetsWithContext(arg0 aws....
    method DescribeTrafficMirrorTargetsRequest (line 13804) | func (m *MockEC2API) DescribeTrafficMirrorTargetsRequest(arg0 *ec2.Des...
    method DescribeTrafficMirrorTargetsPages (line 13819) | func (m *MockEC2API) DescribeTrafficMirrorTargetsPages(arg0 *ec2.Descr...
    method DescribeTrafficMirrorTargetsPagesWithContext (line 13833) | func (m *MockEC2API) DescribeTrafficMirrorTargetsPagesWithContext(arg0...
    method DescribeTransitGatewayAttachments (line 13852) | func (m *MockEC2API) DescribeTransitGatewayAttachments(arg0 *ec2.Descr...
    method DescribeTransitGatewayAttachmentsWithContext (line 13867) | func (m *MockEC2API) DescribeTransitGatewayAttachmentsWithContext(arg0...
    method DescribeTransitGatewayAttachmentsRequest (line 13887) | func (m *MockEC2API) DescribeTransitGatewayAttachmentsRequest(arg0 *ec...
    method DescribeTransitGatewayAttachmentsPages (line 13902) | func (m *MockEC2API) DescribeTransitGatewayAttachmentsPages(arg0 *ec2....
    method DescribeTransitGatewayAttachmentsPagesWithContext (line 13916) | func (m *MockEC2API) DescribeTransitGatewayAttachmentsPagesWithContext...
    method DescribeTransitGatewayMulticastDomains (line 13935) | func (m *MockEC2API) DescribeTransitGatewayMulticastDomains(arg0 *ec2....
    method DescribeTransitGatewayMulticastDomainsWithContext (line 13950) | func (m *MockEC2API) DescribeTransitGatewayMulticastDomainsWithContext...
    method DescribeTransitGatewayMulticastDomainsRequest (line 13970) | func (m *MockEC2API) DescribeTransitGatewayMulticastDomainsRequest(arg...
    method DescribeTransitGatewayMulticastDomainsPages (line 13985) | func (m *MockEC2API) DescribeTransitGatewayMulticastDomainsPages(arg0 ...
    method DescribeTransitGatewayMulticastDomainsPagesWithContext (line 13999) | func (m *MockEC2API) DescribeTransitGatewayMulticastDomainsPagesWithCo...
    method DescribeTransitGatewayPeeringAttachments (line 14018) | func (m *MockEC2API) DescribeTransitGatewayPeeringAttachments(arg0 *ec...
    method DescribeTransitGatewayPeeringAttachmentsWithContext (line 14033) | func (m *MockEC2API) DescribeTransitGatewayPeeringAttachmentsWithConte...
    method DescribeTransitGatewayPeeringAttachmentsRequest (line 14053) | func (m *MockEC2API) DescribeTransitGatewayPeeringAttachmentsRequest(a...
    method DescribeTransitGatewayPeeringAttachmentsPages (line 14068) | func (m *MockEC2API) DescribeTransitGatewayPeeringAttachmentsPages(arg...
    method DescribeTransitGatewayPeeringAttachmentsPagesWithContext (line 14082) | func (m *MockEC2API) DescribeTransitGatewayPeeringAttachmentsPagesWith...
    method DescribeTransitGatewayRouteTables (line 14101) | func (m *MockEC2API) DescribeTransitGatewayRouteTables(arg0 *ec2.Descr...
    method DescribeTransitGatewayRouteTablesWithContext (line 14116) | func (m *MockEC2API) DescribeTransitGatewayRouteTablesWithContext(arg0...
    method DescribeTransitGatewayRouteTablesRequest (line 14136) | func (m *MockEC2API) DescribeTransitGatewayRouteTablesRequest(arg0 *ec...
    method DescribeTransitGatewayRouteTablesPages (line 14151) | func (m *MockEC2API) DescribeTransitGatewayRouteTablesPages(arg0 *ec2....
    method DescribeTransitGatewayRouteTablesPagesWithContext (line 14165) | func (m *MockEC2API) DescribeTransitGatewayRouteTablesPagesWithContext...
    method DescribeTransitGatewayVpcAttachments (line 14184) | func (m *MockEC2API) DescribeTransitGatewayVpcAttachments(arg0 *ec2.De...
    method DescribeTransitGatewayVpcAttachmentsWithContext (line 14199) | func (m *MockEC2API) DescribeTransitGatewayVpcAttachmentsWithContext(a...
    method DescribeTransitGatewayVpcAttachmentsRequest (line 14219) | func (m *MockEC2API) DescribeTransitGatewayVpcAttachmentsRequest(arg0 ...
    method DescribeTransitGatewayVpcAttachmentsPages (line 14234) | func (m *MockEC2API) DescribeTransitGatewayVpcAttachmentsPages(arg0 *e...
    method DescribeTransitGatewayVpcAttachmentsPagesWithContext (line 14248) | func (m *MockEC2API) DescribeTransitGatewayVpcAttachmentsPagesWithCont...
    method DescribeTransitGateways (line 14267) | func (m *MockEC2API) DescribeTransitGateways(arg0 *ec2.DescribeTransit...
    method DescribeTransitGatewaysWithContext (line 14282) | func (m *MockEC2API) DescribeTransitGatewaysWithContext(arg0 aws.Conte...
    method DescribeTransitGatewaysRequest (line 14302) | func (m *MockEC2API) DescribeTransitGatewaysRequest(arg0 *ec2.Describe...
    method DescribeTransitGatewaysPages (line 14317) | func (m *MockEC2API) DescribeTransitGatewaysPages(arg0 *ec2.DescribeTr...
    method DescribeTransitGatewaysPagesWithContext (line 14331) | func (m *MockEC2API) DescribeTransitGatewaysPagesWithContext(arg0 aws....
    method DescribeVolumeAttribute (line 14350) | func (m *MockEC2API) DescribeVolumeAttribute(arg0 *ec2.DescribeVolumeA...
    method DescribeVolumeAttributeWithContext (line 14365) | func (m *MockEC2API) DescribeVolumeAttributeWithContext(arg0 aws.Conte...
    method DescribeVolumeAttributeRequest (line 14385) | func (m *MockEC2API) DescribeVolumeAttributeRequest(arg0 *ec2.Describe...
    method DescribeVolumeStatus (line 14400) | func (m *MockEC2API) DescribeVolumeStatus(arg0 *ec2.DescribeVolumeStat...
    method DescribeVolumeStatusWithContext (line 14415) | func (m *MockEC2API) DescribeVolumeStatusWithContext(arg0 aws.Context,...
    method DescribeVolumeStatusRequest (line 14435) | func (m *MockEC2API) DescribeVolumeStatusRequest(arg0 *ec2.DescribeVol...
    method DescribeVolumeStatusPages (line 14450) | func (m *MockEC2API) DescribeVolumeStatusPages(arg0 *ec2.DescribeVolum...
    method DescribeVolumeStatusPagesWithContext (line 14464) | func (m *MockEC2API) DescribeVolumeStatusPagesWithContext(arg0 aws.Con...
    method DescribeVolumes (line 14483) | func (m *MockEC2API) DescribeVolumes(arg0 *ec2.DescribeVolumesInput) (...
    method DescribeVolumesWithContext (line 14498) | func (m *MockEC2API) DescribeVolumesWithContext(arg0 aws.Context, arg1...
    method DescribeVolumesRequest (line 14518) | func (m *MockEC2API) DescribeVolumesRequest(arg0 *ec2.DescribeVolumesI...
    method DescribeVolumesPages (line 14533) | func (m *MockEC2API) DescribeVolumesPages(arg0 *ec2.DescribeVolumesInp...
    method DescribeVolumesPagesWithContext (line 14547) | func (m *MockEC2API) DescribeVolumesPagesWithContext(arg0 aws.Context,...
    method DescribeVolumesModifications (line 14566) | func (m *MockEC2API) DescribeVolumesModifications(arg0 *ec2.DescribeVo...
    method DescribeVolumesModificationsWithContext (line 14581) | func (m *MockEC2API) DescribeVolumesModificationsWithContext(arg0 aws....
    method DescribeVolumesModificationsRequest (line 14601) | func (m *MockEC2API) DescribeVolumesModificationsRequest(arg0 *ec2.Des...
    method DescribeVolumesModificationsPages (line 14616) | func (m *MockEC2API) DescribeVolumesModificationsPages(arg0 *ec2.Descr...
    method DescribeVolumesModificationsPagesWithContext (line 14630) | func (m *MockEC2API) DescribeVolumesModificationsPagesWithContext(arg0...
    method DescribeVpcAttribute (line 14649) | func (m *MockEC2API) DescribeVpcAttribute(arg0 *ec2.DescribeVpcAttribu...
    method DescribeVpcAttributeWithContext (line 14664) | func (m *MockEC2API) DescribeVpcAttributeWithContext(arg0 aws.Context,...
    method DescribeVpcAttributeRequest (line 14684) | func (m *MockEC2API) DescribeVpcAttributeRequest(arg0 *ec2.DescribeVpc...
    method DescribeVpcClassicLink (line 14699) | func (m *MockEC2API) DescribeVpcClassicLink(arg0 *ec2.DescribeVpcClass...
    method DescribeVpcClassicLinkWithContext (line 14714) | func (m *MockEC2API) DescribeVpcClassicLinkWithContext(arg0 aws.Contex...
    method DescribeVpcClassicLinkRequest (line 14734) | func (m *MockEC2API) DescribeVpcClassicLinkRequest(arg0 *ec2.DescribeV...
    method DescribeVpcClassicLinkDnsSupport (line 14749) | func (m *MockEC2API) DescribeVpcClassicLinkDnsSupport(arg0 *ec2.Descri...
    method DescribeVpcClassicLinkDnsSupportWithContext (line 14764) | func (m *MockEC2API) DescribeVpcClassicLinkDnsSupportWithContext(arg0 ...
    method DescribeVpcClassicLinkDnsSupportRequest (line 14784) | func (m *MockEC2API) DescribeVpcClassicLinkDnsSupportRequest(arg0 *ec2...
    method DescribeVpcClassicLinkDnsSupportPages (line 14799) | func (m *MockEC2API) DescribeVpcClassicLinkDnsSupportPages(arg0 *ec2.D...
    method DescribeVpcClassicLinkDnsSupportPagesWithContext (line 14813) | func (m *MockEC2API) DescribeVpcClassicLinkDnsSupportPagesWithContext(...
    method DescribeVpcEndpointConnectionNotifications (line 14832) | func (m *MockEC2API) DescribeVpcEndpointConnectionNotifications(arg0 *...
    method DescribeVpcEndpointConnectionNotificationsWithContext (line 14847) | func (m *MockEC2API) DescribeVpcEndpointConnectionNotificationsWithCon...
    method DescribeVpcEndpointConnectionNotificationsRequest (line 14867) | func (m *MockEC2API) DescribeVpcEndpointConnectionNotificationsRequest...
    method DescribeVpcEndpointConnectionNotificationsPages (line 14882) | func (m *MockEC2API) DescribeVpcEndpointConnectionNotificationsPages(a...
    method DescribeVpcEndpointConnectionNotificationsPagesWithContext (line 14896) | func (m *MockEC2API) DescribeVpcEndpointConnectionNotificationsPagesWi...
    method DescribeVpcEndpointConnections (line 14915) | func (m *MockEC2API) DescribeVpcEndpointConnections(arg0 *ec2.Describe...
    method DescribeVpcEndpointConnectionsWithContext (line 14930) | func (m *MockEC2API) DescribeVpcEndpointConnectionsWithContext(arg0 aw...
    method DescribeVpcEndpointConnectionsRequest (line 14950) | func (m *MockEC2API) DescribeVpcEndpointConnectionsRequest(arg0 *ec2.D...
    method DescribeVpcEndpointConnectionsPages (line 14965) | func (m *MockEC2API) DescribeVpcEndpointConnectionsPages(arg0 *ec2.Des...
    method DescribeVpcEndpointConnectionsPagesWithContext (line 14979) | func (m *MockEC2API) DescribeVpcEndpointConnectionsPagesWithContext(ar...
    method DescribeVpcEndpointServiceConfigurations (line 14998) | func (m *MockEC2API) DescribeVpcEndpointServiceConfigurations(arg0 *ec...
    method DescribeVpcEndpointServiceConfigurationsWithContext (line 15013) | func (m *MockEC2API) DescribeVpcEndpointServiceConfigurationsWithConte...
    method DescribeVpcEndpointServiceConfigurationsRequest (line 15033) | func (m *MockEC2API) DescribeVpcEndpointServiceConfigurationsRequest(a...
    method DescribeVpcEndpointServiceConfigurationsPages (line 15048) | func (m *MockEC2API) DescribeVpcEndpointServiceConfigurationsPages(arg...
    method DescribeVpcEndpointServiceConfigurationsPagesWithContext (line 15062) | func (m *MockEC2API) DescribeVpcEndpointServiceConfigurationsPagesWith...
    method DescribeVpcEndpointServicePermissions (line 15081) | func (m *MockEC2API) DescribeVpcEndpointServicePermissions(arg0 *ec2.D...
    method DescribeVpcEndpointServicePermissionsWithContext (line 15096) | func (m *MockEC2API) DescribeVpcEndpointServicePermissionsWithContext(...
    method DescribeVpcEndpointServicePermissionsRequest (line 15116) | func (m *MockEC2API) DescribeVpcEndpointServicePermissionsRequest(arg0...
    method DescribeVpcEndpointServicePermissionsPages (line 15131) | func (m *MockEC2API) DescribeVpcEndpointServicePermissionsPages(arg0 *...
    method DescribeVpcEndpointServicePermissionsPagesWithContext (line 15145) | func (m *MockEC2API) DescribeVpcEndpointServicePermissionsPagesWithCon...
    method DescribeVpcEndpointServices (line 15164) | func (m *MockEC2API) DescribeVpcEndpointServices(arg0 *ec2.DescribeVpc...
    method DescribeVpcEndpointServicesWithContext (line 15179) | func (m *MockEC2API) DescribeVpcEndpointServicesWithContext(arg0 aws.C...
    method DescribeVpcEndpointServicesRequest (line 15199) | func (m *MockEC2API) DescribeVpcEndpointServicesRequest(arg0 *ec2.Desc...
    method DescribeVpcEndpoints (line 15214) | func (m *MockEC2API) DescribeVpcEndpoints(arg0 *ec2.DescribeVpcEndpoin...
    method DescribeVpcEndpointsWithContext (line 15229) | func (m *MockEC2API) DescribeVpcEndpointsWithContext(arg0 aws.Context,...
    method DescribeVpcEndpointsRequest (line 15249) | func (m *MockEC2API) DescribeVpcEndpointsRequest(arg0 *ec2.DescribeVpc...
    method DescribeVpcEndpointsPages (line 15264) | func (m *MockEC2API) DescribeVpcEndpointsPages(arg0 *ec2.DescribeVpcEn...
    method DescribeVpcEndpointsPagesWithContext (line 15278) | func (m *MockEC2API) DescribeVpcEndpointsPagesWithContext(arg0 aws.Con...
    method DescribeVpcPeeringConnections (line 15297) | func (m *MockEC2API) DescribeVpcPeeringConnections(arg0 *ec2.DescribeV...
    method DescribeVpcPeeringConnectionsWithContext (line 15312) | func (m *MockEC2API) DescribeVpcPeeringConnectionsWithContext(arg0 aws...
    method DescribeVpcPeeringConnectionsRequest (line 15332) | func (m *MockEC2API) DescribeVpcPeeringConnectionsRequest(arg0 *ec2.De...
    method DescribeVpcPeeringConnectionsPages (line 15347) | func (m *MockEC2API) DescribeVpcPeeringConnectionsPages(arg0 *ec2.Desc...
    method DescribeVpcPeeringConnectionsPagesWithContext (line 15361) | func (m *MockEC2API) DescribeVpcPeeringConnectionsPagesWithContext(arg...
    method DescribeVpcs (line 15380) | func (m *MockEC2API) DescribeVpcs(arg0 *ec2.DescribeVpcsInput) (*ec2.D...
    method DescribeVpcsWithContext (line 15395) | func (m *MockEC2API) DescribeVpcsWithContext(arg0 aws.Context, arg1 *e...
    method DescribeVpcsRequest (line 15415) | func (m *MockEC2API) DescribeVpcsRequest(arg0 *ec2.DescribeVpcsInput) ...
    method DescribeVpcsPages (line 15430) | func (m *MockEC2API) DescribeVpcsPages(arg0 *ec2.DescribeVpcsInput, ar...
    method DescribeVpcsPagesWithContext (line 15444) | func (m *MockEC2API) DescribeVpcsPagesWithContext(arg0 aws.Context, ar...
    method DescribeVpnConnections (line 15463) | func (m *MockEC2API) DescribeVpnConnections(arg0 *ec2.DescribeVpnConne...
    method DescribeVpnConnectionsWithContext (line 15478) | func (m *MockEC2API) DescribeVpnConnectionsWithContext(arg0 aws.Contex...
    method DescribeVpnConnectionsRequest (line 15498) | func (m *MockEC2API) DescribeVpnConnectionsRequest(arg0 *ec2.DescribeV...
    method DescribeVpnGateways (line 15513) | func (m *MockEC2API) DescribeVpnGateways(arg0 *ec2.DescribeVpnGateways...
    method DescribeVpnGatewaysWithContext (line 15528) | func (m *MockEC2API) DescribeVpnGatewaysWithContext(arg0 aws.Context, ...
    method DescribeVpnGatewaysRequest (line 15548) | func (m *MockEC2API) DescribeVpnGatewaysRequest(arg0 *ec2.DescribeVpnG...
    method DetachClassicLinkVpc (line 15563) | func (m *MockEC2API) DetachClassicLinkVpc(arg0 *ec2.DetachClassicLinkV...
    method DetachClassicLinkVpcWithContext (line 15578) | func (m *MockEC2API) DetachClassicLinkVpcWithContext(arg0 aws.Context,...
    method DetachClassicLinkVpcRequest (line 15598) | func (m *MockEC2API) DetachClassicLinkVpcRequest(arg0 *ec2.DetachClass...
    method DetachInternetGateway (line 15613) | func (m *MockEC2API) DetachInternetGateway(arg0 *ec2.DetachInternetGat...
    method DetachInternetGatewayWithContext (line 15628) | func (m *MockEC2API) DetachInternetGatewayWithContext(arg0 aws.Context...
    method DetachInternetGatewayRequest (line 15648) | func (m *MockEC2API) DetachInternetGatewayRequest(arg0 *ec2.DetachInte...
    method DetachNetworkInterface (line 15663) | func (m *MockEC2API) DetachNetworkInterface(arg0 *ec2.DetachNetworkInt...
    method DetachNetworkInterfaceWithContext (line 15678) | func (m *MockEC2API) DetachNetworkInterfaceWithContext(arg0 aws.Contex...
    method DetachNetworkInterfaceRequest (line 15698) | func (m *MockEC2API) DetachNetworkInterfaceRequest(arg0 *ec2.DetachNet...
    method DetachVolume (line 15713) | func (m *MockEC2API) DetachVolume(arg0 *ec2.DetachVolumeInput) (*ec2.V...
    method DetachVolumeWithContext (line 15728) | func (m *MockEC2API) DetachVolumeWithContext(arg0 aws.Context, arg1 *e...
    method DetachVolumeRequest (line 15748) | func (m *MockEC2API) DetachVolumeRequest(arg0 *ec2.DetachVolumeInput) ...
    method DetachVpnGateway (line 15763) | func (m *MockEC2API) DetachVpnGateway(arg0 *ec2.DetachVpnGatewayInput)...
    method DetachVpnGatewayWithContext (line 15778) | func (m *MockEC2API) DetachVpnGatewayWithContext(arg0 aws.Context, arg...
    method DetachVpnGatewayRequest (line 15798) | func (m *MockEC2API) DetachVpnGatewayRequest(arg0 *ec2.DetachVpnGatewa...
    method DisableEbsEncryptionByDefault (line 15813) | func (m *MockEC2API) DisableEbsEncryptionByDefault(arg0 *ec2.DisableEb...
    method DisableEbsEncryptionByDefaultWithContext (line 15828) | func (m *MockEC2API) DisableEbsEncryptionByDefaultWithContext(arg0 aws...
    method DisableEbsEncryptionByDefaultRequest (line 15848) | func (m *MockEC2API) DisableEbsEncryptionByDefaultRequest(arg0 *ec2.Di...
    method DisableFastSnapshotRestores (line 15863) | func (m *MockEC2API) DisableFastSnapshotRestores(arg0 *ec2.DisableFast...
    method DisableFastSnapshotRestoresWithContext (line 15878) | func (m *MockEC2API) DisableFastSnapshotRestoresWithContext(arg0 aws.C...
    method DisableFastSnapshotRestoresRequest (line 15898) | func (m *MockEC2API) DisableFastSnapshotRestoresRequest(arg0 *ec2.Disa...
    method DisableTransitGatewayRouteTablePropagation (line 15913) | func (m *MockEC2API) DisableTransitGatewayRouteTablePropagation(arg0 *...
    method DisableTransitGatewayRouteTablePropagationWithContext (line 15928) | func (m *MockEC2API) DisableTransitGatewayRouteTablePropagationWithCon...
    method DisableTransitGatewayRouteTablePropagationRequest (line 15948) | func (m *MockEC2API) DisableTransitGatewayRouteTablePropagationRequest...
    method DisableVgwRoutePropagation (line 15963) | func (m *MockEC2API) DisableVgwRoutePropagation(arg0 *ec2.DisableVgwRo...
    method DisableVgwRoutePropagationWithContext (line 15978) | func (m *MockEC2API) DisableVgwRoutePropagationWithContext(arg0 aws.Co...
    method DisableVgwRoutePropagationRequest (line 15998) | func (m *MockEC2API) DisableVgwRoutePropagationRequest(arg0 *ec2.Disab...
    method DisableVpcClassicLink (line 16013) | func (m *MockEC2API) DisableVpcClassicLink(arg0 *ec2.DisableVpcClassic...
    method DisableVpcClassicLinkWithContext (line 16028) | func (m *MockEC2API) DisableVpcClassicLinkWithContext(arg0 aws.Context...
    method DisableVpcClassicLinkRequest (line 16048) | func (m *MockEC2API) DisableVpcClassicLinkRequest(arg0 *ec2.DisableVpc...
    method DisableVpcClassicLinkDnsSupport (line 16063) | func (m *MockEC2API) DisableVpcClassicLinkDnsSupport(arg0 *ec2.Disable...
    method DisableVpcClassicLinkDnsSupportWithContext (line 16078) | func (m *MockEC2API) DisableVpcClassicLinkDnsSupportWithContext(arg0 a...
    method DisableVpcClassicLinkDnsSupportRequest (line 16098) | func (m *MockEC2API) DisableVpcClassicLinkDnsSupportRequest(arg0 *ec2....
    method DisassociateAddress (line 16113) | func (m *MockEC2API) DisassociateAddress(arg0 *ec2.DisassociateAddress...
    method DisassociateAddressWithContext (line 16128) | func (m *MockEC2API) DisassociateAddressWithContext(arg0 aws.Context, ...
    method DisassociateAddressRequest (line 16148) | func (m *MockEC2API) DisassociateAddressRequest(arg0 *ec2.Disassociate...
    method DisassociateClientVpnTargetNetwork (line 16163) | func (m *MockEC2API) DisassociateClientVpnTargetNetwork(arg0 *ec2.Disa...
    method DisassociateClientVpnTargetNetworkWithContext (line 16178) | func (m *MockEC2API) DisassociateClientVpnTargetNetworkWithContext(arg...
    method DisassociateClientVpnTargetNetworkRequest (line 16198) | func (m *MockEC2API) DisassociateClientVpnTargetNetworkRequest(arg0 *e...
    method DisassociateIamInstanceProfile (line 16213) | func (m *MockEC2API) DisassociateIamInstanceProfile(arg0 *ec2.Disassoc...
    method DisassociateIamInstanceProfileWithContext (line 16228) | func (m *MockEC2API) DisassociateIamInstanceProfileWithContext(arg0 aw...
    method DisassociateIamInstanceProfileRequest (line 16248) | func (m *MockEC2API) DisassociateIamInstanceProfileRequest(arg0 *ec2.D...
    method DisassociateRouteTable (line 16263) | func (m *MockEC2API) DisassociateRouteTable(arg0 *ec2.DisassociateRout...
    method DisassociateRouteTableWithContext (line 16278) | func (m *MockEC2API) DisassociateRouteTableWithContext(arg0 aws.Contex...
    method DisassociateRouteTableRequest (line 16298) | func (m *MockEC2API) DisassociateRouteTableRequest(arg0 *ec2.Disassoci...
    method DisassociateSubnetCidrBlock (line 16313) | func (m *MockEC2API) DisassociateSubnetCidrBlock(arg0 *ec2.Disassociat...
    method DisassociateSubnetCidrBlockWithContext (line 16328) | func (m *MockEC2API) DisassociateSubnetCidrBlockWithContext(arg0 aws.C...
    method DisassociateSubnetCidrBlockRequest (line 16348) | func (m *MockEC2API) DisassociateSubnetCidrBlockRequest(arg0 *ec2.Disa...
    method DisassociateTransitGatewayMulticastDomain (line 16363) | func (m *MockEC2API) DisassociateTransitGatewayMulticastDomain(arg0 *e...
    method DisassociateTransitGatewayMulticastDomainWithContext (line 16378) | func (m *MockEC2API) DisassociateTransitGatewayMulticastDomainWithCont...
    method DisassociateTransitGatewayMulticastDomainRequest (line 16398) | func (m *MockEC2API) DisassociateTransitGatewayMulticastDomainRequest(...
    method DisassociateTransitGatewayRouteTable (line 16413) | func (m *MockEC2API) DisassociateTransitGatewayRouteTable(arg0 *ec2.Di...
    method DisassociateTransitGatewayRouteTableWithContext (line 16428) | func (m *MockEC2API) DisassociateTransitGatewayRouteTableWithContext(a...
    method DisassociateTransitGatewayRouteTableRequest (line 16448) | func (m *MockEC2API) DisassociateTransitGatewayRouteTableRequest(arg0 ...
    method DisassociateVpcCidrBlock (line 16463) | func (m *MockEC2API) DisassociateVpcCidrBlock(arg0 *ec2.DisassociateVp...
    method DisassociateVpcCidrBlockWithContext (line 16478) | func (m *MockEC2API) DisassociateVpcCidrBlockWithContext(arg0 aws.Cont...
    method DisassociateVpcCidrBlockRequest (line 16498) | func (m *MockEC2API) DisassociateVpcCidrBlockRequest(arg0 *ec2.Disasso...
    method EnableEbsEncryptionByDefault (line 16513) | func (m *MockEC2API) EnableEbsEncryptionByDefault(arg0 *ec2.EnableEbsE...
    method EnableEbsEncryptionByDefaultWithContext (line 16528) | func (m *MockEC2API) EnableEbsEncryptionByDefaultWithContext(arg0 aws....
    method EnableEbsEncryptionByDefaultRequest (line 16548) | func (m *MockEC2API) EnableEbsEncryptionByDefaultRequest(arg0 *ec2.Ena...
    method EnableFastSnapshotRestores (line 16563) | func (m *MockEC2API) EnableFastSnapshotRestores(arg0 *ec2.EnableFastSn...
    method EnableFastSnapshotRestoresWithContext (line 16578) | func (m *MockEC2API) EnableFastSnapshotRestoresWithContext(arg0 aws.Co...
    method EnableFastSnapshotRestoresRequest (line 16598) | func (m *MockEC2API) EnableFastSnapshotRestoresRequest(arg0 *ec2.Enabl...
    method EnableTransitGatewayRouteTablePropagation (line 16613) | func (m *MockEC2API) EnableTransitGatewayRouteTablePropagation(arg0 *e...
    method EnableTransitGatewayRouteTablePropagationWithContext (line 16628) | func (m *MockEC2API) EnableTransitGatewayRouteTablePropagationWithCont...
    method EnableTransitGatewayRouteTablePropagationRequest (line 16648) | func (m *MockEC2API) EnableTransitGatewayRouteTablePropagationRequest(...
    method EnableVgwRoutePropagation (line 16663) | func (m *MockEC2API) EnableVgwRoutePropagation(arg0 *ec2.EnableVgwRout...
    method EnableVgwRoutePropagationWithContext (line 16678) | func (m *MockEC2API) EnableVgwRoutePropagationWithContext(arg0 aws.Con...
    method EnableVgwRoutePropagationRequest (line 16698) | func (m *MockEC2API) EnableVgwRoutePropagationRequest(arg0 *ec2.Enable...
    method EnableVolumeIO (line 16713) | func (m *MockEC2API) EnableVolumeIO(arg0 *ec2.EnableVolumeIOInput) (*e...
    method EnableVolumeIOWithContext (line 16728) | func (m *MockEC2API) EnableVolumeIOWithContext(arg0 aws.Context, arg1 ...
    method EnableVolumeIORequest (line 16748) | func (m *MockEC2API) EnableVolumeIORequest(arg0 *ec2.EnableVolumeIOInp...
    method EnableVpcClassicLink (line 16763) | func (m *MockEC2API) EnableVpcClassicLink(arg0 *ec2.EnableVpcClassicLi...
    method EnableVpcClassicLinkWithContext (line 16778) | func (m *MockEC2API) EnableVpcClassicLinkWithContext(arg0 aws.Context,...
    method EnableVpcClassicLinkRequest (line 16798) | func (m *MockEC2API) EnableVpcClassicLinkRequest(arg0 *ec2.EnableVpcCl...
    method EnableVpcClassicLinkDnsSupport (line 16813) | func (m *MockEC2API) EnableVpcClassicLinkDnsSupport(arg0 *ec2.EnableVp...
    method EnableVpcClassicLinkDnsSupportWithContext (line 16828) | func (m *MockEC2API) EnableVpcClassicLinkDnsSupportWithContext(arg0 aw...
    method EnableVpcClassicLinkDnsSupportRequest (line 16848) | func (m *MockEC2API) EnableVpcClassicLinkDnsSupportRequest(arg0 *ec2.E...
    method ExportClientVpnClientCertificateRevocationList (line 16863) | func (m *MockEC2API) ExportClientVpnClientCertificateRevocationList(ar...
    method ExportClientVpnClientCertificateRevocationListWithContext (line 16878) | func (m *MockEC2API) ExportClientVpnClientCertificateRevocationListWit...
    method ExportClientVpnClientCertificateRevocationListRequest (line 16898) | func (m *MockEC2API) ExportClientVpnClientCertificateRevocationListReq...
    method ExportClientVpnClientConfiguration (line 16913) | func (m *MockEC2API) ExportClientVpnClientConfiguration(arg0 *ec2.Expo...
    method ExportClientVpnClientConfigurationWithContext (line 16928) | func (m *MockEC2API) ExportClientVpnClientConfigurationWithContext(arg...
    method ExportClientVpnClientConfigurationRequest (line 16948) | func (m *MockEC2API) ExportClientVpnClientConfigurationRequest(arg0 *e...
    method ExportImage (line 16963) | func (m *MockEC2API) ExportImage(arg0 *ec2.ExportImageInput) (*ec2.Exp...
    method ExportImageWithContext (line 16978) | func (m *MockEC2API) ExportImageWithContext(arg0 aws.Context, arg1 *ec...
    method ExportImageRequest (line 16998) | func (m *MockEC2API) ExportImageRequest(arg0 *ec2.ExportImageInput) (*...
    method ExportTransitGatewayRoutes (line 17013) | func (m *MockEC2API) ExportTransitGatewayRoutes(arg0 *ec2.ExportTransi...
    method ExportTransitGatewayRoutesWithContext (line 17028) | func (m *MockEC2API) ExportTransitGatewayRoutesWithContext(arg0 aws.Co...
    method ExportTransitGatewayRoutesRequest (line 17048) | func (m *MockEC2API) ExportTransitGatewayRoutesRequest(arg0 *ec2.Expor...
    method GetAssociatedIpv6PoolCidrs (line 17063) | func (m *MockEC2API) GetAssociatedIpv6PoolCidrs(arg0 *ec2.GetAssociate...
    method GetAssociatedIpv6PoolCidrsWithContext (line 17078) | func (m *MockEC2API) GetAssociatedIpv6PoolCidrsWithContext(arg0 aws.Co...
    method GetAssociatedIpv6PoolCidrsRequest (line 17098) | func (m *MockEC2API) GetAssociatedIpv6PoolCidrsRequest(arg0 *ec2.GetAs...
    method GetAssociatedIpv6PoolCidrsPages (line 17113) | func (m *MockEC2API) GetAssociatedIpv6PoolCidrsPages(arg0 *ec2.GetAsso...
    method GetAssociatedIpv6PoolCidrsPagesWithContext (line 17127) | func (m *MockEC2API) GetAssociatedIpv6PoolCidrsPagesWithContext(arg0 a...
    method GetCapacityReservationUsage (line 17146) | func (m *MockEC2API) GetCapacityReservationUsage(arg0 *ec2.GetCapacity...
    method GetCapacityReservationUsageWithContext (line 17161) | func (m *MockEC2API) GetCapacityReservationUsageWithContext(arg0 aws.C...
    method GetCapacityReservationUsageRequest (line 17181) | func (m *MockEC2API) GetCapacityReservationUsageRequest(arg0 *ec2.GetC...
    method GetCoipPoolUsage (line 17196) | func (m *MockEC2API) GetCoipPoolUsage(arg0 *ec2.GetCoipPoolUsageInput)...
    method GetCoipPoolUsageWithContext (line 17211) | func (m *MockEC2API) GetCoipPoolUsageWithContext(arg0 aws.Context, arg...
    method GetCoipPoolUsageRequest (line 17231) | func (m *MockEC2API) GetCoipPoolUsageRequest(arg0 *ec2.GetCoipPoolUsag...
    method GetConsoleOutput (line 17246) | func (m *MockEC2API) GetConsoleOutput(arg0 *ec2.GetConsoleOutputInput)...
    method GetConsoleOutputWithContext (line 17261) | func (m *MockEC2API) GetConsoleOutputWithContext(arg0 aws.Context, arg...
    method GetConsoleOutputRequest (line 17281) | func (m *MockEC2API) GetConsoleOutputRequest(arg0 *ec2.GetConsoleOutpu...
    method GetConsoleScreenshot (line 17296) | func (m *MockEC2API) GetConsoleScreenshot(arg0 *ec2.GetConsoleScreensh...
    method GetConsoleScreenshotWithContext (line 17311) | func (m *MockEC2API) GetConsoleScreenshotWithContext(arg0 aws.Context,...
    method GetConsoleScreenshotRequest (line 17331) | func (m *MockEC2API) GetConsoleScreenshotRequest(arg0 *ec2.GetConsoleS...
    method GetDefaultCreditSpecification (line 17346) | func (m *MockEC2API) GetDefaultCreditSpecification(arg0 *ec2.GetDefaul...
    method GetDefaultCreditSpecificationWithContext (line 17361) | func (m *MockEC2API) GetDefaultCreditSpecificationWithContext(arg0 aws...
    method GetDefaultCreditSpecificationRequest (line 17381) | func (m *MockEC2API) GetDefaultCreditSpecificationRequest(arg0 *ec2.Ge...
    method GetEbsDefaultKmsKeyId (line 17396) | func (m *MockEC2API) GetEbsDefaultKmsKeyId(arg0 *ec2.GetEbsDefaultKmsK...
    method GetEbsDefaultKmsKeyIdWithContext (line 17411) | func (m *MockEC2API) GetEbsDefaultKmsKeyIdWithContext(arg0 aws.Context...
    method GetEbsDefaultKmsKeyIdRequest (line 17431) | func (m *MockEC2API) GetEbsDefaultKmsKeyIdRequest(arg0 *ec2.GetEbsDefa...
    method GetEbsEncryptionByDefault (line 17446) | func (m *MockEC2API) GetEbsEncryptionByDefault(arg0 *ec2.GetEbsEncrypt...
    method GetEbsEncryptionByDefaultWithContext (line 17461) | func (m *MockEC2API) GetEbsEncryptionByDefaultWithContext(arg0 aws.Con...
    method GetEbsEncryptionByDefaultRequest (line 17481) | func (m *MockEC2API) GetEbsEncryptionByDefaultRequest(arg0 *ec2.GetEbs...
    method GetHostReservationPurchasePreview (line 17496) | func (m *MockEC2API) GetHostReservationPurchasePreview(arg0 *ec2.GetHo...
    method GetHostReservationPurchasePreviewWithContext (line 17511) | func (m *MockEC2API) GetHostReservationPurchasePreviewWithContext(arg0...
    method GetHostReservationPurchasePreviewRequest (line 17531) | func (m *MockEC2API) GetHostReservationPurchasePreviewRequest(arg0 *ec...
    method GetLaunchTemplateData (line 17546) | func (m *MockEC2API) GetLaunchTemplateData(arg0 *ec2.GetLaunchTemplate...
    method GetLaunchTemplateDataWithContext (line 17561) | func (m *MockEC2API) GetLaunchTemplateDataWithContext(arg0 aws.Context...
    method GetLaunchTemplateDataRequest (line 17581) | func (m *MockEC2API) GetLaunchTemplateDataRequest(arg0 *ec2.GetLaunchT...
    method GetPasswordData (line 17596) | func (m *MockEC2API) GetPasswordData(arg0 *ec2.GetPasswordDataInput) (...
    method GetPasswordDataWithContext (line 17611) | func (m *MockEC2API) GetPasswordDataWithContext(arg0 aws.Context, arg1...
    method GetPasswordDataRequest (line 17631) | func (m *MockEC2API) GetPasswordDataRequest(arg0 *ec2.GetPasswordDataI...
    method GetReservedInstancesExchangeQuote (line 17646) | func (m *MockEC2API) GetReservedInstancesExchangeQuote(arg0 *ec2.GetRe...
    method GetReservedInstancesExchangeQuoteWithContext (line 17661) | func (m *MockEC2API) GetReservedInstancesExchangeQuoteWithContext(arg0...
    method GetReservedInstancesExchangeQuoteRequest (line 17681) | func (m *MockEC2API) GetReservedInstancesExchangeQuoteRequest(arg0 *ec...
    method GetTransitGatewayAttachmentPropagations (line 17696) | func (m *MockEC2API) GetTransitGatewayAttachmentPropagations(arg0 *ec2...
    method GetTransitGatewayAttachmentPropagationsWithContext (line 17711) | func (m *MockEC2API) GetTransitGatewayAttachmentPropagationsWithContex...
    method GetTransitGatewayAttachmentPropagationsRequest (line 17731) | func (m *MockEC2API) GetTransitGatewayAttachmentPropagationsRequest(ar...
    method GetTransitGatewayAttachmentPropagationsPages (line 17746) | func (m *MockEC2API) GetTransitGatewayAttachmentPropagationsPages(arg0...
    method GetTransitGatewayAttachmentPropagationsPagesWithContext (line 17760) | func (m *MockEC2API) GetTransitGatewayAttachmentPropagationsPagesWithC...
    method GetTransitGatewayMulticastDomainAssociations (line 17779) | func (m *MockEC2API) GetTransitGatewayMulticastDomainAssociations(arg0...
    method GetTransitGatewayMulticastDomainAssociationsWithContext (line 17794) | func (m *MockEC2API) GetTransitGatewayMulticastDomainAssociationsWithC...
    method GetTransitGatewayMulticastDomainAssociationsRequest (line 17814) | func (m *MockEC2API) GetTransitGatewayMulticastDomainAssociationsReque...
    method GetTransitGatewayMulticastDomainAssociationsPages (line 17829) | func (m *MockEC2API) GetTransitGatewayMulticastDomainAssociationsPages...
    method GetTransitGatewayMulticastDomainAssociationsPagesWithContext (line 17843) | func (m *MockEC2API) GetTransitGatewayMulticastDomainAssociationsPages...
    method GetTransitGatewayRouteTableAssociations (line 17862) | func (m *MockEC2API) GetTransitGatewayRouteTableAssociations(arg0 *ec2...
    method GetTransitGatewayRouteTableAssociationsWithContext (line 17877) | func (m *MockEC2API) GetTransitGatewayRouteTableAssociationsWithContex...
    method GetTransitGatewayRouteTableAssociationsRequest (line 17897) | func (m *MockEC2API) GetTransitGatewayRouteTableAssociationsRequest(ar...
    method GetTransitGatewayRouteTableAssociationsPages (line 17912) | func (m *MockEC2API) GetTransitGatewayRouteTableAssociationsPages(arg0...
    method GetTransitGatewayRouteTableAssociationsPagesWithContext (line 17926) | func (m *MockEC2API) GetTransitGatewayRouteTableAssociationsPagesWithC...
    method GetTransitGatewayRouteTablePropagations (line 17945) | func (m *MockEC2API) GetTransitGatewayRouteTablePropagations(arg0 *ec2...
    method GetTransitGatewayRouteTablePropagationsWithContext (line 17960) | func (m *MockEC2API) GetTransitGatewayRouteTablePropagationsWithContex...
    method GetTransitGatewayRouteTablePropagationsRequest (line 17980) | func (m *MockEC2API) GetTransitGatewayRouteTablePropagationsRequest(ar...
    method GetTransitGatewayRouteTablePropagationsPages (line 17995) | func (m *MockEC2API) GetTransitGatewayRouteTablePropagationsPages(arg0...
    method GetTransitGatewayRouteTablePropagationsPagesWithContext (line 18009) | func (m *MockEC2API) GetTransitGatewayRouteTablePropagationsPagesWithC...
    method ImportClientVpnClientCertificateRevocationList (line 18028) | func (m *MockEC2API) ImportClientVpnClientCertificateRevocationList(ar...
    method ImportClientVpnClientCertificateRevocationListWithContext (line 18043) | func (m *MockEC2API) ImportClientVpnClientCertificateRevocationListWit...
    method ImportClientVpnClientCertificateRevocationListRequest (line 18063) | func (m *MockEC2API) ImportClientVpnClientCertificateRevocationListReq...
    method ImportImage (line 18078) | func (m *MockEC2API) ImportImage(arg0 *ec2.ImportImageInput) (*ec2.Imp...
    method ImportImageWithContext (line 18093) | func (m *MockEC2API) ImportImageWithContext(arg0 aws.Context, arg1 *ec...
    method ImportImageRequest (line 18113) | func (m *MockEC2API) ImportImageRequest(arg0 *ec2.ImportImageInput) (*...
    method ImportInstance (line 18128) | func (m *MockEC2API) ImportInstance(arg0 *ec2.ImportInstanceInput) (*e...
    method ImportInstanceWithContext (line 18143) | func (m *MockEC2API) ImportInstanceWithContext(arg0 aws.Context, arg1 ...
    method ImportInstanceRequest (line 18163) | func (m *MockEC2API) ImportInstanceRequest(arg0 *ec2.ImportInstanceInp...
    method ImportKeyPair (line 18178) | func (m *MockEC2API) ImportKeyPair(arg0 *ec2.ImportKeyPairInput) (*ec2...
    method ImportKeyPairWithContext (line 18193) | func (m *MockEC2API) ImportKeyPairWithContext(arg0 aws.Context, arg1 *...
    method ImportKeyPairRequest (line 18213) | func (m *MockEC2API) ImportKeyPairRequest(arg0 *ec2.ImportKeyPairInput...
    method ImportSnapshot (line 18228) | func (m *MockEC2API) ImportSnapshot(arg0 *ec2.ImportSnapshotInput) (*e...
    method ImportSnapshotWithContext (line 18243) | func (m *MockEC2API) ImportSnapshotWithContext(arg0 aws.Context, arg1 ...
    method ImportSnapshotRequest (line 18263) | func (m *MockEC2API) ImportSnapshotRequest(arg0 *ec2.ImportSnapshotInp...
    method ImportVolume (line 18278) | func (m *MockEC2API) ImportVolume(arg0 *ec2.ImportVolumeInput) (*ec2.I...
    method ImportVolumeWithContext (line 18293) | func (m *MockEC2API) ImportVolumeWithContext(arg0 aws.Context, arg1 *e...
    method ImportVolumeRequest (line 18313) | func (m *MockEC2API) ImportVolumeRequest(arg0 *ec2.ImportVolumeInput) ...
    method ModifyAvailabilityZoneGroup (line 18328) | func (m *MockEC2API) ModifyAvailabilityZoneGroup(arg0 *ec2.ModifyAvail...
    method ModifyAvailabilityZoneGroupWithContext (line 18343) | func (m *MockEC2API) ModifyAvailabilityZoneGroupWithContext(arg0 aws.C...
    method ModifyAvailabilityZoneGroupRequest (line 18363) | func (m *MockEC2API) ModifyAvailabilityZoneGroupRequest(arg0 *ec2.Modi...
    method ModifyCapacityReservation (line 18378) | func (m *MockEC2API) ModifyCapacityReservation(arg0 *ec2.ModifyCapacit...
    method ModifyCapacityReservationWithContext (line 18393) | func (m *MockEC2API) ModifyCapacityReservationWithContext(arg0 aws.Con...
    method ModifyCapacityReservationRequest (line 18413) | func (m *MockEC2API) ModifyCapacityReservationRequest(arg0 *ec2.Modify...
    method ModifyClientVpnEndpoint (line 18428) | func (m *MockEC2API) ModifyClientVpnEndpoint(arg0 *ec2.ModifyClientVpn...
    method ModifyClientVpnEndpointWithContext (line 18443) | func (m *MockEC2API) ModifyClientVpnEndpointWithContext(arg0 aws.Conte...
    method ModifyClientVpnEndpointRequest (line 18463) | func (m *MockEC2API) ModifyClientVpnEndpointRequest(arg0 *ec2.ModifyCl...
    method ModifyDefaultCreditSpecification (line 18478) | func (m *MockEC2API) ModifyDefaultCreditSpecification(arg0 *ec2.Modify...
    method ModifyDefaultCreditSpecificationWithContext (line 18493) | func (m *MockEC2API) ModifyDefaultCreditSpecificationWithContext(arg0 ...
    method ModifyDefaultCreditSpecificationRequest (line 18513) | func (m *MockEC2API) ModifyDefaultCreditSpecificationRequest(arg0 *ec2...
    method ModifyEbsDefaultKmsKeyId (line 18528) | func (m *MockEC2API) ModifyEbsDefaultKmsKeyId(arg0 *ec2.ModifyEbsDefau...
    method ModifyEbsDefaultKmsKeyIdWithContext (line 18543) | func (m *MockEC2API) ModifyEbsDefaultKmsKeyIdWithContext(arg0 aws.Cont...
    method ModifyEbsDefaultKmsKeyIdRequest (line 18563) | func (m *MockEC2API) ModifyEbsDefaultKmsKeyIdRequest(arg0 *ec2.ModifyE...
    method ModifyFleet (line 18578) | func (m *MockEC2API) ModifyFleet(arg0 *ec2.ModifyFleetInput) (*ec2.Mod...
    method ModifyFleetWithContext (line 18593) | func (m *MockEC2API) ModifyFleetWithContext(arg0 aws.Context, arg1 *ec...
    method ModifyFleetRequest (line 18613) | func (m *MockEC2API) ModifyFleetRequest(arg0 *ec2.ModifyFleetInput) (*...
    method ModifyFpgaImageAttribute (line 18628) | func (m *MockEC2API) ModifyFpgaImageAttribute(arg0 *ec2.ModifyFpgaImag...
    method ModifyFpgaImageAttributeWithContext (line 18643) | func (m *MockEC2API) ModifyFpgaImageAttributeWithContext(arg0 aws.Cont...
    method ModifyFpgaImageAttributeRequest (line 18663) | func (m *MockEC2API) ModifyFpgaImageAttributeRequest(arg0 *ec2.ModifyF...
    method ModifyHosts (line 18678) | func (m *MockEC2API) ModifyHosts(arg0 *ec2.ModifyHostsInput) (*ec2.Mod...
    method ModifyHostsWithContext (line 18693) | func (m *MockEC2API) ModifyHostsWithContext(arg0 aws.Context, arg1 *ec...
    method ModifyHostsRequest (line 18713) | func (m *MockEC2API) ModifyHostsRequest(arg0 *ec2.ModifyHostsInput) (*...
    method ModifyIdFormat (line 18728) | func (m *MockEC2API) ModifyIdFormat(arg0 *ec2.ModifyIdFormatInput) (*e...
    method ModifyIdFormatWithContext (line 18743) | func (m *MockEC2API) ModifyIdFormatWithContext(arg0 aws.Context, arg1 ...
    method ModifyIdFormatRequest (line 18763) | func (m *MockEC2API) ModifyIdFormatRequest(arg0 *ec2.ModifyIdFormatInp...
    method ModifyIdentityIdFormat (line 18778) | func (m *MockEC2API) ModifyIdentityIdFormat(arg0 *ec2.ModifyIdentityId...
    method ModifyIdentityIdFormatWithContext (line 18793) | func (m *MockEC2API) ModifyIdentityIdFormatWithContext(arg0 aws.Contex...
    method ModifyIdentityIdFormatRequest (line 18813) | func (m *MockEC2API) ModifyIdentityIdFormatRequest(arg0 *ec2.ModifyIde...
    method ModifyImageAttribute (line 18828) | func (m *MockEC2API) ModifyImageAttribute(arg0 *ec2.ModifyImageAttribu...
    method ModifyImageAttributeWithContext (line 18843) | func (m *MockEC2API) ModifyImageAttributeWithContext(arg0 aws.Context,...
    method ModifyImageAttributeRequest (line 18863) | func (m *MockEC2API) ModifyImageAttributeRequest(arg0 *ec2.ModifyImage...
    method ModifyInstanceAttribute (line 18878) | func (m *MockEC2API) ModifyInstanceAttribute(arg0 *ec2.ModifyInstanceA...
    method ModifyInstanceAttributeWithContext (line 18893) | func (m *MockEC2API) ModifyInstanceAttributeWithContext(arg0 aws.Conte...
    method ModifyInstanceAttributeRequest (line 18913) | func (m *MockEC2API) ModifyInstanceAttributeRequest(arg0 *ec2.ModifyIn...
    method ModifyInstanceCapacityReservationAttributes (line 18928) | func (m *MockEC2API) ModifyInstanceCapacityReservationAttributes(arg0 ...
    method ModifyInstanceCapacityReservationAttributesWithContext (line 18943) | func (m *MockEC2API) ModifyInstanceCapacityReservationAttributesWithCo...
    method ModifyInstanceCapacityReservationAttributesRequest (line 18963) | func (m *MockEC2API) ModifyInstanceCapacityReservationAttributesReques...
    method ModifyInstanceCreditSpecification (line 18978) | func (m *MockEC2API) ModifyInstanceCreditSpecification(arg0 *ec2.Modif...
    method ModifyInstanceCreditSpecificationWithContext (line 18993) | func (m *MockEC2API) ModifyInstanceCreditSpecificationWithContext(arg0...
    method ModifyInstanceCreditSpecificationRequest (line 19013) | func (m *MockEC2API) ModifyInstanceCreditSpecificationRequest(arg0 *ec...
    method ModifyInstanceEventStartTime (line 19028) | func (m *MockEC2API) ModifyInstanceEventStartTime(arg0 *ec2.ModifyInst...
    method ModifyInstanceEventStartTimeWithContext (line 19043) | func (m *MockEC2API) ModifyInstanceEventStartTimeWithContext(arg0 aws....
    method ModifyInstanceEventStartTimeRequest (line 19063) | func (m *MockEC2API) ModifyInstanceEventStartTimeRequest(arg0 *ec2.Mod...
    method ModifyInstanceMetadataOptions (line 19078) | func (m *MockEC2API) ModifyInstanceMetadataOptions(arg0 *ec2.ModifyIns...
  
Condensed preview — 118 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,029K chars).
[
  {
    "path": ".circleci/config.yml",
    "chars": 383,
    "preview": "version: 2\njobs:\n  build:\n    docker:\n      - image: circleci/golang:1.10\n    working_directory: /go/src/github.com/awsl"
  },
  {
    "path": ".dockerignore",
    "chars": 11,
    "preview": "Dockerfile\n"
  },
  {
    "path": ".gitignore",
    "chars": 45,
    "preview": ".DS_Store\nbin\nfargate\ndist\nfargatecli\nvendor\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 3876,
    "preview": "## 0.3.1 (2019-05-09)\n\n### Enhancements\n\n- Added support for ap-south-1, ca-central-1 and ap-northeast-2 regions\n\n## 0.3"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 2219,
    "preview": "# Amazon Open Source Code of Conduct\n\nThis code of conduct provides guidance on participation in Amazon-managed open\nsou"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2140,
    "preview": "**Welcome!** Thank you for considering contributing to this project! If I can\nhelp in anyway to get you going, please fe"
  },
  {
    "path": "Dockerfile",
    "chars": 274,
    "preview": "FROM golang:alpine\n\nRUN apk add --no-cache git upx\n\nWORKDIR /fargate\n\nADD go.mod .\nRUN go mod download\n\nADD . /fargate\nR"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 1438,
    "preview": ".PHONY: mocks test build dist\n\nPACKAGES := $(shell go list ./... | grep -v /mock)\n\nmocks:\n\tgo get github.com/golang/mock"
  },
  {
    "path": "README.md",
    "chars": 24737,
    "preview": "# Fargate CLI\n\n[![CircleCI](https://circleci.com/gh/jpignata/fargate/tree/master.svg?style=svg)](https://circleci.com/gh"
  },
  {
    "path": "acm/certificate.go",
    "chars": 7341,
    "preview": "package acm\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawsacm \"github.com/aws/aws-sdk-go/service/acm"
  },
  {
    "path": "acm/certificate_test.go",
    "chars": 14378,
    "preview": "package acm\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"math/rand\"\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t"
  },
  {
    "path": "acm/main.go",
    "chars": 1079,
    "preview": "package acm\n\n//go:generate mockgen -package client -destination=mock/client/client.go github.com/awslabs/fargatecli/acm "
  },
  {
    "path": "acm/mock/client/client.go",
    "chars": 3751,
    "preview": "// Code generated by MockGen. DO NOT EDIT.\n// Source: github.com/awslabs/fargatecli/acm (interfaces: Client)\n\n// Package"
  },
  {
    "path": "acm/mock/sdk/acmiface.go",
    "chars": 35146,
    "preview": "// Code generated by MockGen. DO NOT EDIT.\n// Source: ../vendor/github.com/aws/aws-sdk-go/service/acm/acmiface/interface"
  },
  {
    "path": "acm/mock/sdk/paginators.go",
    "chars": 456,
    "preview": "package sdk\n\nimport (\n\t\"github.com/aws/aws-sdk-go/service/acm\"\n\t\"github.com/aws/aws-sdk-go/service/acm/acmiface\"\n)\n\ntype"
  },
  {
    "path": "cloudwatchlogs/log_group.go",
    "chars": 2241,
    "preview": "package cloudwatchlogs\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr"
  },
  {
    "path": "cloudwatchlogs/main.go",
    "chars": 308,
    "preview": "package cloudwatchlogs\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/session\"\n\t\"github.com/aws/aws-sdk-go/service/cloudwatch"
  },
  {
    "path": "cmd/certificate.go",
    "chars": 1469,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype certificateOpera"
  },
  {
    "path": "cmd/certificate_destroy.go",
    "chars": 1592,
    "preview": "package cmd\n\nimport (\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype certificateDestroyOperation"
  },
  {
    "path": "cmd/certificate_destroy_test.go",
    "chars": 4802,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"gith"
  },
  {
    "path": "cmd/certificate_import.go",
    "chars": 3471,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype certif"
  },
  {
    "path": "cmd/certificate_import_test.go",
    "chars": 5322,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"io/ioutil\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslab"
  },
  {
    "path": "cmd/certificate_info.go",
    "chars": 1991,
    "preview": "package cmd\n\nimport (\n\t\"strings\"\n\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype certificateInfo"
  },
  {
    "path": "cmd/certificate_info_test.go",
    "chars": 6750,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/"
  },
  {
    "path": "cmd/certificate_list.go",
    "chars": 2260,
    "preview": "package cmd\n\nimport (\n\t\"context\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"github.com/spf13/cob"
  },
  {
    "path": "cmd/certificate_list_test.go",
    "chars": 6344,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/"
  },
  {
    "path": "cmd/certificate_request.go",
    "chars": 2689,
    "preview": "package cmd\n\nimport (\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype certificateRequestOperation"
  },
  {
    "path": "cmd/certificate_request_test.go",
    "chars": 3035,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/acm"
  },
  {
    "path": "cmd/certificate_test.go",
    "chars": 2600,
    "preview": "package cmd\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"git"
  },
  {
    "path": "cmd/certificate_validate.go",
    "chars": 3157,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"github.com/awslabs/fargatecli/route53\"\n\t\"github.com"
  },
  {
    "path": "cmd/certificate_validate_test.go",
    "chars": 14035,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/acm\"\n\tacmcl"
  },
  {
    "path": "cmd/lb.go",
    "chars": 1222,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\n\t\"github.com/awslabs/fargatecli/elbv2\"\n\t\"github.com/spf13/cobra\"\n)\n\nconst defaultTarget"
  },
  {
    "path": "cmd/lb_alias.go",
    "chars": 2300,
    "preview": "package cmd\n\nimport (\n\t\"github.com/awslabs/fargatecli/elbv2\"\n\t\"github.com/awslabs/fargatecli/route53\"\n\t\"github.com/spf13"
  },
  {
    "path": "cmd/lb_alias_test.go",
    "chars": 6587,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/cmd/mock\"\n\t"
  },
  {
    "path": "cmd/lb_create.go",
    "chars": 9014,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/awslabs/fargatecli/acm\"\n\t\"github.com/awslabs/fargatecli/ec2\"\n\t\"github.com/aws"
  },
  {
    "path": "cmd/lb_create_test.go",
    "chars": 29111,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/"
  },
  {
    "path": "cmd/lb_destroy.go",
    "chars": 905,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tELBV2 \"github.com/awslabs/fargatecli/elbv2\"\n\t\"gi"
  },
  {
    "path": "cmd/lb_info.go",
    "chars": 2492,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n\t\"text/tabwriter\"\n\n\tACM \"github.com/awslabs/fargatecli/acm\"\n\t\"gith"
  },
  {
    "path": "cmd/lb_list.go",
    "chars": 2225,
    "preview": "package cmd\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"sort\"\n\t\"sync\"\n\n\t\"github.com/awslabs/fargatecli/elbv2\"\n\t\"github.com/spf13/cobra"
  },
  {
    "path": "cmd/lb_list_test.go",
    "chars": 5557,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/"
  },
  {
    "path": "cmd/logs.go",
    "chars": 3401,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"math/rand\"\n\t\"strings\"\n\t\"time\"\n\n\tlru \"github.com/hashicorp/golang-lru\"\n\tCWL \"github.com/aw"
  },
  {
    "path": "cmd/mock/output.go",
    "chars": 1749,
    "preview": "package mock\n\nimport (\n\t\"fmt\"\n\t\"sync\"\n)\n\ntype Output struct {\n\tDebugMsgs    []string\n\tExited       bool\n\tFatalMsgs    []"
  },
  {
    "path": "cmd/output.go",
    "chars": 4253,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"text/tabwriter\"\n\n\t\"github.com/kyokomi/emoji\"\n\t\"github.com/mgutz/ansi\"\n)\n"
  },
  {
    "path": "cmd/output_test.go",
    "chars": 2055,
    "preview": "package cmd\n\nimport \"errors\"\n\nvar consoleOutput = ConsoleOutput{\n\tColor:   false,\n\tEmoji:   false,\n\tVerbose: true,\n\tTest"
  },
  {
    "path": "cmd/port.go",
    "chars": 1777,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype Port struct {\n\tNumber   int64\n\tProtocol string\n}\n\nf"
  },
  {
    "path": "cmd/port_test.go",
    "chars": 777,
    "preview": "package cmd\n\nimport (\n\t\"testing\"\n)\n\nfunc TestEmpty(t *testing.T) {\n\tvar tests = []struct {\n\t\tport  Port\n\t\tempty bool\n\t}{"
  },
  {
    "path": "cmd/root.go",
    "chars": 6131,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/a"
  },
  {
    "path": "cmd/root_test.go",
    "chars": 1823,
    "preview": "package cmd\n\nimport \"testing\"\n\nvar validateCpuAndMemoryTests = []struct {\n\tCpuUnits  string\n\tMebibytes string\n\tOut      "
  },
  {
    "path": "cmd/service.go",
    "chars": 612,
    "preview": "package cmd\n\nimport (\n\t\"github.com/spf13/cobra\"\n)\n\nconst serviceLogGroupFormat = \"/fargate/service/%s\"\n\nvar serviceCmd ="
  },
  {
    "path": "cmd/service_create.go",
    "chars": 14499,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\tCWL \"github.com/awslabs/fargatecli/cloudwatchlogs\"\n\t\"github.com/awsl"
  },
  {
    "path": "cmd/service_deploy.go",
    "chars": 2335,
    "preview": "package cmd\n\nimport (\n\t\"github.com/awslabs/fargatecli/console\"\n\t\"github.com/awslabs/fargatecli/docker\"\n\tECR \"github.com/"
  },
  {
    "path": "cmd/service_destroy.go",
    "chars": 2288,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/fargatecli/ecs\"\n\tELBV2 \""
  },
  {
    "path": "cmd/service_env.go",
    "chars": 199,
    "preview": "package cmd\n\nimport (\n\t\"github.com/spf13/cobra\"\n)\n\nvar serviceEnvCmd = &cobra.Command{\n\tUse:   \"env\",\n\tShort: \"Manage en"
  },
  {
    "path": "cmd/service_env_list.go",
    "chars": 823,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\tECS \"github.com/awslabs/fargatecli/ecs\"\n\t\"github.com/spf13/cobra\"\n)\n\ntype ServiceEnvListOp"
  },
  {
    "path": "cmd/service_env_set.go",
    "chars": 1783,
    "preview": "package cmd\n\nimport (\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/fargatecli/ecs\"\n\t\"github.com/spf"
  },
  {
    "path": "cmd/service_env_unset.go",
    "chars": 1739,
    "preview": "package cmd\n\nimport (\n\t\"strings\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/fargatecli/ecs\"\n\t\"gi"
  },
  {
    "path": "cmd/service_info.go",
    "chars": 4879,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n\t\"text/tabwriter\"\n\n\tACM \"github.com/awslabs/fargatecli/acm\"\n\t\"gith"
  },
  {
    "path": "cmd/service_list.go",
    "chars": 2035,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"text/tabwriter\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/"
  },
  {
    "path": "cmd/service_logs.go",
    "chars": 2798,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/spf13/cobra\"\n)\n\nvar (\n\tflagServiceLogsFilter    string\n\tflagServiceLogsEndTim"
  },
  {
    "path": "cmd/service_ps.go",
    "chars": 1425,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"text/tabwriter\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tEC2 \"github.com/awslabs/"
  },
  {
    "path": "cmd/service_restart.go",
    "chars": 924,
    "preview": "package cmd\n\nimport (\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/fargatecli/ecs\"\n\t\"github.com/spf"
  },
  {
    "path": "cmd/service_scale.go",
    "chars": 2263,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/far"
  },
  {
    "path": "cmd/service_update.go",
    "chars": 2870,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/fargatecli/ecs\"\n\t\"github"
  },
  {
    "path": "cmd/string_util.go",
    "chars": 613,
    "preview": "package cmd\n\nimport \"strings\"\n\n// Humanize takes strings intended for machines and prettifies them for humans.\nfunc Huma"
  },
  {
    "path": "cmd/string_util_test.go",
    "chars": 495,
    "preview": "package cmd\n\nimport \"fmt\"\n\nfunc ExampleHumanize() {\n\tfmt.Println(Humanize(\"HELLO_COMPUTER\"))\n\t// Output: hello computer\n"
  },
  {
    "path": "cmd/task.go",
    "chars": 470,
    "preview": "package cmd\n\nimport (\n\t\"github.com/spf13/cobra\"\n)\n\nconst taskLogGroupFormat = \"/fargate/task/%s\"\n\nvar taskCmd = &cobra.C"
  },
  {
    "path": "cmd/task_info.go",
    "chars": 2690,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tEC2 \"github.com/awslabs/fargatecli/ec"
  },
  {
    "path": "cmd/task_list.go",
    "chars": 785,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"text/tabwriter\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/"
  },
  {
    "path": "cmd/task_logs.go",
    "chars": 2643,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/spf13/cobra\"\n)\n\nvar (\n\tflagTaskLogsFilter    string\n\tflagTaskLogsEndTime   st"
  },
  {
    "path": "cmd/task_ps.go",
    "chars": 1357,
    "preview": "package cmd\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"text/tabwriter\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n\tEC2 \"github.com/awslabs/"
  },
  {
    "path": "cmd/task_run.go",
    "chars": 8312,
    "preview": "package cmd\n\nimport (\n\tCWL \"github.com/awslabs/fargatecli/cloudwatchlogs\"\n\t\"github.com/awslabs/fargatecli/console\"\n\t\"git"
  },
  {
    "path": "cmd/task_stop.go",
    "chars": 1587,
    "preview": "package cmd\n\nimport (\n\t\"github.com/awslabs/fargatecli/console\"\n\tECS \"github.com/awslabs/fargatecli/ecs\"\n\t\"github.com/spf"
  },
  {
    "path": "cmd/testdata/certificate.crt",
    "chars": 1440,
    "preview": "-----BEGIN CERTIFICATE-----\nMIID+TCCAuGgAwIBAgIJAJ2PPB292VTPMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYD\nVQQGEwJVUzERMA8GA1UECAwITmV"
  },
  {
    "path": "cmd/testdata/chain.crt",
    "chars": 1663,
    "preview": "-----BEGIN CERTIFICATE-----\nMIIEoDCCA4igAwIBAgIQBpaPlkroI1bHThfCtTZbADANBgkqhkiG9w0BAQsFADBs\nMQswCQYDVQQGEwJVUzEVMBMGA1U"
  },
  {
    "path": "cmd/testdata/private.key",
    "chars": 1679,
    "preview": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAoNOwzw7dzqat3GLi9Zs+AaWVLl8TBrS5cIwcDKnQ6B6gDiWe\nmnVAG5gsXbTSHbCtUvjdsaa"
  },
  {
    "path": "cmd/vpc_operation.go",
    "chars": 1880,
    "preview": "package cmd\n\nimport (\n\t\"github.com/awslabs/fargatecli/ec2\"\n)\n\ntype vpcOperation struct {\n\tec2              ec2.Client\n\to"
  },
  {
    "path": "cmd/vpc_operation_test.go",
    "chars": 7504,
    "preview": "package cmd\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/golang/mock/gomock\"\n\t\"github.com/awslabs/fargatecli/cmd/mock\"\n\t"
  },
  {
    "path": "console/main.go",
    "chars": 2463,
    "preview": "package console\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/mgutz/ansi\"\n)\n\nvar (\n\tVerbose = false\n\tColor   = true\n)\n"
  },
  {
    "path": "doc/website/index.html",
    "chars": 12467,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <title>fargate :: A CLI for AWS Fargate</title>\n\n    <meta charset=\"utf-8\""
  },
  {
    "path": "doc/website/styles.css",
    "chars": 1144,
    "preview": "body {\n  font-family: 'Lato', sans-serif;\n  margin-bottom: 700px;\n}\n\npre {\n  background-color: #111;\n  color: #f5f5f5;\n "
  },
  {
    "path": "docker/main.go",
    "chars": 2213,
    "preview": "package docker\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"time\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n)\n\nconst timestampFormat = \""
  },
  {
    "path": "ec2/eni.go",
    "chars": 1059,
    "preview": "package ec2\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawsec2 \"github.com/aws/aws-sdk-go/service/ec2\"\n\t\"github.com/awsl"
  },
  {
    "path": "ec2/main.go",
    "chars": 1031,
    "preview": "package ec2\n\n//go:generate mockgen -package client -destination=mock/client/client.go github.com/awslabs/fargatecli/ec2 "
  },
  {
    "path": "ec2/mock/client/client.go",
    "chars": 3809,
    "preview": "// Code generated by MockGen. DO NOT EDIT.\n// Source: github.com/awslabs/fargatecli/ec2 (interfaces: Client)\n\n// Package"
  },
  {
    "path": "ec2/mock/sdk/ec2iface.go",
    "chars": 1242557,
    "preview": "// Code generated by MockGen. DO NOT EDIT.\n// Source: ../vendor/github.com/aws/aws-sdk-go/service/ec2/ec2iface/interface"
  },
  {
    "path": "ec2/vpc.go",
    "chars": 3221,
    "preview": "package ec2\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\tawsec2 \"github.c"
  },
  {
    "path": "ec2/vpc_test.go",
    "chars": 7665,
    "preview": "package ec2\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\taw"
  },
  {
    "path": "ecr/main.go",
    "chars": 220,
    "preview": "package ecr\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/session\"\n\t\"github.com/aws/aws-sdk-go/service/ecr\"\n)\n\ntype ECR stru"
  },
  {
    "path": "ecr/repository.go",
    "chars": 2202,
    "preview": "package ecr\n\nimport (\n\t\"encoding/base64\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/aw"
  },
  {
    "path": "ecs/cluster.go",
    "chars": 379,
    "preview": "package ecs\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawsecs \"github.com/aws/aws-sdk-go/service/ecs\"\n)\n\nfunc (ecs *ECS"
  },
  {
    "path": "ecs/main.go",
    "chars": 304,
    "preview": "package ecs\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/session\"\n\t\"github.com/aws/aws-sdk-go/service/ecs\"\n)\n\ntype ECS stru"
  },
  {
    "path": "ecs/service.go",
    "chars": 8201,
    "preview": "package ecs\n\nimport (\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\t\"github.com/aws/aws-sdk-go/aws/awserr\"\n\tawsecs \""
  },
  {
    "path": "ecs/task.go",
    "chars": 5826,
    "preview": "package ecs\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawsecs \"github.com/aws/aws-"
  },
  {
    "path": "ecs/task_definition.go",
    "chars": 8744,
    "preview": "package ecs\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawsecs \"github.com/aws/aws-sdk-go/service/ecs"
  },
  {
    "path": "elbv2/listener.go",
    "chars": 8119,
    "preview": "package elbv2\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawselbv2 \"github.com/aws"
  },
  {
    "path": "elbv2/listener_test.go",
    "chars": 4468,
    "preview": "package elbv2\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawselbv2 \"github.com/aws/aws-sdk-go/ser"
  },
  {
    "path": "elbv2/load_balancer.go",
    "chars": 4568,
    "preview": "package elbv2\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawselbv2 \"github.com/aws/aws-sdk-go/service/elbv2\"\n\t\"g"
  },
  {
    "path": "elbv2/load_balancer_test.go",
    "chars": 5476,
    "preview": "package elbv2\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawselbv2 \"github.com/aws/aws-sdk-go/serv"
  },
  {
    "path": "elbv2/main.go",
    "chars": 1295,
    "preview": "// Package elbv2 is a client for Elastic Load Balancing (v2).\npackage elbv2\n\n//go:generate mockgen -package client -dest"
  },
  {
    "path": "elbv2/mock/client/client.go",
    "chars": 4546,
    "preview": "// Code generated by MockGen. DO NOT EDIT.\n// Source: github.com/awslabs/fargatecli/elbv2 (interfaces: Client)\n\n// Packa"
  },
  {
    "path": "elbv2/mock/sdk/elbv2iface.go",
    "chars": 94937,
    "preview": "// Code generated by MockGen. DO NOT EDIT.\n// Source: ../vendor/github.com/aws/aws-sdk-go/service/elbv2/elbv2iface/inter"
  },
  {
    "path": "elbv2/mock/sdk/paginators.go",
    "chars": 839,
    "preview": "package sdk\n\nimport (\n\t\"github.com/aws/aws-sdk-go/service/elbv2\"\n\t\"github.com/aws/aws-sdk-go/service/elbv2/elbv2iface\"\n)"
  },
  {
    "path": "elbv2/target_group.go",
    "chars": 3731,
    "preview": "package elbv2\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawselbv2 \"github.com/aws/aws-sdk-go/service/elbv2\"\n\t\"github.co"
  },
  {
    "path": "elbv2/target_group_test.go",
    "chars": 1974,
    "preview": "package elbv2\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawselbv2 \"github.com/aws/aws-sdk-go/serv"
  },
  {
    "path": "git/main.go",
    "chars": 558,
    "preview": "package git\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\n\t\"github.com/awslabs/fargatecli/console\"\n)\n\nfunc GetShortSha() string"
  },
  {
    "path": "git/main_test.go",
    "chars": 1872,
    "preview": "package git\n\nimport (\n\t\"io/ioutil\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestGetShortSha(t *testing.T) {\n\tcwd, "
  },
  {
    "path": "go.mod",
    "chars": 812,
    "preview": "module github.com/awslabs/fargatecli\n\nrequire (\n\tgithub.com/aws/aws-sdk-go v1.30.7\n\tgithub.com/go-ini/ini v1.32.0 // ind"
  },
  {
    "path": "go.sum",
    "chars": 7380,
    "preview": "github.com/aws/aws-sdk-go v1.12.70 h1:rMdb/jACFOE7uJ6govc9kS6rzytrRnW2H2NHBCwkowE=\ngithub.com/aws/aws-sdk-go v1.12.70/go"
  },
  {
    "path": "iam/main.go",
    "chars": 220,
    "preview": "package iam\n\nimport (\n\t\"github.com/aws/aws-sdk-go/aws/session\"\n\t\"github.com/aws/aws-sdk-go/service/iam\"\n)\n\ntype IAM stru"
  },
  {
    "path": "iam/role.go",
    "chars": 1391,
    "preview": "package iam\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawsiam \"github.com/aws/aws-sdk-go/service/iam\"\n)\n\n"
  },
  {
    "path": "main.go",
    "chars": 94,
    "preview": "package main\n\nimport (\n\t\"github.com/awslabs/fargatecli/cmd\"\n)\n\nfunc main() {\n\tcmd.Execute()\n}\n"
  },
  {
    "path": "route53/hosted_zone.go",
    "chars": 3720,
    "preview": "package route53\n\nimport (\n\t\"sort\"\n\t\"strings\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawsroute53 \"github.com/aws/aws-sdk-go/se"
  },
  {
    "path": "route53/hosted_zone_test.go",
    "chars": 5540,
    "preview": "package route53\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/aws/aws-sdk-go/aws\"\n\tawsroute53 \"github.com/aws/aws-sdk-go/"
  },
  {
    "path": "route53/main.go",
    "chars": 1043,
    "preview": "package route53\n\n//go:generate mockgen -package client -destination=mock/client/client.go github.com/awslabs/fargatecli/"
  },
  {
    "path": "route53/mock/client/client.go",
    "chars": 2617,
    "preview": "// Code generated by MockGen. DO NOT EDIT.\n// Source: github.com/awslabs/fargatecli/route53 (interfaces: Client)\n\n// Pac"
  },
  {
    "path": "route53/mock/sdk/paginators.go",
    "chars": 482,
    "preview": "package sdk\n\nimport (\n\t\"github.com/aws/aws-sdk-go/service/route53\"\n\t\"github.com/aws/aws-sdk-go/service/route53/route53if"
  },
  {
    "path": "route53/mock/sdk/route53iface.go",
    "chars": 151057,
    "preview": "// Code generated by MockGen. DO NOT EDIT.\n// Source: ../vendor/github.com/aws/aws-sdk-go/service/route53/route53iface/i"
  }
]

About this extraction

This page contains the full source code of the jpignata/fargate GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 118 files (1.8 MB), approximately 513.1k tokens, and a symbol index with 4173 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!