{"action":"created","issue":{"url":"https://api.github.com/repos/CanonicalLtd/netplan/issues/8","repository_url":"https://api.github.com/repos/CanonicalLtd/netplan","labels_url":"https://api.github.com/repos/CanonicalLtd/netplan/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/CanonicalLtd/netplan/issues/8/comments","events_url":"https://api.github.com/repos/CanonicalLtd/netplan/issues/8/events","html_url":"https://github.com/CanonicalLtd/netplan/pull/8","id":300957750,"number":8,"title":"LP: #1746842 - No network devices configured if YAML error in any file","user":{"login":"daxtens","id":3307781,"avatar_url":"https://avatars3.githubusercontent.com/u/3307781?v=4","gravatar_id":"","url":"https://api.github.com/users/daxtens","html_url":"https://github.com/daxtens","followers_url":"https://api.github.com/users/daxtens/followers","following_url":"https://api.github.com/users/daxtens/following{/other_user}","gists_url":"https://api.github.com/users/daxtens/gists{/gist_id}","starred_url":"https://api.github.com/users/daxtens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daxtens/subscriptions","organizations_url":"https://api.github.com/users/daxtens/orgs","repos_url":"https://api.github.com/users/daxtens/repos","events_url":"https://api.github.com/users/daxtens/events{/privacy}","received_events_url":"https://api.github.com/users/daxtens/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-02-28T09:51:20Z","updated_at":"2018-02-28T10:12:44Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/CanonicalLtd/netplan/pulls/8","html_url":"https://github.com/CanonicalLtd/netplan/pull/8","diff_url":"https://github.com/CanonicalLtd/netplan/pull/8.diff","patch_url":"https://github.com/CanonicalLtd/netplan/pull/8.patch"},"body":"- Start a VM with a network interface created by cloud-init (say ens3), and assume you have no physical console (e.g. cloud VM)\r\n- Add another network interface (say ens7)\r\n- Create another YAML file to configure ens7, but make a small error. This file need not reference ens3 at all!\r\n- Reboot machine\r\n\r\n- Observe the following message on boot\r\nsystemd[332]: /lib/systemd/systemd-generators/netplan failed with error code 1.\r\n\r\n- Observe that you can no longer SSH in to the machine because the error in the new yaml file prevents all generation, so ens3 is not configured.\r\n\r\nThis renders the system entirely unusable unless there is an alternative way to get in.\r\n\r\nThis fixes that - with 2 caveats:\r\n\r\n1) It only helps if the error occurs in the parse phase rather than the generate phase.\r\n\r\n2) If you have settings for a device spread out over multiple files, you can potentially end up in an unexpected state. This is probably still better than having no configuration at all, which is arguably the ultimate unexpected state.\r\n\r\nOverall, I think it's a massive usability win, and it brings us more in line with how ifupdown works.\r\n\r\n[Old behaviour can be retained by passing `--strict` to generate.]"},"comment":{"url":"https://api.github.com/repos/CanonicalLtd/netplan/issues/comments/369191763","html_url":"https://github.com/CanonicalLtd/netplan/pull/8#issuecomment-369191763","issue_url":"https://api.github.com/repos/CanonicalLtd/netplan/issues/8","id":369191763,"user":{"login":"daxtens","id":3307781,"avatar_url":"https://avatars3.githubusercontent.com/u/3307781?v=4","gravatar_id":"","url":"https://api.github.com/users/daxtens","html_url":"https://github.com/daxtens","followers_url":"https://api.github.com/users/daxtens/followers","following_url":"https://api.github.com/users/daxtens/following{/other_user}","gists_url":"https://api.github.com/users/daxtens/gists{/gist_id}","starred_url":"https://api.github.com/users/daxtens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daxtens/subscriptions","organizations_url":"https://api.github.com/users/daxtens/orgs","repos_url":"https://api.github.com/users/daxtens/repos","events_url":"https://api.github.com/users/daxtens/events{/privacy}","received_events_url":"https://api.github.com/users/daxtens/received_events","type":"User","site_admin":false},"created_at":"2018-02-28T10:12:44Z","updated_at":"2018-02-28T10:12:44Z","author_association":"CONTRIBUTOR","body":"(or more specifically, g_ptr_array_find was added in 2.54)"}}
{"actor":{"display_login":"daxtens"}}