{"action":"created","comment":{"url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/comments/258920641","pull_request_review_id":206296054,"id":258920641,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI1ODkyMDY0MQ==","diff_hunk":"@@ -1,54 +1,201 @@\n # kubernetes-nmstate\n-Host-networking for kubernetes driven by kubernetes and executed by nmstate.\n+\n+Host-networking configuration driven by Kubernetes and executed by\n+[nmstate](https://nmstate.github.io/).\n+\n ## The \"Why\"\n-With hybrid clouds, host-networking setup is becoming even more challenging. \n-Different payloads have different networking requirements, and not everything could be satisfied as overlays on top of the main interface of the node (e.g. SR-IOV, L2, other L2).\n-The [CNI](https://github.com/containernetworking/cni) standard enables different solutions for connecting networks on the node with pods. \n-Some of them are [part of the standard](https://github.com/containernetworking/cni), and there are some that support: [OVS bridges](https://github.com/kubevirt/ovs-cni), [SR-IOV](https://github.com/hustcat/sriov-cni), and more...\n-However, in all of these cases, the node must have the networks setup before the pod is scheduled. Setting up the networks in a dynamic and heterogenous cluster, with dynamic networking requirements, is a challenge by itself - and this is what this project is addressing.\n+\n+With hybrid clouds, host-networking setup is becoming even more challenging.\n+Different payloads have different networking requirements, and not everything\n+could be satisfied as overlays on top of the main interface of the node (e.g.\n+SR-IOV, L2, other L2).\n+The [CNI](https://github.com/containernetworking/cni) standard enables different\n+solutions for connecting networks on the node with pods. Some of them are\n+[part of the standard](https://github.com/containernetworking/cni), and there are\n+some that support [OVS bridges](https://github.com/kubevirt/ovs-cni),\n+[SR-IOV](https://github.com/hustcat/sriov-cni), and more...\n+\n+However, in all of these cases, the node must have the networks setup before the\n+pod is scheduled. Setting up the networks in a dynamic and heterogenous cluster,\n+with dynamic networking requirements, is a challenge by itself - and this is\n+what this project is addressing.\n+\n ## The \"How\"\n-We use [nmstate](https://nmstate.github.io/) to perform state driven network configuration on each node, as well as to report back its current state. \n-The system defines 2 CRDs ([Custom Resource Definitions](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)): ```NodeNetworkState``` and ```NodeNetConfPolicy``` as described [here](https://docs.google.com/document/d/1282BcYjYGIIxQKgMYi3nQodB4ML_gw9BSs5AXB7QUtg/).\n-In the project we provide a 2 processes (one each CRD handling) that could be invoked manually by an external system (e.g. [Machine Config Operator](https://github.com/openshift/machine-config-operator)) and or run as node daemons (or as a Kubernetes [daemon set](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)) listening and handling modifications for the CRDs.\n-Demo:\n-[![asciicast](https://asciinema.org/a/225838.svg)](https://asciinema.org/a/225838)\n-### State Handler\n-When it starts on the node, it reads the list of ```NodeNetworkState``` CRDs, if no CRD exist for the node it is executed on, it will create one, and fill it with the output of ```nmstatectl show``` as the current status in the CRD. \n-If a ```NodeNetworkState``` CRD exists for the node, it will try to enforce the desired state from the CRD (using: ```nmstatectl set```), and then report back current state.\n-When running in \"client\" mode, it has nothing more to do. When running as a daemon, it will:\n-- Detects an update to the ```NodeNetworkState``` CRD which apply to the node it is running on, then, it will try to reenforce the desired state, and report back the current one. In case it detects deletion of the ```NodeNetworkState``` CRD, it will re-create it with current state only.\n-- In case that the enforcement partially or completely failed, the daemon will retry to enforce it (with exponential back-off) until it succeeded, or the desired state is modified again \n-- Even if enforcement was successful, the daemon will periodically poll the current state of the node, and will report it if any modification happened. If such modification is causing the desired state to be different than the current one, it will try to reenforce it (as described above).\n-> Notes:\n-> - The ```NodeNetworkState`` CRD has an \"un-managed\" indicator, allowing an administrator to stop all enforcement and reporting for a node.\n-> - The desire state could be created based on ```NodeNetConfPolicy``` CRDs (see below), or just manually set by an external system.\n-### Policy Handler\n-Can run in distributed or centralized mode. In case of distributed (default mode), it will only handle the ```NodeNetworkState``` CRDs of node it is executed on. In case of centralized mode, there has to be only one instance of it that run at the same time.\n-#### Distributed Mode\n-Upon invocation, it reads the list of ```NodeNetworkState``` CRDs, as well as the list of ```NodeNetConfPolicy``` CRDs. It will find which ```NodeNetworkState``` CRD is for the node it is running on. It will also find all ```NodeNetConfPolicy``` CRDs that apply to that node (based on their [affinity and toleration](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity) objects). \n-From the interface match logic in the applicable ```NodeNetConfPolicy``` CRDs, and the list of interfaces taken from the current state of the node (in the ```NodeNetworkState``` CRD), it will create aggregated desired state object, and update it into the relevant ```NodeNetworkState``` CRD.\n-When running in \"client\" mode, it has nothing more to do. When running as a daemon, it will:\n-- Detects updates to ```NodeNetConfPolicy``` CRDs applicable for current node, and update ```NodeNetworkState``` CRD if needed.\n-- Detect an update to the current state of ```NodeNetworkState``` CRD for the node, and see if its desired state needs to be modified.\n-#### Centralized mode\n-Very similar to the distributed mode, but in this case, the client od daemon must handle policies and states for all nodes in the system.\n-## Getting Started\n-To deploy kubernetes-nmstate on the cluster call:\n-```\n-kubectl --kubeconfig ~/.kube/config apply -f manifests/deployment.yaml\n-```\n-This would install the CRDs, the state and policy daemon sets, and RBACs. Then call:\n+\n+We use [nmstate](https://nmstate.github.io/) to perform state driven network\n+configuration on each node, as well as to report back its current state.\n+The system defines 2 objects, `NodeNetworkState` and `NodeNetConfPolicy` that\n+are used to report and configure cluster node interfaces.\n+","path":"README.md","position":66,"original_position":66,"commit_id":"67bc9fd577c4e4352400988727231330b3e38479","original_commit_id":"67bc9fd577c4e4352400988727231330b3e38479","user":{"login":"phoracek","id":3493830,"node_id":"MDQ6VXNlcjM0OTM4MzA=","avatar_url":"https://avatars1.githubusercontent.com/u/3493830?v=4","gravatar_id":"","url":"https://api.github.com/users/phoracek","html_url":"https://github.com/phoracek","followers_url":"https://api.github.com/users/phoracek/followers","following_url":"https://api.github.com/users/phoracek/following{/other_user}","gists_url":"https://api.github.com/users/phoracek/gists{/gist_id}","starred_url":"https://api.github.com/users/phoracek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phoracek/subscriptions","organizations_url":"https://api.github.com/users/phoracek/orgs","repos_url":"https://api.github.com/users/phoracek/repos","events_url":"https://api.github.com/users/phoracek/events{/privacy}","received_events_url":"https://api.github.com/users/phoracek/received_events","type":"User","site_admin":false},"body":"Will do that in another documentation file, not in the README though, it is not important for users","created_at":"2019-02-21T13:14:38Z","updated_at":"2019-02-21T13:14:39Z","html_url":"https://github.com/nmstate/kubernetes-nmstate/pull/30#discussion_r258920641","pull_request_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/30","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/comments/258920641"},"html":{"href":"https://github.com/nmstate/kubernetes-nmstate/pull/30#discussion_r258920641"},"pull_request":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/30"}},"in_reply_to_id":258820010},"pull_request":{"url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/30","id":254709104,"node_id":"MDExOlB1bGxSZXF1ZXN0MjU0NzA5MTA0","html_url":"https://github.com/nmstate/kubernetes-nmstate/pull/30","diff_url":"https://github.com/nmstate/kubernetes-nmstate/pull/30.diff","patch_url":"https://github.com/nmstate/kubernetes-nmstate/pull/30.patch","issue_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/issues/30","number":30,"state":"open","locked":false,"title":"update documentation with examples","user":{"login":"phoracek","id":3493830,"node_id":"MDQ6VXNlcjM0OTM4MzA=","avatar_url":"https://avatars1.githubusercontent.com/u/3493830?v=4","gravatar_id":"","url":"https://api.github.com/users/phoracek","html_url":"https://github.com/phoracek","followers_url":"https://api.github.com/users/phoracek/followers","following_url":"https://api.github.com/users/phoracek/following{/other_user}","gists_url":"https://api.github.com/users/phoracek/gists{/gist_id}","starred_url":"https://api.github.com/users/phoracek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phoracek/subscriptions","organizations_url":"https://api.github.com/users/phoracek/orgs","repos_url":"https://api.github.com/users/phoracek/repos","events_url":"https://api.github.com/users/phoracek/events{/privacy}","received_events_url":"https://api.github.com/users/phoracek/received_events","type":"User","site_admin":false},"body":"Make documentation more structured and add examples of usage.","created_at":"2019-02-20T16:37:06Z","updated_at":"2019-02-21T13:14:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"62abf8b561821dbc39be9d8ab748c1a45685e48d","assignee":{"login":"phoracek","id":3493830,"node_id":"MDQ6VXNlcjM0OTM4MzA=","avatar_url":"https://avatars1.githubusercontent.com/u/3493830?v=4","gravatar_id":"","url":"https://api.github.com/users/phoracek","html_url":"https://github.com/phoracek","followers_url":"https://api.github.com/users/phoracek/followers","following_url":"https://api.github.com/users/phoracek/following{/other_user}","gists_url":"https://api.github.com/users/phoracek/gists{/gist_id}","starred_url":"https://api.github.com/users/phoracek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phoracek/subscriptions","organizations_url":"https://api.github.com/users/phoracek/orgs","repos_url":"https://api.github.com/users/phoracek/repos","events_url":"https://api.github.com/users/phoracek/events{/privacy}","received_events_url":"https://api.github.com/users/phoracek/received_events","type":"User","site_admin":false},"assignees":[{"login":"phoracek","id":3493830,"node_id":"MDQ6VXNlcjM0OTM4MzA=","avatar_url":"https://avatars1.githubusercontent.com/u/3493830?v=4","gravatar_id":"","url":"https://api.github.com/users/phoracek","html_url":"https://github.com/phoracek","followers_url":"https://api.github.com/users/phoracek/followers","following_url":"https://api.github.com/users/phoracek/following{/other_user}","gists_url":"https://api.github.com/users/phoracek/gists{/gist_id}","starred_url":"https://api.github.com/users/phoracek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phoracek/subscriptions","organizations_url":"https://api.github.com/users/phoracek/orgs","repos_url":"https://api.github.com/users/phoracek/repos","events_url":"https://api.github.com/users/phoracek/events{/privacy}","received_events_url":"https://api.github.com/users/phoracek/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"yuvalif","id":1798418,"node_id":"MDQ6VXNlcjE3OTg0MTg=","avatar_url":"https://avatars3.githubusercontent.com/u/1798418?v=4","gravatar_id":"","url":"https://api.github.com/users/yuvalif","html_url":"https://github.com/yuvalif","followers_url":"https://api.github.com/users/yuvalif/followers","following_url":"https://api.github.com/users/yuvalif/following{/other_user}","gists_url":"https://api.github.com/users/yuvalif/gists{/gist_id}","starred_url":"https://api.github.com/users/yuvalif/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuvalif/subscriptions","organizations_url":"https://api.github.com/users/yuvalif/orgs","repos_url":"https://api.github.com/users/yuvalif/repos","events_url":"https://api.github.com/users/yuvalif/events{/privacy}","received_events_url":"https://api.github.com/users/yuvalif/received_events","type":"User","site_admin":false},{"login":"dankenigsberg","id":3825628,"node_id":"MDQ6VXNlcjM4MjU2Mjg=","avatar_url":"https://avatars0.githubusercontent.com/u/3825628?v=4","gravatar_id":"","url":"https://api.github.com/users/dankenigsberg","html_url":"https://github.com/dankenigsberg","followers_url":"https://api.github.com/users/dankenigsberg/followers","following_url":"https://api.github.com/users/dankenigsberg/following{/other_user}","gists_url":"https://api.github.com/users/dankenigsberg/gists{/gist_id}","starred_url":"https://api.github.com/users/dankenigsberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dankenigsberg/subscriptions","organizations_url":"https://api.github.com/users/dankenigsberg/orgs","repos_url":"https://api.github.com/users/dankenigsberg/repos","events_url":"https://api.github.com/users/dankenigsberg/events{/privacy}","received_events_url":"https://api.github.com/users/dankenigsberg/received_events","type":"User","site_admin":false},{"login":"SchSeba","id":4209208,"node_id":"MDQ6VXNlcjQyMDkyMDg=","avatar_url":"https://avatars3.githubusercontent.com/u/4209208?v=4","gravatar_id":"","url":"https://api.github.com/users/SchSeba","html_url":"https://github.com/SchSeba","followers_url":"https://api.github.com/users/SchSeba/followers","following_url":"https://api.github.com/users/SchSeba/following{/other_user}","gists_url":"https://api.github.com/users/SchSeba/gists{/gist_id}","starred_url":"https://api.github.com/users/SchSeba/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SchSeba/subscriptions","organizations_url":"https://api.github.com/users/SchSeba/orgs","repos_url":"https://api.github.com/users/SchSeba/repos","events_url":"https://api.github.com/users/SchSeba/events{/privacy}","received_events_url":"https://api.github.com/users/SchSeba/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/30/commits","review_comments_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/30/comments","review_comment_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/issues/30/comments","statuses_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/statuses/67bc9fd577c4e4352400988727231330b3e38479","head":{"label":"phoracek:rework_documentation","ref":"rework_documentation","sha":"67bc9fd577c4e4352400988727231330b3e38479","user":{"login":"phoracek","id":3493830,"node_id":"MDQ6VXNlcjM0OTM4MzA=","avatar_url":"https://avatars1.githubusercontent.com/u/3493830?v=4","gravatar_id":"","url":"https://api.github.com/users/phoracek","html_url":"https://github.com/phoracek","followers_url":"https://api.github.com/users/phoracek/followers","following_url":"https://api.github.com/users/phoracek/following{/other_user}","gists_url":"https://api.github.com/users/phoracek/gists{/gist_id}","starred_url":"https://api.github.com/users/phoracek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phoracek/subscriptions","organizations_url":"https://api.github.com/users/phoracek/orgs","repos_url":"https://api.github.com/users/phoracek/repos","events_url":"https://api.github.com/users/phoracek/events{/privacy}","received_events_url":"https://api.github.com/users/phoracek/received_events","type":"User","site_admin":false},"repo":{"id":160376307,"node_id":"MDEwOlJlcG9zaXRvcnkxNjAzNzYzMDc=","name":"kubernetes-nmstate","full_name":"phoracek/kubernetes-nmstate","private":false,"owner":{"login":"phoracek","id":3493830,"node_id":"MDQ6VXNlcjM0OTM4MzA=","avatar_url":"https://avatars1.githubusercontent.com/u/3493830?v=4","gravatar_id":"","url":"https://api.github.com/users/phoracek","html_url":"https://github.com/phoracek","followers_url":"https://api.github.com/users/phoracek/followers","following_url":"https://api.github.com/users/phoracek/following{/other_user}","gists_url":"https://api.github.com/users/phoracek/gists{/gist_id}","starred_url":"https://api.github.com/users/phoracek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/phoracek/subscriptions","organizations_url":"https://api.github.com/users/phoracek/orgs","repos_url":"https://api.github.com/users/phoracek/repos","events_url":"https://api.github.com/users/phoracek/events{/privacy}","received_events_url":"https://api.github.com/users/phoracek/received_events","type":"User","site_admin":false},"html_url":"https://github.com/phoracek/kubernetes-nmstate","description":"Host-networking configuration driven by Kubernetes and executed by nmstate","fork":true,"url":"https://api.github.com/repos/phoracek/kubernetes-nmstate","forks_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/forks","keys_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/teams","hooks_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/hooks","issue_events_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/issues/events{/number}","events_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/events","assignees_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/assignees{/user}","branches_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/branches{/branch}","tags_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/tags","blobs_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/git/refs{/sha}","trees_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/statuses/{sha}","languages_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/languages","stargazers_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/stargazers","contributors_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/contributors","subscribers_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/subscribers","subscription_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/subscription","commits_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/commits{/sha}","git_commits_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/git/commits{/sha}","comments_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/comments{/number}","issue_comment_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/issues/comments{/number}","contents_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/contents/{+path}","compare_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/merges","archive_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/downloads","issues_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/issues{/number}","pulls_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/pulls{/number}","milestones_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/milestones{/number}","notifications_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/labels{/name}","releases_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/releases{/id}","deployments_url":"https://api.github.com/repos/phoracek/kubernetes-nmstate/deployments","created_at":"2018-12-04T15:12:13Z","updated_at":"2019-02-20T14:22:43Z","pushed_at":"2019-02-20T16:36:20Z","git_url":"git://github.com/phoracek/kubernetes-nmstate.git","ssh_url":"git@github.com:phoracek/kubernetes-nmstate.git","clone_url":"https://github.com/phoracek/kubernetes-nmstate.git","svn_url":"https://github.com/phoracek/kubernetes-nmstate","homepage":"","size":28440,"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":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"nmstate:master","ref":"master","sha":"92d3ff83951caa86f5bbf7a256b39225e91cdb23","user":{"login":"nmstate","id":39068239,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MDY4MjM5","avatar_url":"https://avatars0.githubusercontent.com/u/39068239?v=4","gravatar_id":"","url":"https://api.github.com/users/nmstate","html_url":"https://github.com/nmstate","followers_url":"https://api.github.com/users/nmstate/followers","following_url":"https://api.github.com/users/nmstate/following{/other_user}","gists_url":"https://api.github.com/users/nmstate/gists{/gist_id}","starred_url":"https://api.github.com/users/nmstate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nmstate/subscriptions","organizations_url":"https://api.github.com/users/nmstate/orgs","repos_url":"https://api.github.com/users/nmstate/repos","events_url":"https://api.github.com/users/nmstate/events{/privacy}","received_events_url":"https://api.github.com/users/nmstate/received_events","type":"Organization","site_admin":false},"repo":{"id":155579204,"node_id":"MDEwOlJlcG9zaXRvcnkxNTU1NzkyMDQ=","name":"kubernetes-nmstate","full_name":"nmstate/kubernetes-nmstate","private":false,"owner":{"login":"nmstate","id":39068239,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM5MDY4MjM5","avatar_url":"https://avatars0.githubusercontent.com/u/39068239?v=4","gravatar_id":"","url":"https://api.github.com/users/nmstate","html_url":"https://github.com/nmstate","followers_url":"https://api.github.com/users/nmstate/followers","following_url":"https://api.github.com/users/nmstate/following{/other_user}","gists_url":"https://api.github.com/users/nmstate/gists{/gist_id}","starred_url":"https://api.github.com/users/nmstate/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nmstate/subscriptions","organizations_url":"https://api.github.com/users/nmstate/orgs","repos_url":"https://api.github.com/users/nmstate/repos","events_url":"https://api.github.com/users/nmstate/events{/privacy}","received_events_url":"https://api.github.com/users/nmstate/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/nmstate/kubernetes-nmstate","description":"Host-networking configuration driven by Kubernetes and executed by nmstate","fork":false,"url":"https://api.github.com/repos/nmstate/kubernetes-nmstate","forks_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/forks","keys_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/teams","hooks_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/hooks","issue_events_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/issues/events{/number}","events_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/events","assignees_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/assignees{/user}","branches_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/branches{/branch}","tags_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/tags","blobs_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/git/refs{/sha}","trees_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/statuses/{sha}","languages_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/languages","stargazers_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/stargazers","contributors_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/contributors","subscribers_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/subscribers","subscription_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/subscription","commits_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/commits{/sha}","git_commits_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/git/commits{/sha}","comments_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/comments{/number}","issue_comment_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/issues/comments{/number}","contents_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/contents/{+path}","compare_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/merges","archive_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/downloads","issues_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/issues{/number}","pulls_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls{/number}","milestones_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/milestones{/number}","notifications_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/labels{/name}","releases_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/releases{/id}","deployments_url":"https://api.github.com/repos/nmstate/kubernetes-nmstate/deployments","created_at":"2018-10-31T15:19:55Z","updated_at":"2019-02-20T14:22:57Z","pushed_at":"2019-02-20T16:37:07Z","git_url":"git://github.com/nmstate/kubernetes-nmstate.git","ssh_url":"git@github.com:nmstate/kubernetes-nmstate.git","clone_url":"https://github.com/nmstate/kubernetes-nmstate.git","svn_url":"https://github.com/nmstate/kubernetes-nmstate","homepage":"","size":28427,"stargazers_count":7,"watchers_count":7,"language":"Go","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":3,"mirror_url":null,"archived":false,"open_issues_count":18,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":3,"open_issues":18,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/30"},"html":{"href":"https://github.com/nmstate/kubernetes-nmstate/pull/30"},"issue":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/issues/30"},"comments":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/issues/30/comments"},"review_comments":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/30/comments"},"review_comment":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/pulls/30/commits"},"statuses":{"href":"https://api.github.com/repos/nmstate/kubernetes-nmstate/statuses/67bc9fd577c4e4352400988727231330b3e38479"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"phoracek"}}