{"action":"created","comment":{"url":"https://api.github.com/repos/rackspace/gophercloud/pulls/comments/63685095","id":63685095,"diff_hunk":"@@ -0,0 +1,359 @@\n+package pools\n+\n+import (\n+\t\"github.com/rackspace/gophercloud\"\n+\t\"github.com/rackspace/gophercloud/pagination\"\n+)\n+\n+// AdminState gives users a solid type to work with for create and update\n+// operations. It is recommended that users use the `Up` and `Down` enums.\n+type AdminState *bool\n+\n+// Convenience vars for AdminStateUp values.\n+var (\n+\tiTrue  = true\n+\tiFalse = false\n+\n+\tUp   AdminState = &iTrue\n+\tDown AdminState = &iFalse\n+)\n+\n+// ListOpts allows the filtering and sorting of paginated collections through\n+// the API. Filtering is achieved by passing in struct field values that map to\n+// the Pool attributes you want to see returned. SortKey allows you to\n+// sort by a particular Pool attribute. SortDir sets the direction, and is\n+// either `asc' or `desc'. Marker and Limit are used for pagination.\n+type ListOpts struct {\n+\tLBMethod       string `q:\"lb_algorithm\"`\n+\tProtocol       string `q:\"protocol\"`\n+\tSubnetID       string `q:\"subnet_id\"`\n+\tTenantID       string `q:\"tenant_id\"`\n+\tAdminStateUp   *bool  `q:\"admin_state_up\"`\n+\tName           string `q:\"name\"`\n+\tID             string `q:\"id\"`\n+\tLoadbalancerID string `q:\"loadbalancer_id\"`\n+\tLimit          int    `q:\"limit\"`\n+\tMarker         string `q:\"marker\"`\n+\tSortKey        string `q:\"sort_key\"`\n+\tSortDir        string `q:\"sort_dir\"`\n+}\n+\n+// List returns a Pager which allows you to iterate over a collection of\n+// pools. It accepts a ListOpts struct, which allows you to filter and sort\n+// the returned collection for greater efficiency.\n+//\n+// Default policy settings return only those pools that are owned by the\n+// tenant who submits the request, unless an admin user submits the request.\n+func List(c *gophercloud.ServiceClient, opts ListOpts) pagination.Pager {\n+\tq, err := gophercloud.BuildQueryString(&opts)\n+\tif err != nil {\n+\t\treturn pagination.Pager{Err: err}\n+\t}\n+\tu := rootURL(c) + q.String()\n+\treturn pagination.NewPager(c, u, func(r pagination.PageResult) pagination.Page {\n+\t\treturn PoolPage{pagination.LinkedPageBase{PageResult: r}}\n+\t})\n+}\n+\n+// Supported attributes for create/update operations.\n+const (\n+\tLBMethodRoundRobin       = \"ROUND_ROBIN\"\n+\tLBMethodLeastConnections = \"LEAST_CONNECTIONS\"\n+\tLBMethodSourceIp         = \"SOURCE_IP\"\n+\n+\tProtocolTCP   = \"TCP\"\n+\tProtocolHTTP  = \"HTTP\"\n+\tProtocolHTTPS = \"HTTPS\"\n+)\n+\n+// CreateOpts contains all the values needed to create a new pool.\n+type CreateOpts struct {\n+\t// Only required if the caller has an admin role and wants to create a pool\n+\t// for another tenant.\n+\tTenantID string\n+\n+\t// Optional. The network on which the members of the pool will be located.\n+\t// Only members that are on this network can be added to the pool.\n+\tSubnetID string\n+\n+\t// Optional. Name of the pool.\n+\tName string\n+\n+\t// Optional. Human-readable description for the pool.\n+\tDescription string\n+\n+\t// Required. The protocol used by the pool members, you can use either\n+\t// ProtocolTCP, ProtocolHTTP, or ProtocolHTTPS.\n+\tProtocol string\n+\n+\t// The Loadbalancer on which the members of the pool will be associated with.\n+\t// Note:  one of LoadbalancerID or ListenerID must be provided.\n+\tLoadbalancerID string\n+\n+\t// The Listener on which the members of the pool will be associated with.\n+\t// Note:  one of LoadbalancerID or ListenerID must be provided.\n+\tListenerID string\n+\n+\t// The algorithm used to distribute load between the members of the pool. The\n+\t// current specification supports LBMethodRoundRobin, LBMethodLeastConnections\n+\t// and LBMethodSourceIp as valid values for this attribute.\n+\tLBMethod string\n+\n+\t// Optional. Omit this field to prevent session persistence.\n+\tPersistence *SessionPersistence\n+\n+\t// Optional. The administrative state of the Listener. A valid value is true (UP)\n+\t// or false (DOWN).\n+\tAdminStateUp *bool\n+}\n+\n+// Create accepts a CreateOpts struct and uses the values to create a new\n+// load balancer pool.\n+func Create(c *gophercloud.ServiceClient, opts CreateOpts) CreateResult {\n+\ttype pool struct {\n+\t\tName           string              `json:\"name,omitempty\"`\n+\t\tDescription    string              `json:\"description,omitempty\"`\n+\t\tTenantID       string              `json:\"tenant_id,omitempty\"`\n+\t\tSubnetID       string              `json:\"subnet_id,omitempty\"`\n+\t\tProtocol       string              `json:\"protocol\"`\n+\t\tLoadbalancerID string              `json:\"loadbalancer_id,omitempty\"`\n+\t\tListenerID     string              `json:\"listener_id,omitempty\"`\n+\t\tLBMethod       string              `json:\"lb_algorithm\"`\n+\t\tPersistence    *SessionPersistence `json:\"session_persistence,omitempty\"`\n+\t\tAdminStateUp   *bool               `json:\"admin_state_up,omitempty\"`\n+\t}\n+\n+\ttype request struct {\n+\t\tPool pool `json:\"pool\"`\n+\t}\n+\n+\treqBody := request{Pool: pool{\n+\t\tName:           opts.Name,\n+\t\tDescription:    opts.Description,\n+\t\tTenantID:       opts.TenantID,\n+\t\tSubnetID:       opts.SubnetID,\n+\t\tProtocol:       opts.Protocol,\n+\t\tLoadbalancerID: opts.LoadbalancerID,\n+\t\tListenerID:     opts.ListenerID,\n+\t\tLBMethod:       opts.LBMethod,\n+\t\tAdminStateUp:   opts.AdminStateUp,\n+\t}}\n+\n+\tif opts.Persistence != nil {\n+\t\treqBody.Pool.Persistence = opts.Persistence\n+\t}\n+\n+\tvar res CreateResult\n+\t_, res.Err = c.Post(rootURL(c), reqBody, &res.Body, nil)\n+\treturn res\n+}\n+\n+// Get retrieves a particular pool based on its unique ID.\n+func Get(c *gophercloud.ServiceClient, id string) GetResult {\n+\tvar res GetResult\n+\t_, res.Err = c.Get(resourceURL(c, id), &res.Body, nil)\n+\treturn res\n+}\n+\n+// UpdateOpts contains the values used when updating a pool.\n+type UpdateOpts struct {\n+\t// Optional. Name of the pool.\n+\tName string\n+\n+\t// Optional. Human-readable description for the pool.\n+\tDescription string\n+\n+\t// The algorithm used to distribute load between the members of the pool. The\n+\t// current specification supports LBMethodRoundRobin, LBMethodLeastConnections\n+\t// and LBMethodSourceIp as valid values for this attribute.\n+\tLBMethod string\n+\n+\t// Optional. The administrative state of the Listener. A valid value is true (UP)\n+\t// or false (DOWN).\n+\tAdminStateUp *bool\n+}\n+\n+// Update allows pools to be updated.\n+func Update(c *gophercloud.ServiceClient, id string, opts UpdateOpts) UpdateResult {\n+\ttype pool struct {\n+\t\tName         string `json:\"name,omitempty\"`\n+\t\tDescription  string `json:\"description,omitempty\"`\n+\t\tLBMethod     string `json:\"lb_algorithm,omitempty\"`\n+\t\tAdminStateUp *bool  `json:\"admin_state_up,omitempty\"`\n+\t}\n+\ttype request struct {\n+\t\tPool pool `json:\"pool\"`\n+\t}\n+\n+\treqBody := request{Pool: pool{\n+\t\tName:         opts.Name,\n+\t\tDescription:  opts.Description,\n+\t\tLBMethod:     opts.LBMethod,\n+\t\tAdminStateUp: opts.AdminStateUp,\n+\t}}\n+\n+\t// Send request to API\n+\tvar res UpdateResult\n+\t_, res.Err = c.Put(resourceURL(c, id), reqBody, &res.Body, &gophercloud.RequestOpts{\n+\t\tOkCodes: []int{200},\n+\t})\n+\treturn res\n+}\n+\n+// Delete will permanently delete a particular pool based on its unique ID.\n+func Delete(c *gophercloud.ServiceClient, id string) DeleteResult {\n+\tvar res DeleteResult\n+\t_, res.Err = c.Delete(resourceURL(c, id), nil)\n+\treturn res\n+}\n+\n+// MemberListOpts allows the filtering and sorting of paginated collections through\n+// the API. Filtering is achieved by passing in struct field values that map to\n+// the Member attributes you want to see returned. SortKey allows you to\n+// sort by a particular Member attribute. SortDir sets the direction, and is\n+// either `asc' or `desc'. Marker and Limit are used for pagination.\n+type MemberListOpts struct {\n+\tName         string `q:\"name\"`\n+\tWeight       int    `q:\"weight\"`\n+\tAdminStateUp *bool  `q:\"admin_state_up\"`\n+\tTenantID     string `q:\"tenant_id\"`\n+\tSubnetID     string `q:\"subnet_id\"`\n+\tAddress      string `q:\"address\"`\n+\tProtocolPort int    `q:\"protocol_port\"`\n+\tID           string `q:\"id\"`\n+\tLimit        int    `q:\"limit\"`\n+\tMarker       string `q:\"marker\"`\n+\tSortKey      string `q:\"sort_key\"`\n+\tSortDir      string `q:\"sort_dir\"`\n+}\n+\n+// List returns a Pager which allows you to iterate over a collection of\n+// members. It accepts a ListOpts struct, which allows you to filter and sort\n+// the returned collection for greater efficiency.\n+//\n+// Default policy settings return only those members that are owned by the\n+// tenant who submits the request, unless an admin user submits the request.\n+func ListAssociateMembers(c *gophercloud.ServiceClient, poolID string, opts MemberListOpts) pagination.Pager {\n+\tq, err := gophercloud.BuildQueryString(&opts)\n+\tif err != nil {\n+\t\treturn pagination.Pager{Err: err}\n+\t}\n+\tu := memberRootURL(c, poolID) + q.String()\n+\treturn pagination.NewPager(c, u, func(r pagination.PageResult) pagination.Page {\n+\t\treturn MemberPage{pagination.LinkedPageBase{PageResult: r}}\n+\t})\n+}\n+\n+// CreateOpts contains all the values needed to create a new Member for a Pool.\n+type MemberCreateOpts struct {\n+\t// Optional. Name of the Member.\n+\tName string\n+\n+\t// Only required if the caller has an admin role and wants to create a Member\n+\t// for another tenant.\n+\tTenantID string\n+\n+\t// Required. The IP address of the member to receive traffic from the load balancer.\n+\tAddress string\n+\n+\t// Required. The port on which to listen for client traffic.\n+\tProtocolPort int\n+\n+\t// Optional. A positive integer value that indicates the relative portion of\n+\t// traffic that this member should receive from the pool. For example, a\n+\t// member with a weight of 10 receives five times as much traffic as a member\n+\t// with a weight of 2.\n+\tWeight int\n+\n+\t// Optional.  If you omit this parameter, LBaaS uses the vip_subnet_id\n+\t// parameter value for the subnet UUID.\n+\tSubnetID string\n+\n+\t// Optional. The administrative state of the Listener. A valid value is true (UP)\n+\t// or false (DOWN).\n+\tAdminStateUp *bool\n+}\n+\n+// CreateAssociateMember will create and associate a Member with a particular Pool.\n+func CreateAssociateMember(c *gophercloud.ServiceClient, poolID string, opts MemberCreateOpts) AssociateResult {\n+\ttype member struct {","path":"openstack/networking/v2/extensions/lbaas_v2/pools/requests.go","position":279,"original_position":279,"commit_id":"8ff5e0e2d134beaa06c0d9466fb9721fda8773b2","original_commit_id":"8ff5e0e2d134beaa06c0d9466fb9721fda8773b2","user":{"login":"jamiehannaford","id":1867202,"avatar_url":"https://avatars.githubusercontent.com/u/1867202?v=3","gravatar_id":"","url":"https://api.github.com/users/jamiehannaford","html_url":"https://github.com/jamiehannaford","followers_url":"https://api.github.com/users/jamiehannaford/followers","following_url":"https://api.github.com/users/jamiehannaford/following{/other_user}","gists_url":"https://api.github.com/users/jamiehannaford/gists{/gist_id}","starred_url":"https://api.github.com/users/jamiehannaford/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamiehannaford/subscriptions","organizations_url":"https://api.github.com/users/jamiehannaford/orgs","repos_url":"https://api.github.com/users/jamiehannaford/repos","events_url":"https://api.github.com/users/jamiehannaford/events{/privacy}","received_events_url":"https://api.github.com/users/jamiehannaford/received_events","type":"User","site_admin":false},"body":"need to check required opts","created_at":"2016-05-18T11:17:11Z","updated_at":"2016-05-18T11:17:11Z","html_url":"https://github.com/rackspace/gophercloud/pull/575#discussion_r63685095","pull_request_url":"https://api.github.com/repos/rackspace/gophercloud/pulls/575","_links":{"self":{"href":"https://api.github.com/repos/rackspace/gophercloud/pulls/comments/63685095"},"html":{"href":"https://github.com/rackspace/gophercloud/pull/575#discussion_r63685095"},"pull_request":{"href":"https://api.github.com/repos/rackspace/gophercloud/pulls/575"}}},"pull_request":{"url":"https://api.github.com/repos/rackspace/gophercloud/pulls/575","id":70130324,"html_url":"https://github.com/rackspace/gophercloud/pull/575","diff_url":"https://github.com/rackspace/gophercloud/pull/575.diff","patch_url":"https://github.com/rackspace/gophercloud/pull/575.patch","issue_url":"https://api.github.com/repos/rackspace/gophercloud/issues/575","number":575,"state":"open","locked":false,"title":"[rfr] Adding LBaaS v2 Support","user":{"login":"dagnello","id":9357762,"avatar_url":"https://avatars.githubusercontent.com/u/9357762?v=3","gravatar_id":"","url":"https://api.github.com/users/dagnello","html_url":"https://github.com/dagnello","followers_url":"https://api.github.com/users/dagnello/followers","following_url":"https://api.github.com/users/dagnello/following{/other_user}","gists_url":"https://api.github.com/users/dagnello/gists{/gist_id}","starred_url":"https://api.github.com/users/dagnello/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dagnello/subscriptions","organizations_url":"https://api.github.com/users/dagnello/orgs","repos_url":"https://api.github.com/users/dagnello/repos","events_url":"https://api.github.com/users/dagnello/events{/privacy}","received_events_url":"https://api.github.com/users/dagnello/received_events","type":"User","site_admin":false},"body":"This PR includes LBaaS V2 Support for the following components (ref. #460):\r\n- Loadbalancers\r\n- Listeners\r\n- Pools and Members\r\n- Health Monitors","created_at":"2016-05-15T19:23:01Z","updated_at":"2016-05-18T11:17:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e841fb6960a73ee8525c84dcec1c98c66b4c12e5","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rackspace/gophercloud/pulls/575/commits","review_comments_url":"https://api.github.com/repos/rackspace/gophercloud/pulls/575/comments","review_comment_url":"https://api.github.com/repos/rackspace/gophercloud/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rackspace/gophercloud/issues/575/comments","statuses_url":"https://api.github.com/repos/rackspace/gophercloud/statuses/8ff5e0e2d134beaa06c0d9466fb9721fda8773b2","head":{"label":"hpcloud:lbaas-v2","ref":"lbaas-v2","sha":"8ff5e0e2d134beaa06c0d9466fb9721fda8773b2","user":{"login":"hpcloud","id":366390,"avatar_url":"https://avatars.githubusercontent.com/u/366390?v=3","gravatar_id":"","url":"https://api.github.com/users/hpcloud","html_url":"https://github.com/hpcloud","followers_url":"https://api.github.com/users/hpcloud/followers","following_url":"https://api.github.com/users/hpcloud/following{/other_user}","gists_url":"https://api.github.com/users/hpcloud/gists{/gist_id}","starred_url":"https://api.github.com/users/hpcloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hpcloud/subscriptions","organizations_url":"https://api.github.com/users/hpcloud/orgs","repos_url":"https://api.github.com/users/hpcloud/repos","events_url":"https://api.github.com/users/hpcloud/events{/privacy}","received_events_url":"https://api.github.com/users/hpcloud/received_events","type":"Organization","site_admin":false},"repo":{"id":58876957,"name":"gophercloud","full_name":"hpcloud/gophercloud","owner":{"login":"hpcloud","id":366390,"avatar_url":"https://avatars.githubusercontent.com/u/366390?v=3","gravatar_id":"","url":"https://api.github.com/users/hpcloud","html_url":"https://github.com/hpcloud","followers_url":"https://api.github.com/users/hpcloud/followers","following_url":"https://api.github.com/users/hpcloud/following{/other_user}","gists_url":"https://api.github.com/users/hpcloud/gists{/gist_id}","starred_url":"https://api.github.com/users/hpcloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hpcloud/subscriptions","organizations_url":"https://api.github.com/users/hpcloud/orgs","repos_url":"https://api.github.com/users/hpcloud/repos","events_url":"https://api.github.com/users/hpcloud/events{/privacy}","received_events_url":"https://api.github.com/users/hpcloud/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hpcloud/gophercloud","description":"A Go SDK for OpenStack.","fork":true,"url":"https://api.github.com/repos/hpcloud/gophercloud","forks_url":"https://api.github.com/repos/hpcloud/gophercloud/forks","keys_url":"https://api.github.com/repos/hpcloud/gophercloud/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hpcloud/gophercloud/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hpcloud/gophercloud/teams","hooks_url":"https://api.github.com/repos/hpcloud/gophercloud/hooks","issue_events_url":"https://api.github.com/repos/hpcloud/gophercloud/issues/events{/number}","events_url":"https://api.github.com/repos/hpcloud/gophercloud/events","assignees_url":"https://api.github.com/repos/hpcloud/gophercloud/assignees{/user}","branches_url":"https://api.github.com/repos/hpcloud/gophercloud/branches{/branch}","tags_url":"https://api.github.com/repos/hpcloud/gophercloud/tags","blobs_url":"https://api.github.com/repos/hpcloud/gophercloud/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hpcloud/gophercloud/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hpcloud/gophercloud/git/refs{/sha}","trees_url":"https://api.github.com/repos/hpcloud/gophercloud/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hpcloud/gophercloud/statuses/{sha}","languages_url":"https://api.github.com/repos/hpcloud/gophercloud/languages","stargazers_url":"https://api.github.com/repos/hpcloud/gophercloud/stargazers","contributors_url":"https://api.github.com/repos/hpcloud/gophercloud/contributors","subscribers_url":"https://api.github.com/repos/hpcloud/gophercloud/subscribers","subscription_url":"https://api.github.com/repos/hpcloud/gophercloud/subscription","commits_url":"https://api.github.com/repos/hpcloud/gophercloud/commits{/sha}","git_commits_url":"https://api.github.com/repos/hpcloud/gophercloud/git/commits{/sha}","comments_url":"https://api.github.com/repos/hpcloud/gophercloud/comments{/number}","issue_comment_url":"https://api.github.com/repos/hpcloud/gophercloud/issues/comments{/number}","contents_url":"https://api.github.com/repos/hpcloud/gophercloud/contents/{+path}","compare_url":"https://api.github.com/repos/hpcloud/gophercloud/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hpcloud/gophercloud/merges","archive_url":"https://api.github.com/repos/hpcloud/gophercloud/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hpcloud/gophercloud/downloads","issues_url":"https://api.github.com/repos/hpcloud/gophercloud/issues{/number}","pulls_url":"https://api.github.com/repos/hpcloud/gophercloud/pulls{/number}","milestones_url":"https://api.github.com/repos/hpcloud/gophercloud/milestones{/number}","notifications_url":"https://api.github.com/repos/hpcloud/gophercloud/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hpcloud/gophercloud/labels{/name}","releases_url":"https://api.github.com/repos/hpcloud/gophercloud/releases{/id}","deployments_url":"https://api.github.com/repos/hpcloud/gophercloud/deployments","created_at":"2016-05-15T18:18:26Z","updated_at":"2016-05-15T18:18:28Z","pushed_at":"2016-05-17T17:56:58Z","git_url":"git://github.com/hpcloud/gophercloud.git","ssh_url":"git@github.com:hpcloud/gophercloud.git","clone_url":"https://github.com/hpcloud/gophercloud.git","svn_url":"https://github.com/hpcloud/gophercloud","homepage":"http://gophercloud.io","size":9626,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"rackspace:master","ref":"master","sha":"adc206589ed49d18cecc9890ab93534704b04702","user":{"login":"rackspace","id":3949923,"avatar_url":"https://avatars.githubusercontent.com/u/3949923?v=3","gravatar_id":"","url":"https://api.github.com/users/rackspace","html_url":"https://github.com/rackspace","followers_url":"https://api.github.com/users/rackspace/followers","following_url":"https://api.github.com/users/rackspace/following{/other_user}","gists_url":"https://api.github.com/users/rackspace/gists{/gist_id}","starred_url":"https://api.github.com/users/rackspace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rackspace/subscriptions","organizations_url":"https://api.github.com/users/rackspace/orgs","repos_url":"https://api.github.com/users/rackspace/repos","events_url":"https://api.github.com/users/rackspace/events{/privacy}","received_events_url":"https://api.github.com/users/rackspace/received_events","type":"Organization","site_admin":false},"repo":{"id":10826219,"name":"gophercloud","full_name":"rackspace/gophercloud","owner":{"login":"rackspace","id":3949923,"avatar_url":"https://avatars.githubusercontent.com/u/3949923?v=3","gravatar_id":"","url":"https://api.github.com/users/rackspace","html_url":"https://github.com/rackspace","followers_url":"https://api.github.com/users/rackspace/followers","following_url":"https://api.github.com/users/rackspace/following{/other_user}","gists_url":"https://api.github.com/users/rackspace/gists{/gist_id}","starred_url":"https://api.github.com/users/rackspace/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rackspace/subscriptions","organizations_url":"https://api.github.com/users/rackspace/orgs","repos_url":"https://api.github.com/users/rackspace/repos","events_url":"https://api.github.com/users/rackspace/events{/privacy}","received_events_url":"https://api.github.com/users/rackspace/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rackspace/gophercloud","description":"A Go SDK for OpenStack.","fork":false,"url":"https://api.github.com/repos/rackspace/gophercloud","forks_url":"https://api.github.com/repos/rackspace/gophercloud/forks","keys_url":"https://api.github.com/repos/rackspace/gophercloud/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rackspace/gophercloud/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rackspace/gophercloud/teams","hooks_url":"https://api.github.com/repos/rackspace/gophercloud/hooks","issue_events_url":"https://api.github.com/repos/rackspace/gophercloud/issues/events{/number}","events_url":"https://api.github.com/repos/rackspace/gophercloud/events","assignees_url":"https://api.github.com/repos/rackspace/gophercloud/assignees{/user}","branches_url":"https://api.github.com/repos/rackspace/gophercloud/branches{/branch}","tags_url":"https://api.github.com/repos/rackspace/gophercloud/tags","blobs_url":"https://api.github.com/repos/rackspace/gophercloud/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rackspace/gophercloud/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rackspace/gophercloud/git/refs{/sha}","trees_url":"https://api.github.com/repos/rackspace/gophercloud/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rackspace/gophercloud/statuses/{sha}","languages_url":"https://api.github.com/repos/rackspace/gophercloud/languages","stargazers_url":"https://api.github.com/repos/rackspace/gophercloud/stargazers","contributors_url":"https://api.github.com/repos/rackspace/gophercloud/contributors","subscribers_url":"https://api.github.com/repos/rackspace/gophercloud/subscribers","subscription_url":"https://api.github.com/repos/rackspace/gophercloud/subscription","commits_url":"https://api.github.com/repos/rackspace/gophercloud/commits{/sha}","git_commits_url":"https://api.github.com/repos/rackspace/gophercloud/git/commits{/sha}","comments_url":"https://api.github.com/repos/rackspace/gophercloud/comments{/number}","issue_comment_url":"https://api.github.com/repos/rackspace/gophercloud/issues/comments{/number}","contents_url":"https://api.github.com/repos/rackspace/gophercloud/contents/{+path}","compare_url":"https://api.github.com/repos/rackspace/gophercloud/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rackspace/gophercloud/merges","archive_url":"https://api.github.com/repos/rackspace/gophercloud/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rackspace/gophercloud/downloads","issues_url":"https://api.github.com/repos/rackspace/gophercloud/issues{/number}","pulls_url":"https://api.github.com/repos/rackspace/gophercloud/pulls{/number}","milestones_url":"https://api.github.com/repos/rackspace/gophercloud/milestones{/number}","notifications_url":"https://api.github.com/repos/rackspace/gophercloud/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rackspace/gophercloud/labels{/name}","releases_url":"https://api.github.com/repos/rackspace/gophercloud/releases{/id}","deployments_url":"https://api.github.com/repos/rackspace/gophercloud/deployments","created_at":"2013-06-20T18:10:46Z","updated_at":"2016-05-17T15:56:12Z","pushed_at":"2016-05-17T17:56:58Z","git_url":"git://github.com/rackspace/gophercloud.git","ssh_url":"git@github.com:rackspace/gophercloud.git","clone_url":"https://github.com/rackspace/gophercloud.git","svn_url":"https://github.com/rackspace/gophercloud","homepage":"http://gophercloud.io","size":9988,"stargazers_count":362,"watchers_count":362,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":138,"mirror_url":null,"open_issues_count":50,"forks":138,"open_issues":50,"watchers":362,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rackspace/gophercloud/pulls/575"},"html":{"href":"https://github.com/rackspace/gophercloud/pull/575"},"issue":{"href":"https://api.github.com/repos/rackspace/gophercloud/issues/575"},"comments":{"href":"https://api.github.com/repos/rackspace/gophercloud/issues/575/comments"},"review_comments":{"href":"https://api.github.com/repos/rackspace/gophercloud/pulls/575/comments"},"review_comment":{"href":"https://api.github.com/repos/rackspace/gophercloud/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rackspace/gophercloud/pulls/575/commits"},"statuses":{"href":"https://api.github.com/repos/rackspace/gophercloud/statuses/8ff5e0e2d134beaa06c0d9466fb9721fda8773b2"}}}}