Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
# EC2 Compute Plugin for Brizo
## How can you help?
We want to implement the [Computing EC2 plugin](https://github.com/oceanprotocol/osmosis-aws-driver/blob/develop/osmosis_aws_driver/computing_EC2_plugin.py) and write the test coverage cases for the same. Brizo is our technical component that interacts with external cloud infrastructure like AWS, Azure etc.
The reference to the AbstractPlugin module used in the Compute EC2 plugin [can be seen here](https://github.com/oceanprotocol/osmosis-driver-interface/blob/develop/osmosis_driver_interface/computing_plugin.py)
>**Note** - When we talk about Brizo here, we mean 3rd party developer app (in this case, Brizo).
Regarding this implementation, our assumptions about how user should be configuring AWS are (but feel free to point out our errors in this assumptions)
- Configure AWS Account to allow access to an external app (Brizo) using an AWS access and secret key pair.
- Configure your AWS Account to use ECS Fargate (create a cluster with VPC and subnets associated). To this point, please consider documenting or use some cloud management tool such as Terraform to provide a reproducible path.
- Create the needed IAM policy(ies) with the needed permissions (i.e.: creating a Fargate container, IAM create/pass role and manage policies...) and attach them to the Brizo’s user. Keep the policies permissions as restricted as possible.
- Also please consider to create IAM role and permissions to attach to the container run in Fargate. The container would need to be accessed in order to run the assets.
- You can create/modify the base image used to run the container. This base image would need to download and run a script located in S3, so the base entry point will need to access to a custom S3 location (in the same account), download and execute it.
Please refer to the required [AWS SDK](https://github.com/boto/boto3) for this task. The version (boto3==1.8.7) is mentioned in the [requirements](https://github.com/oceanprotocol/osmosis-aws-driver/blob/develop/requirements_dev.txt) as well.
## Setup for the task
Before starting the task, you must do the following
- You will need to create an AWS user (with secret & access key) with a policy of minimal permissions. This would allow Brizo to run containers in the Fargate cluster.
- In order to do this, you will need to create your own AWS account. Everything that needs to be done in this task should be under the free tier.
- Creating users are documented in the [AWS docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)
This task is ideally suited for devs that have some experience in AWS.
## What needs to be done?
- [EC2 Compute Plugin](https://github.com/oceanprotocol/osmosis-aws-driver/blob/develop/osmosis_aws_driver/computing_EC2_plugin.py) needs to have all the methods implemented in python.
- Unit tests for the same must also be written.
## We are very happy when
- [ ] Our unit test coverage for [EC2 Compute Plugin](https://github.com/oceanprotocol/osmosis-aws-driver/blob/develop/osmosis_aws_driver/computing_EC2_plugin.py) is >= 85%. We are using [pytest](https://docs.pytest.org) framework for testing. We would require the new tests to be written using same setup.
- [ ] Pull request for this implementation should go in this repo - https://github.com/oceanprotocol/osmosis-aws-driver
## Seen this problem before?
Any help solving this is welcome. Feel free to leave any comments and help someone else to solve it. We might airdrop tokens to someone even if not directly completing bounty.
## Questions & Reviews
Pull requests will be reviewed by one of the maintainers or long-term contributors. In case of any additional questions feel free to ask in this thread and we will do our best to add the missing info :)
## Things to know
The bounty lifecycle process including payout will be managed using [Gitcoin](https://gitcoin.co/explorer?network=mainnet&keywords=oceanprotocol&order_by=-web3_created).
We'll be responding to your questions here, but for discussion and clarification we recommend to join also our [Gitter channel](https://gitter.im/oceanprotocol/Lobby) where our tech community is accessible.
In order to see the PROCN balance in your wallet you'll need to reference the related token contract with address _0xf2aabdd898a0139195b2b5da7387d43a45ded254_. If you use a Metamask plugin you'll find the the exact steps [here](https://metamask.zendesk.com/hc/en-us/articles/360015489011-Managing-ERC20-Tokens).
Once the project was reviewed and merged in the master branch, you will receive the reward. PROCN is a proto-Ocean token. Bounty hunters that earn PROCN will be able to convert them 1:1 to Ocean tokens on network launch (Ocean Token will be valued at at 0.22 EUR on network launch). Network launch is expected to happen by Mar 31, 2019. Until then PROCN will be locked and non-transferrable in the ETH wallet to which it is delivered to.
Lastly, even if it is a contest bounty, we will appropriately reward all valuable contributions. We greatly appreciate the value our open source community brings to Ocean and will always award some tokens to all great contributions! 😃