I would add a method to `AbstractResource` to determine which class to use:
```ruby
def AbstractModel.resource_class(data)
  self
end

# update .all and .find method to use it and then

def ComputeResource.resource_class(data)
  provider_class(data)
end
```
`.find` and `.all` can be deleted from ComputeResource and code is DRY again :)