diff --git a/cloudinit/sources/DataSourceVMwareGuestInfo.py b/cloudinit/sources/DataSourceVMwareGuestInfo.py
index e69de29..59dd685 100644
--- a/cloudinit/sources/DataSourceVMwareGuestInfo.py
+++ b/cloudinit/sources/DataSourceVMwareGuestInfo.py
@@ -108,6 +108,94 @@
         # Get the vendor data.
         self.vendordata_raw = guestinfo('vendordata')
 
+        hostname = get_guestinfo_value('hostname')
+        if hostname:
+            self.distro.set_hostname(hostname)
+        found = True
+        dev_index = 0
+        network_settings = ''
+        while found:
+            key_begin = 'interface.' + str(dev_index)
+            key_iname = key_begin + '.name'
+            interface_name = get_guestinfo_value(key_iname)
+            if interface_name:
+                network_settings += 'auto ' + interface_name + '\n'
+                network_settings += 'iface ' + interface_name
+                key_proto = key_begin + '.dhcp'
+                dhcp_enabled = get_guestinfo_value(key_proto)
+                key_address = key_begin + '.address'
+                address = get_guestinfo_value(key_address)
+                bootproto = 'dhcp'
+                if dhcp_enabled:
+                    if dhcp_enabled == 'yes':
+                        network_settings += ' dhcp\n'
+                    elif dhcp_enabled == 'no':
+                        network_settings += ' static\n'
+                        bootproto = 'static'
+                    else:
+                        LOG.warning("Invalid value for yes/no parameter for %s, setting to dhcp", key_proto)
+                elif address:
+                    bootproto = 'static'
+                    dhcp_enabled == 'no'
+                    network_settings += ' static\n'
+                else:
+                    dhcp_enabled == 'yes'
+                    network_settings += ' dhcp\n'
+                    LOG.debug("Setting network bootproto to dhcp by default")
+                key_mac = key_begin + '.mac'
+                mac = get_guestinfo_value(key_mac)
+                if address:
+                    network_settings += 'address ' + address + '\n'
+                if mac:
+                    network_settings += 'hwaddress ' + mac + '\n'
+                key_netmask = key_begin + '.netmask'
+                netmask = get_guestinfo_value(key_netmask)
+                if netmask:
+                     network_settings += 'netmask ' + netmask + '\n'
+                key_dnsserver = 'dns.servers'
+                dnsserver = get_guestinfo_value(key_dnsserver)
+                if dnsserver:
+                    network_settings += 'dns-nameservers '
+                    dnsserver = dnsserver.split(',')
+                    for d in dnsserver:
+                        network_settings += d + ' '
+                    network_settings += '\n'
+                key_dnsdomain = 'dns.domains'
+                dnsdomain = get_guestinfo_value(key_dnsdomain)
+                if dnsdomain:
+                    network_settings += 'dns-search '
+                    dnsdomain = dnsdomain.split(',')
+                    for d in dnsdomain:
+                        network_settings += d + ' '
+                    network_settings += '\n'
+                route_index = 0
+                default_destination_set = False
+                while True:
+                    key_route = key_begin + '.route.' + str(route_index)
+                    route = get_guestinfo_value(key_route)
+                    if route:
+                        network_settings += "routes.%s " % (route_index)
+                        route = route.split(',')
+                        if len(route) > 2:
+                            LOG.debug("Route information for %s route in %s device incorrect - ",
+                                                "expected 2 values", route_index, dev_index)
+                            continue
+                        elif len(route) == 2:
+                            network_settings += route[0] + ' ' + route[1] + '\n'# Gateway Destination
+                        else: #length = 1
+                            if not default_destination_set:
+                                network_settings += route[0] + ' 0.0.0.0/0' + '\n'
+                                default_destination_set = True
+                            else:
+                                LOG.debug("Default destination set previously, not setting route %s", route_index)
+                    else:
+                        break
+                    route_index += 1
+            else:
+                found = False
+            dev_index += 1
+        self.distro.apply_network(network_settings, False)
+
         return True
 
     def setup(self, is_new_instance):