{"action":"created","issue":{"url":"https://api.github.com/repos/mesosphere/marathon/issues/3292","repository_url":"https://api.github.com/repos/mesosphere/marathon","labels_url":"https://api.github.com/repos/mesosphere/marathon/issues/3292/labels{/name}","comments_url":"https://api.github.com/repos/mesosphere/marathon/issues/3292/comments","events_url":"https://api.github.com/repos/mesosphere/marathon/issues/3292/events","html_url":"https://github.com/mesosphere/marathon/pull/3292","id":135397697,"number":3292,"title":"WIP on resident task offer matching and reserve/launch operations","user":{"login":"meichstedt","id":414354,"avatar_url":"https://avatars.githubusercontent.com/u/414354?v=3","gravatar_id":"","url":"https://api.github.com/users/meichstedt","html_url":"https://github.com/meichstedt","followers_url":"https://api.github.com/users/meichstedt/followers","following_url":"https://api.github.com/users/meichstedt/following{/other_user}","gists_url":"https://api.github.com/users/meichstedt/gists{/gist_id}","starred_url":"https://api.github.com/users/meichstedt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/meichstedt/subscriptions","organizations_url":"https://api.github.com/users/meichstedt/orgs","repos_url":"https://api.github.com/users/meichstedt/repos","events_url":"https://api.github.com/users/meichstedt/events{/privacy}","received_events_url":"https://api.github.com/users/meichstedt/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mesosphere/marathon/labels/Epic-217","name":"Epic-217","color":"9351E5"},{"url":"https://api.github.com/repos/mesosphere/marathon/labels/in%20progress","name":"in progress","color":"5319e7"},{"url":"https://api.github.com/repos/mesosphere/marathon/labels/service","name":"service","color":"eb6420"}],"state":"open","locked":false,"assignee":{"login":"aquamatthias","id":330485,"avatar_url":"https://avatars.githubusercontent.com/u/330485?v=3","gravatar_id":"","url":"https://api.github.com/users/aquamatthias","html_url":"https://github.com/aquamatthias","followers_url":"https://api.github.com/users/aquamatthias/followers","following_url":"https://api.github.com/users/aquamatthias/following{/other_user}","gists_url":"https://api.github.com/users/aquamatthias/gists{/gist_id}","starred_url":"https://api.github.com/users/aquamatthias/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aquamatthias/subscriptions","organizations_url":"https://api.github.com/users/aquamatthias/orgs","repos_url":"https://api.github.com/users/aquamatthias/repos","events_url":"https://api.github.com/users/aquamatthias/events{/privacy}","received_events_url":"https://api.github.com/users/aquamatthias/received_events","type":"User","site_admin":false},"milestone":null,"comments":6,"created_at":"2016-02-22T12:01:49Z","updated_at":"2016-02-25T14:45:05Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/mesosphere/marathon/pulls/3292","html_url":"https://github.com/mesosphere/marathon/pull/3292","diff_url":"https://github.com/mesosphere/marathon/pull/3292.diff","patch_url":"https://github.com/mesosphere/marathon/pull/3292.patch"},"body":"Goal: resolve #3042 \r\n\r\nChanges:\r\n- moved TaskOps into a dedicated object TaskOp\r\n- creation of TaskOps is delegated from AppTaskLauncherActor to taskOpLogic\r\n- adjusted AppTaskLauncherActor to handle TaskOps Launch and ReserveAndCreate\r\n- introduced an OfferOperationFactory – reserve and create both need the framework role and principal and are thus easier to handle as wired class objects rather than singleton objects\r\n- adjusted DefaultTaskOpLigic to infer TaskOps depending on whether the app is resident or not.\r\n- new functions in the TaskBuilder targeting resident apps expect a ResourceMatch/VolumeMatch to be passed in (in order to decide which taskOp to generate, we need to know whether there's a volumeMatch or not – before using tha taskBuilder)\r\n\r\nOpen points:\r\n- validate the responsibilities of TaskOpLogic/TaskBuilder and related classes\r\n- validate the counting logic inside AppTaskLauncherActor\r\n- write unit/integration tests for resident tasks that verify the behavior on each layer\r\n- role and principal are currently passed along from DefaultTaskOpLogic to TaskOpFactory to OfferOperationFactory. This is ugly but the alternative would be to wire all these via Guice.\r\n- ... surely some more open points"},"comment":{"url":"https://api.github.com/repos/mesosphere/marathon/issues/comments/188815777","html_url":"https://github.com/mesosphere/marathon/pull/3292#issuecomment-188815777","issue_url":"https://api.github.com/repos/mesosphere/marathon/issues/3292","id":188815777,"user":{"login":"aquamatthias","id":330485,"avatar_url":"https://avatars.githubusercontent.com/u/330485?v=3","gravatar_id":"","url":"https://api.github.com/users/aquamatthias","html_url":"https://github.com/aquamatthias","followers_url":"https://api.github.com/users/aquamatthias/followers","following_url":"https://api.github.com/users/aquamatthias/following{/other_user}","gists_url":"https://api.github.com/users/aquamatthias/gists{/gist_id}","starred_url":"https://api.github.com/users/aquamatthias/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aquamatthias/subscriptions","organizations_url":"https://api.github.com/users/aquamatthias/orgs","repos_url":"https://api.github.com/users/aquamatthias/repos","events_url":"https://api.github.com/users/aquamatthias/events{/privacy}","received_events_url":"https://api.github.com/users/aquamatthias/received_events","type":"User","site_admin":false},"created_at":"2016-02-25T14:45:05Z","updated_at":"2016-02-25T14:45:05Z","body":"Thanks @meichstedt!!\r\nWow that's big! The rocket will start soon...\r\n\r\n```\r\n\r\n\r\n\r\n                           *     .--.\r\n                                / /  `\r\n               +               | |\r\n                      '         \\ \\__,\r\n                  *          +   '--'  *\r\n                      +   /\\\r\n         +              .'  '.   *\r\n                *      /======\\      +\r\n                      ;:.  _   ;\r\n                      |:. (_)  |\r\n                      |:.  _   |\r\n            +         |:. (_)  |          *\r\n                      ;:.      ;\r\n                    .' \\:.    / `.\r\n                   / .-'':._.'`-. \\\r\n                   |/    /||\\    \\|\r\n                 _..--\"\"\"````\"\"\"--.._\r\n           _.-'``                    ``'-._\r\n         -'                                '-\r\n```"}}