def METHOD_NAME():
    connection = op.get_bind()
    resource_type_tables = {}
    resource_type_tablenames = dict(
        (rt.name, rt.tablename)
        for rt in connection.execute(resource_type_table.select())
        if rt.tablename != "generic"
    )
    op.drop_constraint("fk_rh_id_resource_id", "resource_history",
                       type_="foreignkey")
    op.drop_constraint("fk_metric_resource_id_resource_id", "metric",
                       type_="foreignkey")
    for name, table in resource_type_tablenames.items():
        op.drop_constraint("fk_%s_id_resource_id" % table, table,
                           type_="foreignkey")
        resource_type_tables[name] = sa.Table(
            table,
            sa.MetaData(),
            sa.Column('id',
                      sqlalchemy_utils.types.uuid.UUIDType(),
                      nullable=False),
        )
    for resource in connection.execute(resource_table.select()):
        if resource.original_resource_id is None:
            # statsd resource has no original_resource_id and is NULL
            continue
        try:
            orig_as_uuid = uuid.UUID(str(resource.original_resource_id))
        except ValueError:
            pass
        else:
            if orig_as_uuid == resource.id:
                continue
        new_original_resource_id = resource.original_resource_id.replace(
            '/', '_')
        new_id = sa.literal(uuidtype.process_bind_param(
            str(utils.ResourceUUID(
                new_original_resource_id, resource.creator)),
            connection.dialect))
        # resource table
        connection.execute(
            resource_table.update().where(
                resource_table.c.id == resource.id
            ).values(
                id=new_id,
                original_resource_id=new_original_resource_id
            )
        )
        # resource history table
        connection.execute(
            resourcehistory_table.update().where(
                resourcehistory_table.c.id == resource.id
            ).values(
                id=new_id,
                original_resource_id=new_original_resource_id
            )
        )
        if resource.type != "generic":
            rtable = resource_type_tables[resource.type]
            # resource table (type)
            connection.execute(
                rtable.update().where(
                    rtable.c.id == resource.id
                ).values(id=new_id)
            )
        # Metric
        connection.execute(
            metric_table.update().where(
                metric_table.c.resource_id == resource.id
            ).values(
                resource_id=new_id
            )
        )
    for (name, table) in resource_type_tablenames.items():
        op.create_foreign_key("fk_%s_id_resource_id" % table,
                              table, "resource",
                              ("id",), ("id",),
                              ondelete="CASCADE")
    op.create_foreign_key("fk_metric_resource_id_resource_id",
                          "metric", "resource",
                          ("resource_id",), ("id",),
                          ondelete="SET NULL")
    op.create_foreign_key("fk_rh_id_resource_id",
                          "resource_history", "resource",
                          ("id",), ("id",), ondelete="CASCADE")
    for metric in connection.execute(metric_table.select().where(
            metric_table.c.name.like("%/%"))):
        connection.execute(
            metric_table.update().where(
                metric_table.c.id == metric.id
            ).values(
                name=metric.name.replace('/', '_'),
            )
        )