public void disposeWorker(WorkerEntry workerEntry, List<IResponseTO> responses) { ServiceID serviceID = workerEntry.getServiceID(); responses.add(new LoggerResponseTO("Worker dispose: " + serviceID, LoggerResponseTO.DEBUG)); workerEntry.dispose(); WorkerDAO workerDAO = BrokerDAOFactory.getInstance().getWorkerDAO(); String wAddress = StringUtil.deploymentIDToAddress(workerEntry.getWorkerID()); DisposeWorkerResponseTO disposeTO = new DisposeWorkerResponseTO(); disposeTO.setPeerAddress(StringUtil.deploymentIDToAddress(workerEntry.getPeerID())); disposeTO.setWorkerAddress(wAddress); disposeTO.setWorkerPublicKey(workerDAO.getWorkerPublicKey(wAddress)); responses.add(disposeTO); responses.add(new LoggerResponseTO("Stub to be released: " + wAddress, LoggerResponseTO.INFO)); ReleaseResponseTO releaseTO = new ReleaseResponseTO(); releaseTO.setStubAddress(wAddress); responses.add(releaseTO); workerDAO.removeWorker(wAddress); WorkerInfo.getInstance().removeWorker(workerEntry.getServiceID().getContainerID().toString()); }
/** * @param job * @param workerEntry */ private void unwantWorker(Job job, WorkerEntry workerEntry, List<IResponseTO> responses) { responses.add( new LoggerResponseTO( "Worker unwanted: " + workerEntry.getWorkerID(), LoggerResponseTO.DEBUG)); job.unwantWorker(workerEntry); workerEntry.unwant(); RequestSpecification spec = workerEntry.getRequestSpecification(); String peerAddress = StringUtil.deploymentIDToAddress(workerEntry.getPeerID()); String workerAddress = StringUtil.deploymentIDToAddress(workerEntry.getWorkerID()); Integer jobId = Integer.parseInt("" + spec.getJobId()); JobSpecification jobSpec = BrokerDAOFactory.getInstance().getJobDAO().getJobSpec(jobId); UnwantWorkerResponseTO unwantWorkerTO = new UnwantWorkerResponseTO(); unwantWorkerTO.setJobID(jobId); unwantWorkerTO.setJobSpec(jobSpec); unwantWorkerTO.setMaxFails(spec.getMaxFails()); unwantWorkerTO.setMaxReplicas(spec.getMaxReplicas()); unwantWorkerTO.setPeerAddress(peerAddress); unwantWorkerTO.setRequestID(spec.getRequestId()); unwantWorkerTO.setRequiredWorkers(spec.getRequiredWorkers()); unwantWorkerTO.setWorkerAddress(workerAddress); WorkerDAO workerDAO = BrokerDAOFactory.getInstance().getWorkerDAO(); String workerPublicKey = workerDAO.getWorkerPublicKey(workerAddress); unwantWorkerTO.setWorkerPublicKey(workerPublicKey); responses.add(unwantWorkerTO); ReleaseResponseTO releaseTO = new ReleaseResponseTO(); releaseTO.setStubAddress(workerAddress); responses.add(releaseTO); workerDAO.removeWorker(workerAddress); WorkerInfo.getInstance().removeWorker(workerEntry.getServiceID().getContainerID().toString()); }
public List<IResponseTO> execute(NotifyRemoteWorkerProviderRecoveryRequestTO request) { List<IResponseTO> responses = new ArrayList<IResponseTO>(); if (CertificationUtils.getCertSubjectDN(request.getMyCertPath()) .equals(CertificationUtils.getCertSubjectDN(request.getRwpCertPath()))) { LoggerResponseTO loggerResponse = new LoggerResponseTO( DiscoveryServiceClientMessages.getSameCertificateDNMessage(request.getRwpAddress()), LoggerResponseTO.DEBUG); responses.add(loggerResponse); ReleaseResponseTO releaseTO = new ReleaseResponseTO(); releaseTO.setStubAddress(request.getRwpAddress()); responses.add(releaseTO); return responses; } Collection<CertificateCRLPair> receivedPeersCAsData = PeerDAOFactory.getInstance().getPeerCertificationDAO().getReceivedPeersCAsData(); if (receivedPeersCAsData != null && !receivedPeersCAsData.isEmpty()) { if (!CertificationUtils.isCertificateValid(request.getRwpCertPath())) { LoggerResponseTO loggerResponse = new LoggerResponseTO( DiscoveryServiceClientMessages.getInvalidCertPathMessage(request.getRwpAddress()), LoggerResponseTO.WARN); responses.add(loggerResponse); ReleaseResponseTO releaseTO = new ReleaseResponseTO(); releaseTO.setStubAddress(request.getRwpAddress()); responses.add(releaseTO); return responses; } if (!CertificationUtils.isCertPathIssuedByCA( request.getRwpCertPath(), receivedPeersCAsData)) { LoggerResponseTO loggerResponse = new LoggerResponseTO( DiscoveryServiceClientMessages.getNonIssuedCertPathMessage(request.getRwpAddress()), LoggerResponseTO.WARN); responses.add(loggerResponse); ReleaseResponseTO releaseTO = new ReleaseResponseTO(); releaseTO.setStubAddress(request.getRwpAddress()); responses.add(releaseTO); return responses; } } DiscoveryServiceClientDAO dao = PeerDAOFactory.getInstance().getDiscoveryServiceClientDAO(); dao.addRemoteWorkerProviderAddress(request.getRwpAddress()); PeerControl.getInstance() .insertPeer( responses, request.getRwpUserAtServer(), CertificationUtils.getCertSubjectDN(request.getRwpCertPath())); return responses; }