You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rya.apache.org by pu...@apache.org on 2018/03/09 18:20:58 UTC
[12/22] incubator-rya git commit: RYA-446 Create a bin and rpm
distribution for the Rya Streams Query Manager application.
RYA-446 Create a bin and rpm distribution for the Rya Streams Query Manager application.
Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/3b05a0b7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/3b05a0b7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/3b05a0b7
Branch: refs/heads/master
Commit: 3b05a0b76cdef5ba38503a2d174d81b9bfe044d7
Parents: 16202ac
Author: kchilton2 <ke...@gmail.com>
Authored: Thu Jan 25 17:19:58 2018 -0500
Committer: Valiyil <Pu...@parsons.com>
Committed: Fri Mar 9 12:59:50 2018 -0500
----------------------------------------------------------------------
extras/rya.streams/query-manager/pom.xml | 131 ++++++++++++++++++-
.../src/assembly/binary-release.xml | 30 +++++
.../src/assembly/component-release.xml | 71 ++++++++++
.../query-manager/src/assembly/rpm-staging.xml | 31 +++++
.../query-manager/src/main/README.txt | 55 ++++++++
.../query-manager/src/main/config/log4j.xml | 36 +++++
.../main/scripts/rya-streams-query-manager.sh | 104 +++++++++++++++
.../systemd/rya-streams-query-manager.service | 29 ++++
8 files changed, 484 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/3b05a0b7/extras/rya.streams/query-manager/pom.xml
----------------------------------------------------------------------
diff --git a/extras/rya.streams/query-manager/pom.xml b/extras/rya.streams/query-manager/pom.xml
index deaccdb..e459814 100644
--- a/extras/rya.streams/query-manager/pom.xml
+++ b/extras/rya.streams/query-manager/pom.xml
@@ -33,6 +33,10 @@ under the License.
This module contains the Rya Streams Query Manager.
</description>
+ <properties>
+ <rpm.staging.path>${project.build.directory}/${project.artifactId}-${project.version}-rpm-staging</rpm.staging.path>
+ </properties>
+
<dependencies>
<!-- Rya dependencies -->
<dependency>
@@ -46,7 +50,10 @@ under the License.
<artifactId>commons-daemon</artifactId>
<version>1.1.0</version>
</dependency>
-
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
@@ -97,7 +104,7 @@ under the License.
</configuration>
</plugin>
- <!-- Ensure the generated java source contains the lisence header. -->
+ <!-- Ensure the generated java source contains the license header. -->
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
@@ -121,6 +128,7 @@ under the License.
</executions>
</plugin>
+ <!-- Create a shaded jar that is able to execute the Daemon. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
@@ -141,6 +149,123 @@ under the License.
</execution>
</executions>
</plugin>
+
+ <!-- Use the assembly plugin to create the binary and RPM distributions. -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <!-- The binary distribution of Rya Streams Query Manager. -->
+ <execution>
+ <id>create-binary-distribution</id>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <tarLongFileMode>gnu</tarLongFileMode>
+ <descriptors>
+ <descriptor>src/assembly/binary-release.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+
+ <!-- Stage the files for the RPM construction. -->
+ <execution>
+ <id>stage-content-for-rpms</id>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <!-- This is only staging, so don't attach the built folder to the project. -->
+ <attach>false</attach>
+ <descriptors>
+ <descriptor>src/assembly/rpm-staging.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>rpm-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>set-rpm-properties</id>
+ <goals>
+ <goal>version</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>create-rpm-distribution</id>
+ <goals>
+ <goal>attached-rpm</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <group>${project.groupId}</group>
+ <name>${project.artifactId}</name>
+ <classifier>noarch</classifier>
+ <defaultUsername>root</defaultUsername>
+ <defaultGroupname>root</defaultGroupname>
+ <defaultDirmode>755</defaultDirmode>
+ <defaultFilemode>644</defaultFilemode>
+
+ <!-- This project requires the Apache Commons Daemon applications. -->
+ <requires>
+ <require>jsvc</require>
+ </requires>
+
+ <mappings>
+ <!-- Copy everything over to the /opt directory, except for the scripts. -->
+ <mapping>
+ <directory>/opt/rya-streams-query-manager-${rpm.version}</directory>
+ <sources>
+ <!-- Copy over everything exception for the executable script. -->
+ <source>
+ <location>${rpm.staging.path}</location>
+ <includes>
+ <include>bin/systemd/rya-streams-query-manager.service</include>
+ <include>config/*</include>
+ <include>lib/*</include>
+ <include>README.txt</include>
+ </includes>
+ </source>
+ </sources>
+ </mapping>
+
+ <!-- Copy over the scripts with the correct execution permissions. -->
+ <mapping>
+ <directory>/opt/rya-streams-query-manager-${rpm.version}/bin</directory>
+ <directoryIncluded>false</directoryIncluded>
+ <filemode>554</filemode>
+ <sources>
+ <source>
+ <location>${rpm.staging.path}/bin</location>
+ <includes>
+ <include>rya-streams-query-manager.sh</include>
+ </includes>
+ </source>
+ </sources>
+ </mapping>
+
+ <!-- Symbolic link the service file after it has been copied over. -->
+ <mapping>
+ <directory>/etc/systemd/system/</directory>
+ <sources>
+ <softlinkSource>
+ <location>/opt/rya-streams-query-manager-${rpm.version}/bin/systemd/rya-streams-query-manager.service</location>
+ <destination>rya-streams-query-manager.service</destination>
+ </softlinkSource>
+ </sources>
+ </mapping>
+ </mappings>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
-</project>
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/3b05a0b7/extras/rya.streams/query-manager/src/assembly/binary-release.xml
----------------------------------------------------------------------
diff --git a/extras/rya.streams/query-manager/src/assembly/binary-release.xml b/extras/rya.streams/query-manager/src/assembly/binary-release.xml
new file mode 100644
index 0000000..07e2de0
--- /dev/null
+++ b/extras/rya.streams/query-manager/src/assembly/binary-release.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
+ <id>bin</id>
+ <formats>
+ <format>tar.gz</format>
+ </formats>
+ <componentDescriptors>
+ <componentDescriptor>src/assembly/component-release.xml</componentDescriptor>
+ </componentDescriptors>
+</assembly>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/3b05a0b7/extras/rya.streams/query-manager/src/assembly/component-release.xml
----------------------------------------------------------------------
diff --git a/extras/rya.streams/query-manager/src/assembly/component-release.xml b/extras/rya.streams/query-manager/src/assembly/component-release.xml
new file mode 100644
index 0000000..f68d53d
--- /dev/null
+++ b/extras/rya.streams/query-manager/src/assembly/component-release.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<component xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/component/1.1.3"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/component/1.1.3 http://maven.apache.org/xsd/component-1.1.3.xsd">
+
+ <!-- Define the files that will be included in the distribution. -->
+ <fileSets>
+ <!-- Configuration files. -->
+ <fileSet>
+ <directory>src/main/config</directory>
+ <outputDirectory>config</outputDirectory>
+ <lineEnding>unix</lineEnding>
+ </fileSet>
+
+ <!-- Linux Scripts. -->
+ <fileSet>
+ <directory>src/main/scripts</directory>
+ <outputDirectory>bin</outputDirectory>
+ <lineEnding>unix</lineEnding>
+ <filtered>true</filtered>
+ </fileSet>
+
+ <!-- The README.txt file. -->
+ <fileSet>
+ <directory>src/main</directory>
+ <outputDirectory></outputDirectory>
+ <includes>
+ <include>README.txt</include>
+ </includes>
+ <lineEnding>unix</lineEnding>
+ <filtered>true</filtered>
+ </fileSet>
+
+ <!-- The shaded jar that is executed to run the program. -->
+ <fileSet>
+ <directory>${project.build.directory}</directory>
+ <outputDirectory>lib</outputDirectory>
+ <includes>
+ <include>${project.artifactId}-${project.version}-shaded.jar</include>
+ </includes>
+ </fileSet>
+ </fileSets>
+
+ <!-- The commons-daemon jar file. -->
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>lib</outputDirectory>
+ <includes>
+ <include>commons-daemon:commons-daemon</include>
+ </includes>
+ </dependencySet>
+ </dependencySets>
+</component>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/3b05a0b7/extras/rya.streams/query-manager/src/assembly/rpm-staging.xml
----------------------------------------------------------------------
diff --git a/extras/rya.streams/query-manager/src/assembly/rpm-staging.xml b/extras/rya.streams/query-manager/src/assembly/rpm-staging.xml
new file mode 100644
index 0000000..09b3bf2
--- /dev/null
+++ b/extras/rya.streams/query-manager/src/assembly/rpm-staging.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
+ <id>rpm-staging</id>
+ <formats>
+ <format>dir</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <componentDescriptors>
+ <componentDescriptor>src/assembly/component-release.xml</componentDescriptor>
+ </componentDescriptors>
+</assembly>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/3b05a0b7/extras/rya.streams/query-manager/src/main/README.txt
----------------------------------------------------------------------
diff --git a/extras/rya.streams/query-manager/src/main/README.txt b/extras/rya.streams/query-manager/src/main/README.txt
new file mode 100644
index 0000000..03f9c01
--- /dev/null
+++ b/extras/rya.streams/query-manager/src/main/README.txt
@@ -0,0 +1,55 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+Project: rya-streams-query-manager
+Version: ${project.version}
+
+### Description ###
+The Rya Streams Query Manager daemon service is an application that notices
+when new Rya instances are registered to use Rya Streams and then reacts to
+query create/delete/start/stop requests. Users may use the Rya Shell to issue
+those commands.
+
+This version of the manager only supports Kafka sources and it runs every query
+as a single threaded Kafka Streams job. All of the queries are processed within
+a single JVM, so it is only suitable for a single node instance of Rya. This
+version does not scale.
+
+### Requirements ###
+CentOS 7
+JSVC
+Java 8
+
+### Installation ###
+ 1. Copy over the RPM to the machine that will run the daemon.
+
+ 2. Use yum to install the RPM:
+ yum install -y ${project.artifactId}-${project.version}.noarch.rpm
+
+ 3. Update the configuration file:
+ Replace "[Kafka Broker Hostname]" with the IP address of the Kafka broker.
+ Replace "[Kafka Broker Port]" with the port of the Kafka broker (usually 9092)
+
+ 4. Start the service:
+ systemctl start rya-streams-query-manager
+
+### Uninstallation ###
+ 1. Get the name of the RPM you want to uninstall:
+ rpm -qa | grep rya.streams.query-manager
+
+ 2. Uninstall it:
+ rpm -e <the value from the last command here>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/3b05a0b7/extras/rya.streams/query-manager/src/main/config/log4j.xml
----------------------------------------------------------------------
diff --git a/extras/rya.streams/query-manager/src/main/config/log4j.xml b/extras/rya.streams/query-manager/src/main/config/log4j.xml
new file mode 100644
index 0000000..2021638
--- /dev/null
+++ b/extras/rya.streams/query-manager/src/main/config/log4j.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration debug="true"
+ xmlns:log4j='http://jakarta.apache.org/log4j/'>
+
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern"
+ value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
+ </layout>
+ </appender>
+
+ <root>
+ <level value="INFO" />
+ <appender-ref ref="console" />
+ </root>
+
+</log4j:configuration>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/3b05a0b7/extras/rya.streams/query-manager/src/main/scripts/rya-streams-query-manager.sh
----------------------------------------------------------------------
diff --git a/extras/rya.streams/query-manager/src/main/scripts/rya-streams-query-manager.sh b/extras/rya.streams/query-manager/src/main/scripts/rya-streams-query-manager.sh
new file mode 100644
index 0000000..daa1ae5
--- /dev/null
+++ b/extras/rya.streams/query-manager/src/main/scripts/rya-streams-query-manager.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+NAME=rya-streams-query-manager
+DESC="Rya Streams Query Manager Daemon service"
+
+# The path to JSVC
+EXEC="/usr/bin/jsvc"
+
+# Get the parent directory of the dir this script resides within.
+PROJECT_HOME=$(dirname $(cd $(dirname $0) && pwd))
+
+# This classpath must contain the commons-daemon jar as well as the jar we're executing.
+CLASS_PATH="$PROJECT_HOME/lib/commons-daemon-1.1.0.jar:$PROJECT_HOME/lib/${project.artifactId}-${project.version}-shaded.jar:$PROJECT_HOME/config/log4j.xml"
+
+# The fully qualified name of the class to execute. This class must implement the Daemon interface.
+DAEMON_CLASS=org.apache.rya.streams.querymanager.QueryManagerDaemon
+
+# The PID file that indicates if rya-streams-query-manager is running.
+PID="/var/run/$NAME.pid"
+
+# System.out writes to this file...
+LOG_OUT="$PROJECT_HOME/logs/$NAME.out"
+
+# System.err writes to this file...
+LOG_ERR="$PROJECT_HOME/logs/$NAME.err"
+
+start ()
+{
+ if [ -f "$PID" ]
+ then
+ echo "The $DESC is already running."
+ exit 1
+ else
+ echo "Starting the $DESC."
+ $EXEC -cp $CLASS_PATH -user root -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $DAEMON_CLASS \
+ -c "$PROJECT_HOME/config/configuration.xml"
+ fi
+}
+
+stop ()
+{
+ if [ -f "$PID" ]
+ then
+ echo "Stopping the $DESC."
+ $EXEC -cp $CLASS_PATH -user root -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID -stop $DAEMON_CLASS
+ else
+ echo "The $DESC is already stopped."
+ fi
+}
+
+status ()
+{
+ if [ -f "$PID" ]
+ then
+ echo "The $DESC is running."
+ else
+ echo "The $DESC is stopped."
+ fi
+}
+
+restart ()
+{
+ echo "Restarting the $DESC..."
+ if [ -f "$PID" ]; then
+ # Stop the service
+ stop
+ fi
+
+ # Start the service
+ start
+ echo "The $DESC has restarted."
+}
+
+usage ()
+{
+ echo "usage: rya-streams-query-manager.sh (start|stop|status|restart)"
+ exit 1
+}
+
+case "$1" in
+ start) start ;;
+ stop) stop ;;
+ status) status ;;
+ restart) restart ;;
+ *) usage ;;
+esac
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/3b05a0b7/extras/rya.streams/query-manager/src/main/scripts/systemd/rya-streams-query-manager.service
----------------------------------------------------------------------
diff --git a/extras/rya.streams/query-manager/src/main/scripts/systemd/rya-streams-query-manager.service b/extras/rya.streams/query-manager/src/main/scripts/systemd/rya-streams-query-manager.service
new file mode 100644
index 0000000..0ec41c5
--- /dev/null
+++ b/extras/rya.streams/query-manager/src/main/scripts/systemd/rya-streams-query-manager.service
@@ -0,0 +1,29 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+TODO This will be the service file installed to CentOS 7 for systemd integration.
+
+[Units]
+TODO
+
+[Service]
+TODO
+
+[Install]
+TODO
\ No newline at end of file