def create_subnetwork(kwargs=None, call=None):
    '''
    ... versionadded:: 2017.7.0
    Create a GCE Subnetwork. Must specify name, cidr, network, and region.

    CLI Example:

    .. code-block:: bash

        salt-cloud -f create_subnetwork gce name=mysubnet network=mynet1 region=us-west1 cidr=10.0.0.0/24 description=optional
    '''
    if call != 'function':
        raise SaltCloudSystemExit(
            'The create_subnetwork function must be called with -f or --function.'
        )

    if not kwargs or 'name' not in kwargs:
        log.error(
            'Must specify name of subnet.'
        )
        return False

    if 'network' not in kwargs:
        log.errror(
            'Must specify name of network to create subnet under.'
        )
        return False

    if 'cidr' not in kwargs:
        log.errror(
            'A network CIDR range must be specified when creating a subnet.'
        )
        return False

    if 'region' not in kwargs:
        log.error(
            'A region must be specified when creating a subnetwork.'
        )
        return False

    name = kwargs['name']
    cidr = kwargs['cidr']
    network = kwargs['network']
    region = kwargs['region']
    desc = kwargs.get('description', None)
    conn = get_conn()

    __utils__['cloud.fire_event'](
        'event',
        'create subnetwork',
        'salt/cloud/subnet/creating',
        args={
            'name': name,
            'network': network,
            'cidr': cidr,
            'region': region,
            'description': desc
        },
        sock_dir=__opts__['sock_dir'],
        transport=__opts__['transport']
    )

    subnet = conn.ex_create_subnetwork(name, cidr, network, region, desc)

    __utils__['cloud.fire_event'](
        'event',
        'created subnetwork',
        'salt/cloud/subnet/created',
        args={
            'name': name,
            'network': network,
            'cidr': cidr,
            'region': region,
            'description': desc
        },
        sock_dir=__opts__['sock_dir'],
        transport=__opts__['transport']
    )

    return _expand_item(subnet)