{"action":"closed","number":337,"pull_request":{"url":"https://api.github.com/repos/eclipse/hawkbit/pulls/337","id":92188644,"html_url":"https://github.com/eclipse/hawkbit/pull/337","diff_url":"https://github.com/eclipse/hawkbit/pull/337.diff","patch_url":"https://github.com/eclipse/hawkbit/pull/337.patch","issue_url":"https://api.github.com/repos/eclipse/hawkbit/issues/337","number":337,"state":"closed","locked":false,"title":"Semi automatic Rollouts with fine groups definition","user":{"login":"dominikhb","id":14347774,"avatar_url":"https://avatars.githubusercontent.com/u/14347774?v=3","gravatar_id":"","url":"https://api.github.com/users/dominikhb","html_url":"https://github.com/dominikhb","followers_url":"https://api.github.com/users/dominikhb/followers","following_url":"https://api.github.com/users/dominikhb/following{/other_user}","gists_url":"https://api.github.com/users/dominikhb/gists{/gist_id}","starred_url":"https://api.github.com/users/dominikhb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dominikhb/subscriptions","organizations_url":"https://api.github.com/users/dominikhb/orgs","repos_url":"https://api.github.com/users/dominikhb/repos","events_url":"https://api.github.com/users/dominikhb/events{/privacy}","received_events_url":"https://api.github.com/users/dominikhb/received_events","type":"User","site_admin":false},"body":"The target of this Rollouts feature extension is to enable the creation of Rollouts with a custom groups definition.\r\n\r\n**MgmtAPI**\r\nThe MgmtAPI is held backward compatible to the full automatic Group creation by just providing the wished amount of Groups.\r\nThe createRollout request has been extended to accept a defined list of groups.\r\n\r\n**Changed Rollout creation process** \r\nWhen a Rollout creation is requested, just the Rollout and RolloutGroup entities are created in the _CREATING_ status, but no Targets are assigned to the Groups immediately. The Groups can have a _target filter_ and _target percentage_, which are used by the fill process to assign Targets to a Group.\r\n\r\n**Fill process**\r\nThe fill process is started by the Rollout Scheduler. All Rollouts that are in the CREATING status are checked for Groups in the CREATING status. Once a Group is found in the CREATING status, the remaining Targets, which are not in a previous Group and match the optional _target filter_ of the Group, are selected and the _target percentage_ of those is assigned to the Group.\r\nOnce a Group has reached the desired amount of Targets, its status is switched to READY. When all Groups are READY, the Rollout is switched to READY.\r\n\r\n**Defining groups example**\r\nTo put 1000 Targets into two Groups in a 30/70 relation, the first Group defines _target percentage_ 30 (300 Targets) and the second Group defines _target percentage_ 100, because the second Group needs to address 100% of the remaining 700 Targets.\r\n\r\n**Changed Rollout starting proccess**\r\nWhen the start of a Rollout is requested via. UI or the MgmtAPI, only the Rollout status is changed to STARTING. The RolloutScheduler checks if there are any Rollouts in STARTING and tries to complete the STARTING process. The process first creates scheduled actions for all Targets in the Rollout. Once this is completed, the first group is started. When the first group was started successfully, the Group status and the Rollout status will be updated to RUNNING. This process can abort anytime and will be continued the next time it starts again.","created_at":"2016-11-03T16:19:57Z","updated_at":"2016-11-16T08:26:50Z","closed_at":"2016-11-16T08:26:50Z","merged_at":"2016-11-16T08:26:50Z","merge_commit_sha":"b6834e9ee2473d7d412c0035f675e0b737ef0f6d","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/eclipse/hawkbit/pulls/337/commits","review_comments_url":"https://api.github.com/repos/eclipse/hawkbit/pulls/337/comments","review_comment_url":"https://api.github.com/repos/eclipse/hawkbit/pulls/comments{/number}","comments_url":"https://api.github.com/repos/eclipse/hawkbit/issues/337/comments","statuses_url":"https://api.github.com/repos/eclipse/hawkbit/statuses/0e065684d6d888c8dd1b511c559c59abdd18adcc","head":{"label":"bsinno:feature_semi_auto_rollouts","ref":"feature_semi_auto_rollouts","sha":"0e065684d6d888c8dd1b511c559c59abdd18adcc","user":{"login":"bsinno","id":9215699,"avatar_url":"https://avatars.githubusercontent.com/u/9215699?v=3","gravatar_id":"","url":"https://api.github.com/users/bsinno","html_url":"https://github.com/bsinno","followers_url":"https://api.github.com/users/bsinno/followers","following_url":"https://api.github.com/users/bsinno/following{/other_user}","gists_url":"https://api.github.com/users/bsinno/gists{/gist_id}","starred_url":"https://api.github.com/users/bsinno/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bsinno/subscriptions","organizations_url":"https://api.github.com/users/bsinno/orgs","repos_url":"https://api.github.com/users/bsinno/repos","events_url":"https://api.github.com/users/bsinno/events{/privacy}","received_events_url":"https://api.github.com/users/bsinno/received_events","type":"Organization","site_admin":false},"repo":{"id":50108079,"name":"hawkbit","full_name":"bsinno/hawkbit","owner":{"login":"bsinno","id":9215699,"avatar_url":"https://avatars.githubusercontent.com/u/9215699?v=3","gravatar_id":"","url":"https://api.github.com/users/bsinno","html_url":"https://github.com/bsinno","followers_url":"https://api.github.com/users/bsinno/followers","following_url":"https://api.github.com/users/bsinno/following{/other_user}","gists_url":"https://api.github.com/users/bsinno/gists{/gist_id}","starred_url":"https://api.github.com/users/bsinno/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bsinno/subscriptions","organizations_url":"https://api.github.com/users/bsinno/orgs","repos_url":"https://api.github.com/users/bsinno/repos","events_url":"https://api.github.com/users/bsinno/events{/privacy}","received_events_url":"https://api.github.com/users/bsinno/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/bsinno/hawkbit","description":null,"fork":true,"url":"https://api.github.com/repos/bsinno/hawkbit","forks_url":"https://api.github.com/repos/bsinno/hawkbit/forks","keys_url":"https://api.github.com/repos/bsinno/hawkbit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bsinno/hawkbit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bsinno/hawkbit/teams","hooks_url":"https://api.github.com/repos/bsinno/hawkbit/hooks","issue_events_url":"https://api.github.com/repos/bsinno/hawkbit/issues/events{/number}","events_url":"https://api.github.com/repos/bsinno/hawkbit/events","assignees_url":"https://api.github.com/repos/bsinno/hawkbit/assignees{/user}","branches_url":"https://api.github.com/repos/bsinno/hawkbit/branches{/branch}","tags_url":"https://api.github.com/repos/bsinno/hawkbit/tags","blobs_url":"https://api.github.com/repos/bsinno/hawkbit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bsinno/hawkbit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bsinno/hawkbit/git/refs{/sha}","trees_url":"https://api.github.com/repos/bsinno/hawkbit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bsinno/hawkbit/statuses/{sha}","languages_url":"https://api.github.com/repos/bsinno/hawkbit/languages","stargazers_url":"https://api.github.com/repos/bsinno/hawkbit/stargazers","contributors_url":"https://api.github.com/repos/bsinno/hawkbit/contributors","subscribers_url":"https://api.github.com/repos/bsinno/hawkbit/subscribers","subscription_url":"https://api.github.com/repos/bsinno/hawkbit/subscription","commits_url":"https://api.github.com/repos/bsinno/hawkbit/commits{/sha}","git_commits_url":"https://api.github.com/repos/bsinno/hawkbit/git/commits{/sha}","comments_url":"https://api.github.com/repos/bsinno/hawkbit/comments{/number}","issue_comment_url":"https://api.github.com/repos/bsinno/hawkbit/issues/comments{/number}","contents_url":"https://api.github.com/repos/bsinno/hawkbit/contents/{+path}","compare_url":"https://api.github.com/repos/bsinno/hawkbit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bsinno/hawkbit/merges","archive_url":"https://api.github.com/repos/bsinno/hawkbit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bsinno/hawkbit/downloads","issues_url":"https://api.github.com/repos/bsinno/hawkbit/issues{/number}","pulls_url":"https://api.github.com/repos/bsinno/hawkbit/pulls{/number}","milestones_url":"https://api.github.com/repos/bsinno/hawkbit/milestones{/number}","notifications_url":"https://api.github.com/repos/bsinno/hawkbit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bsinno/hawkbit/labels{/name}","releases_url":"https://api.github.com/repos/bsinno/hawkbit/releases{/id}","deployments_url":"https://api.github.com/repos/bsinno/hawkbit/deployments","created_at":"2016-01-21T13:05:15Z","updated_at":"2016-10-27T06:34:51Z","pushed_at":"2016-11-15T12:45:44Z","git_url":"git://github.com/bsinno/hawkbit.git","ssh_url":"git@github.com:bsinno/hawkbit.git","clone_url":"https://github.com/bsinno/hawkbit.git","svn_url":"https://github.com/bsinno/hawkbit","homepage":null,"size":13228,"stargazers_count":3,"watchers_count":3,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":3,"default_branch":"master"}},"base":{"label":"eclipse:master","ref":"master","sha":"866bc721148ffda8cc9aec23db443551b7dcb905","user":{"login":"eclipse","id":56974,"avatar_url":"https://avatars.githubusercontent.com/u/56974?v=3","gravatar_id":"","url":"https://api.github.com/users/eclipse","html_url":"https://github.com/eclipse","followers_url":"https://api.github.com/users/eclipse/followers","following_url":"https://api.github.com/users/eclipse/following{/other_user}","gists_url":"https://api.github.com/users/eclipse/gists{/gist_id}","starred_url":"https://api.github.com/users/eclipse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eclipse/subscriptions","organizations_url":"https://api.github.com/users/eclipse/orgs","repos_url":"https://api.github.com/users/eclipse/repos","events_url":"https://api.github.com/users/eclipse/events{/privacy}","received_events_url":"https://api.github.com/users/eclipse/received_events","type":"Organization","site_admin":false},"repo":{"id":45860898,"name":"hawkbit","full_name":"eclipse/hawkbit","owner":{"login":"eclipse","id":56974,"avatar_url":"https://avatars.githubusercontent.com/u/56974?v=3","gravatar_id":"","url":"https://api.github.com/users/eclipse","html_url":"https://github.com/eclipse","followers_url":"https://api.github.com/users/eclipse/followers","following_url":"https://api.github.com/users/eclipse/following{/other_user}","gists_url":"https://api.github.com/users/eclipse/gists{/gist_id}","starred_url":"https://api.github.com/users/eclipse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eclipse/subscriptions","organizations_url":"https://api.github.com/users/eclipse/orgs","repos_url":"https://api.github.com/users/eclipse/repos","events_url":"https://api.github.com/users/eclipse/events{/privacy}","received_events_url":"https://api.github.com/users/eclipse/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/eclipse/hawkbit","description":"Eclipse hawkBit™","fork":false,"url":"https://api.github.com/repos/eclipse/hawkbit","forks_url":"https://api.github.com/repos/eclipse/hawkbit/forks","keys_url":"https://api.github.com/repos/eclipse/hawkbit/keys{/key_id}","collaborators_url":"https://api.github.com/repos/eclipse/hawkbit/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/eclipse/hawkbit/teams","hooks_url":"https://api.github.com/repos/eclipse/hawkbit/hooks","issue_events_url":"https://api.github.com/repos/eclipse/hawkbit/issues/events{/number}","events_url":"https://api.github.com/repos/eclipse/hawkbit/events","assignees_url":"https://api.github.com/repos/eclipse/hawkbit/assignees{/user}","branches_url":"https://api.github.com/repos/eclipse/hawkbit/branches{/branch}","tags_url":"https://api.github.com/repos/eclipse/hawkbit/tags","blobs_url":"https://api.github.com/repos/eclipse/hawkbit/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/eclipse/hawkbit/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/eclipse/hawkbit/git/refs{/sha}","trees_url":"https://api.github.com/repos/eclipse/hawkbit/git/trees{/sha}","statuses_url":"https://api.github.com/repos/eclipse/hawkbit/statuses/{sha}","languages_url":"https://api.github.com/repos/eclipse/hawkbit/languages","stargazers_url":"https://api.github.com/repos/eclipse/hawkbit/stargazers","contributors_url":"https://api.github.com/repos/eclipse/hawkbit/contributors","subscribers_url":"https://api.github.com/repos/eclipse/hawkbit/subscribers","subscription_url":"https://api.github.com/repos/eclipse/hawkbit/subscription","commits_url":"https://api.github.com/repos/eclipse/hawkbit/commits{/sha}","git_commits_url":"https://api.github.com/repos/eclipse/hawkbit/git/commits{/sha}","comments_url":"https://api.github.com/repos/eclipse/hawkbit/comments{/number}","issue_comment_url":"https://api.github.com/repos/eclipse/hawkbit/issues/comments{/number}","contents_url":"https://api.github.com/repos/eclipse/hawkbit/contents/{+path}","compare_url":"https://api.github.com/repos/eclipse/hawkbit/compare/{base}...{head}","merges_url":"https://api.github.com/repos/eclipse/hawkbit/merges","archive_url":"https://api.github.com/repos/eclipse/hawkbit/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/eclipse/hawkbit/downloads","issues_url":"https://api.github.com/repos/eclipse/hawkbit/issues{/number}","pulls_url":"https://api.github.com/repos/eclipse/hawkbit/pulls{/number}","milestones_url":"https://api.github.com/repos/eclipse/hawkbit/milestones{/number}","notifications_url":"https://api.github.com/repos/eclipse/hawkbit/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/eclipse/hawkbit/labels{/name}","releases_url":"https://api.github.com/repos/eclipse/hawkbit/releases{/id}","deployments_url":"https://api.github.com/repos/eclipse/hawkbit/deployments","created_at":"2015-11-09T19:19:06Z","updated_at":"2016-11-15T09:38:07Z","pushed_at":"2016-11-16T08:26:50Z","git_url":"git://github.com/eclipse/hawkbit.git","ssh_url":"git@github.com:eclipse/hawkbit.git","clone_url":"https://github.com/eclipse/hawkbit.git","svn_url":"https://github.com/eclipse/hawkbit","homepage":"https://projects.eclipse.org/projects/iot.hawkbit","size":13949,"stargazers_count":37,"watchers_count":37,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":10,"mirror_url":null,"open_issues_count":15,"forks":10,"open_issues":15,"watchers":37,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/eclipse/hawkbit/pulls/337"},"html":{"href":"https://github.com/eclipse/hawkbit/pull/337"},"issue":{"href":"https://api.github.com/repos/eclipse/hawkbit/issues/337"},"comments":{"href":"https://api.github.com/repos/eclipse/hawkbit/issues/337/comments"},"review_comments":{"href":"https://api.github.com/repos/eclipse/hawkbit/pulls/337/comments"},"review_comment":{"href":"https://api.github.com/repos/eclipse/hawkbit/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/eclipse/hawkbit/pulls/337/commits"},"statuses":{"href":"https://api.github.com/repos/eclipse/hawkbit/statuses/0e065684d6d888c8dd1b511c559c59abdd18adcc"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"michahirsch","id":10206349,"avatar_url":"https://avatars.githubusercontent.com/u/10206349?v=3","gravatar_id":"","url":"https://api.github.com/users/michahirsch","html_url":"https://github.com/michahirsch","followers_url":"https://api.github.com/users/michahirsch/followers","following_url":"https://api.github.com/users/michahirsch/following{/other_user}","gists_url":"https://api.github.com/users/michahirsch/gists{/gist_id}","starred_url":"https://api.github.com/users/michahirsch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michahirsch/subscriptions","organizations_url":"https://api.github.com/users/michahirsch/orgs","repos_url":"https://api.github.com/users/michahirsch/repos","events_url":"https://api.github.com/users/michahirsch/events{/privacy}","received_events_url":"https://api.github.com/users/michahirsch/received_events","type":"User","site_admin":false},"comments":4,"review_comments":45,"commits":8,"additions":2004,"deletions":452,"changed_files":37}}
{"actor":{"display_login":"michahirsch"}}