diff --git a/.pylintrc b/.pylintrc
index 783c1bb5..f769956a 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -7,7 +7,8 @@ jobs=4
[MESSAGES CONTROL]
# Errors only
-disable=C, F, I, R, W
+#disable=C, F, I, R, W
+enable=W0223
[REPORTS]
@@ -30,7 +31,7 @@ ignored-modules=six.moves,pkg_resources
# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
-ignored-classes=optparse.Values,thread._local,_thread._local,Renderer
+ignored-classes=optparse.Values,thread._local,_thread._local
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
diff --git a/cloudinit/net/eni.py b/cloudinit/net/eni.py
index 9819d4f5..7257695d 100644
--- a/cloudinit/net/eni.py
+++ b/cloudinit/net/eni.py
@@ -439,22 +439,6 @@ class Renderer(renderer.Renderer):
return '\n\n'.join(['\n'.join(s) for s in sections]) + "\n"
- def render_network_state(self, network_state, target=None):
- fpeni = util.target_path(target, self.eni_path)
- util.ensure_dir(os.path.dirname(fpeni))
- header = self.eni_header if self.eni_header else ""
- util.write_file(fpeni, header + self._render_interfaces(network_state))
-
- if self.netrules_path:
- netrules = util.target_path(target, self.netrules_path)
- util.ensure_dir(os.path.dirname(netrules))
- util.write_file(netrules,
- self._render_persistent_net(network_state))
-
- if self.links_path_prefix:
- self._render_systemd_links(target, network_state,
- links_prefix=self.links_path_prefix)
-
def _render_systemd_links(self, target, network_state, links_prefix):
fp_prefix = util.target_path(target, links_prefix)
for f in glob.glob(fp_prefix + "*"):
diff --git a/cloudinit/net/renderer.py b/cloudinit/net/renderer.py
index a5b2b573..c68658dc 100644
--- a/cloudinit/net/renderer.py
+++ b/cloudinit/net/renderer.py
@@ -5,6 +5,7 @@
#
# This file is part of cloud-init. See LICENSE file for license information.
+import abc
import six
from .network_state import parse_net_config_data
@@ -37,6 +38,10 @@ class Renderer(object):
iface['mac_address']))
return content.getvalue()
+ @abc.abstractmethod
+ def render_network_state(self, network_state, target=None):
+ """Render network state."""
+
def render_network_config(self, network_config, target=None):
return self.render_network_state(
network_state=parse_net_config_data(network_config), target=target)