Skip to content

Formalize the providers architecture #183

Closed
@Aboisier

Description

@Aboisier

Once upon a time, there was only AWS. The realm of Scout was dominated by this provider only, and as it grew bigger, jealous grew the other providers. GCP was then given a piece of land. GCP, receiving a lot of attention from the Supreme Beings of Scout, was making Azure jealous. And so Azure was given a piece of land. Even though it seemed like the providers were happily cohabiting, the Supreme Beings knew something was not right.

And this is why we need to refactor the providers' architecture. Basically, there is a whole lot of provider-checking conditions, which is a huge code smell. There is already a provider model in place, but a lot of attributes should be bubbled up to the generic provider class, and some others should be pushed down to their respective provider. Basically, we should take advantage of polymorphism.

List of tasks

Services to migrate

AWS

Azure

GCP

Documentation

  • Document the architecture in the wiki (a few figures would also come a long way)
  • Document [at a high level] how to add a provider
  • Document how to add a service for AWS
  • Document how to add a service for Azure
  • Document how to add a service for GCP
  • Write docstrings for the classes and methods involved in the implementation of a new service

Other

  • Ensure that the old logging system works or implement a new one (moved to issue Fetch all logging #283 )
  • Go through all the todos we left
  • Ensure that the performance is still acceptable, if not better
  • [Re-]implement functionality that allows throttling API calls (similar to the current --threads). This is necessary as sometimes you need to run Scout while making sure it doesn't affect the call quota
  • Explicitly deprecate python < 2.x

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions