Browse code

Disable network config by cloud-init

Change-Id: Ib53375645de7fb32d0f235c6c25b4ac645475b73
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/2679
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>

suezzelur authored on 2017/05/15 21:37:58
Showing 3 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1 @@
0
+network: {config: disabled}
... ...
@@ -1,6 +1,6 @@
1 1
 Name:           cloud-init
2 2
 Version:        0.7.9
3
-Release:        2%{?dist}
3
+Release:        3%{?dist}
4 4
 Summary:        Cloud instance init scripts
5 5
 Group:          System Environment/Base
6 6
 License:        GPLv3
... ...
@@ -8,6 +8,7 @@ URL:            http://launchpad.net/cloud-init
8 8
 Source0:        https://launchpad.net/cloud-init/trunk/%{version}/+download/%{name}-%{version}.tar.gz
9 9
 %define sha1 cloud-init=3b4345267e72e28b877e2e3f0735c1f672674cfc
10 10
 Source1:        cloud-photon.cfg
11
+Source2:        99-disable-networking-config.cfg
11 12
 
12 13
 Patch0:         photon-distro.patch
13 14
 Patch1:         change-requires.patch
... ...
@@ -72,9 +73,12 @@ rm -rf $RPM_BUILD_ROOT
72 72
 rm -r $RPM_BUILD_ROOT%{python_sitelib}/tests
73 73
 
74 74
 mkdir -p $RPM_BUILD_ROOT/var/lib/cloud
75
+mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/cloud/cloud.cfg.d/
75 76
 
76 77
 # We supply our own config file since our software differs from Ubuntu's.
77 78
 cp -p %{SOURCE1} $RPM_BUILD_ROOT/%{_sysconfdir}/cloud/cloud.cfg
79
+# Disable networking config by cloud-init
80
+cp -p %{SOURCE2} $RPM_BUILD_ROOT/%{_sysconfdir}/cloud/cloud.cfg.d/
78 81
 
79 82
 %check
80 83
 openssl req \
... ...
@@ -142,6 +146,7 @@ rm -rf $RPM_BUILD_ROOT
142 142
 %config(noreplace) %{_sysconfdir}/cloud/templates/*
143 143
 %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/05_logging.cfg
144 144
 %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg
145
+%config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/99-disable-networking-config.cfg
145 146
 %{_sysconfdir}/NetworkManager/dispatcher.d/hook-network-manager
146 147
 %{_sysconfdir}/dhcp/dhclient-exit-hooks.d/hook-dhclient
147 148
 /lib/systemd/system-generators/cloud-init-generator
... ...
@@ -155,6 +160,8 @@ rm -rf $RPM_BUILD_ROOT
155 155
 
156 156
 
157 157
 %changelog
158
+*   Thu May 15 2017 Anish Swaminathan <anishs@vmware.com> 0.7.9-3
159
+-   Disable networking config by cloud-init
158 160
 *   Thu May 04 2017 Anish Swaminathan <anishs@vmware.com> 0.7.9-2
159 161
 -   Support userdata in vmx guestinfo
160 162
 *   Thu Apr 27 2017 Anish Swaminathan <anishs@vmware.com> 0.7.9-1
... ...
@@ -1,7 +1,7 @@
1
-=== added file './cloudinit/distros/photon.py'
2
-+++ ./cloudinit/distros/photon.py	2017-04-17 01:28:00 +0000
3
-@@ -0,0 +1,299 @@
1
+diff -rupN cloud-init-0.7.9/cloudinit/distros/photon.py cloud-init-0.7.9-new/cloudinit/distros/photon.py
2
+--- cloud-init-0.7.9/cloudinit/distros/photon.py	1969-12-31 16:00:00.000000000 -0800
3
+@@ -0,0 +1,319 @@
4 4
 +# vi: ts=4 expandtab
5 5
 +#
6 6
 +# Copyright (C) 2017 VMware Inc.
... ...
@@ -25,7 +25,7 @@
25 25
 +    hostname_conf_fn = "/etc/hostname"
26 26
 +    locale_conf_fn = "/etc/default/locale"
27 27
 +    network_conf_dir = "/etc/systemd/network/"
28
-+    resolve_conf_fn = "/etc/resolv.conf"
28
++    resolve_conf_fn = "/etc/systemd/resolved.conf"
29 29
 +    init_cmd = ['systemctl']  # init scripts
30 30
 +
31 31
 +    def __init__(self, name, cfg, paths):
... ...
@@ -110,9 +110,23 @@
110 110
 +                searchdomains.extend(info['dns-search'])
111 111
 +            dev_index = dev_index + 1;
112 112
 +
113
++        resolve_data = []
114
++        new_resolve_data = []
115
++        with open(self.resolve_conf_fn, "r") as rf:
116
++            resolve_data = rf.readlines()
117
++        LOG.debug("Old Resolve Data\n")
118
++        LOG.debug("%s",resolve_data)
119
++        for item in resolve_data:
120
++            if (nameservers and ('DNS=' in item)) or (searchdomains and ('Domains=' in item)):
121
++                continue
122
++            else:
123
++                new_resolve_data.append(item)
124
++        
125
++        new_resolve_data = new_resolve_data +  convert_resolv_conf(nameservers, searchdomains)
126
++        LOG.debug("New resolve data\n")
127
++        LOG.debug("%s",new_resolve_data)
113 128
 +        if nameservers or searchdomains:
114
-+            util.write_file(self.resolve_conf_fn,
115
-+                            convert_resolv_conf(nameservers, searchdomains))
129
++            util.write_file(self.resolve_conf_fn, ''.join(new_resolve_data))
116 130
 +
117 131
 +        return dev_names
118 132
 +
... ...
@@ -150,7 +164,7 @@
150 150
 +
151 151
 +
152 152
 +    def _bring_up_interfaces(self, device_names):
153
-+        cmd = ['systemctl', 'restart', 'systemd-networkd', 'systemd-resolved']
153
++        cmd = ['systemctl', 'status', 'systemd-networkd', 'systemd-resolved']
154 154
 +        LOG.debug("Attempting to run bring up interfaces using command %s",
155 155
 +                  cmd)
156 156
 +        try:
... ...
@@ -236,13 +250,19 @@
236 236
 +
237 237
 +def convert_resolv_conf(nameservers, searchdomains):
238 238
 +    """Returns a string formatted for resolv.conf."""
239
-+    result = ''
239
++    result = []
240 240
 +    if isinstance(nameservers, list):
241
++        nslist = "DNS="
241 242
 +        for ns in nameservers:
242
-+            result = result + 'nameserver %s\n' % ns
243
++            nslist = nslist + '%s ' % ns
244
++        nslist = nslist + '\n'
245
++        result.append(str(nslist))
243 246
 +    if isinstance(searchdomains, list):
247
++        sdlist = "Domains="
244 248
 +        for sd in searchdomains:
245
-+            result = result + 'search %s\n' % sd
249
++            sdlist = sdlist + '%s ' % sd
250
++        sdlist = sdlist + '\n'
251
++        result.append(str(sdlist))
246 252
 +    return result
247 253
 +
248 254
 +def translate_routes(settings):