{"action":"created","issue":{"url":"https://api.github.com/repos/ManageIQ/manageiq/issues/10704","repository_url":"https://api.github.com/repos/ManageIQ/manageiq","labels_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/10704/labels{/name}","comments_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/10704/comments","events_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/10704/events","html_url":"https://github.com/ManageIQ/manageiq/pull/10704","id":172764863,"number":10704,"title":"ArVirtual - Ownership uses virtual attributes / delegates","user":{"login":"kbrock","id":1930,"avatar_url":"https://avatars.githubusercontent.com/u/1930?v=3","gravatar_id":"","url":"https://api.github.com/users/kbrock","html_url":"https://github.com/kbrock","followers_url":"https://api.github.com/users/kbrock/followers","following_url":"https://api.github.com/users/kbrock/following{/other_user}","gists_url":"https://api.github.com/users/kbrock/gists{/gist_id}","starred_url":"https://api.github.com/users/kbrock/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kbrock/subscriptions","organizations_url":"https://api.github.com/users/kbrock/orgs","repos_url":"https://api.github.com/users/kbrock/repos","events_url":"https://api.github.com/users/kbrock/events{/privacy}","received_events_url":"https://api.github.com/users/kbrock/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/ManageIQ/manageiq/labels/core","name":"core","color":"5319e7"},{"url":"https://api.github.com/repos/ManageIQ/manageiq/labels/darga/yes","name":"darga/yes","color":"000000"},{"url":"https://api.github.com/repos/ManageIQ/manageiq/labels/performance","name":"performance","color":"fad8c7"}],"state":"closed","locked":false,"assignee":{"login":"gtanzillo","id":76593,"avatar_url":"https://avatars.githubusercontent.com/u/76593?v=3","gravatar_id":"","url":"https://api.github.com/users/gtanzillo","html_url":"https://github.com/gtanzillo","followers_url":"https://api.github.com/users/gtanzillo/followers","following_url":"https://api.github.com/users/gtanzillo/following{/other_user}","gists_url":"https://api.github.com/users/gtanzillo/gists{/gist_id}","starred_url":"https://api.github.com/users/gtanzillo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gtanzillo/subscriptions","organizations_url":"https://api.github.com/users/gtanzillo/orgs","repos_url":"https://api.github.com/users/gtanzillo/repos","events_url":"https://api.github.com/users/gtanzillo/events{/privacy}","received_events_url":"https://api.github.com/users/gtanzillo/received_events","type":"User","site_admin":false},"assignees":[{"login":"gtanzillo","id":76593,"avatar_url":"https://avatars.githubusercontent.com/u/76593?v=3","gravatar_id":"","url":"https://api.github.com/users/gtanzillo","html_url":"https://github.com/gtanzillo","followers_url":"https://api.github.com/users/gtanzillo/followers","following_url":"https://api.github.com/users/gtanzillo/following{/other_user}","gists_url":"https://api.github.com/users/gtanzillo/gists{/gist_id}","starred_url":"https://api.github.com/users/gtanzillo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gtanzillo/subscriptions","organizations_url":"https://api.github.com/users/gtanzillo/orgs","repos_url":"https://api.github.com/users/gtanzillo/repos","events_url":"https://api.github.com/users/gtanzillo/events{/privacy}","received_events_url":"https://api.github.com/users/gtanzillo/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/ManageIQ/manageiq/milestones/40","html_url":"https://github.com/ManageIQ/manageiq/milestones/Sprint%2046%20Ending%20Sep%2012,%202016","labels_url":"https://api.github.com/repos/ManageIQ/manageiq/milestones/40/labels","id":1958088,"number":40,"title":"Sprint 46 Ending Sep 12, 2016","description":"","creator":{"login":"chessbyte","id":82161,"avatar_url":"https://avatars.githubusercontent.com/u/82161?v=3","gravatar_id":"","url":"https://api.github.com/users/chessbyte","html_url":"https://github.com/chessbyte","followers_url":"https://api.github.com/users/chessbyte/followers","following_url":"https://api.github.com/users/chessbyte/following{/other_user}","gists_url":"https://api.github.com/users/chessbyte/gists{/gist_id}","starred_url":"https://api.github.com/users/chessbyte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chessbyte/subscriptions","organizations_url":"https://api.github.com/users/chessbyte/orgs","repos_url":"https://api.github.com/users/chessbyte/repos","events_url":"https://api.github.com/users/chessbyte/events{/privacy}","received_events_url":"https://api.github.com/users/chessbyte/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":157,"state":"open","created_at":"2016-08-23T14:02:37Z","updated_at":"2016-09-01T00:57:43Z","due_on":"2016-09-12T00:00:00Z","closed_at":null},"comments":7,"created_at":"2016-08-23T17:56:47Z","updated_at":"2016-09-01T01:01:13Z","closed_at":"2016-08-31T22:00:30Z","pull_request":{"url":"https://api.github.com/repos/ManageIQ/manageiq/pulls/10704","html_url":"https://github.com/ManageIQ/manageiq/pull/10704","diff_url":"https://github.com/ManageIQ/manageiq/pull/10704.diff","patch_url":"https://github.com/ManageIQ/manageiq/pull/10704.patch"},"body":"Purpose or Intent\r\n-----------------\r\nSpeeds up \"VMs & Instances I Own\" index and ajax calls in the `/vm_or_template` (Services -> Workload) section of the application.\r\n\r\nFollowup to #10290 and alternative to #10525 \r\nThis is more similar to the #10290 approach. Further PRs will leverage `virtual_delegates`.\r\n@NickLaMuro found where to optimize, wrote up the description, an was gracious enough to let me throw my hat into the ring.\r\n\r\nHow\r\n---\r\nThis adds `virtual_attribute` on to the `ownership_mixin`, which is used by a few classes and makes it so that MiqExpressions will evaluate filter in SQL instead of pulling down all matching records to then iterate over and filter in Ruby (causes a Massive N+1 on large datasets).\r\n\r\nbefore\r\n------\r\n\r\nafter\r\n----"},"comment":{"url":"https://api.github.com/repos/ManageIQ/manageiq/issues/comments/243946845","html_url":"https://github.com/ManageIQ/manageiq/pull/10704#issuecomment-243946845","issue_url":"https://api.github.com/repos/ManageIQ/manageiq/issues/10704","id":243946845,"user":{"login":"chessbyte","id":82161,"avatar_url":"https://avatars.githubusercontent.com/u/82161?v=3","gravatar_id":"","url":"https://api.github.com/users/chessbyte","html_url":"https://github.com/chessbyte","followers_url":"https://api.github.com/users/chessbyte/followers","following_url":"https://api.github.com/users/chessbyte/following{/other_user}","gists_url":"https://api.github.com/users/chessbyte/gists{/gist_id}","starred_url":"https://api.github.com/users/chessbyte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chessbyte/subscriptions","organizations_url":"https://api.github.com/users/chessbyte/orgs","repos_url":"https://api.github.com/users/chessbyte/repos","events_url":"https://api.github.com/users/chessbyte/events{/privacy}","received_events_url":"https://api.github.com/users/chessbyte/received_events","type":"User","site_admin":false},"created_at":"2016-09-01T01:01:13Z","updated_at":"2016-09-01T01:01:13Z","body":"@kbrock Please run the same cherry-pick command locally, resolve conflicts, validate, and make a Darga PR from it."}}
{"actor":{"display_login":"chessbyte"}}