'Create a network interface within a VPC subnet.
:param      subnet: EC2NetworkSubnet instance
:type       subnet: :class:`EC2NetworkSubnet`
:param      name:  Optional name of the interface
:type       name:  ``str``
:param      description:  Optional description of the network interface
:type       description:  ``str``
:param      private_ip_address: Optional address to assign as the
primary private IP address of the
interface. If one is not provided then
Amazon will automatically auto-assign
an available IP. EC2 allows assignment
of multiple IPs, but this will be
the primary.
:type       private_ip_address: ``str``
:return:    EC2NetworkInterface instance
:rtype:     :class `EC2NetworkInterface`'

def ex_create_network_interface(self, subnet, name=None, description=None, private_ip_address=None):

    params = {'Action': 'CreateNetworkInterface', 'SubnetId': subnet.id}
    if description:
        params['Description'] = description
    if private_ip_address:
        params['PrivateIpAddress'] = private_ip_address
    response = self.connection.request(self.path, params=params).object
    element = response.findall(fixxpath(xpath='networkInterface', namespace=NAMESPACE))[0]
    interface = self._to_interface(element, name)
    if (name and self.ex_create_tags(interface, {'Name': name})):
        interface.extra['tags']['Name'] = name
    return interface
