docs: def authorize(name=None, source_group_name=None,
                source_group_owner_id=None, ip_protocol=None,
                from_port=None, to_port=None, cidr_ip=None, group_id=None,
                source_group_group_id=None, region=None, key=None, keyid=None,
                profile=None, vpc_id=None, vpc_name=None, egress=False):
      '''
      Add a new rule to an existing security group.
  
      CLI example::
  
          salt myminion boto_secgroup.authorize mysecgroup ip_protocol=tcp from_port=80 to_port=80 cidr_ip='['10.0.0.0/8', '192.168.0.0/24']'
      '''
      conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)
  
      group = _get_group(conn, name=name, vpc_id=vpc_id, vpc_name=vpc_name,
                         group_id=group_id, region=region, key=key, keyid=keyid,
                         profile=profile)
      if group:
          try:
              added = None
              if not egress:
                  added = conn.authorize_security_group(
                      src_security_group_name=source_group_name,
                      src_security_group_owner_id=source_group_owner_id,
                      ip_protocol=ip_protocol, from_port=from_port, to_port=to_port,
                      cidr_ip=cidr_ip, group_id=group.id,
                      src_security_group_group_id=source_group_group_id)
              else:
                  added = conn.authorize_security_group_egress(
                      ip_protocol=ip_protocol, from_port=from_port, to_port=to_port,
                      cidr_ip=cidr_ip, group_id=group.id,
                      src_group_id=source_group_group_id)
              if added:
                  log.info('Added rule to security group %s with id %s',
                           group.name, group.id)
                  return True
              else:
                  msg = ('Failed to add rule to security group {0} with id {1}.'
                         .format(group.name, group.id))
                  log.error(msg)
                  return False
          except boto.exception.EC2ResponseError as e:
              # if we are trying to add the same rule then we are already in the desired state, return true
              if e.error_code == 'InvalidPermission.Duplicate':
                  return True
              msg = ('Failed to add rule to security group {0} with id {1}.'
                     .format(group.name, group.id))
              log.error(msg)
              log.error(e)
              return False
      else:
          log.error('Failed to add rule to security group.')
          return False