{"action":"created","issue":{"url":"https://api.github.com/repos/spinnaker/spinnaker/issues/807","repository_url":"https://api.github.com/repos/spinnaker/spinnaker","labels_url":"https://api.github.com/repos/spinnaker/spinnaker/issues/807/labels{/name}","comments_url":"https://api.github.com/repos/spinnaker/spinnaker/issues/807/comments","events_url":"https://api.github.com/repos/spinnaker/spinnaker/issues/807/events","html_url":"https://github.com/spinnaker/spinnaker/issues/807","id":141599791,"node_id":"MDU6SXNzdWUxNDE1OTk3OTE=","number":807,"title":"Remove all Controllers from provider-specific modules in Clouddriver","user":{"login":"ttomsu","id":13141550,"node_id":"MDQ6VXNlcjEzMTQxNTUw","avatar_url":"https://avatars2.githubusercontent.com/u/13141550?v=4","gravatar_id":"","url":"https://api.github.com/users/ttomsu","html_url":"https://github.com/ttomsu","followers_url":"https://api.github.com/users/ttomsu/followers","following_url":"https://api.github.com/users/ttomsu/following{/other_user}","gists_url":"https://api.github.com/users/ttomsu/gists{/gist_id}","starred_url":"https://api.github.com/users/ttomsu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ttomsu/subscriptions","organizations_url":"https://api.github.com/users/ttomsu/orgs","repos_url":"https://api.github.com/users/ttomsu/repos","events_url":"https://api.github.com/users/ttomsu/events{/privacy}","received_events_url":"https://api.github.com/users/ttomsu/received_events","type":"User","site_admin":false},"labels":[{"id":343218609,"node_id":"MDU6TGFiZWwzNDMyMTg2MDk=","url":"https://api.github.com/repos/spinnaker/spinnaker/labels/code%20health","name":"code health","color":"5319e7","default":false},{"id":288417181,"node_id":"MDU6TGFiZWwyODg0MTcxODE=","url":"https://api.github.com/repos/spinnaker/spinnaker/labels/component/clouddriver","name":"component/clouddriver","color":"c7def8","default":false},{"id":936546350,"node_id":"MDU6TGFiZWw5MzY1NDYzNTA=","url":"https://api.github.com/repos/spinnaker/spinnaker/labels/stale","name":"stale","color":"000000","default":false},{"id":1025177299,"node_id":"MDU6TGFiZWwxMDI1MTc3Mjk5","url":"https://api.github.com/repos/spinnaker/spinnaker/labels/to-be-closed","name":"to-be-closed","color":"000000","default":false}],"state":"closed","locked":false,"assignee":{"login":"ttomsu","id":13141550,"node_id":"MDQ6VXNlcjEzMTQxNTUw","avatar_url":"https://avatars2.githubusercontent.com/u/13141550?v=4","gravatar_id":"","url":"https://api.github.com/users/ttomsu","html_url":"https://github.com/ttomsu","followers_url":"https://api.github.com/users/ttomsu/followers","following_url":"https://api.github.com/users/ttomsu/following{/other_user}","gists_url":"https://api.github.com/users/ttomsu/gists{/gist_id}","starred_url":"https://api.github.com/users/ttomsu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ttomsu/subscriptions","organizations_url":"https://api.github.com/users/ttomsu/orgs","repos_url":"https://api.github.com/users/ttomsu/repos","events_url":"https://api.github.com/users/ttomsu/events{/privacy}","received_events_url":"https://api.github.com/users/ttomsu/received_events","type":"User","site_admin":false},"assignees":[{"login":"ttomsu","id":13141550,"node_id":"MDQ6VXNlcjEzMTQxNTUw","avatar_url":"https://avatars2.githubusercontent.com/u/13141550?v=4","gravatar_id":"","url":"https://api.github.com/users/ttomsu","html_url":"https://github.com/ttomsu","followers_url":"https://api.github.com/users/ttomsu/followers","following_url":"https://api.github.com/users/ttomsu/following{/other_user}","gists_url":"https://api.github.com/users/ttomsu/gists{/gist_id}","starred_url":"https://api.github.com/users/ttomsu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ttomsu/subscriptions","organizations_url":"https://api.github.com/users/ttomsu/orgs","repos_url":"https://api.github.com/users/ttomsu/repos","events_url":"https://api.github.com/users/ttomsu/events{/privacy}","received_events_url":"https://api.github.com/users/ttomsu/received_events","type":"User","site_admin":false}],"milestone":null,"comments":8,"created_at":"2016-03-17T14:32:13Z","updated_at":"2018-09-29T18:16:22Z","closed_at":"2018-09-29T18:16:21Z","author_association":"CONTRIBUTOR","body":"The following `Controller`s exist outside of the `clouddriver-web` package.\n- clouddriver-aws/.../AmazonClusterController.groovy\n- clouddriver-aws/.../AmazonLoadBalancerController.groovy\n- clouddriver-aws/.../AmazonNamedImageLookupController.groovy\n- clouddriver-azure/.../vmimage/view/AzureVMImageLookupController.groovy\n- clouddriver-azure/.../loadbalancer/view/AzureLoadBalancerController.groovy\n- clouddriver-google/.../GoogleNamedImageLookupController.groovy\n- clouddriver-google/.../GoogleLoadBalancerController.groovy\n- clouddriver-kubernetes/.../KubernetesLoadBalancerController.groovy\n- clouddriver-docker/.../DockerRegistryImageLookupController.groovy\n\nThere are two obvious duplicates across every provider: Image lookup and Load Balancers. This is silly - especially given that each cloud provider must also write a `LoadBalancerProvider`.\n\nI propose folding in all provider-specific LoadBalancer controllers into the existing `LoadBalancerController`, and including the access patterns in the `LoadBalancerProvider` interface. It currently has only 1 method, so this would be a vast improvement in functionality. \n\nFor images, make a new `ImageController` to take care of the image lookup operations with an `ImageProvider`, similar to the above pattern (and patterns found all over Clouddriver). \n\nI haven't looked at the `AmazonClusterController` yet, but that probably should be folded in as well.\n\n@cfieber @ajordens @duftler @gregturn @rguthriemsft @JargoonPard @lwander \n"},"comment":{"url":"https://api.github.com/repos/spinnaker/spinnaker/issues/comments/425665253","html_url":"https://github.com/spinnaker/spinnaker/issues/807#issuecomment-425665253","issue_url":"https://api.github.com/repos/spinnaker/spinnaker/issues/807","id":425665253,"node_id":"MDEyOklzc3VlQ29tbWVudDQyNTY2NTI1Mw==","user":{"login":"spinnakerbot","id":39309875,"node_id":"MDQ6VXNlcjM5MzA5ODc1","avatar_url":"https://avatars2.githubusercontent.com/u/39309875?v=4","gravatar_id":"","url":"https://api.github.com/users/spinnakerbot","html_url":"https://github.com/spinnakerbot","followers_url":"https://api.github.com/users/spinnakerbot/followers","following_url":"https://api.github.com/users/spinnakerbot/following{/other_user}","gists_url":"https://api.github.com/users/spinnakerbot/gists{/gist_id}","starred_url":"https://api.github.com/users/spinnakerbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spinnakerbot/subscriptions","organizations_url":"https://api.github.com/users/spinnakerbot/orgs","repos_url":"https://api.github.com/users/spinnakerbot/repos","events_url":"https://api.github.com/users/spinnakerbot/events{/privacy}","received_events_url":"https://api.github.com/users/spinnakerbot/received_events","type":"User","site_admin":false},"created_at":"2018-09-29T18:16:22Z","updated_at":"2018-09-29T18:16:22Z","author_association":"NONE","body":"This issue is tagged as 'to-be-closed' and hasn't been updated  in 45 days, so we are closing it. You can always reopen this issue if needed."}}
{"actor":{"display_login":"spinnakerbot"}}