{"action":"created","comment":{"url":"https://api.github.com/repos/gluster/glusterd2/pulls/comments/239749436","pull_request_review_id":182618702,"id":239749436,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzOTc0OTQzNg==","diff_hunk":"@@ -0,0 +1,221 @@\n+package volumecommands\n+\n+import (\n+\t\"net/http\"\n+\n+\t\"github.com/gluster/glusterd2/glusterd2/brick\"\n+\t\"github.com/gluster/glusterd2/glusterd2/bricksplanner\"\n+\t\"github.com/gluster/glusterd2/glusterd2/gdctx\"\n+\t\"github.com/gluster/glusterd2/glusterd2/peer\"\n+\trestutils \"github.com/gluster/glusterd2/glusterd2/servers/rest/utils\"\n+\t\"github.com/gluster/glusterd2/glusterd2/transaction\"\n+\t\"github.com/gluster/glusterd2/glusterd2/volume\"\n+\t\"github.com/gluster/glusterd2/pkg/api\"\n+\tgderrors \"github.com/gluster/glusterd2/pkg/errors\"\n+\n+\t\"github.com/gorilla/mux\"\n+\t\"github.com/pborman/uuid\"\n+)\n+\n+func registerReplaceBrickStepFuncs() {\n+\tvar sfs = []struct {\n+\t\tname string\n+\t\tsf   transaction.StepFunc\n+\t}{\n+\t\t{\"brick-replace.PrepareBricks\", prepareBricks},\n+\t\t{\"brick-replace.ReplaceVolinfo\", replaceVolinfo},\n+\t\t{\"brick-replace.StartBrick\", startBrick},\n+\t}\n+\tfor _, sf := range sfs {\n+\t\ttransaction.RegisterStepFunc(sf.sf, sf.name)\n+\t}\n+}\n+\n+func replaceBrickHandler(w http.ResponseWriter, r *http.Request) {\n+\tctx := r.Context()\n+\tlogger := gdctx.GetReqLogger(ctx)\n+\tvolname := mux.Vars(r)[\"volname\"]\n+\n+\tif !volume.IsValidName(volname) {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusBadRequest, gderrors.ErrInvalidVolName)\n+\t\treturn\n+\t}\n+\n+\t// Get Volume Info\n+\tvol, err := volume.GetVolume(volname)\n+\tif err != nil {\n+\t\tstatus, err := restutils.ErrToStatusCode(err)\n+\t\trestutils.SendHTTPError(ctx, w, status, err)\n+\t\treturn\n+\t}\n+\n+\t// Unmarshal ReplaceBrickReq\n+\tvar req api.ReplaceBrickReq\n+\tif err := restutils.UnmarshalRequest(r, &req); err != nil {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusBadRequest, gderrors.ErrJSONParsingFailed)\n+\t\treturn\n+\t}\n+\n+\tif uuid.Parse(req.SrcPeerID) == nil {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusBadRequest, \"Invalid peerID passed in url\")\n+\t\treturn\n+\t}\n+\n+\tif err := validateVolumeFlags(req.Flags); err != nil {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusBadRequest, err)\n+\t\treturn\n+\t}\n+\n+\tsubVols := vol.Subvols\n+\n+\tvar srcBrickInfo brick.Brickinfo\n+\tsubVolIndex := 0\n+\tbrickIndex := 0\n+LOOP:\n+\tfor index := range subVols {\n+\t\tfor i, brick := range subVols[index].Bricks {\n+\t\t\t// Get Source Brick Info\n+\t\t\tif brick.PeerID.String() == req.SrcPeerID && brick.Path == req.SrcBrickPath {\n+\t\t\t\tsubVolIndex = index\n+\t\t\t\tbrickIndex = i\n+\t\t\t\tsrcBrickInfo = brick\n+\t\t\t\tbreak LOOP\n+\t\t\t}\n+\t\t}\n+\t}\n+\n+\texcludeZones := make([]string, 0)\n+\tfor svIndex, sv := range subVols {\n+\t\t// if SubvolZonesOverlap is true then bricks of only that particular\n+\t\t// subvolume will be considered.\n+\t\tif req.SubvolZonesOverlap && subVolIndex != svIndex {\n+\t\t\tcontinue\n+\t\t}\n+\t\tfor _, b := range sv.Bricks {\n+\t\t\tp, err := peer.GetPeer(b.PeerID.String())\n+\t\t\tif err != nil {\n+\t\t\t\trestutils.SendHTTPError(ctx, w, http.StatusInternalServerError, err)\n+\t\t\t\treturn\n+\t\t\t}\n+\t\t\texcludeZones = append(excludeZones, p.Metadata[\"_zone\"])\n+\t\t}\n+\t}\n+\treq.ExcludeZones = append(req.ExcludeZones, excludeZones...)\n+\n+\tsubvolumes := make([]api.SubvolReq, 0)\n+\tvolreq := api.VolCreateReq{\n+\t\tSubvols:      subvolumes,\n+\t\tSize:         vol.Capacity,\n+\t\tLimitPeers:   req.LimitPeers,\n+\t\tLimitZones:   req.LimitZones,\n+\t\tExcludePeers: req.ExcludePeers,\n+\t\tExcludeZones: req.ExcludeZones,\n+\t}\n+\tavailableVgs, err := bricksplanner.GetAvailableVgs(&volreq)\n+\tif err != nil {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusInternalServerError, err)\n+\t\treturn\n+\t}\n+\t// TODO: check for available vgs in zones already being used in volume.\n+\tif len(availableVgs) == 0 {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusInternalServerError, \"No volume groups are available\")\n+\t\treturn\n+\t}\n+\n+\tmtabEntries, err := volume.GetMounts()\n+\tif err != nil {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusInternalServerError, err)\n+\t\treturn\n+\t}\n+\n+\t// Get source brick information like size etc\n+\tbrickInfo, err := volume.BrickStatus(srcBrickInfo, mtabEntries)\n+\tif err != nil {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusInternalServerError, err)\n+\t\treturn\n+\t}\n+\n+\t// Get new brick from the available vgs\n+\tnewBrick := bricksplanner.GetNewBrick(availableVgs, brickInfo, vol, subVolIndex, brickIndex)\n+\n+\tpeerID := uuid.Parse(newBrick.PeerID)\n+\tif peerID == nil {\n+\t\trestutils.SendHTTPError(ctx, w, http.StatusInternalServerError, \"peer id of new brick could not be parsed\")\n+\t\treturn\n+\t}\n+\tallPeerIDs := vol.Nodes()\n+\tnodes := []uuid.UUID{peerID}\n+\ttxn, err := transaction.NewTxnWithLocks(ctx, volname)\n+\tif err != nil {\n+\t\tstatus, err := restutils.ErrToStatusCode(err)\n+\t\trestutils.SendHTTPError(ctx, w, status, err)\n+\t\treturn\n+\t}\n+\tdefer txn.Done()\n+\n+\ttxn.Steps = []*transaction.Step{\n+\t\t{\n+\t\t\tDoFunc: \"brick-replace.PrepareBricks\",\n+\t\t\tNodes:  nodes,\n+\t\t},\n+\t\t{\n+\t\t\tDoFunc: \"brick-replace.ReplaceVolinfo\",\n+\t\t\tNodes:  []uuid.UUID{gdctx.MyUUID},\n+\t\t},\n+\t\t{\n+\t\t\tDoFunc:   \"vol-create.InitBricks\",\n+\t\t\tUndoFunc: \"vol-create.UndoInitBricks\",\n+\t\t\tNodes:    nodes,\n+\t\t},\n+\t\t{\n+\t\t\tDoFunc: \"vol-start.StartBricks\",\n+\t\t\tNodes:  nodes,\n+\t\t},\n+\t\t{\n+\t\t\tDoFunc:   \"vol-create.StoreVolume\",\n+\t\t\tUndoFunc: \"vol-create.UndoStoreVolume\",\n+\t\t\tNodes:    []uuid.UUID{gdctx.MyUUID},\n+\t\t},\n+\t\t{\n+\t\t\tDoFunc: \"vol-expand.NotifyClients\",\n+\t\t\tNodes:  allPeerIDs,\n+\t\t},\n+\t}\n+\n+\tif err := txn.Ctx.Set(\"newBrick\", &newBrick); err != nil {","path":"glusterd2/commands/volumes/brick-replace.go","position":185,"original_position":185,"commit_id":"0f995e89034e0fd53c416cd7364f55af9c6bd018","original_commit_id":"0f995e89034e0fd53c416cd7364f55af9c6bd018","user":{"login":"rishubhjain","id":2301827,"node_id":"MDQ6VXNlcjIzMDE4Mjc=","avatar_url":"https://avatars3.githubusercontent.com/u/2301827?v=4","gravatar_id":"","url":"https://api.github.com/users/rishubhjain","html_url":"https://github.com/rishubhjain","followers_url":"https://api.github.com/users/rishubhjain/followers","following_url":"https://api.github.com/users/rishubhjain/following{/other_user}","gists_url":"https://api.github.com/users/rishubhjain/gists{/gist_id}","starred_url":"https://api.github.com/users/rishubhjain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rishubhjain/subscriptions","organizations_url":"https://api.github.com/users/rishubhjain/orgs","repos_url":"https://api.github.com/users/rishubhjain/repos","events_url":"https://api.github.com/users/rishubhjain/events{/privacy}","received_events_url":"https://api.github.com/users/rishubhjain/received_events","type":"User","site_admin":false},"body":"i will make the change, but I fail to see the difference. Does it cause higher memory consumption?","created_at":"2018-12-07T09:51:48Z","updated_at":"2018-12-07T09:51:48Z","html_url":"https://github.com/gluster/glusterd2/pull/1269#discussion_r239749436","pull_request_url":"https://api.github.com/repos/gluster/glusterd2/pulls/1269","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/gluster/glusterd2/pulls/comments/239749436"},"html":{"href":"https://github.com/gluster/glusterd2/pull/1269#discussion_r239749436"},"pull_request":{"href":"https://api.github.com/repos/gluster/glusterd2/pulls/1269"}},"in_reply_to_id":239697241},"pull_request":{"url":"https://api.github.com/repos/gluster/glusterd2/pulls/1269","id":221186419,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIxMTg2NDE5","html_url":"https://github.com/gluster/glusterd2/pull/1269","diff_url":"https://github.com/gluster/glusterd2/pull/1269.diff","patch_url":"https://github.com/gluster/glusterd2/pull/1269.patch","issue_url":"https://api.github.com/repos/gluster/glusterd2/issues/1269","number":1269,"state":"open","locked":false,"title":"Replace brick API","user":{"login":"rishubhjain","id":2301827,"node_id":"MDQ6VXNlcjIzMDE4Mjc=","avatar_url":"https://avatars3.githubusercontent.com/u/2301827?v=4","gravatar_id":"","url":"https://api.github.com/users/rishubhjain","html_url":"https://github.com/rishubhjain","followers_url":"https://api.github.com/users/rishubhjain/followers","following_url":"https://api.github.com/users/rishubhjain/following{/other_user}","gists_url":"https://api.github.com/users/rishubhjain/gists{/gist_id}","starred_url":"https://api.github.com/users/rishubhjain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rishubhjain/subscriptions","organizations_url":"https://api.github.com/users/rishubhjain/orgs","repos_url":"https://api.github.com/users/rishubhjain/repos","events_url":"https://api.github.com/users/rishubhjain/events{/privacy}","received_events_url":"https://api.github.com/users/rishubhjain/received_events","type":"User","site_admin":false},"body":"Fixes: https://github.com/gluster/glusterd2/issues/472\r\n\r\nDesign Document : https://github.com/gluster/glusterd2/issues/472#issuecomment-408389266\r\n\r\nThings Done:\r\nReplace auto-provision brick.\r\n\r\nToDo:\r\n1) CLI and E2E test cases","created_at":"2018-10-08T17:09:42Z","updated_at":"2018-12-07T09:51:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ed5579b968805da8cb7ce2a877d66b59f8f397dd","assignee":{"login":"aravindavk","id":338230,"node_id":"MDQ6VXNlcjMzODIzMA==","avatar_url":"https://avatars3.githubusercontent.com/u/338230?v=4","gravatar_id":"","url":"https://api.github.com/users/aravindavk","html_url":"https://github.com/aravindavk","followers_url":"https://api.github.com/users/aravindavk/followers","following_url":"https://api.github.com/users/aravindavk/following{/other_user}","gists_url":"https://api.github.com/users/aravindavk/gists{/gist_id}","starred_url":"https://api.github.com/users/aravindavk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aravindavk/subscriptions","organizations_url":"https://api.github.com/users/aravindavk/orgs","repos_url":"https://api.github.com/users/aravindavk/repos","events_url":"https://api.github.com/users/aravindavk/events{/privacy}","received_events_url":"https://api.github.com/users/aravindavk/received_events","type":"User","site_admin":false},"assignees":[{"login":"aravindavk","id":338230,"node_id":"MDQ6VXNlcjMzODIzMA==","avatar_url":"https://avatars3.githubusercontent.com/u/338230?v=4","gravatar_id":"","url":"https://api.github.com/users/aravindavk","html_url":"https://github.com/aravindavk","followers_url":"https://api.github.com/users/aravindavk/followers","following_url":"https://api.github.com/users/aravindavk/following{/other_user}","gists_url":"https://api.github.com/users/aravindavk/gists{/gist_id}","starred_url":"https://api.github.com/users/aravindavk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aravindavk/subscriptions","organizations_url":"https://api.github.com/users/aravindavk/orgs","repos_url":"https://api.github.com/users/aravindavk/repos","events_url":"https://api.github.com/users/aravindavk/events{/privacy}","received_events_url":"https://api.github.com/users/aravindavk/received_events","type":"User","site_admin":false},{"login":"rishubhjain","id":2301827,"node_id":"MDQ6VXNlcjIzMDE4Mjc=","avatar_url":"https://avatars3.githubusercontent.com/u/2301827?v=4","gravatar_id":"","url":"https://api.github.com/users/rishubhjain","html_url":"https://github.com/rishubhjain","followers_url":"https://api.github.com/users/rishubhjain/followers","following_url":"https://api.github.com/users/rishubhjain/following{/other_user}","gists_url":"https://api.github.com/users/rishubhjain/gists{/gist_id}","starred_url":"https://api.github.com/users/rishubhjain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rishubhjain/subscriptions","organizations_url":"https://api.github.com/users/rishubhjain/orgs","repos_url":"https://api.github.com/users/rishubhjain/repos","events_url":"https://api.github.com/users/rishubhjain/events{/privacy}","received_events_url":"https://api.github.com/users/rishubhjain/received_events","type":"User","site_admin":false},{"login":"Madhu-1","id":18114231,"node_id":"MDQ6VXNlcjE4MTE0MjMx","avatar_url":"https://avatars2.githubusercontent.com/u/18114231?v=4","gravatar_id":"","url":"https://api.github.com/users/Madhu-1","html_url":"https://github.com/Madhu-1","followers_url":"https://api.github.com/users/Madhu-1/followers","following_url":"https://api.github.com/users/Madhu-1/following{/other_user}","gists_url":"https://api.github.com/users/Madhu-1/gists{/gist_id}","starred_url":"https://api.github.com/users/Madhu-1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Madhu-1/subscriptions","organizations_url":"https://api.github.com/users/Madhu-1/orgs","repos_url":"https://api.github.com/users/Madhu-1/repos","events_url":"https://api.github.com/users/Madhu-1/events{/privacy}","received_events_url":"https://api.github.com/users/Madhu-1/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":254949910,"node_id":"MDU6TGFiZWwyNTQ5NDk5MTA=","url":"https://api.github.com/repos/gluster/glusterd2/labels/in%20progress","name":"in progress","color":"ededed","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/gluster/glusterd2/pulls/1269/commits","review_comments_url":"https://api.github.com/repos/gluster/glusterd2/pulls/1269/comments","review_comment_url":"https://api.github.com/repos/gluster/glusterd2/pulls/comments{/number}","comments_url":"https://api.github.com/repos/gluster/glusterd2/issues/1269/comments","statuses_url":"https://api.github.com/repos/gluster/glusterd2/statuses/0f995e89034e0fd53c416cd7364f55af9c6bd018","head":{"label":"rishubhjain:replace-brick1","ref":"replace-brick1","sha":"0f995e89034e0fd53c416cd7364f55af9c6bd018","user":{"login":"rishubhjain","id":2301827,"node_id":"MDQ6VXNlcjIzMDE4Mjc=","avatar_url":"https://avatars3.githubusercontent.com/u/2301827?v=4","gravatar_id":"","url":"https://api.github.com/users/rishubhjain","html_url":"https://github.com/rishubhjain","followers_url":"https://api.github.com/users/rishubhjain/followers","following_url":"https://api.github.com/users/rishubhjain/following{/other_user}","gists_url":"https://api.github.com/users/rishubhjain/gists{/gist_id}","starred_url":"https://api.github.com/users/rishubhjain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rishubhjain/subscriptions","organizations_url":"https://api.github.com/users/rishubhjain/orgs","repos_url":"https://api.github.com/users/rishubhjain/repos","events_url":"https://api.github.com/users/rishubhjain/events{/privacy}","received_events_url":"https://api.github.com/users/rishubhjain/received_events","type":"User","site_admin":false},"repo":{"id":109232839,"node_id":"MDEwOlJlcG9zaXRvcnkxMDkyMzI4Mzk=","name":"glusterd2","full_name":"rishubhjain/glusterd2","private":false,"owner":{"login":"rishubhjain","id":2301827,"node_id":"MDQ6VXNlcjIzMDE4Mjc=","avatar_url":"https://avatars3.githubusercontent.com/u/2301827?v=4","gravatar_id":"","url":"https://api.github.com/users/rishubhjain","html_url":"https://github.com/rishubhjain","followers_url":"https://api.github.com/users/rishubhjain/followers","following_url":"https://api.github.com/users/rishubhjain/following{/other_user}","gists_url":"https://api.github.com/users/rishubhjain/gists{/gist_id}","starred_url":"https://api.github.com/users/rishubhjain/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rishubhjain/subscriptions","organizations_url":"https://api.github.com/users/rishubhjain/orgs","repos_url":"https://api.github.com/users/rishubhjain/repos","events_url":"https://api.github.com/users/rishubhjain/events{/privacy}","received_events_url":"https://api.github.com/users/rishubhjain/received_events","type":"User","site_admin":false},"html_url":"https://github.com/rishubhjain/glusterd2","description":"GlusterD-2.0 is the distributed management framework to be used for GlusterFS-4.0","fork":true,"url":"https://api.github.com/repos/rishubhjain/glusterd2","forks_url":"https://api.github.com/repos/rishubhjain/glusterd2/forks","keys_url":"https://api.github.com/repos/rishubhjain/glusterd2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rishubhjain/glusterd2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rishubhjain/glusterd2/teams","hooks_url":"https://api.github.com/repos/rishubhjain/glusterd2/hooks","issue_events_url":"https://api.github.com/repos/rishubhjain/glusterd2/issues/events{/number}","events_url":"https://api.github.com/repos/rishubhjain/glusterd2/events","assignees_url":"https://api.github.com/repos/rishubhjain/glusterd2/assignees{/user}","branches_url":"https://api.github.com/repos/rishubhjain/glusterd2/branches{/branch}","tags_url":"https://api.github.com/repos/rishubhjain/glusterd2/tags","blobs_url":"https://api.github.com/repos/rishubhjain/glusterd2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rishubhjain/glusterd2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rishubhjain/glusterd2/git/refs{/sha}","trees_url":"https://api.github.com/repos/rishubhjain/glusterd2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rishubhjain/glusterd2/statuses/{sha}","languages_url":"https://api.github.com/repos/rishubhjain/glusterd2/languages","stargazers_url":"https://api.github.com/repos/rishubhjain/glusterd2/stargazers","contributors_url":"https://api.github.com/repos/rishubhjain/glusterd2/contributors","subscribers_url":"https://api.github.com/repos/rishubhjain/glusterd2/subscribers","subscription_url":"https://api.github.com/repos/rishubhjain/glusterd2/subscription","commits_url":"https://api.github.com/repos/rishubhjain/glusterd2/commits{/sha}","git_commits_url":"https://api.github.com/repos/rishubhjain/glusterd2/git/commits{/sha}","comments_url":"https://api.github.com/repos/rishubhjain/glusterd2/comments{/number}","issue_comment_url":"https://api.github.com/repos/rishubhjain/glusterd2/issues/comments{/number}","contents_url":"https://api.github.com/repos/rishubhjain/glusterd2/contents/{+path}","compare_url":"https://api.github.com/repos/rishubhjain/glusterd2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rishubhjain/glusterd2/merges","archive_url":"https://api.github.com/repos/rishubhjain/glusterd2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rishubhjain/glusterd2/downloads","issues_url":"https://api.github.com/repos/rishubhjain/glusterd2/issues{/number}","pulls_url":"https://api.github.com/repos/rishubhjain/glusterd2/pulls{/number}","milestones_url":"https://api.github.com/repos/rishubhjain/glusterd2/milestones{/number}","notifications_url":"https://api.github.com/repos/rishubhjain/glusterd2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rishubhjain/glusterd2/labels{/name}","releases_url":"https://api.github.com/repos/rishubhjain/glusterd2/releases{/id}","deployments_url":"https://api.github.com/repos/rishubhjain/glusterd2/deployments","created_at":"2017-11-02T07:39:34Z","updated_at":"2018-11-29T14:34:25Z","pushed_at":"2018-12-07T04:53:14Z","git_url":"git://github.com/rishubhjain/glusterd2.git","ssh_url":"git@github.com:rishubhjain/glusterd2.git","clone_url":"https://github.com/rishubhjain/glusterd2.git","svn_url":"https://github.com/rishubhjain/glusterd2","homepage":"","size":13377,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"gluster:master","ref":"master","sha":"b73370c5531423907b9d869010d37ff259ec48a4","user":{"login":"gluster","id":622644,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyMjY0NA==","avatar_url":"https://avatars3.githubusercontent.com/u/622644?v=4","gravatar_id":"","url":"https://api.github.com/users/gluster","html_url":"https://github.com/gluster","followers_url":"https://api.github.com/users/gluster/followers","following_url":"https://api.github.com/users/gluster/following{/other_user}","gists_url":"https://api.github.com/users/gluster/gists{/gist_id}","starred_url":"https://api.github.com/users/gluster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gluster/subscriptions","organizations_url":"https://api.github.com/users/gluster/orgs","repos_url":"https://api.github.com/users/gluster/repos","events_url":"https://api.github.com/users/gluster/events{/privacy}","received_events_url":"https://api.github.com/users/gluster/received_events","type":"Organization","site_admin":false},"repo":{"id":24369600,"node_id":"MDEwOlJlcG9zaXRvcnkyNDM2OTYwMA==","name":"glusterd2","full_name":"gluster/glusterd2","private":false,"owner":{"login":"gluster","id":622644,"node_id":"MDEyOk9yZ2FuaXphdGlvbjYyMjY0NA==","avatar_url":"https://avatars3.githubusercontent.com/u/622644?v=4","gravatar_id":"","url":"https://api.github.com/users/gluster","html_url":"https://github.com/gluster","followers_url":"https://api.github.com/users/gluster/followers","following_url":"https://api.github.com/users/gluster/following{/other_user}","gists_url":"https://api.github.com/users/gluster/gists{/gist_id}","starred_url":"https://api.github.com/users/gluster/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gluster/subscriptions","organizations_url":"https://api.github.com/users/gluster/orgs","repos_url":"https://api.github.com/users/gluster/repos","events_url":"https://api.github.com/users/gluster/events{/privacy}","received_events_url":"https://api.github.com/users/gluster/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/gluster/glusterd2","description":"Glusterd2 is the distributed management framework to be used for GlusterFS","fork":false,"url":"https://api.github.com/repos/gluster/glusterd2","forks_url":"https://api.github.com/repos/gluster/glusterd2/forks","keys_url":"https://api.github.com/repos/gluster/glusterd2/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gluster/glusterd2/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gluster/glusterd2/teams","hooks_url":"https://api.github.com/repos/gluster/glusterd2/hooks","issue_events_url":"https://api.github.com/repos/gluster/glusterd2/issues/events{/number}","events_url":"https://api.github.com/repos/gluster/glusterd2/events","assignees_url":"https://api.github.com/repos/gluster/glusterd2/assignees{/user}","branches_url":"https://api.github.com/repos/gluster/glusterd2/branches{/branch}","tags_url":"https://api.github.com/repos/gluster/glusterd2/tags","blobs_url":"https://api.github.com/repos/gluster/glusterd2/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gluster/glusterd2/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gluster/glusterd2/git/refs{/sha}","trees_url":"https://api.github.com/repos/gluster/glusterd2/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gluster/glusterd2/statuses/{sha}","languages_url":"https://api.github.com/repos/gluster/glusterd2/languages","stargazers_url":"https://api.github.com/repos/gluster/glusterd2/stargazers","contributors_url":"https://api.github.com/repos/gluster/glusterd2/contributors","subscribers_url":"https://api.github.com/repos/gluster/glusterd2/subscribers","subscription_url":"https://api.github.com/repos/gluster/glusterd2/subscription","commits_url":"https://api.github.com/repos/gluster/glusterd2/commits{/sha}","git_commits_url":"https://api.github.com/repos/gluster/glusterd2/git/commits{/sha}","comments_url":"https://api.github.com/repos/gluster/glusterd2/comments{/number}","issue_comment_url":"https://api.github.com/repos/gluster/glusterd2/issues/comments{/number}","contents_url":"https://api.github.com/repos/gluster/glusterd2/contents/{+path}","compare_url":"https://api.github.com/repos/gluster/glusterd2/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gluster/glusterd2/merges","archive_url":"https://api.github.com/repos/gluster/glusterd2/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gluster/glusterd2/downloads","issues_url":"https://api.github.com/repos/gluster/glusterd2/issues{/number}","pulls_url":"https://api.github.com/repos/gluster/glusterd2/pulls{/number}","milestones_url":"https://api.github.com/repos/gluster/glusterd2/milestones{/number}","notifications_url":"https://api.github.com/repos/gluster/glusterd2/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gluster/glusterd2/labels{/name}","releases_url":"https://api.github.com/repos/gluster/glusterd2/releases{/id}","deployments_url":"https://api.github.com/repos/gluster/glusterd2/deployments","created_at":"2014-09-23T12:02:13Z","updated_at":"2018-12-07T09:01:47Z","pushed_at":"2018-12-07T09:01:42Z","git_url":"git://github.com/gluster/glusterd2.git","ssh_url":"git@github.com:gluster/glusterd2.git","clone_url":"https://github.com/gluster/glusterd2.git","svn_url":"https://github.com/gluster/glusterd2","homepage":"","size":13340,"stargazers_count":128,"watchers_count":128,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":80,"mirror_url":null,"archived":false,"open_issues_count":208,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":80,"open_issues":208,"watchers":128,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/gluster/glusterd2/pulls/1269"},"html":{"href":"https://github.com/gluster/glusterd2/pull/1269"},"issue":{"href":"https://api.github.com/repos/gluster/glusterd2/issues/1269"},"comments":{"href":"https://api.github.com/repos/gluster/glusterd2/issues/1269/comments"},"review_comments":{"href":"https://api.github.com/repos/gluster/glusterd2/pulls/1269/comments"},"review_comment":{"href":"https://api.github.com/repos/gluster/glusterd2/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/gluster/glusterd2/pulls/1269/commits"},"statuses":{"href":"https://api.github.com/repos/gluster/glusterd2/statuses/0f995e89034e0fd53c416cd7364f55af9c6bd018"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"rishubhjain"}}