diff --git a/static/images/collaboration/communication/face-to-face-meetings/2023-berlin-group.jpg b/content/collaboration/communication/face-to-face-meetings/2023-berlin/2023-berlin-group.jpg similarity index 100% rename from static/images/collaboration/communication/face-to-face-meetings/2023-berlin-group.jpg rename to content/collaboration/communication/face-to-face-meetings/2023-berlin/2023-berlin-group.jpg diff --git a/content/collaboration/communication/face-to-face-meetings/2023-berlin/index.md b/content/collaboration/communication/face-to-face-meetings/2023-berlin/index.md index b214ecd08..0be2f9b6a 100644 --- a/content/collaboration/communication/face-to-face-meetings/2023-berlin/index.md +++ b/content/collaboration/communication/face-to-face-meetings/2023-berlin/index.md @@ -1,9 +1,7 @@ --- -title: Berlin 2023 +title: ICAT F2F Meeting – Berlin – 3rd and 4th May 2023 --- -# ICAT F2F Meeting – Berlin – 3rd and 4th May 2023 - See also: - the [indico site](https://events.hifis.net/event/778/), @@ -11,7 +9,7 @@ See also: - the [collaborative notes from the second day](/collaboration/communication/face-to-face-meetings/2023-berlin/2023-berlin-collaborative-notes-2), - the [notes on the ICAT Roadmap](/collaboration/communication/face-to-face-meetings/2023-berlin/2023-berlin-roadmap-notes). -Attendees of the 2023 ICAT F2F in Berlin +![Attendees of the 2023 ICAT F2F in Berlin](/2023-berlin-group.jpg "Attendees of the 2023 ICAT F2F in Berlin") ## Agenda diff --git a/content/index.md b/content/index.md index 447fe79ba..855e92ade 100644 --- a/content/index.md +++ b/content/index.md @@ -35,4 +35,4 @@ links](/about/useful-links/ "Useful Links") If you reuse this work, please cite it as shown on the [DataCite page](http://data.datacite.org/10.5286/SOFTWARE/ICAT) -![Attendees of the 2016 ICAT F2F in Copenhagen](/collaboration/communication/face-to-face-meetings/group.jpg "Attendees of the 2016 ICAT F2F in Copenhagen") +![Attendees of the 2023 ICAT F2F in Berlin](/collaboration/communication/face-to-face-meetings/2023-berlin/2023-berlin-group.jpg "Attendees of the 2023 ICAT F2F in Berlin") diff --git a/content/installation/glassfish.md b/content/installation/glassfish.md index bf7ccd457..3c91165ed 100644 --- a/content/installation/glassfish.md +++ b/content/installation/glassfish.md @@ -31,7 +31,7 @@ Ensure that `hostname -f` returns a sensible result. ## Scripted setup -Then run [setup-glassfish.py](/misc/scripts/setup-glassfish.py) +Then run [setup-glassfish.py](https://raw.githubusercontent.com/icatproject/icat.utils/master/src/main/scripts/setup-glassfish.py) which takes as arguments the name of the domain you wish to create, the amount of memory to allow for the Java heap in glassfish and optionally a password. If you don't specify a password you will be prompted for it diff --git a/content/new-wip-content/apis.md b/content/new-wip-content/apis.md deleted file mode 100644 index 3d6341bbd..000000000 --- a/content/new-wip-content/apis.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: apis ---- - -TODO: Include summary of content [here](https://repo.icatproject.org/site/icat/server/4.8.0/user.html) and at the links below. - -- [IDS Restful API](https://repo.icatproject.org/site/ids/server/1.7.0/miredot/index.html) -- [ICAT Restful API](https://repo.icatproject.org/site/icat/server/4.8.0/miredot/index.html) -- [ICAT SOAP Manual](https://repo.icatproject.org/site/icat/server/4.8.0/soap.html) - -TODO: Describe and recommend the ICAT client APIs such as [python-icat](https://github.com/icatproject/python-icat) and [icat.client](https://github.com/icatproject/icat.client) - diff --git a/content/new-wip-content/developers.md b/content/new-wip-content/developers.md deleted file mode 100644 index bd53ccb3a..000000000 --- a/content/new-wip-content/developers.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: developers ---- - -# Technical Architecture - -TODO: Describe the ICAT technical architecture ie. major dependencies, technologies (eg. REST), design patterns. Check and correct this, add links: -The major components of the ICAT software are written in Java with installation scripts and supporting utilities written in Python. The software is written for the Java Enterprise Edition platform and runs inside an application server such as Glassfish (or its successor, Paraya). The main Java/JavaEE APIs used are: - -- Java Persistence API (JPA) backed by MySQL or Oracle -- Apache HttpComponents -- Java Json ... -- Java REST API (JAX-RS) provided by Jersey? -- Apache Lucene for searching -- and more... - -ICAT uses Maven for the build system and jUnit for testing. - -# How To... - -TODO: with reference to [Component Guidelines](/collaboration/component-guidelines/), the icat.server [wiki](https://github.com/icatproject/icat.server/wiki) and the ids.server [wiki](https://github.com/icatproject/ids.server/wiki). - -- [How to set up a development environment](TODO) -- [How to build ICAT](TODO) -- [How to submit a patch](TODO) -- [How to write a storage plugin for the ICAT Data Service](TODO) - -# Reference Documentation - -TODO: link to JavaDoc? - -Each component has documentation automatically generated by Maven. TODO: information on what is contained in this documentation. The Maven documentation is available [here](https://repo.icatproject.org/site/). To find the Maven documentation for icat.server version 4.8.0, for example, either follow the links or append `icat/server/4.8.0/` to the URL. For convenience, the latest releases of the major components are listed below: - -- [ICAT Server 4.8.0](https://repo.icatproject.org/site/icat/server/4.8.0/) -- TODO: add more eg. IDS, auth, storage plugins diff --git a/content/new-wip-content/docs.md b/content/new-wip-content/docs.md deleted file mode 100644 index 61c0e29d4..000000000 --- a/content/new-wip-content/docs.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: docs ---- - -TODO: content here - -## Quickstart - -## Tutorial - -## Manual -The ICAT manual is available on Gitbook. Find it [here](https://stuartpullinger.gitbooks.io/the-icat-manual/). diff --git a/content/new-wip-content/index.md b/content/new-wip-content/index.md deleted file mode 100644 index ac18d19b2..000000000 --- a/content/new-wip-content/index.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Welcome to the ICAT Project ---- - -The ICAT software takes data from large scientific facilities - such as particle accelerators - and catalogues and indexes it so scientists can find the data they need and share it with their team. - -ICAT is in use at some of the world's largest scientific facilities enabling access to millions of scientific results. The software is free & open-source and has been developed & maintained by an international collaboration for over 10 years. - -(Possibly include information from [here](https://icatproject.org/)) - -### Find out more - -To find out more about the ICAT project, go to the [About](/about) page. - -### Use the web interface - -For instructions on how to use the web interface to ICAT - called TopCat - see the user documentation [here](). - -### Get help - -To get help from the ICAT team, see the [Support](support) page. - -### Install ICAT - -To get started installing the ICAT software, go to the [Quick Start](/installation/quick-start-installation) or [Installation Overview](/installation) pages. - -### Use the ICAT APIs - -ICAT has [REST](apis/rest.md), [SOAP](apis/soap.md), [Java](https://github.com/icatproject/icat.client) and [Python](https://github.com/icatproject/python-icat) APIs to create or access data in ICAT. For more information, see the [APIs](apis.md) page. - -### Develop ICAT - -To find out how ICAT works and contribute to its development, see the [Developers](developers.md) page. diff --git a/content/new-wip-content/support.md b/content/new-wip-content/support.md deleted file mode 100644 index 9cde555e4..000000000 --- a/content/new-wip-content/support.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Support ---- - -## Getting help - -The first place to look to get help is our [FAQ](support/faq.md) page to see if your question has already been answered. Otherwise support for ICAT is provided through our email list. The list is hosted on Google Groups at [icatgroup](https://groups.google.com/forum/#!forum/icatgroup). The list is active and monitored by the entire ICAT development team. - -## Reporting bugs - -ICAT development takes place on Github under the [icatproject](https://github.com/icatproject) organisation. Each component of the ICAT software has a separate repository and issue tracker. Please use the issue tracker to report bugs. For more information, see our ["How to report a bug"](support/reporting_bugs.md) guide. diff --git a/static/misc/scripts/setup-glassfish.py b/static/misc/scripts/setup-glassfish.py deleted file mode 100644 index 5e48c3879..000000000 --- a/static/misc/scripts/setup-glassfish.py +++ /dev/null @@ -1,155 +0,0 @@ -#!/usr/bin/env python - -# !!!!!!!!!! # -# -# The latest version of this file can be downloaded from -# https://raw.githubusercontent.com/icatproject/icat.utils/master/src/main/scripts/setup-glassfish.py -# -# !!!!!!!!!! # - -from __future__ import print_function - -import threading -import platform -import shlex -import subprocess -import io -import getpass -import sys -import os -import tempfile - -def execute(cmd): - - print(cmd) - if platform.system() == "Windows": - cmd = cmd.split() - proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - else: - cmd = shlex.split(cmd) - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stringOut = io.BytesIO() - - mstdout = Tee(proc.stdout, stringOut) - mstdout.start() - stringErr = io.BytesIO() - mstderr = Tee(proc.stderr, stringErr) - mstderr.start() - rc = proc.wait() - - mstdout.join() - mstderr.join() - - out = stringOut.getvalue().decode().strip() - stringOut.close() - - err = stringErr.getvalue().decode().strip() - stringErr.close() - - return out, err, rc - -class Tee(threading.Thread): - - def __init__(self, inst, *out): - threading.Thread.__init__(self) - self.inst = inst - self.out = out - - def run(self): - while 1: - line = self.inst.readline() - if not line: break - for out in self.out: - out.write(line) - -def abort(msg): - """Print to stderr and stop with exit 1""" - print(msg + "\n", file=sys.stderr) - sys.exit(1) - -def executeGood(cmd): - out, err, rc = execute(cmd) - if rc: - abort(err) - return out - -args = sys.argv[1:] -if len(args) < 2: abort ("Must have at least two arguments - the domain name and the memory for the Java heap. The memory can either be a number with a % on the end to give a percentage of available memory or end with an m or g to express it in mega- or giga-bytes") -domain = args[0] - -rest = args[1][:-1] -type = args[1][-1] -if type not in "%mg": abort("Memory must be specified as %, m or g") - -try: - fac = float(rest) -except ValueError: - abort("Memory must be a number followed by %, m or g ") - -if len(args) == 3: - password = args[2] -else: - password = getpass.getpass("Desired admin password: ") - -out = executeGood("asadmin list-domains") -exists = False -for line in out.splitlines(): - if line.split()[0] == domain: - running = line.split()[1].startswith("running") - exists = True - -if exists: - if running: - executeGood("asadmin stop-domain --kill " + domain) - executeGood("asadmin delete-domain " + domain) - -dummy, tfile = tempfile.mkstemp() -try: - with open(tfile, "w") as a: - a.write("AS_ADMIN_PASSWORD=" + password) - - executeGood("asadmin -W " + tfile + " --user admin create-domain --savelogin " + domain) -finally: - os.remove(tfile) - -executeGood("asadmin start-domain " + domain) -executeGood("asadmin enable-secure-admin") - -# Set the maximum heap size (default is 512MB) -if type == "%": - if platform.system() == "Windows": - abort("% memory calculation for Java heap size is not yet supported on windows") - else: - mem = str(int(os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES') / 1024.**2 * float(fac)/100.))+"m" -else: - mem = str(int(fac)) + type -for line in executeGood("asadmin list-jvm-options").splitlines(): - if (line.startswith("-Xmx")): - executeGood("asadmin delete-jvm-options " + line.strip()) -executeGood("asadmin create-jvm-options -Xmx" + mem) - -# Set the out-of-memory handler to kill the JVM -# With Java 8, -XX:+ExitOnOutOfMemoryError can be used -if platform.system() == "Windows": - cmd = "taskkill /F /PID %p" -else: - cmd = "kill -9 %p" - -dq = '\\"' -executeGood("asadmin create-jvm-options '-XX\:OnOutOfMemoryError=" + dq + cmd + dq +"'") - -executeGood("asadmin stop-domain --kill " + domain) -executeGood("asadmin start-domain " + domain) - -# Enable access logs -executeGood('asadmin set server.http-service.access-log.format="common"') -executeGood('asadmin set server.http-service.access-logging-enabled=true') - -# Increase the thread pool size to 128 (default is 5) -executeGood('asadmin set server.thread-pools.thread-pool.http-thread-pool.max-thread-pool-size=128') - -# Disable the old (Glassfish 2) JNDI names for session beans and use the names defined in EJB 3.1. The old names can clash when there are multiple applications deployed. -executeGood('asadmin set server.ejb-container.property.disable-nonportable-jndi-names="true"') - -# Change the read request timeout to infinite (default is 15 mins). This is required for prepareData nad getSize requests from Topcat to the IDS which can take a long time. -executeGood('asadmin set configs.config.server-config.network-config.protocols.protocol.http-listener-2.http.request-timeout-seconds=-1')