From 5e6d4df63c6ecda84aded93d2f632df289a9e084 Mon Sep 17 00:00:00 2001 From: Elie Date: Tue, 24 Aug 2021 17:07:34 +0200 Subject: [PATCH] Wording fixes --- docs/README.md | 4 +- docs/media/generalflow.png | Bin 46926 -> 47249 bytes docs/media/generalflow.puml | 28 +++++------ docs/media/resource.png | Bin 57139 -> 58074 bytes docs/media/resource.puml | 12 ++--- docs/new-remote-provider.md | 66 +++++++++++++----------- docs/new-resource.md | 98 ++++++++++++++++++------------------ docs/testing.md | 10 ++-- 8 files changed, 115 insertions(+), 103 deletions(-) diff --git a/docs/README.md b/docs/README.md index 764abbd1..e8e1c792 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,5 +16,5 @@ Resource listing is done using cloud providers SDK. Resource details retrieval i - `Remote` is a representation of a cloud provider - `Resource` is an abstract representation of a cloud provider resource (e.g. S3 bucket, EC2 instance, etc ...) -- `Enumerator` is used to list resources from a given type on a given remote and return a resource list, it should exist only one Enumerator per resource -- `DetailFetcher` is used to retrieve details for resources from a given type, this is an optional layer and is used only in deep mode. +- `Enumerator` is used to list resources of a given type from a given remote and return a resource list, it should exist only one Enumerator per resource +- `DetailsFetcher` is used to retrieve resource's details of a given type, this is an optional layer and is used only in deep mode. diff --git a/docs/media/generalflow.png b/docs/media/generalflow.png index d5e31ec72ce43d73ad9137313116aab3e8064c92..147d96971c988b093a495f186b585402c2379270 100644 GIT binary patch literal 47249 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

&4mhr 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 IACSupplier: Resource() -IACSupplier --> Driftctl: stateResources []Resource -Driftctl -> RemoteSupplier: Resource() -RemoteSupplier --> Driftctl: remoteResources []Resource +driftctl -> IACSupplier: Resource() +IACSupplier --> driftctl: stateResources []Resource +driftctl -> RemoteSupplier: Resource() +RemoteSupplier --> driftctl: remoteResources []Resource hnote across: Run Middlewares -Driftctl --> Driftctl: List Middlewares -loop on every middleware -Driftctl -> Middleware: Execute(remoteResources, stateResources) -Middleware --> Driftctl: remoteResources, stateResources []Resource +driftctl --> driftctl: List Middlewares +loop on each middleware +driftctl -> Middleware: Execute(remoteResources, stateResources) +Middleware --> driftctl: remoteResources, stateResources []Resource end hnote across: Run Filters -Driftctl -> FilterEngine: Run(remoteResources) -FilterEngine --> Driftctl: remoteResources []Resource -Driftctl -> FilterEngine: Run(stateResources) -FilterEngine --> Driftctl: stateResources []Resource +driftctl -> FilterEngine: Run(remoteResources) +FilterEngine --> driftctl: remoteResources []Resource +driftctl -> FilterEngine: Run(stateResources) +FilterEngine --> driftctl: stateResources []Resource hnote across: Analyze -Driftctl -> Analyzer: Analyze(remoteResources, stateResources) -Analyzer --> Driftctl: Analyze +driftctl -> Analyzer: Analyze(remoteResources, stateResources) +Analyzer --> driftctl: Analyze @enduml diff --git a/docs/media/resource.png b/docs/media/resource.png index 14919b694385f7618b261c4966d2c2edd1c11eaf..74651c646a7d6add4294505cad1ade25c93fe3ba 100644 GIT binary patch literal 58074 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%0Atjt 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 Ny*a3zr=hM^&Y%)6pf7={5HTSk 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 diff --git a/docs/media/resource.puml b/docs/media/resource.puml index 6bda5a57..1079e4f0 100644 --- a/docs/media/resource.puml +++ b/docs/media/resource.puml @@ -1,16 +1,16 @@ @startuml -Driftctl -> Scanner: Resource() +driftctl -> Scanner: Resource() hnote across: Enumeration phase Scanner -> Scanner: List Enumerators loop Scanner -> Enumerator: Enumerate() -Enumerator -> RemoteSDK: List resource +Enumerator -> RemoteSDK: List resources RemoteSDK --> Enumerator: []remoteRes -alt optionaly retrive resource needed attributes -Enumerator -> RemoteSDK: Retreive needed\nattributes +alt optionally retrieve resource needed attributes +Enumerator -> RemoteSDK: Retrieve needed attributes RemoteSDK --> Enumerator: Attrs end -Enumerator --> Scanner: []Resource with\nlimited attributes +Enumerator --> Scanner: []Resource with limited attributes end alt if deep mode enabled hnote across: Details fetching phase @@ -23,5 +23,5 @@ Deserializer -> DetailsFetcher: Resource DetailsFetcher -> Scanner: Resource with\nfull attributes end end -Scanner --> Driftctl: []Resource +Scanner --> driftctl: []Resource @enduml diff --git a/docs/new-remote-provider.md b/docs/new-remote-provider.md index 0fd761a1..3e1d7281 100644 --- a/docs/new-remote-provider.md +++ b/docs/new-remote-provider.md @@ -1,19 +1,23 @@ # Add a new remote provider -A remote provider in Driftctl is a cloud provider like AWS, Github, GCP or Azure. -Current architecture allows to add a new provider in a few step. +A remote provider in driftctl represents a cloud provider like AWS, GitHub, GCP or Azure. + +Our current architecture allows to add a new provider in a few steps. ## Declaring the new remote provider + First you need to create a new directory in `pkg/remote/`. It will sit next to already implemented one like `pkg/remote/aws`. -Inside this directory you will create a `init.go`. First thing to do will be to define the remote name constant: +Inside this directory, you will create a `init.go` file in which you will define the remote name constant: + ```go const RemoteAWSTerraform = "aws+tf" ``` -`+tf` mean that we use terraform to retrieve details of resources, in the future maybe it will exist other way to read resource details. +`+tf` means that we use Terraform to retrieve resource's details, in the future, we may add other ways to read those details. + +You will then create a function to initialize the provider and all resource's enumerators. The best way to do it would be to copy the function signature from another provider: -You will then create a function to init the provider and all the future resource enumerator. The best way to do it would be to copy the function signature from an other provider: ```go func Init( // Version required by the user @@ -22,37 +26,37 @@ func Init( alerter *alerter.Alerter, // Library that contains all providers providerLibrary *terraform.ProviderLibrary, - // Library that contains the enumerators and details fetcher for each supported resources + // Library that contains enumerators and details fetchers for each supported resources remoteLibrary *common.RemoteLibrary, - // progress display + // Progress displayer progress output.Progress, - // Repository for all resource schema + // Repository for all resource schemas resourceSchemaRepository *resource.SchemaRepository, // Factory used to create driftctl resource factory resource.ResourceFactory, - // Drifctl config directory (in which terraform provider is downloaded) + // driftctl configuration directory (where Terraform provider is downloaded) configDir string) error { - // Define the default version of terraform provider to be used. When the user does not require a specific one + // You need to define the default version of the Terraform provider when the user does not specify one if version == "" { version = "3.19.0" } - // This is this actual terraform provider creation + // Creation of the Terraform provider provider, err := NewAWSTerraformProvider(version, progress, configDir) if err != nil { return err } - // And then initialisation + // And then initialization err = provider.Init() if err != nil { return err } - // You'll need to create a new cache that will be use to cache fetched resources lists + // You'll need to create a new cache that will be used to cache fetched lists of resources repositoryCache := cache.New(100) - // Deserializer is used to convert cty value return by terraform provider to driftctl Resource + // Deserializer is used to convert cty value returned by Terraform provider to driftctl Resource deserializer := resource.NewDeserializer(factory) // Adding the provider to the library @@ -60,10 +64,11 @@ func Init( } ``` -When it's done you'll create a `provider.go` file to contains your terraform provider representation. Again you should looks at other implementation : +Once done, you'll create a `provider.go` file to contain your Terraform provider representation. Again you should look at other implementation: + ```go -// Define your actual provider representation, It is required to compose with terraform.TerraformProvider and to have a name and a version -// Please note that the name should match the real terraform provider name. +// Define your actual provider representation, it is required to compose with terraform.TerraformProvider, a name and a version +// Please note that the name should match the real Terraform provider name. type AWSTerraformProvider struct { *terraform.TerraformProvider session *session.Session @@ -77,7 +82,7 @@ func NewAWSTerraformProvider(version string, progress output.Progress, configDir version: version, name: "aws", } - // Use terraformproviderinstaller to retreive the provider if needed + // Use Terraform ProviderInstaller to retrieve the provider if needed installer, err := tf.NewProviderInstaller(tf.ProviderConfig{ Key: p.name, Version: version, @@ -90,7 +95,7 @@ func NewAWSTerraformProvider(version string, progress output.Progress, configDir SharedConfigState: session.SharedConfigEnable, })) - // Config is dependant on the teraform provider needs. + // ProviderConfig is dependent on the Terraform provider needs. tfProvider, err := terraform.NewTerraformProvider(installer, terraform.TerraformProviderConfig{ Name: p.name, DefaultAlias: *p.session.Config.Region, @@ -117,7 +122,7 @@ func (p *AWSTerraformProvider) Version() string { } ``` -The config returned in `GetProviderConfig` should be annotated with `cty` tags to be passed to the provider. +The configuration returned in `GetProviderConfig` should be annotated with `cty` tags to be passed to the provider. ```go type githubConfig struct { @@ -127,15 +132,17 @@ type githubConfig struct { } ``` +You are now almost done. You'll need to make driftctl aware of this provider. Thus, the in `pkg/remote/remote.go` file, add your new constant in `supportedRemotes`: -You are now almost done. You'll need to make driftctl aware of this provider so in `pkg/remote/remote.go` add your new constant in `supportedRemotes`: ```go var supportedRemotes = []string{ aws.RemoteAWSTerraform, github.RemoteGithubTerraform, } ``` -And don't forget to modify the Activate function to be able to activate your new provider. You'll need to add a new case in the switch: + +Don't forget to modify the Activate function. You'll need to add a new case in the switch statement: + ```go func Activate(remote, version string, alerter *alerter.Alerter, providerLibrary *terraform.ProviderLibrary, @@ -155,20 +162,23 @@ func Activate(remote, version string, alerter *alerter.Alerter, } ``` -Your provider is now set up ! +Your provider is now set up! -## Prepare Driftctl to support new resources +## Prepare driftctl to support new resources + +Each new resource of the newly added provider will be located in `pkg/resource/` directory. You need to create the latter and the `metadatas.go` file inside it. -New resource for the just added provider will be located in `pkg/resource/`. You should create this directory and the `metadata.go` file. Inside this file add a new function: + ```go func InitResourcesMetadata(resourceSchemaRepository resource.SchemaRepositoryInterface) { } ``` -And add a call to it in the `remote//init.go` you created at first step. +Then, add a call to this function in the `remote//init.go` file you created in the first step. + +You also need to create a test schema for upcoming tests. -You also need to create a test schema for upcoming test. Please use `TestCreateNewSchema` located in `test/schemas/schemas_test.go` to generate a schema file that will be used for the mocked provider. -Everything is now ready, you should [start adding new resources](new-resource.md) ! +Everything is now ready, you should [start adding new resources](new-resource.md)! diff --git a/docs/new-resource.md b/docs/new-resource.md index 482c942b..66816db7 100644 --- a/docs/new-resource.md +++ b/docs/new-resource.md @@ -1,21 +1,24 @@ # Add new resources -First you need to understand how driftctl scan works. Here you'll find a global overview of the step that compose the scan: +First, you need to understand how `driftctl scan` works. Here you'll find a global overview of the steps that compose the scan: ![Diagram](media/generalflow.png) -And here you'll see a more detailed flow of the retrieving resource sequence from remote: +Then, you'll find below a more detailed flow of how we handle the enumeration and the fetching of resource's details from the remote: + ![Diagram](media/resource.png) ## Defining the resource -First step would be to add a file under `pkg/resource//resourcetype.go`. -This file will define a const string that will be the resource type identifier in driftctl. -Optionally, if your resource is to be supported by driftctl experimental deep mode, you can add a function that will be -applied to this resource when it's created. This allows to prevent useless diff to be displayed. -You can also add some metadata to fields so they are compared or displayed differently. +First step would be to add a file called `pkg/resource//.go`. +This file will define a string constant that will be the resource type identifier in driftctl. + +Optionally, if your resource is to be supported by driftctl experimental deep mode, you can add a function that will be applied to this resource at creation. +This allows to prevent useless diffs to be displayed. +You can also add metadata to fields so that they are compared or displayed differently. + +For example this defines the `aws_iam_role` resource: -For example this defines the `aws_iam_role` resource : ```go const AwsIamRoleResourceType = "aws_iam_role" @@ -34,7 +37,8 @@ func initAwsIAMRoleMetaData(resourceSchemaRepository resource.SchemaRepositoryIn } ``` -When it's done you'll have to add this function to the metadata initialisation located in `pkg/resource//metadatas.go` : +When it's done you'll have to add this function to the metadata initialisation located in `pkg/resource//metadatas.go`: + ```go func InitResourcesMetadata(resourceSchemaRepository resource.SchemaRepositoryInterface) { initAwsAmiMetaData(resourceSchemaRepository) @@ -42,6 +46,7 @@ func InitResourcesMetadata(resourceSchemaRepository resource.SchemaRepositoryInt ``` In order for you new resource to be supported by our terraform state reader you should add it in `pkg/resource/resource_types.go` inside the `supportedTypes` slice. + ```go var supportedTypes = map[string]struct{}{ "aws_ami": {}, @@ -56,24 +61,24 @@ All the other attributes are represented inside a `map[string]interface` Then you will have to implement two interfaces: -- Repositories are the way we decided to hide direct calls to sdk and pagination logic. It's a common abstraction pattern for data retrieval. -- `remote.comon.Enumerator` is used to read resources list. It will call the cloud provider SDK to get the list of resources. +- Repositories are the way we decided to hide direct calls to SDK and pagination logic. It's a common abstraction pattern for data retrieval. +- `remote.common.Enumerator` is used to enumerate resources. It will call the cloud provider SDK to get the list of resources. For some resource it could make other call to enrich the resource with additional attributes when driftctl is used in deep mode -- `remote.comon.DetailsFetcher` is used to retrieve resource details. It makes a call to terraform provider `ReadResource`. +- `remote.common.DetailsFetcher` is used to retrieve resource's details. It makes a call to Terraform provider `ReadResource`. This implementation is optional and is only needed if your resource type is to be supported by experimental deep mode. - Please also note that it exists a generic implementation as `remote.common.GenericDetailsFetcher` that can be used with most resource type. + Please also note that it exists a generic implementation called `remote.common.GenericDetailsFetcher` that can be used with most resource types. ### Repository -This will be the component that hide all the logic linked to your provider sdk. All provider have different way to implement pagination or to name function in their api. -Here we will name all listing function `ListAll`. +This will be the component that hides all the logic linked to your provider SDK. All providers have different ways to implement pagination or to name function in their API. -For aws we decided to split repositories using the amazon logic. So you'll find repositories for EC2, S3 and so on. +Here we will name all listing functions `ListAll`. + +For AWS we decided to split repositories using the Amazon logic. So you'll find repositories for EC2, S3 and so on. Some provider does not have this grouping logic. Keep in mind that like all our file/struct repositories should not be too big. -So it might be useful to create a grouping logic. -For our Github implementation the number of listing function was not that heavy so we created a unique repository for everything: +For our GitHub implementation the number of listing functions was not that heavy, so we created a unique repository for everything: ```go type GithubRepository interface { @@ -109,37 +114,33 @@ func NewGithubRepository(config githubConfig, c cache.Cache) *githubRepository { } ``` -So as you can see this contains the logic to create the github client (it might be created outside the repository if it -makes sense to share it between multiple repositories). It also get a cache so every request is cached. -Driftctl sometimes needs to retrieve list of resources more than once, so we cache every request to avoid unnecessary call. +As you can see, this contains the logic to create the GitHub client (it might be created outside the repository if it makes sense to share it between multiple repositories). +driftctl, sometimes, needs to retrieve the list of resources more than once, so we cache each request to avoid unnecessary call. ### Enumerator -This is used to build a resources list. Enumerators can be found in `pkg/remote//_enumerator.go`. It will call the cloud provider SDK to get the list of resources. +Enumerators can be found in `pkg/remote//_enumerator.go`. It will call the cloud provider SDK to get the list of resources. -Note that at this point resources should not be entirely fetched. +Note that at this point, resources should not be entirely fetched and most of them will have empty attributes (e.g. only their id and type). Most of the resource returned by enumerator have empty attributes: they only represent type and terraform id. -**There are exception to this**: -- Sometime, you will need some more information about resources to retrieve them using the provider they should be added to the resource attribute maps. -- For some more complex cases, middleware needs more information that the id and type and in order to make classic run of driftctl coherent with a run with deep mode activated, -these informations should be fetched manually by the enumerator using the remote sdk. +**There are exceptions to this**: +- Sometimes, you will need more information about resources for them to be fetched in the `DetailsFetcher`. For those cases, you will add specific attributes to the map of data. +- For complex cases (e.g. middlewares) where you would need driftctl to run as expected in deep and non-deep mode, you would need to enumerate resources as well as to fetch manually specific attributes, using the remote SDK, before adding them to the map of data. -Note that we use the classic repository to hide calls to the provider sdk. -You will probably need to at least add a listing function to list you new resource. +You can use an already implemented Enumerator as example. -You should use an already implemented Enumerator as example. +For example, to implement `aws_instance` resource you will need to add a `ListAllInstances()` function to `repository.EC2Repository`. -For example when implementing ec2_instance resource you will need to add a ListAllInstances() function to `repository.EC2Repository`. -It will be called by the enumerator to retrieve the instances list. +Bear in mind it will be called by the Enumerator to retrieve the list of instances. Enumerator constructor could use these arguments: -- an instance of `Repository` that you will use to retrieved information about the resource +- an instance of `Repository` that you will use to retrieve information about the resource - the global resource factory that should always be used to create a new `resource.Resource` -Enumerator then need to implement: -- `SupportedType() resource.ResourceType` that will return the constant you defined in the type file at first step -- `Enumerate() ([]*resource.Resource, error)` that will return the resource listing. +Enumerator then needs to implement: +- `SupportedType() resource.ResourceType` that will return the constant you defined in the type file +- `Enumerate() ([]*resource.Resource, error)` that will return the list of resources ```go type EC2InstanceEnumerator struct { @@ -181,35 +182,36 @@ func (e *EC2InstanceEnumerator) Enumerate() ([]*resource.Resource, error) { } ``` -As you can see, listing error are treated in a particular way. Instead of failing and stopping the scan they will be handled, and an alert will be created. +As you can see, listing errors are treated in a particular way. Instead of failing and stopping the scan they will be handled, and an alert will be created. So please don't forget to wrap these errors inside a `NewResourceListingError`. For some provider error handling is not that coherent, so you might need to check in `pkg/remote/resource_enumeration_error_handler.go` and add a new case for your error. -You should test enumerator behavior when you do not have permission to enumerate resource, in the snippet above, `ListAllInstances` may return an `AccessDenied` error or so that should be handled. +You should test enumerator behavior when you do not have permission to enumerate resources. In the snippet above, `ListAllInstances` may return an `AccessDenied` error that should be handled. + +Once the enumerator is written you have to add it to the remote initialization located in `pkg/remote//init.go`: -Once the enumerator is written you have to add it to the remote init located in `pkg/remote//init.go` : ```go remoteLibrary.AddEnumerator(NewEC2InstanceEnumerator(s3Repository, factory)) ``` ### DetailsFetcher -DetailsFetcher are only used by driftctl experimental deep mode. +DetailsFetchers are only used by driftctl experimental deep mode. -This is the component that call terraform provider to retrieve the full attribute for each resource. -We do not want to reimplement what has already been done in every terraform provider, so you should not call the remote sdk there. +This is the component that call Terraform provider to retrieve all attributes for each resource. +We do not want to reimplement what has already been done in each Terraform provider. Thus, you should not call the remote SDK there. -If `common.GenericDetailsFetcher` satisfy your needs you should always prefer using it instead of implementing a custom `DetailsFetcher` in a new struct. +If `common.GenericDetailsFetcher` satisfies your needs you should always prefer using it instead of implementing a custom `DetailsFetcher` in a new struct. + +The `DetailsFetcher` should also be added to `pkg/remote//init.go` even if you use the generic version: -The `DetailsFetcher` should also be added to `pkg/remote//init.go` even if you use the generic version : ```go remoteLibrary.AddDetailsFetcher(aws.AwsEbsVolumeResourceType, common.NewGenericDetailsFetcher(aws.AwsEbsVolumeResourceType, provider, deserializer)) ``` - ***Don't forget to add unit tests after adding a new resource.*** -You can find example of "functional" tests in pkg/remote/_scanner_test.go +You can find example of **functional tests** in `pkg/remote/_scanner_test.go`. -You should also add acceptance tests if you think it makes sense, they are located next to the resource definition described at first step. +You should also add **acceptance tests** if you think it makes sense. They are located next to the resource definition described in the first step. -More information about test can be found in [testing documentation](testing.md) +More information about adding tests can be found in [testing documentation](testing.md) diff --git a/docs/testing.md b/docs/testing.md index d8675fb2..428c630d 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -2,19 +2,19 @@ driftctl uses **unit tests**, **functional tests** and **acceptance tests**. -- A **unit test** is a very scoped test that test only a very precise part of code +- A **unit test** tests only a very specific part of code - Pros: - Very quick to develop, run and maintain - Cons: - Does not ensure that we do not break integration with other part of the code -- A **functional test** cover a larger part of the code than unit tests, but it mock external dependencies +- A **functional test** covers a larger part of the code than unit tests, but it mocks external dependencies - Pros: - - Ensure that multiples components works well together + - Ensures that multiple components work well together - Still quick to develop and run - Cons: - Mocking every external dependencies can be complicated - - Can be complicated to maintain since it is not scoped to a precise part of the code -- An **acceptance test** or **integration test** are the closest of the end-user behavior. + - Can be complicated to maintain since it is not scoped to a specific part of the code +- An **acceptance test** or **integration test** is the closest of the end-user behavior - Pros: - Very close to a real product usage - Can cover regressions very efficiently