human
Complete this python program:
def cloud_init_interface(name, vm_=None, **kwargs):
assistant
#Here is the Python code you requested.

    """Interface between salt.cloud.lxc driver and lxc.init
    ``vm_`` is a mapping of vm opts in the salt.cloud format
    as documented for the lxc driver.
    This can be used either:
    - from the salt cloud driver
    - because you find the argument to give easier here
    than using directly lxc.init
    .. warning::
    BE REALLY CAREFUL CHANGING DEFAULTS !!!
    IT\S A RETRO COMPATIBLE INTERFACE WITH
    THE SALT CLOUD DRIVER (ask kiorky).
    name
    name of the lxc container to create
    pub_key
    public key to preseed the minion with.
    Can be the keycontent or a filepath
    priv_key
    private key to preseed the minion with.
    Can be the keycontent or a filepath
    path
    path to the container parent directory (default: /var/lib/lxc)
    .. versionadded:: 2015.8.0
    profile
    :ref:`profile <tutorial-lxc-profiles-container>` selection
    network_profile
    :ref:`network profile <tutorial-lxc-profiles-network>` selection
    nic_opts
    per interface settings compatibles with
    network profile (ipv4/ipv6/link/gateway/mac/netmask)
    eg::
    - {\eth0\: {\mac\: \00:16:3e:01:29:40\,
    \gateway\: None, (default)
    \link\: \br0\, (default)
    \gateway\: None, (default)
    \netmask\: \\, (default)
    \ip\: \22.1.4.25\}}
    unconditional_install
    given to lxc.bootstrap (see relative doc)
    force_install
    given to lxc.bootstrap (see relative doc)
    config
    any extra argument for the salt minion config
    dnsservers
    list of DNS servers to set inside the container
    dns_via_dhcp
    do not set the dns servers, let them be set by the dhcp.
    autostart
    autostart the container at boot time
    password
    administrative password for the container
    bootstrap_delay
    delay before launching bootstrap script at Container init
    .. warning::
    Legacy but still supported options:
    from_container
    which container we use as a template
    when running lxc.clone
    image
    which template do we use when we
    are using lxc.create. This is the..."""
    if (vm_ is None):
        vm_ = {}
    vm_ = copy.deepcopy(vm_)
    vm_ = salt.utils.dictupdate.update(vm_, kwargs)
    profile_data = copy.deepcopy(vm_.get('lxc_profile', vm_.get('profile', {})))
    if (not isinstance(profile_data, (dict, six.string_types))):
        profile_data = {}
    profile = get_container_profile(profile_data)
    def _cloud_get(k, default=None):
        return vm_.get(k, profile.get(k, default))
    if (name is None):
        name = vm_['name']
    default_template = ''
    if (__grains__.get('os', '') in ['Ubuntu']):
        default_template = 'ubuntu'
    image = _cloud_get('image')
    if (not image):
        _cloud_get('template', default_template)
    backing = _cloud_get('backing', 'dir')
    if image:
        profile['template'] = image
    vgname = _cloud_get('vgname', None)
    if vgname:
        profile['vgname'] = vgname
    if backing:
        profile['backing'] = backing
    snapshot = _cloud_get('snapshot', False)
    autostart = bool(_cloud_get('autostart', True))
    dnsservers = _cloud_get('dnsservers', [])
    dns_via_dhcp = _cloud_get('dns_via_dhcp', True)
    password = _cloud_get('password', 's3cr3t')
    password_encrypted = _cloud_get('password_encrypted', False)
    fstype = _cloud_get('fstype', None)
    lvname = _cloud_get('lvname', None)
    thinpool = _cloud_get('thinpool', None)
    pub_key = _cloud_get('pub_key', None)
    priv_key = _cloud_get('priv_key', None)
    size = _cloud_get('size', '20G')
    script = _cloud_get('script', None)
    script_args = _cloud_get('script_args', None)
    users = _cloud_get('users', None)
    if (users is None):
        users = []
    ssh_username = _cloud_get('ssh_username', None)
    if (ssh_username and (ssh_username not in users)):
        users.append(ssh_username)
    network_profile = _cloud_get('network_profile', None)
    nic_opts = kwargs.get('nic_opts', None)
    netmask = _cloud_get('netmask', '24')
    path = _cloud_get('path', None)
    bridge = _cloud_get('bridge', None)
    gateway =...