def execute(self, display_name, master_sg_name, config):
        logging.debug("create security group %s" % display_name)
        security_group_name = display_name
        nc = get_openstack_neutron_client(config)

        self.secgroup = nc.create_security_group({"security_group": {
            "name": security_group_name,
            "description": "Security group generated by Pebbles"
        }})

        self.secgroup_id = self.secgroup["security_group"]["id"]
        self.secgroup_name = self.secgroup["security_group"]["name"]
        if master_sg_name:
            master_sg = nc.find_resource("security_group", master_sg_name)
            nc.create_security_group_rule({"security_group_rule": dict(
                security_group_id=self.secgroup_id,
                protocol='tcp',
                ethertype='ipv4',
                port_range_min=1,
                direction='ingress',
                port_range_max=65535,
                remote_group_id=master_sg["id"]
            )})
            nc.create_security_group_rule({"security_group_rule": dict(
                security_group_id=self.secgroup_id,
                protocol='udp',
                ethertype='ipv4',
                port_range_min=1,
                direction='ingress',
                port_range_max=65535,
                remote_group_id=master_sg["id"]
            )})
            nc.create_security_group_rule({"security_group_rule": dict(
                security_group_id=self.secgroup_id,
                protocol='icmp',
                ethertype='ipv4',
                port_range_min=1,
                direction='ingress',
                port_range_max=255,
                remote_group_id=master_sg["id"]
            )})

        logging.info("Created security group %s" % self.secgroup_id)

        return self.secgroup_id