{"action":"created","comment":{"url":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/comments/54564027","id":54564027,"diff_hunk":"@@ -0,0 +1,247 @@\n+# February 2016, Rohan Gandhi Korlepara\n+#\n+# Copyright (c) 2015-2016 Cisco and/or its affiliates.\n+#\n+# Licensed under the Apache License, Version 2.0 (the \"License\");\n+# you may not use this file except in compliance with the License.\n+# You may obtain a copy of the License at\n+#\n+#     http://www.apache.org/licenses/LICENSE-2.0\n+#\n+# Unless required by applicable law or agreed to in writing, software\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+# See the License for the specific language governing permissions and\n+# limitations under the License.\n+\n+require_relative 'node_util'\n+require_relative 'feature'\n+require_relative 'vdc'\n+\n+module Cisco\n+  # node_utils class for bridge_domain\n+  class BridgeDomain < NodeUtil\n+    attr_reader :name, :bd_ids\n+\n+    def initialize(bds, instantiate=true)\n+      @bd_ids = bds.to_s\n+      fail 'bridge-domain value is empty' if @bd_ids.empty? # no empty strings\n+      fail 'bridge-domain value has spaces' if @bd_ids.include?(' ') # no spaces\n+\n+      # Check if the given input bd_ids does contain only numeric value or range\n+      # of numeric values\n+      # Also bd_ids need to fall in range of 2-2967\n+      narray = @bd_ids.split(',')\n+      narray.each do |elem|\n+        if elem.include?('-')\n+          earray = elem.split('-')\n+          earray.each do |temp_elem|\n+            fail 'bridge-domain cannot be a string' unless\n+                                    BridgeDomain.number?(temp_elem)\n+            fail 'Invalid bridge-domain value' unless\n+                                    temp_elem.to_i > 1 && temp_elem.to_i < 3968\n+          end\n+        else\n+          fail 'bridge-domain cannot be a string' unless\n+                                    BridgeDomain.number?(elem)\n+          fail 'Invalid bridge-domain value' unless\n+                                    elem.to_i > 1 && elem.to_i < 3968\n+        end\n+      end\n+\n+      create if instantiate\n+    end\n+\n+    def self.number?(string)\n+      true if Integer(string)\n+    rescue\n+      false\n+    end\n+\n+    # This will expand the string to a list of bds as integers\n+    def self.bd_ids_to_array(bdid_string)\n+      list = []\n+      narray = bdid_string.split(',')\n+      narray.each do |elem|\n+        if elem.include?('-')\n+          es = elem.gsub('-', '..')\n+          ea = es.split('..').map { |d| Integer(d) }\n+          er = ea[0]..ea[1]\n+          list << er.to_a\n+        else\n+          list << elem.to_i\n+        end\n+      end\n+      list.flatten\n+    end\n+\n+    # This method will generate a batched string if a list is passed as\n+    # argument\n+    # Input would be as [1,2,3,4,5,10,11,12,7,30,100,31,32]\n+    # output will be 1-5,10-12,7,30,100,31-32\n+    def self.bd_list_to_string(bd_list)\n+      farray = bd_list.compact\n+      lranges = []\n+      unless farray.empty?\n+        left = bd_list.first\n+        right = nil\n+        farray.each do |aelem|\n+          if right && aelem != right.succ\n+            if left == right\n+              lranges << left\n+            else\n+              lranges << Range.new(left, right)\n+            end\n+            left = aelem\n+          end\n+          right = aelem\n+        end\n+        if left == right\n+          lranges << left\n+        else\n+          lranges << Range.new(left, right)\n+        end\n+      end\n+      lranges.to_s.gsub('..', '-').delete('[').delete(']').delete(' ')\n+    end\n+\n+    def cli_error_check(result)\n+      # The NXOS bridge-domain cli does not raise an exception in some\n+      # conditions and instead just displays a STDOUT error message;\n+      # thus NXAPI does not detect the failure and we must catch it by\n+      # inspecting the \"body\" hash entry returned by NXAPI. This\n+      # bridge-domain cli behavior is unlikely to change.\n+      fail result[2]['body'] if\n+        result[2].is_a?(Hash) &&\n+        /(ERROR:|Warning:)/.match(result[2]['body'].to_s)\n+\n+      # Some test environments get result[2] as a string instead of a hash\n+      fail result[2] if\n+        result[2].is_a?(String) &&\n+        /(ERROR:|Warning:)/.match(result[2])\n+    end\n+\n+    def create\n+      result = config_set('bridge_domain', 'create', @bd_ids, @bd_ids)\n+      cli_error_check(result)\n+    rescue CliError => e\n+      raise \"[bridge-domain #{@bd_ids}] '#{e.command}' : #{e.clierror}\"\n+    end\n+\n+    def destroy\n+      result = config_set('bridge_domain', 'destroy', @bd_ids, @bd_ids)\n+      cli_error_check(result)\n+    rescue CliError => e\n+      raise \"[bridge-domain #{@bd_ids}] '#{e.command}' : #{e.clierror}\"\n+    end\n+\n+    def self.allbds\n+      hash = {}\n+      bd_list = config_get('bridge_domain', 'all_bds')\n+      return hash if bd_list.nil?\n+\n+      bd_list.each do |id|\n+        hash[id] = BridgeDomain.new(id, false)\n+      end\n+      hash\n+    end\n+\n+    ########################################################\n+    #                      PROPERTIES                      #\n+    ########################################################\n+\n+    # Bridge-Domain Shutdown case\n+    def shutdown\n+      result = config_get('bridge_domain', 'shutdown', @bd_ids)\n+      # Valid result is either: \"active\"(aka no shutdown) or \"shutdown\"\n+      result[/DOWN/] ? true : false\n+    end\n+\n+    def shutdown=(val)\n+      no_cmd = (val) ? '' : 'no'\n+      result = config_set('bridge_domain', 'shutdown', @bd_ids, no_cmd)\n+      cli_error_check(result)\n+    rescue CliError => e\n+      raise \"[bridge-domain #{@bd_ids}] '#{e.command}' : #{e.clierror}\"","path":"lib/cisco_node_utils/bridge_domain.rb","position":165,"original_position":165,"commit_id":"483c84a97085cb6e95668235a172e2a5de4c9869","original_commit_id":"483c84a97085cb6e95668235a172e2a5de4c9869","user":{"login":"chrisvanheuveln","id":12087548,"avatar_url":"https://avatars.githubusercontent.com/u/12087548?v=3","gravatar_id":"","url":"https://api.github.com/users/chrisvanheuveln","html_url":"https://github.com/chrisvanheuveln","followers_url":"https://api.github.com/users/chrisvanheuveln/followers","following_url":"https://api.github.com/users/chrisvanheuveln/following{/other_user}","gists_url":"https://api.github.com/users/chrisvanheuveln/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisvanheuveln/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisvanheuveln/subscriptions","organizations_url":"https://api.github.com/users/chrisvanheuveln/orgs","repos_url":"https://api.github.com/users/chrisvanheuveln/repos","events_url":"https://api.github.com/users/chrisvanheuveln/events{/privacy}","received_events_url":"https://api.github.com/users/chrisvanheuveln/received_events","type":"User","site_admin":false},"body":"This is okay but consider using a helper method to do this raise instead of replicating it on every setter.\r\n\r\n```\r\nrescue CliError => e\r\n  bd_raise(e)\r\nend\r\n\r\ndef bd_raise(e)\r\n  raise \"[bridge-domain #{@bd_ids}] '#{e.command}' : #{e.clierror}\"\r\nend","created_at":"2016-03-01T13:11:15Z","updated_at":"2016-03-01T13:11:15Z","html_url":"https://github.com/cisco/cisco-network-node-utils/pull/254#discussion_r54564027","pull_request_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/254","_links":{"self":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/comments/54564027"},"html":{"href":"https://github.com/cisco/cisco-network-node-utils/pull/254#discussion_r54564027"},"pull_request":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/254"}}},"pull_request":{"url":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/254","id":61205777,"html_url":"https://github.com/cisco/cisco-network-node-utils/pull/254","diff_url":"https://github.com/cisco/cisco-network-node-utils/pull/254.diff","patch_url":"https://github.com/cisco/cisco-network-node-utils/pull/254.patch","issue_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/issues/254","number":254,"state":"open","locked":false,"title":"Feature/vxlan bridge domain","user":{"login":"rkorlepa","id":12837062,"avatar_url":"https://avatars.githubusercontent.com/u/12837062?v=3","gravatar_id":"","url":"https://api.github.com/users/rkorlepa","html_url":"https://github.com/rkorlepa","followers_url":"https://api.github.com/users/rkorlepa/followers","following_url":"https://api.github.com/users/rkorlepa/following{/other_user}","gists_url":"https://api.github.com/users/rkorlepa/gists{/gist_id}","starred_url":"https://api.github.com/users/rkorlepa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rkorlepa/subscriptions","organizations_url":"https://api.github.com/users/rkorlepa/orgs","repos_url":"https://api.github.com/users/rkorlepa/repos","events_url":"https://api.github.com/users/rkorlepa/events{/privacy}","received_events_url":"https://api.github.com/users/rkorlepa/received_events","type":"User","site_admin":false},"body":"This is regarding the addition of bridge-domain and encapsulation node utils.\r\nIt deals with all the config commands for bridge-domain and the properties under it.\r\nBefore this bridge-domain is defined under vni node, so remove the vni.rb and related files as it not necessary and converted it to BridgeDomain and Encapsulation node utils.\r\nAlso covers the minitests for both the nodeutils","created_at":"2016-03-01T07:58:06Z","updated_at":"2016-03-01T13:11:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0d8ebe0726ba4d9f5449ec37a725c7f95bb852c1","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/254/commits","review_comments_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/254/comments","review_comment_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/issues/254/comments","statuses_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/statuses/483c84a97085cb6e95668235a172e2a5de4c9869","head":{"label":"rkorlepa:feature/vxlan_bridge_domain","ref":"feature/vxlan_bridge_domain","sha":"483c84a97085cb6e95668235a172e2a5de4c9869","user":{"login":"rkorlepa","id":12837062,"avatar_url":"https://avatars.githubusercontent.com/u/12837062?v=3","gravatar_id":"","url":"https://api.github.com/users/rkorlepa","html_url":"https://github.com/rkorlepa","followers_url":"https://api.github.com/users/rkorlepa/followers","following_url":"https://api.github.com/users/rkorlepa/following{/other_user}","gists_url":"https://api.github.com/users/rkorlepa/gists{/gist_id}","starred_url":"https://api.github.com/users/rkorlepa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rkorlepa/subscriptions","organizations_url":"https://api.github.com/users/rkorlepa/orgs","repos_url":"https://api.github.com/users/rkorlepa/repos","events_url":"https://api.github.com/users/rkorlepa/events{/privacy}","received_events_url":"https://api.github.com/users/rkorlepa/received_events","type":"User","site_admin":false},"repo":{"id":51951335,"name":"cisco-network-node-utils","full_name":"rkorlepa/cisco-network-node-utils","owner":{"login":"rkorlepa","id":12837062,"avatar_url":"https://avatars.githubusercontent.com/u/12837062?v=3","gravatar_id":"","url":"https://api.github.com/users/rkorlepa","html_url":"https://github.com/rkorlepa","followers_url":"https://api.github.com/users/rkorlepa/followers","following_url":"https://api.github.com/users/rkorlepa/following{/other_user}","gists_url":"https://api.github.com/users/rkorlepa/gists{/gist_id}","starred_url":"https://api.github.com/users/rkorlepa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rkorlepa/subscriptions","organizations_url":"https://api.github.com/users/rkorlepa/orgs","repos_url":"https://api.github.com/users/rkorlepa/repos","events_url":"https://api.github.com/users/rkorlepa/events{/privacy}","received_events_url":"https://api.github.com/users/rkorlepa/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rkorlepa/cisco-network-node-utils","description":"","fork":true,"url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils","forks_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/forks","keys_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/teams","hooks_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/hooks","issue_events_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/issues/events{/number}","events_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/events","assignees_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/assignees{/user}","branches_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/branches{/branch}","tags_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/tags","blobs_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/git/refs{/sha}","trees_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/statuses/{sha}","languages_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/languages","stargazers_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/stargazers","contributors_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/contributors","subscribers_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/subscribers","subscription_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/subscription","commits_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/commits{/sha}","git_commits_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/git/commits{/sha}","comments_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/comments{/number}","issue_comment_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/issues/comments{/number}","contents_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/contents/{+path}","compare_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/merges","archive_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/downloads","issues_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/issues{/number}","pulls_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/pulls{/number}","milestones_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/milestones{/number}","notifications_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/labels{/name}","releases_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/releases{/id}","deployments_url":"https://api.github.com/repos/rkorlepa/cisco-network-node-utils/deployments","created_at":"2016-02-17T20:02:38Z","updated_at":"2016-02-17T20:02:39Z","pushed_at":"2016-03-01T07:53:40Z","git_url":"git://github.com/rkorlepa/cisco-network-node-utils.git","ssh_url":"git@github.com:rkorlepa/cisco-network-node-utils.git","clone_url":"https://github.com/rkorlepa/cisco-network-node-utils.git","svn_url":"https://github.com/rkorlepa/cisco-network-node-utils","homepage":null,"size":2832,"stargazers_count":0,"watchers_count":0,"language":"Ruby","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":"develop"}},"base":{"label":"cisco:develop","ref":"develop","sha":"2f4fdfab350577bf105d769cc604984ce8590daa","user":{"login":"cisco","id":1376999,"avatar_url":"https://avatars.githubusercontent.com/u/1376999?v=3","gravatar_id":"","url":"https://api.github.com/users/cisco","html_url":"https://github.com/cisco","followers_url":"https://api.github.com/users/cisco/followers","following_url":"https://api.github.com/users/cisco/following{/other_user}","gists_url":"https://api.github.com/users/cisco/gists{/gist_id}","starred_url":"https://api.github.com/users/cisco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cisco/subscriptions","organizations_url":"https://api.github.com/users/cisco/orgs","repos_url":"https://api.github.com/users/cisco/repos","events_url":"https://api.github.com/users/cisco/events{/privacy}","received_events_url":"https://api.github.com/users/cisco/received_events","type":"Organization","site_admin":false},"repo":{"id":39565196,"name":"cisco-network-node-utils","full_name":"cisco/cisco-network-node-utils","owner":{"login":"cisco","id":1376999,"avatar_url":"https://avatars.githubusercontent.com/u/1376999?v=3","gravatar_id":"","url":"https://api.github.com/users/cisco","html_url":"https://github.com/cisco","followers_url":"https://api.github.com/users/cisco/followers","following_url":"https://api.github.com/users/cisco/following{/other_user}","gists_url":"https://api.github.com/users/cisco/gists{/gist_id}","starred_url":"https://api.github.com/users/cisco/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cisco/subscriptions","organizations_url":"https://api.github.com/users/cisco/orgs","repos_url":"https://api.github.com/users/cisco/repos","events_url":"https://api.github.com/users/cisco/events{/privacy}","received_events_url":"https://api.github.com/users/cisco/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cisco/cisco-network-node-utils","description":"","fork":false,"url":"https://api.github.com/repos/cisco/cisco-network-node-utils","forks_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/forks","keys_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/teams","hooks_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/hooks","issue_events_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/issues/events{/number}","events_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/events","assignees_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/assignees{/user}","branches_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/branches{/branch}","tags_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/tags","blobs_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/git/refs{/sha}","trees_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/statuses/{sha}","languages_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/languages","stargazers_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/stargazers","contributors_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/contributors","subscribers_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/subscribers","subscription_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/subscription","commits_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/commits{/sha}","git_commits_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/git/commits{/sha}","comments_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/comments{/number}","issue_comment_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/issues/comments{/number}","contents_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/contents/{+path}","compare_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/merges","archive_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/downloads","issues_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/issues{/number}","pulls_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls{/number}","milestones_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/milestones{/number}","notifications_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/labels{/name}","releases_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/releases{/id}","deployments_url":"https://api.github.com/repos/cisco/cisco-network-node-utils/deployments","created_at":"2015-07-23T12:07:39Z","updated_at":"2016-02-01T19:00:12Z","pushed_at":"2016-03-01T07:58:06Z","git_url":"git://github.com/cisco/cisco-network-node-utils.git","ssh_url":"git@github.com:cisco/cisco-network-node-utils.git","clone_url":"https://github.com/cisco/cisco-network-node-utils.git","svn_url":"https://github.com/cisco/cisco-network-node-utils","homepage":null,"size":3905,"stargazers_count":9,"watchers_count":9,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":34,"mirror_url":null,"open_issues_count":1,"forks":34,"open_issues":1,"watchers":9,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/254"},"html":{"href":"https://github.com/cisco/cisco-network-node-utils/pull/254"},"issue":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/issues/254"},"comments":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/issues/254/comments"},"review_comments":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/254/comments"},"review_comment":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/pulls/254/commits"},"statuses":{"href":"https://api.github.com/repos/cisco/cisco-network-node-utils/statuses/483c84a97085cb6e95668235a172e2a5de4c9869"}}}}