class ClusterDecorator {

    @Measure(ClusterDecorator.class)
    public Cluster decorate(@Nonnull Cluster cluster, @Nonnull ClusterV4Request request, Blueprint blueprint, User user, Workspace workspace,
            @Nonnull Stack stack, String parentEnvironmentCloudPlatform) {
        prepareBlueprint(cluster, request, workspace, stack, Optional.ofNullable(blueprint), user);
        prepareClusterManagerVariant(cluster);
        validateBlueprintIfRequired(cluster, request, stack);
        prepareRds(cluster, request, stack);
        prepareAutoTlsFlag(cluster, request, stack, parentEnvironmentCloudPlatform);
        cluster = sharedServiceConfigProvider.configureCluster(cluster, user, workspace);
        return cluster;
    }

}