use of com.openshift.restclient.model.route.IRoute in project jbosstools-openshift by jbosstools.
the class RouteTimeout method getRoute.
private IRoute getRoute(IResource resource, Connection connection, IProgressMonitor monitor) {
SubMonitor routeMonitor = SubMonitor.convert(monitor);
routeMonitor.beginTask("Determine route to set the haproxy timeout for...", 2);
if (routeMonitor.isCanceled()) {
return null;
}
List<IService> services = connection.getResources(ResourceKind.SERVICE, resource.getNamespaceName());
Collection<IService> matchingServices = ResourceUtils.getServicesFor(resource, services);
routeMonitor.worked(1);
if (routeMonitor.isCanceled()) {
return null;
}
List<IRoute> routes = connection.getResources(ResourceKind.ROUTE, resource.getNamespaceName());
// TODO: support multiple matching routes, for now only get first
Optional<IRoute> matchingRoute = matchingServices.stream().flatMap(service -> ResourceUtils.getRoutesFor(service, routes).stream()).findFirst();
routeMonitor.worked(1);
routeMonitor.done();
return matchingRoute.orElse(null);
}
use of com.openshift.restclient.model.route.IRoute in project jbosstools-openshift by jbosstools.
the class OpenShiftDebugMode method resetRouteTimeout.
private void resetRouteTimeout(IResource resource, Connection connection, IProgressMonitor monitor) throws CoreException {
monitor.subTask("Clearing/restoring route timeout after debugging...");
IRoute route = new RouteTimeout(resource, connection).reset(context, monitor);
if (route != null) {
safeSend(route, connection, monitor);
}
}
use of com.openshift.restclient.model.route.IRoute in project jbosstools-openshift by jbosstools.
the class ServerAdapterHandler method getOpenShiftServer.
/**
* Finds the OpenShift server corresponding to the selection or prompts the
* user to create one.
*
* @param resource
* the selected OpenShift {@link IResource}
*
* @return the matching OpenShift {@link IServer} or <code>null</code> if
* none was found or user cancelled the creation operation.
*/
private IServer getOpenShiftServer(final IResource resource) {
if (resource == null) {
return null;
}
IResource source = null;
IRoute route = null;
if (resource instanceof IService) {
source = (IService) resource;
} else if (resource instanceof IRoute) {
route = (IRoute) resource;
final IRoute localRoute = route;
source = (IService) route.getProject().getResources(ResourceKind.SERVICE).stream().filter(s -> ResourceUtils.areRelated(localRoute, (IService) s)).findFirst().orElseGet(() -> null);
} else if (resource instanceof IReplicationController) {
source = resource;
} else if (resource instanceof IPod) {
final Collection<IService> services = ResourceUtils.getServicesFor((IPod) resource, resource.getProject().getResources(ResourceKind.SERVICE));
if (!services.isEmpty()) {
source = services.iterator().next();
} else {
source = ResourceUtils.getDeploymentConfigOrReplicationControllerFor((IPod) resource);
}
}
if (source != null) {
final Connection connection = ConnectionsRegistryUtil.safeGetConnectionFor(source);
return openOrCreateServerAdapter(source, route, connection);
}
return null;
}
use of com.openshift.restclient.model.route.IRoute in project jbosstools-openshift by jbosstools.
the class NewApplicationWizard method performFinish.
@Override
public boolean performFinish() {
final IResourcesModelJob createJob = isTemplateFlow() ? fromTemplateModel.createFinishJob() : fromImageModel.createFinishJob();
createJob.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
IStatus status = event.getResult();
if (JobUtils.isOk(status) || JobUtils.isWarning(status)) {
Display.getDefault().syncExec(createJob.getSummaryRunnable(getShell()));
OpenShiftUIUtils.showOpenShiftExplorer();
if (model.getEclipseProject() != null) {
// No need to import the project from git, it's already here
return;
}
Collection<IResource> resources = createJob.getResources();
final Map<IProject, Collection<IBuildConfig>> projectsAndBuildConfigs = getBuildConfigs(resources);
if (projectsAndBuildConfigs.isEmpty()) {
return;
}
Connection connection = model.getConnection();
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
ImportApplicationWizard wizard = new ImportApplicationWizard(projectsAndBuildConfigs);
wizard.addImportJobChangeListener(new JobChangeAdapter() {
@Override
public void done(IJobChangeEvent event) {
IService service = getService(resources);
List<org.eclipse.core.resources.IProject> importedProjects = wizard.getImportJob().getImportedProjects();
if (service != null && importedProjects.size() == 1) {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
if (MessageDialog.openQuestion(getShell(), "Create server adapter", NLS.bind("Would you like to create a server adapter for the imported {0} project?", importedProjects.get(0).getName()))) {
createServerAdapter(importedProjects.get(0), connection, service, getRoute(resources));
}
}
});
}
}
});
new WizardDialog(getShell(), wizard).open();
}
});
}
}
protected Map<IProject, Collection<IBuildConfig>> getBuildConfigs(Collection<IResource> resources) {
Map<IProject, Collection<IBuildConfig>> projects = new LinkedHashMap<>();
for (IResource resource : resources) {
if (resource instanceof IBuildConfig) {
IBuildConfig buildConfig = (IBuildConfig) resource;
if (StringUtils.isNotBlank(buildConfig.getSourceURI())) {
IProject p = buildConfig.getProject();
Collection<IBuildConfig> buildConfigs = projects.get(p);
if (buildConfigs == null) {
buildConfigs = new LinkedHashSet<>();
projects.put(p, buildConfigs);
}
buildConfigs.add(buildConfig);
}
}
}
return projects;
}
protected IService getService(Collection<IResource> resources) {
IResource service = getResourceOfType(resources, IService.class);
return service == null ? null : (IService) service;
}
protected IRoute getRoute(Collection<IResource> resources) {
IResource route = getResourceOfType(resources, IRoute.class);
return route == null ? null : (IRoute) route;
}
private IResource getResourceOfType(Collection<IResource> resources, Class<? extends IResource> type) {
for (IResource resource : resources) {
if (type.isInstance(resource)) {
return resource;
}
}
return null;
}
protected void createServerAdapter(org.eclipse.core.resources.IProject project, Connection connection, IService service, IRoute route) {
try {
IServerWorkingCopy server = OpenShiftServerUtils.create(OpenShiftResourceUniqueId.get(service));
ServerSettingsWizardPageModel serverModel = new ServerSettingsWizardPageModel(service, route, project, connection, server, OCBinary.getInstance().getStatus(connection, new NullProgressMonitor()), RSyncValidator.get().getStatus());
serverModel.loadResources();
serverModel.updateServer();
server.setAttribute(OpenShiftServerUtils.SERVER_START_ON_CREATION, false);
serverModel.saveServer(null);
} catch (CoreException ce) {
OpenShiftUIActivator.getDefault().getLogger().logError("Error occured while creating a server adapter", ce);
return;
}
}
});
boolean success = false;
try {
Job job = new JobChainBuilder(createJob.getJob()).runWhenSuccessfullyDone(new RefreshResourcesJob(createJob, true)).build();
IStatus status = runInWizard(job, createJob.getDelegatingProgressMonitor(), getContainer());
success = isFailed(status);
} catch (InvocationTargetException | InterruptedException e) {
OpenShiftUIActivator.getDefault().getLogger().logError(e);
success = false;
} finally {
UsageStats.getInstance().newV3Application(model.getConnection().getHost(), success);
}
return success;
}
use of com.openshift.restclient.model.route.IRoute in project jbosstools-openshift by jbosstools.
the class SelectedRoutePreference method getKey.
String getKey(List<IRoute> routes) {
// sort to remove the dependency on order
Set<String> set = new TreeSet<>();
for (IRoute route : routes) {
String key = getKey(route);
if (key != null)
set.add(key);
}
StringBuilder sb = new StringBuilder();
for (String key : set) {
if (sb.length() > 0)
sb.append(KEY_SEPARATOR);
sb.append(key);
}
return sb.toString();
}
Aggregations