Skip to content

Commit

Permalink
[WIP] Change the way resources are registered in environment (#1471)
Browse files Browse the repository at this point in the history
Change the way resources are registered in environment
  • Loading branch information
andreldsr authored Mar 1, 2024
1 parent 710b02c commit b38b7ae
Show file tree
Hide file tree
Showing 37 changed files with 91 additions and 135 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ public class ServiceContext {
private BuildEventPublisher buildEventPublisher;
private Set<String> accountAllowList;

private String genericExceptionClientError;

// Publishers & Listeners
private AppEventPublisher appEventPublisher;

Expand Down Expand Up @@ -480,4 +482,12 @@ public Set<String> getAccountAllowList() {
public void setAccountAllowList(Collection<String> accountAllowList) {
this.accountAllowList = new HashSet<String>(accountAllowList);
}

public String getGenericExceptionClientError() {
return genericExceptionClientError;
}

public void setGenericExceptionClientError(String genericExceptionClientError) {
this.genericExceptionClientError = genericExceptionClientError;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@ public static TeletraanServiceContext setupContext(TeletraanServiceConfiguration
BasicDataSource dataSource = configuration.getDataSourceFactory().build();
context.setDataSource(dataSource);

context.setGenericExceptionClientError(configuration.getSystemFactory().getClientError());

context.setUserRolesDAO(new DBUserRolesDAOImpl(dataSource));
context.setGroupRolesDAO(new DBGroupRolesDAOImpl(dataSource));
context.setTokenRolesDAO(new DBTokenRolesDAOImpl(dataSource));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,105 +60,44 @@ public void run(TeletraanServiceConfiguration configuration, Environment environ
TeletraanServiceContext context = ConfigHelper.setupContext(configuration);

environment.jersey().register(configuration.getAuthenticationFactory().create(context));

Builds builds = new Builds(context);
environment.jersey().register(builds);

Commits commits = new Commits(context);
environment.jersey().register(commits);

Deploys deploys = new Deploys(context);
environment.jersey().register(deploys);

Agents agents = new Agents(context);
environment.jersey().register(agents);

EnvAgentConfigs envAdvancedConfigs = new EnvAgentConfigs(context);
environment.jersey().register(envAdvancedConfigs);

EnvAgents envAgents = new EnvAgents(context);
environment.jersey().register(envAgents);

EnvAlarms envAlarms = new EnvAlarms(context);
environment.jersey().register(envAlarms);

EnvDeploys envDeploys = new EnvDeploys(context);
environment.jersey().register(envDeploys);

EnvCapacities envCapacitys = new EnvCapacities(context);
environment.jersey().register(envCapacitys);

Environs envs = new Environs(context);
environment.jersey().register(envs);

EnvStages envStages = new EnvStages(context);
environment.jersey().register(envStages);

EnvMetrics envMetrics = new EnvMetrics(context);
environment.jersey().register(envMetrics);

EnvHistory envHistory = new EnvHistory(context);
environment.jersey().register(envHistory);

EnvPromotes envPromotes = new EnvPromotes(context);
environment.jersey().register(envPromotes);

EnvScriptConfigs envScriptConfigs = new EnvScriptConfigs(context);
environment.jersey().register(envScriptConfigs);

EnvTokenRoles envTokenRoles = new EnvTokenRoles(context);
environment.jersey().register(envTokenRoles);

EnvUserRoles envUserRoles = new EnvUserRoles(context);
environment.jersey().register(envUserRoles);

EnvWebHooks envWebHooks = new EnvWebHooks(context);
environment.jersey().register(envWebHooks);

EnvHosts envHosts = new EnvHosts(context);
environment.jersey().register(envHosts);

EnvHostTags envHostTags = new EnvHostTags(context);
environment.jersey().register(envHostTags);

DeployConstraints deployConstraints = new DeployConstraints(context);
environment.jersey().register(deployConstraints);

Hotfixs hotfixes = new Hotfixs(context);
environment.jersey().register(hotfixes);

Ratings ratings = new Ratings(context);
environment.jersey().register(ratings);

SystemGroupRoles systemGroups = new SystemGroupRoles(context);
environment.jersey().register(systemGroups);

EnvGroupRoles envGroups = new EnvGroupRoles(context);
environment.jersey().register(envGroups);

Hosts hosts = new Hosts(context);
environment.jersey().register(hosts);

Systems systems = new Systems(context);
environment.jersey().register(systems);
environment.jersey().register(context);

environment.jersey().register(Builds.class);
environment.jersey().register(Commits.class);
environment.jersey().register(Deploys.class);
environment.jersey().register(Agents.class);
environment.jersey().register(EnvAgentConfigs.class);
environment.jersey().register(EnvAgents.class);
environment.jersey().register(EnvAlarms.class);
environment.jersey().register(EnvDeploys.class);
environment.jersey().register(EnvCapacities.class);
environment.jersey().register(Environs.class);
environment.jersey().register(EnvStages.class);
environment.jersey().register(EnvMetrics.class);
environment.jersey().register(EnvHistory.class);
environment.jersey().register(EnvPromotes.class);
environment.jersey().register(EnvScriptConfigs.class);
environment.jersey().register(EnvTokenRoles.class);
environment.jersey().register(EnvUserRoles.class);
environment.jersey().register(EnvWebHooks.class);
environment.jersey().register(EnvHosts.class);
environment.jersey().register(EnvHostTags.class);
environment.jersey().register(DeployConstraints.class);
environment.jersey().register(Hotfixs.class);
environment.jersey().register(Ratings.class);
environment.jersey().register(SystemGroupRoles.class);
environment.jersey().register(EnvGroupRoles.class);
environment.jersey().register(Hosts.class);
environment.jersey().register(Systems.class);

// Support pings as well
Pings pings = new Pings(context);
environment.jersey().register(pings);

DeployCandidates buildCandidates = new DeployCandidates(context);
environment.jersey().register(buildCandidates);

Schedules schedules = new Schedules(context);
environment.jersey().register(schedules);

environment.jersey().register(new Tags(context));

Groups groups = new Groups(context);
environment.jersey().register(groups);
environment.jersey().register(Pings.class);

EnvAlerts envAlerts = new EnvAlerts(context);
environment.jersey().register(envAlerts);
environment.jersey().register(DeployCandidates.class);
environment.jersey().register(Schedules.class);
environment.jersey().register(Tags.class);
environment.jersey().register(Groups.class);
environment.jersey().register(EnvAlerts.class);

// Schedule workers if configured
ConfigHelper.scheduleWorkers(configuration, context);
Expand All @@ -167,14 +106,14 @@ public void run(TeletraanServiceConfiguration configuration, Environment environ

// Exception handlers
// Constrains validation exceptions, returns 4xx
environment.jersey().register(new JerseyViolationExceptionMapper());
environment.jersey().register(JerseyViolationExceptionMapper.class);
// Jackson Json parsing exceptions
environment.jersey().register(new JsonProcessingExceptionMapper(true));
environment.jersey().register(new GenericExceptionMapper(configuration.getSystemFactory().getClientError()));
environment.jersey().register(GenericExceptionMapper.class);

// Swagger API docs generation related
environment.jersey().register(new ApiListingResource());
environment.jersey().register(new SwaggerSerializers());
environment.jersey().register(ApiListingResource.class);
environment.jersey().register(SwaggerSerializers.class);
BeanConfig config = new BeanConfig();
config.setTitle("Teletraan API Docs");
config.setVersion("1.0.0");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import com.pinterest.deployservice.common.Constants;

import com.pinterest.teletraan.TeletraanServiceContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -26,8 +27,8 @@ public class GenericExceptionMapper implements ExceptionMapper<Throwable> {

private String clientError;

public GenericExceptionMapper(String clientError) {
this.clientError = clientError;
public GenericExceptionMapper(@Context TeletraanServiceContext context) {
this.clientError = context.getGenericExceptionClientError();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public class Agents {
private static final Logger LOG = LoggerFactory.getLogger(Agents.class);
private AgentDAO agentDAO;

public Agents(TeletraanServiceContext context) {
public Agents(@Context TeletraanServiceContext context) {
agentDAO = context.getAgentDAO();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public class Builds {
private final Authorizer authorizer;
private final BuildEventPublisher buildEventPublisher;

public Builds(TeletraanServiceContext context) {
public Builds(@Context TeletraanServiceContext context) {
buildDAO = context.getBuildDAO();
tagDAO = context.getTagDAO();
sourceControlManagerProxy = context.getSourceControlManagerProxy();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import io.swagger.annotations.*;

import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.List;

Expand All @@ -42,7 +43,7 @@ public class Commits {
private final static int DEFAULT_SIZE = 100;
private final SourceControlManagerProxy sourceControlManagerProxy;

public Commits(TeletraanServiceContext context) throws Exception {
public Commits(@Context TeletraanServiceContext context) throws Exception {
sourceControlManagerProxy = context.getSourceControlManagerProxy();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class DeployCandidates {
private PingHandler pingHandler;
private final Authorizer authorizer;

public DeployCandidates(TeletraanServiceContext context) {
public DeployCandidates(@Context TeletraanServiceContext context) {
pingHandler = new PingHandler(context);
authorizer = context.getAuthorizer();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public class DeployConstraints {
private BasicDataSource dataSource;
private TeletraanServiceContext serviceContext;

public DeployConstraints(TeletraanServiceContext context) {
public DeployConstraints(@Context TeletraanServiceContext context) {
serviceContext = context;
deployConstraintDAO = context.getDeployConstraintDAO();
environDAO = context.getEnvironDAO();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public class Deploys {
private DeployHandler deployHandler;
private final Authorizer authorizer;

public Deploys(TeletraanServiceContext context) {
public Deploys(@Context TeletraanServiceContext context) {
environDAO = context.getEnvironDAO();
deployDAO = context.getDeployDAO();
deployHandler = new DeployHandler(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public class EnvAgentConfigs {
private ConfigHistoryHandler configHistoryHandler;
private Authorizer authorizer;

public EnvAgentConfigs(TeletraanServiceContext context) {
public EnvAgentConfigs(@Context TeletraanServiceContext context) {
environDAO = context.getEnvironDAO();
environHandler = new EnvironHandler(context);
configHistoryHandler = new ConfigHistoryHandler(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public enum CountActionType {
FAILED_FIRST_DEPLOY
}

public EnvAgents(TeletraanServiceContext context) {
public EnvAgents(@Context TeletraanServiceContext context) {
environDAO = context.getEnvironDAO();
authorizer = context.getAuthorizer();
agentDAO = context.getAgentDAO();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public class EnvAlarms {
private ConfigHistoryHandler configHistoryHandler;
private Authorizer authorizer;

public EnvAlarms(TeletraanServiceContext context) {
public EnvAlarms(@Context TeletraanServiceContext context) {
environHandler = new EnvironHandler(context);
configHistoryHandler = new ConfigHistoryHandler(context);
environDAO = context.getEnvironDAO();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public class EnvAlerts {
private Map<String, AlertAction> supportActions;
private AlertContextBuilder alertContextBuilder;

public EnvAlerts(TeletraanServiceContext context) {
public EnvAlerts(@Context TeletraanServiceContext context) {
environDAO = context.getEnvironDAO();
authorizer = context.getAuthorizer();
externalAlertFactory = context.getExternalAlertsFactory();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public class EnvCapacities {
private GroupDAO groupDAO;
private Authorizer authorizer;

public EnvCapacities(TeletraanServiceContext context) {
public EnvCapacities(@Context TeletraanServiceContext context) {
environHandler = new EnvironHandler(context);
configHistoryHandler = new ConfigHistoryHandler(context);
environDAO = context.getEnvironDAO();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public enum HostActions {
private DeployHandler deployHandler;
private ConfigHistoryHandler configHistoryHandler;

public EnvDeploys(TeletraanServiceContext context) throws Exception {
public EnvDeploys(@Context TeletraanServiceContext context) throws Exception {
environDAO = context.getEnvironDAO();
buildDAO = context.getBuildDAO();
deployDAO = context.getDeployDAO();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
public class EnvGroupRoles extends GroupRoles {
private static final Resource.Type RESOURCE_TYPE = Resource.Type.ENV;

public EnvGroupRoles(TeletraanServiceContext context) {
public EnvGroupRoles(@Context TeletraanServiceContext context) {
super(context);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;

@Path("/v1/envs/{envName : [a-zA-Z0-9\\-_]+}/{stageName : [a-zA-Z0-9\\-_]+}/history")
Expand All @@ -43,7 +44,7 @@ public class EnvHistory {
private final EnvironDAO environDAO;
private final ConfigHistoryDAO configHistoryDAO;

public EnvHistory(TeletraanServiceContext context) {
public EnvHistory(@Context TeletraanServiceContext context) {
environDAO = context.getEnvironDAO();
configHistoryDAO = context.getConfigHistoryDAO();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public class EnvHostTags {
private Authorizer authorizer;


public EnvHostTags(TeletraanServiceContext context) {
public EnvHostTags(@Context TeletraanServiceContext context) {
hostDAO = context.getHostDAO();
hostTagDAO = context.getHostTagDAO();
environDAO = context.getEnvironDAO();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public class EnvHosts {
private final EnvironHandler environHandler;
private final ConfigHistoryHandler configHistoryHandler;

public EnvHosts(TeletraanServiceContext context) {
public EnvHosts(@Context TeletraanServiceContext context) {
authorizer = context.getAuthorizer();
environDAO = context.getEnvironDAO();
hostDAO = context.getHostDAO();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public class EnvMetrics {
private EnvironDAO environDAO;
private Authorizer authorizer;

public EnvMetrics(TeletraanServiceContext context) {
public EnvMetrics(@Context TeletraanServiceContext context) {
environDAO = context.getEnvironDAO();
environHandler = new EnvironHandler(context);
configHistoryHandler = new ConfigHistoryHandler(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public class EnvPromotes {
private EnvironDAO environDAO;
private Authorizer authorizer;

public EnvPromotes(TeletraanServiceContext context) {
public EnvPromotes(@Context TeletraanServiceContext context) {
environDAO = context.getEnvironDAO();
environHandler = new EnvironHandler(context);
configHistoryHandler = new ConfigHistoryHandler(context);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public class EnvScriptConfigs {
private ConfigHistoryHandler configHistoryHandler;
private Authorizer authorizer;

public EnvScriptConfigs(TeletraanServiceContext context) {
public EnvScriptConfigs(@Context TeletraanServiceContext context) {
environDAO = context.getEnvironDAO();
environHandler = new EnvironHandler(context);
configHistoryHandler = new ConfigHistoryHandler(context);
Expand Down
Loading

0 comments on commit b38b7ae

Please sign in to comment.