You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
High level applications tend to prefer an hierarchical view of the control system name space. They group channel names by location or physical function. The name space of the EPICS Channel Access protocol, on the other hand, is flat. A good and thoroughly enforced naming convention may solve the problem of creating unique predictable names. It does not free every application from being configured explicitly, so that it knows all channel names it might be interested in beforehand.
12
+
***Motivation and Objectives**
11
13
12
-
ChannelFinder tries to overcome this limitation by implementing a generic directory service, which applications can query for a list of channels that match certain conditions, such as physical functionality or location. It also provides mechanisms to create channel name aliases, allowing for different perspectives of the same set of channel names.
14
+
High level applications tend to prefer a hierarchical view of the control system name space. They group channel names
15
+
by location or physical function. The name space of the EPICS Channel Access protocol, on the other hand, is flat. A
16
+
good and thoroughly enforced naming convention may solve the problem of creating unique predictable names. It does not
17
+
free every application from being configured explicitly, so that it knows all channel names it might be interested in
18
+
beforehand.
13
19
14
-
* Directory Data Structure
20
+
ChannelFinder tries to overcome this limitation by implementing a generic directory service, which applications can
21
+
query for a list of channels that match certain conditions, such as physical functionality or location. It also
22
+
provides mechanisms to create channel name aliases, allowing for different perspectives of the same set of channel
23
+
names.
15
24
16
-
Each directory entry consists of a channel `<name>`, an arbitrary set of `<properties>` (name-value pairs), and an arbitrary set of `<tags>` (names).
25
+
***Directory Data Structure**
17
26
18
-
* Basic Operation
27
+
Each directory entry consists of a channel `<name>`, an arbitrary set of `<properties>` (name-value pairs), and an
28
+
arbitrary set of `<tags>` (names).
19
29
20
-
An application sends an HTTP query to the service, specifying an expression that references tags, properties and their values, or channel names. The service returns a list of matching channels with their properties and tags, as JSON documents.
30
+
***Basic Operation**
21
31
32
+
An application sends an HTTP query to the service, specifying an expression that references tags, properties and their
33
+
values, or channel names. The service returns a list of matching channels with their properties and tags, as JSON
34
+
documents.
22
35
23
-
#### API reference guide
36
+
##Installation
24
37
25
-
https://channelfinder.readthedocs.io/en/latest/
38
+
ChannelFinder is a Java EE5 REST-style web service. The directory data is held in a ElasticSearch index.
26
39
27
-
#### Installation
40
+
###Docker Compose
28
41
29
-
ChannelFinder is a Java EE5 REST-style web service. The directory data is held in a ElasticSearch index.
42
+
For using docker containers there is a barebones [docker compose file](./docker-compose.yml).
30
43
31
-
Collected installation recipes and notes may be found on [wiki pages](https://github.com/ChannelFinder/ChannelFinder-SpringBoot/wiki).
44
+
### Manual Installation
32
45
33
46
* Prerequisites
34
47
35
-
* JDK 17
36
-
* Elastic version 8.2.x
37
-
* <For authN/authZ using LDAP:> LDAP server, e.g. OpenLDAP
38
-
39
-
* setup elastic search
40
-
**Install**
41
-
Download and install elasticsearch (verision 8.2.0) from [elastic.com](https://www.elastic.co/downloads/past-releases/elasticsearch-8-2-0)
42
-
following the instructions for your platform.\
43
-
<Alternatively:> Install the elastic server from your distribution using a package manager.
* Maven (via package manager or via the wrapper `./mvnw`) (version specified
103
+
in [the wrapper properties](./.mvn/wrapper/maven-wrapper.properties))
132
104
133
-
You can also start up channelfinder with demo data using the command line argument `demo-data` followed by an integer number `n`. For example, `--demo-data=n`. With this argument, `n*1500` channels will be created to simulate some of the most common types of devices found in accelerators like magnets, power supplies, etc...
105
+
For the following commands `mvn` can be interchangeably used instead via `./mvnw`
To run the server in development (you need a running version of Elasticsearch)
120
+
121
+
```bash
122
+
mvn spring-boot:run
143
123
```
144
124
145
-
####Integration tests with Docker containers
125
+
### Integration tests with Docker containers
146
126
147
127
Purpose is to have integration tests for ChannelFinder API with Docker.
148
128
149
129
See `src/test/java` and package
130
+
150
131
*`org.phoebus.channelfinder.docker`
151
132
152
-
Integration tests start docker containers for ChannelFinder and Elasticsearch and run http requests (GET) and curl commands (POST, PUT, DELETE) towards the application to test behavior (read, list, query, create, update, remove) and replies are received and checked if content is as expected.
133
+
Integration tests start docker containers for ChannelFinder and Elasticsearch and run http requests (GET, POST, PUT,
134
+
DELETE) towards the application to test behavior (read, list, query, create, update, remove) and
135
+
replies are received and checked if content is as expected.
153
136
154
137
There are tests for properties, tags and channels separately and in combination.
155
138
@@ -159,42 +142,50 @@ Integration tests can be run in IDE and via Maven.
159
142
mvn failsafe:integration-test -DskipITs=false
160
143
```
161
144
162
-
See
145
+
See also
146
+
163
147
*[How to run Integration test with Docker](src/test/resources/INTEGRATIONTEST_DOCKER_RUN.md)
164
148
*[Tutorial for Integration test with Docker](src/test/resources/INTEGRATIONTEST_DOCKER_TUTORIAL.md)
165
149
166
-
#### ChannelFinder data managment
167
-
168
-
The [cf-manager](https://github.com/ChannelFinder/cf-manager) project provides tools to perform operations on large queries ( potentially the entire directory ).
169
-
Some examples of these operations include running checks to validate the pv names or producing reports about the number of active PVs, a list of IOC names, etc..
170
-
171
150
### Release ChannelFinder Server binaries to maven central
172
151
173
-
The Phoebus ChannelFinder service uses the maven release plugin to prepare the publish the ChannelFinder server binaries to maven central
152
+
The Phoebus ChannelFinder service uses the maven release plugin to prepare the publish the ChannelFinder server binaries
153
+
to maven central
174
154
using the sonatype repositories.
175
155
176
-
**Setup**
156
+
#### Setup
177
157
178
158
Create a sonatype account and update the maven settings.xml file with your sonatype credentials
179
159
160
+
```xml
161
+
<servers>
162
+
<server>
163
+
<id>phoebus-releases</id>
164
+
<username>username</username>
165
+
<password>*******</password>
166
+
</server>
167
+
</servers>
180
168
```
181
-
<servers>
182
-
<server>
183
-
<id>phoebus-releases</id>
184
-
<username>shroffk</username>
185
-
<password>*******</password>
186
-
</server>
187
-
</servers>
188
-
```
189
169
190
-
**Prepare the release**
191
-
`mvn release:prepare`
170
+
#### Prepare the release
171
+
172
+
```bash
173
+
mvn release:prepare
174
+
```
175
+
192
176
In this step will ensure there are no uncommitted changes, ensure the versions number are correct, tag the scm, etc..
193
-
A full list of checks is documented [here](https://maven.apache.org/maven-release/maven-release-plugin/examples/prepare-release.html):
0 commit comments