diff --git a/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/DownloadFileTest.java b/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/DownloadFileTest.java index e28f931d2ead52959d2ae2736190c94b0a1977f6..a1c857980dd626b5819e2f50dea3ab280c774e06 100644 --- a/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/DownloadFileTest.java +++ b/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/DownloadFileTest.java @@ -24,6 +24,9 @@ import ch.ethz.sis.filetransfer.DownloadStatus; import ch.ethz.sis.filetransfer.IDownloadItemId; import ch.ethz.sis.filetransfer.IDownloadListener; import ch.ethz.sis.filetransfer.ILogger; +import ch.ethz.sis.filetransfer.IRetryAction; +import ch.ethz.sis.filetransfer.IRetryProvider; +import ch.ethz.sis.filetransfer.IRetryProviderFactory; import ch.ethz.sis.filetransfer.LogLevel; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions; @@ -41,7 +44,6 @@ import ch.ethz.sis.openbis.generic.dssapi.v3.fastdownload.FastDownloader; import ch.systemsx.cisd.common.collection.SimpleComparator; import ch.systemsx.cisd.common.exceptions.ExceptionUtils; import ch.systemsx.cisd.common.filesystem.FileUtilities; -import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; public class DownloadFileTest extends AbstractFileTest { @@ -167,32 +169,49 @@ public class DownloadFileTest extends AbstractFileTest { // Given String sessionToken = as.login(TEST_USER, PASSWORD); - DataSetFilePermId folder = new DataSetFilePermId(new DataSetPermId(dataSetCode), getPath("subdir1")); - List<DataSetFilePermId> fileIds = Arrays.asList(folder); + DataSetFilePermId file1 = new DataSetFilePermId(new DataSetPermId(dataSetCode), getPath("subdir1/file3.txt")); + DataSetFilePermId file2 = new DataSetFilePermId(new DataSetPermId(dataSetCode), getPath("subdir1/file4.txt")); + List<DataSetFilePermId> fileIds = Arrays.asList(file1, file2); FastDownloadSessionOptions options = new FastDownloadSessionOptions().withWishedNumberOfStreams(1); List<Exception> exceptions = new ArrayList<>(); IDownloadListener listener = new DownloadListenerAdapter() { - @Override - public void onChunkDownloaded(int chunkSequenceNumber) + public void onDownloadFailed(Collection<Exception> e) { - ServiceProvider.getDataStoreService().cleanupSession(sessionToken); + exceptions.addAll(e); } - + }; + IRetryProviderFactory retryProviderFactory = new IRetryProviderFactory() + { @Override - public void onDownloadFailed(Collection<Exception> e) + public IRetryProvider createRetryProvider(ILogger logger) { - exceptions.addAll(e); + return new IRetryProvider() + { + int counter = 3; + @Override + public <T> T executeWithRetry(IRetryAction<T> action) throws DownloadException + { + T result = action.execute(); + if (counter-- > 0) + { + return result; + } + throw new DownloadException("Download failed!!!!", false); + } + }; } }; // When FastDownloadSession downloadSession = dss.createFastDownloadSession(sessionToken, fileIds, options); - FastDownloadResult downloadResult = new FastDownloader(downloadSession).withListener(listener).downloadTo(target); + FastDownloadResult downloadResult = new FastDownloader(downloadSession).withListener(listener) + .withRetryProviderFactory(retryProviderFactory ).downloadTo(target); // Then assertEquals(DownloadStatus.FAILED, downloadResult.getStatus()); + assertEquals("[ch.ethz.sis.filetransfer.DownloadException: Download failed!!!!]", exceptions.toString()); } @Test diff --git a/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/SearchFileTest.java b/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/SearchFileTest.java index f128992aa931fcfab36f3991f29dc8915094fdb9..ca346b3fec7d92fba53e8685e2dfec5dff3f49ac 100644 --- a/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/SearchFileTest.java +++ b/datastore_server/sourceTest/java/ch/ethz/sis/openbis/generic/dss/systemtest/api/v3/SearchFileTest.java @@ -49,6 +49,40 @@ public class SearchFileTest extends AbstractFileTest } } + @Test + public void withAndOperator() throws Exception + { + // Given + DataSetFileSearchCriteria sc = new DataSetFileSearchCriteria(); + sc.withAndOperator(); + sc.withDataSet().withPermId().thatEquals(dataSetCode); + sc.withDataSet().withPermId().thatEquals("blabla"); + String sessionToken = gis.tryToAuthenticateForAllServices(TEST_USER, PASSWORD); + + // When + List<DataSetFile> searchFiles = dss.searchFiles(sessionToken, sc, new DataSetFileFetchOptions()).getObjects(); + + // Then + assertEquals(0, searchFiles.size()); + } + + @Test + public void withOrOperator() throws Exception + { + // Given + DataSetFileSearchCriteria sc = new DataSetFileSearchCriteria(); + sc.withOrOperator(); + sc.withDataSet().withPermId().thatEquals(dataSetCode); + sc.withDataSet().withPermId().thatEquals("blabla"); + String sessionToken = gis.tryToAuthenticateForAllServices(TEST_USER, PASSWORD); + + // When + List<DataSetFile> searchFiles = dss.searchFiles(sessionToken, sc, new DataSetFileFetchOptions()).getObjects(); + + // Then + assertEquals(12, searchFiles.size()); + } + @Test public void testLogging() { diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAO.java index 312cc4b181e733755dd27cc24ea611058c9f3697..e84de4016b25bae3c41d5c2cc05ff5c269c98cee 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAO.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/db/HibernateSearchDAO.java @@ -87,12 +87,17 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.search.LuceneQueryB import ch.systemsx.cisd.openbis.generic.server.dataaccess.db.search.detailed.DetailedQueryBuilder; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriteria; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchCriterion; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchField; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchFieldKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DetailedSearchSubCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IAssociationCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MatchingEntity; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyMatch; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Span; +import ch.systemsx.cisd.openbis.generic.shared.dto.AbstractIdAndCodeHolder; import ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity; import ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants; import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; @@ -106,6 +111,8 @@ import ch.systemsx.cisd.openbis.generic.shared.translator.DtoConverters; final class HibernateSearchDAO extends HibernateDaoSupport implements IHibernateSearchDAO { + private static final Pattern VALID_CODE_PATTERN = Pattern.compile("^[^\\s/&]+$", Pattern.CASE_INSENSITIVE); + /** * The <code>Logger</code> of this class. * <p> @@ -784,6 +791,10 @@ final class HibernateSearchDAO extends HibernateDaoSupport implements IHibernate DetailedSearchCriteria searchCriteria, EntityKind entityKind, List<IAssociationCriteria> associations) { + if (hasInvalidCodes(searchCriteria)) + { + return Collections.emptyList(); + } List<String> fieldNames = DetailedQueryBuilder.getIndexFieldNames(searchCriteria.getCriteria(), DtoConverters.convertEntityKind(entityKind)); Query query = LuceneQueryBuilder.createDetailedSearchQuery(userId, searchCriteria, associations, entityKind, getFieldTypes(fieldNames)); @@ -802,6 +813,32 @@ final class HibernateSearchDAO extends HibernateDaoSupport implements IHibernate return entityIds; } + private boolean hasInvalidCodes(DetailedSearchCriteria searchCriteria) + { + if (searchCriteria != null) + { + for (DetailedSearchCriterion criterion : searchCriteria.getCriteria()) + { + String value = criterion.getValue(); + DetailedSearchField field = criterion.getField(); + DetailedSearchFieldKind kind = field.getKind(); + if (DetailedSearchFieldKind.ATTRIBUTE.equals(kind) && field.getAttributeCode().equals("CODE") + && VALID_CODE_PATTERN.matcher(value).matches() == false) + { + return true; + } + } + for (DetailedSearchSubCriteria subCriteria : searchCriteria.getSubCriterias()) + { + if (hasInvalidCodes(subCriteria.getCriteria())) + { + return true; + } + } + } + return false; + } + // // Helpers // diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchPropertyAssignmentTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchPropertyAssignmentTest.java index 286e6010596d96d5286c1454cdf58da0e415825f..841d2e743c21cf68c6aa78f0380bd815d0227188 100644 --- a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchPropertyAssignmentTest.java +++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/SearchPropertyAssignmentTest.java @@ -16,6 +16,8 @@ package ch.ethz.sis.openbis.systemtest.asapi.v3; +import static org.testng.Assert.assertEquals; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -26,6 +28,7 @@ import org.testng.annotations.Test; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchResult; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.EntityKind; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.EntityTypePermId; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.search.EntityTypeSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.PropertyAssignment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.fetchoptions.PropertyAssignmentFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyAssignmentPermId; @@ -168,8 +171,11 @@ public class SearchPropertyAssignmentTest extends AbstractTest PropertyAssignmentSearchCriteria criteria = new PropertyAssignmentSearchCriteria(); criteria.withAndOperator(); - criteria.withEntityType().withId().thatEquals(new EntityTypePermId("CELL_PLATE", EntityKind.SAMPLE)); - criteria.withPropertyType().withId().thatEquals(new PropertyTypePermId("BACTERIUM")); + EntityTypeSearchCriteria entityTypeSearchCriteria = criteria.withEntityType(); + entityTypeSearchCriteria.withOrOperator(); + entityTypeSearchCriteria.withCode().thatStartsWith("VALI"); + entityTypeSearchCriteria.withCode().thatEndsWith("PLATE"); + criteria.withPropertyType().withId().thatEquals(new PropertyTypePermId("COMMENT")); SearchResult<PropertyAssignment> searchResult = v3api.searchPropertyAssignments(sessionToken, criteria, fo); @@ -178,9 +184,11 @@ public class SearchPropertyAssignmentTest extends AbstractTest for (PropertyAssignment propertyAssignment : propertyAssignments) { - Assert.assertTrue(propertyAssignment.getEntityType().getCode().equals("CELL_PLATE") - && propertyAssignment.getPropertyType().getCode().equals("BACTERIUM")); + Assert.assertTrue((propertyAssignment.getEntityType().getCode().startsWith("VALI") + || propertyAssignment.getEntityType().getCode().endsWith("PLATE")) + && propertyAssignment.getPropertyType().getCode().equals("COMMENT")); } + assertEquals(propertyAssignments.size(), 3); } @Test @@ -194,9 +202,13 @@ public class SearchPropertyAssignmentTest extends AbstractTest PropertyAssignmentSearchCriteria criteria = new PropertyAssignmentSearchCriteria(); criteria.withOrOperator(); - criteria.withEntityType().withId().thatEquals(new EntityTypePermId("CELL_PLATE", EntityKind.SAMPLE)); + EntityTypeSearchCriteria entityTypeSearchCriteria = criteria.withEntityType(); + entityTypeSearchCriteria.withAndOperator(); + entityTypeSearchCriteria.withCode().thatStartsWith("CELL"); + entityTypeSearchCriteria.withCode().thatEndsWith("PLATE"); criteria.withPropertyType().withId().thatEquals(new PropertyTypePermId("BACTERIUM")); + SearchResult<PropertyAssignment> searchResult = v3api.searchPropertyAssignments(sessionToken, criteria, fo); @@ -207,6 +219,7 @@ public class SearchPropertyAssignmentTest extends AbstractTest Assert.assertTrue(propertyAssignment.getEntityType().getCode().equals("CELL_PLATE") || propertyAssignment.getPropertyType().getCode().equals("BACTERIUM")); } + assertEquals(propertyAssignments.size(), 11); } @Test diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java index f63efd65e6798ff98a8ecbb0acb883bbc6f0a272..5bfdcc2556e52fb882df933c175756a1cfae1ae8 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java @@ -844,7 +844,7 @@ public class GeneralInformationServiceTest extends SystemTestCase { SearchCriteria searchCriteria = new SearchCriteria(); searchCriteria.addMatchClause(MatchClause.createAttributeMatch(MatchClauseAttribute.CODE, - "MP002-1 ")); + "MP002-1")); EnumSet<SampleFetchOption> fetchOptions = EnumSet.of(SampleFetchOption.PROPERTIES, SampleFetchOption.DESCENDANTS); diff --git a/openbis_api/build.gradle b/openbis_api/build.gradle index 385a8e6b0abd1e93289b8eaef1e8feb35ea8cb70..c3e15e4e3634dbed05895e73d146cc17fb5d79d2 100644 --- a/openbis_api/build.gradle +++ b/openbis_api/build.gradle @@ -5,7 +5,7 @@ apply from: '../gradle/javaproject.gradle' dependencies { compile project(':common'), - 'sis:sis-file-transfer:19.03.0', + 'sis:sis-file-transfer:19.03.1', 'fasterxml:jackson-core:2.9.7', 'fasterxml:jackson-annotations:2.9.7' diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/EntityTypeSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/EntityTypeSearchCriteria.java index 39b83aed275e412b89f46221651006b9b41a0ac6..58894bf1bfa843d402bf4e2ff1e1d8a59fd5f811 100644 --- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/EntityTypeSearchCriteria.java +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/entitytype/search/EntityTypeSearchCriteria.java @@ -20,6 +20,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractObjectSear import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.CodeSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.CodesSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchOperator; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.systemsx.cisd.base.annotation.JsonObject; @@ -46,6 +47,16 @@ public class EntityTypeSearchCriteria extends AbstractObjectSearchCriteria<IEnti return with(new EntityKindSearchCriteria()); } + public EntityTypeSearchCriteria withOrOperator() + { + return (EntityTypeSearchCriteria) withOperator(SearchOperator.OR); + } + + public EntityTypeSearchCriteria withAndOperator() + { + return (EntityTypeSearchCriteria) withOperator(SearchOperator.AND); + } + @Override protected SearchCriteriaToStringBuilder createBuilder() { diff --git a/openbis_api/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/datasetfile/search/DataSetFileSearchCriteria.java b/openbis_api/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/datasetfile/search/DataSetFileSearchCriteria.java index a919d9973760058bc8d60f894d2c1f9f9029f464..4e0cda4e20c6b59788acbcbf1146f0a056d4cb1e 100644 --- a/openbis_api/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/datasetfile/search/DataSetFileSearchCriteria.java +++ b/openbis_api/source/java/ch/ethz/sis/openbis/generic/dssapi/v3/dto/datasetfile/search/DataSetFileSearchCriteria.java @@ -18,6 +18,7 @@ package ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.search; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.AbstractCompositeSearchCriteria; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchCriteriaToStringBuilder; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.search.SearchOperator; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.DataSetSearchCriteria; import ch.systemsx.cisd.base.annotation.JsonObject; @@ -34,6 +35,16 @@ public class DataSetFileSearchCriteria extends AbstractCompositeSearchCriteria return with(new DataSetSearchCriteria()); } + public DataSetFileSearchCriteria withOrOperator() + { + return (DataSetFileSearchCriteria) withOperator(SearchOperator.OR); + } + + public DataSetFileSearchCriteria withAndOperator() + { + return (DataSetFileSearchCriteria) withOperator(SearchOperator.AND); + } + @Override protected SearchCriteriaToStringBuilder createBuilder() { diff --git a/openbis_standard_technologies/dist/core-plugins/monitoring-support/1/dss/reporting-plugins/dss-monitoring-initialization/dss-monitoring-initialization.py b/openbis_standard_technologies/dist/core-plugins/monitoring-support/1/dss/reporting-plugins/dss-monitoring-initialization/dss-monitoring-initialization.py index fc10827bd41e798c3feb3b4d70bc0904175a28dd..5e66be7d3804b4f0f029ae3b3df85d87c887aefd 100644 --- a/openbis_standard_technologies/dist/core-plugins/monitoring-support/1/dss/reporting-plugins/dss-monitoring-initialization/dss-monitoring-initialization.py +++ b/openbis_standard_technologies/dist/core-plugins/monitoring-support/1/dss/reporting-plugins/dss-monitoring-initialization/dss-monitoring-initialization.py @@ -1,4 +1,6 @@ +from __future__ import with_statement import subprocess +from java.util import Arrays from ch.systemsx.cisd.common.exceptions import UserFailureException from ch.systemsx.cisd.openbis.dss.generic.shared import ServiceProvider from ch.ethz.sis.openbis.generic.asapi.v3.dto.space.id import SpacePermId @@ -51,46 +53,46 @@ def process(tr, parameters, tableBuilder): def _create_data_set_type(session_token, data_set_type_code): v3 = ServiceProvider.getV3ApplicationService() data_set_type_permid = EntityTypePermId(data_set_type_code) - if v3.getDataSetTypes(session_token, [data_set_type_permid], DataSetTypeFetchOptions()).get(data_set_type_permid) is None: + if v3.getDataSetTypes(session_token, Arrays.asList(data_set_type_permid), DataSetTypeFetchOptions()).get(data_set_type_permid) is None: data_set_type_creation = DataSetTypeCreation() data_set_type_creation.setCode(data_set_type_code) - v3.createDataSetTypes(session_token, [data_set_type_creation]) + v3.createDataSetTypes(session_token, Arrays.asList(data_set_type_creation)) def _create_sample(tr, session_token, space_code, sample_code, sample_type_code): v3 = ServiceProvider.getV3ApplicationService() space_permid = SpacePermId(space_code) - if v3.getSpaces(session_token, [space_permid], SpaceFetchOptions()).get(space_permid) is None: + if v3.getSpaces(session_token, Arrays.asList(space_permid), SpaceFetchOptions()).get(space_permid) is None: space_creation = SpaceCreation() space_creation.setCode(space_code) - v3.createSpaces(session_token, [space_creation]) + v3.createSpaces(session_token, Arrays.asList(space_creation)) sample_id = SampleIdentifier(space_code, None, sample_code) - if v3.getSamples(session_token, [sample_id], SampleFetchOptions()).get(sample_id) is None: + if v3.getSamples(session_token, Arrays.asList(sample_id), SampleFetchOptions()).get(sample_id) is None: sample_type_permid = EntityTypePermId(sample_type_code) - if v3.getSampleTypes(session_token, [sample_type_permid], SampleTypeFetchOptions()).get(sample_type_permid) is None: + if v3.getSampleTypes(session_token, Arrays.asList(sample_type_permid), SampleTypeFetchOptions()).get(sample_type_permid) is None: sample_type_creation = SampleTypeCreation() sample_type_creation.setCode(sample_type_code) - v3.createSampleTypes(session_token, [sample_type_creation]) + v3.createSampleTypes(session_token, Arrays.asList(sample_type_creation)) sample_creation = SampleCreation() sample_creation.setTypeId(sample_type_permid) sample_creation.setSpaceId(space_permid) sample_creation.setCode(sample_code) - v3.createSamples(session_token, [sample_creation]) + v3.createSamples(session_token, Arrays.asList(sample_creation)) return tr.getSearchService().getSample(sample_id.getIdentifier()) def _create_user(session_token, user_id, password, space_code): v3 = ServiceProvider.getV3ApplicationService() person_permid = PersonPermId(user_id) - if v3.getPersons(session_token, [person_permid], PersonFetchOptions()).get(person_permid) is None: + if v3.getPersons(session_token, Arrays.asList(person_permid), PersonFetchOptions()).get(person_permid) is None: passwdShPath = '../openBIS-server/jetty/bin/passwd.sh' subprocess.call([passwdShPath, 'add', user_id, '-p', password]) creation = PersonCreation() creation.setUserId(user_id) - v3.createPersons(session_token, [creation]) + v3.createPersons(session_token, Arrays.asList(creation)) role_assignment_creation = RoleAssignmentCreation() role_assignment_creation.setUserId(person_permid) role_assignment_creation.setRole(Role.OBSERVER) role_assignment_creation.setSpaceId(SpacePermId(space_code)) - v3.createRoleAssignments(session_token, [role_assignment_creation]) + v3.createRoleAssignments(session_token, Arrays.asList(role_assignment_creation)) def _get_parameter(parameters, key, default_value): p = parameters.get(key) diff --git a/openbis_standard_technologies/dist/core-plugins/monitoring-support/1/dss/reporting-plugins/dss-monitoring-initialization/utilities/initialization.py b/openbis_standard_technologies/dist/core-plugins/monitoring-support/1/dss/reporting-plugins/dss-monitoring-initialization/utilities/initialization.py new file mode 100644 index 0000000000000000000000000000000000000000..f0a991b3ec97af0a8c1f4d29442f44e8363e1313 --- /dev/null +++ b/openbis_standard_technologies/dist/core-plugins/monitoring-support/1/dss/reporting-plugins/dss-monitoring-initialization/utilities/initialization.py @@ -0,0 +1,50 @@ +#!/usr/bin/python +import sys +import getpass +import ssl +import json + +if sys.version_info.major < 3: + import urllib2 +else: + import urllib.request + +def ask_server(url, request_data): + if sys.version_info.major < 3: + if sys.version_info.minor >= 2 and sys.version_info.micro > 9: + return urllib2.urlopen(url, request_data, context=ssl._create_unverified_context()).read() + return urllib2.urlopen(url, request_data).read() + return urllib.request.urlopen(url, request_data.encoding('utf8'), context=ssl._create_unverified_context()).read() + +if len(sys.argv) < 3: + raise Exception("Usage: python init_dss_monitoring.py <openBIS URL> <admin user id> [<admin password>]") +url = sys.argv[1] +admin_user = sys.argv[2] +if len(sys.argv) == 3: + password = getpass.getpass() +else: + password = sys.argv[3] + +data = '{"method":"tryToAuthenticateAtQueryServer","params":["%s","%s"],"id":"1","jsonrpc":"2:0"}' % (admin_user, password) +answer = ask_server("%s/openbis/openbis/rmi-query-v1.json" % url, data) +session_token = json.loads(answer)['result'] + +space_code = 'NAGIOS' +sample_code = 'NAGIOS' +sample_type_code = 'NAGIOS' +data_set_code = '99999999999999999-0000000' +data_set_type_code = 'NAGIOS' +file_name = 'nagios.txt' +file_content = 'Nagios' +user_id='nrpe' +user_password='<choose a strong password>' + +data = ('{"method":"createReportFromAggregationService","params":["%s","DSS1","dss-monitoring-initialization",' + + '{"sessionToken":"%s","data set code":"%s","space code":"%s","sample code":"%s","data set type code":"%s",' + + '"sample type code":"%s","file name":"%s","file content":"%s",' + + '"user id":"%s","password":"%s"}],"id":"1","jsonrpc":"2.0"}' + ) % (session_token, session_token, data_set_code, space_code, sample_code, data_set_type_code, + sample_type_code, file_name, file_content, user_id, user_password) +answer = ask_server("%s/openbis/openbis/rmi-query-v1.json" % url, data) +print(answer) + diff --git a/openbis_standard_technologies/query-api.gradle b/openbis_standard_technologies/query-api.gradle index 25d2f6633d2bf8a4035d5a23659fceba2a39759a..1c23fe45ca169b67e32f724b246e573266a32c03 100644 --- a/openbis_standard_technologies/query-api.gradle +++ b/openbis_standard_technologies/query-api.gradle @@ -125,7 +125,7 @@ task apiV3Jar(type: Jar) { configurations.create('apiV3Dependencies') dependencies { apiV3Dependencies 'sis:sis-base:18.09.0', - 'sis:sis-file-transfer:19.03.0', + 'sis:sis-file-transfer:19.03.1', 'apache:httpclient:4.3.6', 'apache:commons-lang3:3.7', 'eclipse:jetty-client:9.4.14.v20181114',