code: def create_secgroup_rule(self, protocol, from_port, to_port,
              source, target):
          
          nova = self.nova
  
          def get_id(gname):
              sg = nova.security_groups.find(name=gname)
              if not sg:
                  raise BangError("Security group not found, %s" % gname)
              return str(sg.id)
  
          kwargs = {
                  'ip_protocol': protocol,
                  'from_port': str(from_port),
                  'to_port': str(to_port),
                  'parent_group_id': get_id(target),
                  }
          if '/' in source:
              kwargs['cidr'] = source
          else:
              kwargs['group_id'] = get_id(source)
              # not sure if this is an openstack hack or an hpcloud hack, but
              # this is definitely required to get it working on hpcloud:
              kwargs['cidr'] = 'null'
          nova.security_group_rules.create(**kwargs)
docs: Creates a new server security group rule.
  
          :param str protocol:  E.g. ``tcp``, ``icmp``, etc...
          :param int from_port:  E.g. ``1``
          :param int to_port:  E.g. ``65535``
          :param str source:
          :param str target: