

def _rule_args_to_dict(self, context, to_port=None, from_port=None, parent_group_id=None, ip_protocol=None, cidr=None, group_id=None):
    values = {
        
    }
    if group_id:
        try:
            parent_group_id = int(parent_group_id)
            group_id = int(group_id)
        except ValueError:
            msg = _('Parent or group id is not integer')
            raise exception.InvalidInput(reason=msg)
        if (parent_group_id == group_id):
            msg = _('Parent group id and group id cannot be same')
            raise exception.InvalidInput(reason=msg)
        values['group_id'] = group_id
        db.security_group_get(context, group_id)
    elif cidr:
        try:
            cidr = urllib.unquote(cidr).decode()
            netaddr.IPNetwork(cidr)
        except Exception:
            raise exception.InvalidCidr(cidr=cidr)
        values['cidr'] = cidr
    else:
        values['cidr'] = '0.0.0.0/0'
    if (ip_protocol and from_port and to_port):
        try:
            from_port = int(from_port)
            to_port = int(to_port)
        except ValueError:
            raise exception.InvalidPortRange(from_port=from_port, to_port=to_port)
        ip_protocol = str(ip_protocol)
        if (ip_protocol.upper() not in ['TCP', 'UDP', 'ICMP']):
            raise exception.InvalidIpProtocol(protocol=ip_protocol)
        if ((min(from_port, to_port) < (- 1)) or (max(from_port, to_port) > 65535)):
            raise exception.InvalidPortRange(from_port=from_port, to_port=to_port)
        values['protocol'] = ip_protocol
        values['from_port'] = from_port
        values['to_port'] = to_port
    elif ('cidr' in values):
        return None
    return values

dataset/ETHPy150Open nii-cloud/dodai-compute/nova/api/openstack/contrib/security_groups.py SecurityGroupRulesController._rule_args_to_dict/original