Skip to content

Conversation

@abellotti
Copy link
Member

Adding support for search_options on the collection or subcollection.

  • This allows arbitration search parameters to be send up with the
    query relation searches made. i.e.

    miq.providers.search_options(:provider_class => "provider").collect(&:name)
    
    or  miq.vms.search_options(:collection_class => "VmServer").where(:name => "aab*").collect(&:name)
    
  • Also works witih subcollections, i.e.:

    miq.vms.find(166).tags.search_options(:some_parameter => "some_value").collect(&:name)
    

- Dynamically driven by the "subcollections" exposed via OPTIONS /api/:collection
- supports queries and actions

  Queries:
  miq.vms.find(166).tags.collect(&:name)
  miq.vms.find(166).tags.select(:categorization).collect(&:categorization)

  Subcollection Actions:
  miq.vms.find(166).tags.assign(:name => "/managed/location/ny")
  miq.vms.find(166).tags.assign([{:name => "/managed/location/chicago"}, {:name => "/managed/cc/001"}])

  Subcollection resource actions:
  miq.vms.find(166).tags.find(32).unassign
  miq.vms.find(166).tags.where(:name => "/managed/location/*").collect(&:unassign)

Fixes: ManageIQ#31
Fixes: ManageIQ#32
- Moving action specific action methods for resources and subresources to seperate mixin.
- Moving action specific action methods for collections and subcollections to seperate mixin.
- Moving common queryable methods for collections and subcollections to a common QueryableMixin
- Updated options response fixture to include subcollections
- Added collection rspecs
- Added resource rspecs
- Add tests for subcollections
- Adding resource actions_vms.json
- Adding subcollection actions_vm_tags.json
- Adding tests for subresources
- This allows arbitration search parameters to be send up with the
  query relation searches made.

  i.e.  miq.providers.search_options(:provider_class => "provider").collect(&:name)

  or  miq.vms.search_options(:collection_class => "VmServer").where(:name => "aab*").collect(&:name)

- Also works witih subcollections:

  i.e. miq.vms.find(166).tags.search_options(:some_parameter => "some_value").collect(&:name)
@abellotti
Copy link
Member Author

@Fryguy marking as WIP as this depends on #61

Also, not sure about the home of this, I've placed search_options in the client with its usage in collection and subcollection for now. Didn't know if this would be useful for others and move it to queryable, it could be specified anywhere in the queryable chain of commands, right now it must be specified before.

@chessbyte
Copy link
Member

@abellotti if this is a viable PR, please rebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants