Skip to content

Requests should return Fog::Compute::Google::Operation #381

Open
@Temikus

Description

@Temikus

Currently requests return an API operation, i.e.: Google::Apis::ComputeV1::Operation:
And then usually get parsed by model like so:

operation = Fog::Compute::Google::Operations.new(:service => service)
                                                      .get(data.name)

That's a lot of duplicate (and sometimes inconsistent) code[1].

I propose to do the following:

  • Write a helper method, e.g. Fog::Google.convert_operation that will contain the API -> Fog tanslation logic.
  • For 2.0 replace all individual model logic with that method and make requests return Fog::Compute::Google::Operation

I would do deprecation in 2.0 and removal in 3.0 but I don't think we can mark it as deprecated somehow if people are using raw requests.

@icco WDYT?

[1]

λ grep -R 'operation = Fog::Compute::Google::Operations.new(:service => service)' .                                                                             (2)
./lib/fog/compute/google/models/image.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/image.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/http_health_check.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/http_health_check.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/http_health_check.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_instance.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_instance.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/instance_group_manager.rb:          operation = Fog::Compute::Google::Operations.new(:service => service).get(data.name, zone.split("/")[-1])
./lib/fog/compute/google/models/url_map.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/url_map.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/url_map.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/url_map.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/url_map.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/snapshot.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/global_forwarding_rule.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/global_forwarding_rule.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_https_proxy.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_https_proxy.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_https_proxy.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_https_proxy.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/network.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/network.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/instance_template.rb:          operation = Fog::Compute::Google::Operations.new(:service => service).get(data.name)
./lib/fog/compute/google/models/instance_template.rb:          operation = Fog::Compute::Google::Operations.new(:service => service).get(data.name)
./lib/fog/compute/google/models/forwarding_rule.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/forwarding_rule.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/subnetwork.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/subnetwork.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/subnetwork.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/subnetwork.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/route.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/route.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/global_address.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/global_address.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_http_proxy.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_http_proxy.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/target_http_proxy.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/firewall.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/firewall.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/firewall.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/firewall.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/backend_service.rb:          operation = Fog::Compute::Google::Operations.new(:service => service).get(data.name)
./lib/fog/compute/google/models/backend_service.rb:          operation = Fog::Compute::Google::Operations.new(:service => service).get(data.name)
./lib/fog/compute/google/models/ssl_certificate.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/ssl_certificate.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/disk.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/disk.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)
./lib/fog/compute/google/models/disk.rb:          operation = Fog::Compute::Google::Operations.new(:service => service)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions