Guest User

Untitled

a guest
Dec 8th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1. package org.caebeans.unicore.client;
  2.  
  3. import com.google.inject.Inject;
  4. import de.fzj.unicore.uas.TargetSystemFactory;
  5. import de.fzj.unicore.uas.client.*;
  6. import de.fzj.unicore.uas.security.ClientProperties;
  7. import de.fzj.unicore.ucc.utils.FileDownloader;
  8. import de.fzj.unicore.ucc.utils.FileUploader;
  9. import de.fzj.unicore.ucc.utils.Mode;
  10. import de.fzj.unicore.wsrflite.xmlbeans.WSUtilities;
  11. import de.fzj.unicore.wsrflite.xmlbeans.client.RegistryClient;
  12. import org.apache.commons.configuration.Configuration;
  13. import org.caebeans.lib.Config;
  14. import org.caebeans.lib.LoggerManager;
  15. import org.ggf.schemas.jsdl.x2005.x11.jsdl.ApplicationDocument;
  16. import org.ggf.schemas.jsdl.x2005.x11.jsdl.ApplicationType;
  17. import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
  18. import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.EnvironmentType;
  19. import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.POSIXApplicationDocument;
  20. import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.POSIXApplicationType;
  21. import org.unigrids.x2006.x04.services.tss.SubmitDocument;
  22. import org.w3.x2005.x08.addressing.EndpointReferenceType;
  23.  
  24. import java.io.FileOutputStream;
  25. import java.util.List;
  26. import java.util.Map;
  27. import java.util.Properties;
  28.  
  29. /**
  30. * Created with IntelliJ IDEA.
  31. * User: zakharov
  32. * Date: 5/1/12
  33. * Time: 10:01 PM
  34. * To change this template use File | Settings | File Templates.
  35. */
  36. public class ClientImpl implements Client {
  37. private static final String SSL_KEYSTORE = "wsrf.ssl.keystore";
  38. private static final String SSL_KEYPASS = "wsrf.ssl.keypass";
  39. private static final String SSL_KEYALIAS = "wsrf.ssl.keyalias";
  40. private static final String SSL_TRUSTSTORE = "wsrf.ssl.truststore";
  41. private static final String SSL_TRUSTPASS = "wsrf.ssl.trustpass";
  42. public static final String UNICORE_REGISTRY_URL = "unicore.registry_url";
  43.  
  44. private RegistryClient registry;
  45.  
  46. @Inject
  47. private Config config;
  48.  
  49. @Inject
  50. private LoggerManager logger;
  51.  
  52. @Inject
  53. ClientImpl() {
  54.  
  55. }
  56.  
  57. @Override
  58. public void run(String dir, String appName, Map<String, String> parameters, List<String> inputs, List<String> outputs) throws Exception {
  59. registry = initRegistryClient();
  60.  
  61. JobClient jobClient = createJob(appName, parameters);
  62. StorageClient storageClient = jobClient.getUspaceClient();
  63.  
  64. for (String input : inputs) {
  65. FileUploader uploader = new FileUploader(dir + "/" + input, "/" + input, Mode.overwrite);
  66. uploader.perform(storageClient, new CAEMessageWriter());
  67. }
  68.  
  69. jobClient.waitUntilReady(0);
  70. jobClient.start();
  71. jobClient.waitUntilDone(0);
  72.  
  73. logger.warn("Appname " + appName);
  74.  
  75. for (String output : outputs) {
  76. FileDownloader downloader = new FileDownloader(output, dir, Mode.overwrite);
  77. downloader.perform(storageClient, new CAEMessageWriter());
  78. }
  79. }
  80.  
  81. private ClientProperties setupSecurity() {
  82. ClientProperties sp = new ClientProperties(new Properties());
  83. sp.setProperty(ClientProperties.WSRF_SSL, "true");
  84.  
  85. Configuration conf = config.getConfig();
  86.  
  87. sp.setProperty(ClientProperties.WSRF_SSL_KEYSTORE, conf.getString(SSL_KEYSTORE));
  88. sp.setProperty(ClientProperties.WSRF_SSL_KEYPASS, conf.getString(SSL_KEYPASS));
  89. sp.setProperty(ClientProperties.WSRF_SSL_KEYALIAS, conf.getString(SSL_KEYALIAS));
  90. sp.setProperty(ClientProperties.WSRF_SSL_TRUSTSTORE, conf.getString(SSL_TRUSTSTORE));
  91. sp.setProperty(ClientProperties.WSRF_SSL_TRUSTPASS, conf.getString(SSL_TRUSTPASS));
  92.  
  93. return sp;
  94. }
  95.  
  96. private RegistryClient initRegistryClient() throws Exception {
  97. String url = config.getConfig().getString(UNICORE_REGISTRY_URL);
  98. EndpointReferenceType epr = EndpointReferenceType.Factory.newInstance();
  99. epr.addNewAddress().setStringValue(url);
  100. RegistryClient registryClient = new RegistryClient(url, epr, setupSecurity());
  101.  
  102. return registryClient;
  103. }
  104.  
  105. private TSSClient findAndCreateTSS(RegistryClient registry) throws Exception {
  106. List<EndpointReferenceType> tsfEPRs = registry.listAccessibleServices(TargetSystemFactory.TSF_PORT);
  107. EndpointReferenceType epr = tsfEPRs.get(0);
  108. String url = epr.getAddress().getStringValue();
  109. TSFClient tsf = new TSFClient(url, epr, registry.getSecurityProperties());
  110. TSSClient tss = tsf.createTSS();
  111.  
  112. return tss;
  113. }
  114.  
  115. private JobClient createJob(String appName, Map<String, String> parameters) throws Exception {
  116. TSSClient targetSystem = findAndCreateTSS(registry);
  117.  
  118. ApplicationDocument ad = ApplicationDocument.Factory.newInstance();
  119. ApplicationType app = ad.addNewApplication();
  120.  
  121. SubmitDocument submitDoc = SubmitDocument.Factory.newInstance();
  122. JobDefinitionType job = submitDoc.addNewSubmit().addNewJobDefinition();
  123. // ApplicationType app = job.addNewJobDescription().addNewApplication();
  124. app.setApplicationName(appName);
  125.  
  126. POSIXApplicationDocument pd = POSIXApplicationDocument.Factory.newInstance();
  127. POSIXApplicationType p = pd.addNewPOSIXApplication();
  128.  
  129. for (Map.Entry<String, String> entry : parameters.entrySet()) {
  130. EnvironmentType et = p.addNewEnvironment();
  131. et.setName(entry.getKey());
  132. et.setStringValue(entry.getValue());
  133. }
  134.  
  135. WSUtilities.append(pd, ad);
  136.  
  137. job.addNewJobDescription().setApplication(app);
  138.  
  139. JobClient jobClient = targetSystem.submit(submitDoc);
  140.  
  141. return jobClient;
  142. }
  143. }
Add Comment
Please, Sign In to add comment