diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 654f3f0..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-target/
-work/
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 75b5248..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed 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.
diff --git a/README b/README
deleted file mode 100644
index 764b72f..0000000
--- a/README
+++ /dev/null
@@ -1,44 +0,0 @@
-This is a Jenkins plugin that will publish Jenkins Job run events
-(start, complete, finish) to a ZMQ PUB socket. By default the PUB
-socket is on TCP port 8888 and no Job events will be published.
-You can choose to enable event publishing for all jobs in the
-Jenkins' global config or enable the plugin on a per job basis.
-
-This plugin uses jeromq to satisfy the dependency on ZMQ. It is
-possible to use jzmq instead if you need the features that jeromq
-is lacking; however, it is a pain to get jzmq built and is less
-portable. If you really really want jzmq look back in the git
-history and you will find the old versions of this plugin that
-depended on jzmq.
-
-TODO:
-- Avoid reading in the global config for each event if possible.
-- Need to allow ZMQRunnable thread to die if something truly
- unexpected happens. The RunListener should then start a new
- DaemonThread to handle further events.
-- Cleanup config.jelly for the non global Job config.
-
-This plugin borrows heavily from the Jenkins Notification Plugin
-https://github.com/jenkinsci/notification-plugin. That plugin
-does much of the same work and where applicable I have gone the
-easy route and copied the work they have done.
-
-Contributing
-------------
-
-To browse the latest code, see:
-https://git.openstack.org/cgit/openstack-infra/zmq-event-publisher/tree/
-To clone the latest code, use
-`git clone https://git.openstack.org/openstack-infra/zmq-event-publisher`
-
-Bugs are handled at: https://storyboard.openstack.org/#!/project/750
-
-Code reviews are handled by gerrit. The gerrit in
-use is http://review.openstack.org
-
-Use `git review` to submit patches (after creating a gerrit account that
-links to your launchpad account). Example::
-
- # Do your commits
- $ git review
- # Enter your username if prompted
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..86e34d6
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,10 @@
+This project is no longer maintained.
+
+The contents of this repository are still available in the Git
+source code management system. To see the contents of this
+repository before it reached its end of life, please check out the
+previous commit with "git checkout HEAD^1".
+
+For any further questions, please email
+openstack-discuss@lists.openstack.org or join #openstack-dev on
+Freenode.
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index dcdcee6..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,337 +0,0 @@
-
-
-
-
-
-
-
-
- 4.0.0
-
-
- org.jenkins-ci.plugins
- plugin
- 1.460
-
-
- org.jenkins-ci.plugins
- zmq-event-publisher
- hpi
- ${project-version}
-
- Jenkins Event Publisher (via ZMQ PUB SUB)
- https://wiki.jenkins-ci.org/display/JENKINS/ZMQ+Event+Publisher+Plugin
-
-
-
- Apache License, Version 2.0
- http://git.openstack.org/cgit/openstack-infra/zmq-event-publisher/tree/LICENSE
- repo
-
-
-
-
-
- clarkb
- Clark Boylan
- clark.boylan@gmail.com
-
-
-
-
-
- repo.jenkins-ci.org
- http://repo.jenkins-ci.org/public/
-
-
-
-
-
- com.google.code.gson
- gson
- 1.4
-
-
- org.jeromq
- jeromq
- 0.2.0
-
-
-
-
-
- Windows
-
-
- windows
-
-
-
- Windows
-
-
-
-
-
-
- repo.jenkins-ci.org
- http://repo.jenkins-ci.org/public/
-
-
-
-
-
- java.net-m2-repository
- http://maven.jenkins-ci.org/content/repositories/releases/
-
-
- github-project-site
- gitsite:git@github.com/jenkinsci/hello-world-plugin
-
-
-
-
- ${os.name}
-
- UTF-8
- 1.6
-
- 3.0.1
- 1.6
- 2.2
- 2.2
- 2.6
- 2.4.1
- 2.3.2
- 2.1
- 2.5
- 1.0
- 2.8
- 1.0
- 2.1.1
- 2.3.1
- 2.7
- 2.3.1
- 6.1.26
- 2.2
- 2.5
- 2.3.1
- 2.4.3
- 1.0
- 2.1
- 1.1
- 2.4.3
- 2.1.1
- 2.1.2
- 2.7.2
- 2.7.2
- 2.1.1
- 1.0-alpha-4
- 1.4
- 1.0-beta-4
- 1.5
- 1.0.5
- 2.4
- 1.2
- 2.3.1
- 2.1.0-1
- 2.0
- 2.0-beta-2
- 1.2
- 2.4
- 1.2
- 1.0-beta-3
-
-
-
-
-
-
- maven-clean-plugin
- ${maven-clean-plugin.version}
-
-
- maven-compiler-plugin
- ${maven-compiler-plugin.version}
-
-
- ${compileTarget}
- true
- true
-
-
-
- maven-deploy-plugin
- ${maven-deploy-plugin.version}
-
-
- maven-enforcer-plugin
- ${maven-enforcer-plugin.version}
-
-
- maven-install-plugin
- ${maven-install-plugin.version}
-
-
- maven-jar-plugin
- ${maven-jar-plugin.version}
-
-
- maven-release-plugin
- ${maven-release-plugin.version}
-
- true
- true
- clean deploy
- clean deploy
- release
-
-
-
- maven-remote-resources-plugin
- ${maven-remote-resources-plugin.version}
-
-
- maven-resources-plugin
- ${maven-resources-plugin.version}
-
-
- maven-site-plugin
- ${maven-site-plugin.version}
-
-
- maven-source-plugin
- ${maven-source-plugin.version}
-
-
- maven-surefire-plugin
- ${maven-surefire-plugin.version}
-
- methods
- true
- 4
-
-
-
-
-
-
- maven-doap-plugin
- ${maven-doap-plugin.version}
-
-
- site
- pre-site
-
- generate
-
-
-
-
- ${project.reporting.outputDirectory}/doap.rdf
-
- false
-
-
-
-
- maven-site-plugin
- ${maven-site-plugin.version}
-
-
-
-
-
-
-
- maven-changelog-plugin
- ${maven-changelog-plugin.version}
-
-
- maven-checkstyle-plugin
- ${maven-checkstyle-plugin.version}
-
-
- maven-javadoc-plugin
- ${maven-javadoc-plugin.version}
-
-
- maven-jxr-plugin
- ${maven-jxr-plugin.version}
-
-
- maven-pmd-plugin
- ${maven-pmd-plugin.version}
-
-
- maven-plugin-plugin
- ${maven-plugin-plugin.version}
-
-
- maven-project-info-reports-plugin
- ${maven-project-info-reports-plugin.version}
-
-
-
- cim
- distribution-management
- index
- issue-tracking
- license
- mailing-list
- project-team
- summary
-
-
-
-
-
- maven-surefire-report-plugin
- ${maven-surefire-report-plugin.version}
-
-
- org.codehaus.mojo
- cobertura-maven-plugin
- ${cobertura-maven-plugin.version}
-
-
- org.codehaus.mojo
- findbugs-maven-plugin
- ${findbugs-maven-plugin.version}
-
-
- org.codehaus.mojo
- javancss-maven-plugin
- ${javancss-maven-plugin.version}
-
-
- org.codehaus.mojo
- jdepend-maven-plugin
- ${jdepend-maven-plugin.version}
-
-
- org.codehaus.mojo
- taglist-maven-plugin
- ${taglist-maven-plugin.version}
-
-
-
-
-
-
diff --git a/run-fast b/run-fast
deleted file mode 100755
index 4a22fcb..0000000
--- a/run-fast
+++ /dev/null
@@ -1,2 +0,0 @@
-rm -rf work/plugins
-mvn -Dmaven.test.skip=true -DskipTests=true clean hpi:run
diff --git a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/HudsonNotificationProperty.java b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/HudsonNotificationProperty.java
deleted file mode 100644
index b3e347e..0000000
--- a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/HudsonNotificationProperty.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2013 Hewlett-Packard Development Company, L.P.
- * Copyright Authors of the Jenkins Notification Plugin
- *
- * Licensed 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.
- */
-package org.jenkinsci.plugins.ZMQEventPublisher;
-
-import hudson.Extension;
-import hudson.model.Job;
-import hudson.model.JobProperty;
-import hudson.model.JobPropertyDescriptor;
-import hudson.model.AbstractProject;
-
-import net.sf.json.JSONObject;
-
-import org.kohsuke.stapler.DataBoundConstructor;
-import org.kohsuke.stapler.StaplerRequest;
-
-public class HudsonNotificationProperty extends
- JobProperty> {
-
- final public boolean enabled;
-
- @DataBoundConstructor
- public HudsonNotificationProperty(boolean enabled) {
- this.enabled = enabled;
- }
-
- public boolean isEnabled() {
- return enabled;
- }
-
- @Override
- public HudsonNotificationPropertyDescriptor getDescriptor() {
- return (HudsonNotificationPropertyDescriptor) super.getDescriptor();
- }
-
- @Extension
- public static final class HudsonNotificationPropertyDescriptor extends JobPropertyDescriptor {
-
- private boolean globallyEnabled;
- private int port;
-
- public HudsonNotificationPropertyDescriptor() {
- globallyEnabled = false;
- port = 8888;
- load();
- }
-
- @Override
- public boolean isApplicable(@SuppressWarnings("rawtypes") Class extends Job> jobType) {
- return true;
- }
-
- public String getDisplayName() {
- return "Jenkins ZMQ Event Publisher";
- }
-
- @Override
- public boolean configure(StaplerRequest staplerRequest, JSONObject json) throws FormException {
- globallyEnabled = json.getBoolean("globallyEnabled");
- port = json.getInt("port");
- save();
- return true;
- }
-
- public boolean isGloballyEnabled() {
- return globallyEnabled;
- }
-
- public int getPort() {
- return port;
- }
- }
-}
diff --git a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/Phase.java b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/Phase.java
deleted file mode 100644
index fe36f65..0000000
--- a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/Phase.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright 2013 Hewlett-Packard Development Company, L.P.
- * Copyright Authors of the Jenkins Notification Plugin
- *
- * Licensed 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.
- */
-package org.jenkinsci.plugins.ZMQEventPublisher;
-
-import hudson.EnvVars;
-import hudson.model.AbstractBuild;
-import hudson.model.Job;
-import hudson.model.ParameterValue;
-import hudson.model.ParametersAction;
-import hudson.model.Run;
-import hudson.model.Executor;
-import hudson.model.Computer;
-import hudson.model.Node;
-import hudson.model.TaskListener;
-import jenkins.model.Jenkins;
-
-import com.google.gson.FieldNamingPolicy;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-import org.jenkinsci.plugins.ZMQEventPublisher.model.BuildState;
-import org.jenkinsci.plugins.ZMQEventPublisher.model.JobState;
-
-public enum Phase {
- STARTED, COMPLETED, FINISHED;
-
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public String handlePhase(Run run, String status, String masterName, TaskListener listener) {
- Jenkins jenkins = Jenkins.getInstance();
- HudsonNotificationProperty property = (HudsonNotificationProperty)
- run.getParent().getProperty(HudsonNotificationProperty.class);
- HudsonNotificationProperty.HudsonNotificationPropertyDescriptor globalProperty =
- (HudsonNotificationProperty.HudsonNotificationPropertyDescriptor)
- jenkins.getDescriptor(HudsonNotificationProperty.class);
- if ((property != null && property.isEnabled()) ||
- (globalProperty != null && globalProperty.isGloballyEnabled())) {
- return buildMessage(run.getParent(), run, status, masterName);
- }
- return null;
- }
-
- private Gson gson = new GsonBuilder().setFieldNamingPolicy(
- FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
-
- private String buildMessage(Job job, Run run, String status, String masterName) {
- JobState jobState = new JobState();
- jobState.setName(job.getName());
- jobState.setUrl(job.getUrl());
- BuildState buildState = new BuildState();
- buildState.setNumber(run.number);
- buildState.setUrl(run.getUrl());
- buildState.setPhase(this);
- buildState.setStatus(status);
-
- Jenkins jenkins = Jenkins.getInstance();
- String rootUrl = jenkins.getRootUrl();
- if (rootUrl != null) {
- buildState.setFullUrl(rootUrl + run.getUrl());
- }
- if (masterName != null) {
- buildState.setHostName(masterName);
- }
-
- Executor executor = run.getExecutor();
- if (executor != null) {
- Computer computer = executor.getOwner();
- if (computer != null) {
- buildState.setNodeName(computer.getName());
- Node node = computer.getNode();
- if (node != null) {
- buildState.setNodeDescription(node.getNodeDescription());
- }
- }
- }
-
- jobState.setBuild(buildState);
-
- ParametersAction paramsAction = run.getAction(ParametersAction.class);
- if (paramsAction != null && run instanceof AbstractBuild) {
- AbstractBuild build = (AbstractBuild) run;
- EnvVars env = new EnvVars();
- for (ParameterValue value : paramsAction.getParameters())
- if (!value.isSensitive())
- value.buildEnvVars(build, env);
- buildState.setParameters(env);
- }
-
- return gson.toJson(jobState);
- }
-}
diff --git a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/RunListenerImpl.java b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/RunListenerImpl.java
deleted file mode 100644
index e630cc5..0000000
--- a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/RunListenerImpl.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright 2013 Hewlett-Packard Development Company, L.P.
- * Copyright Authors of the Jenkins Notification Plugin
- *
- * Licensed 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.
- */
-
-package org.jenkinsci.plugins.ZMQEventPublisher;
-
-import hudson.Extension;
-import hudson.model.Computer;
-import hudson.model.Result;
-import hudson.model.Run;
-import hudson.model.TaskListener;
-import hudson.model.listeners.RunListener;
-import hudson.util.DaemonThreadFactory;
-
-import jenkins.model.Jenkins;
-
-import java.net.InetAddress;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/*
- * Listener to publish Jenkins build events through ZMQ
- */
-@Extension
-public class RunListenerImpl extends RunListener {
- public static final Logger LOGGER =
- Logger.getLogger(RunListenerImpl.class.getName());
- private final LinkedBlockingQueue queue =
- new LinkedBlockingQueue(queueLength);
- // ZMQ has a high water mark of 1000 events.
- private static final int queueLength = 1024;
- private static final DaemonThreadFactory threadFactory =
- new DaemonThreadFactory();
- private ZMQRunnable ZMQRunner;
- private Thread thread;
- private String masterName;
-
- public RunListenerImpl() {
- super(Run.class);
- ZMQRunner = new ZMQRunnable(queue);
- thread = threadFactory.newThread(ZMQRunner);
- thread.start();
-
- Computer master = null;
- String hostname = null;
- // query Jenkins for master's name
- try {
- master = Jenkins.getInstance().getComputer("");
- if (master != null) {
- hostname = master.getHostName();
- }
- else {
- // master node may not be enabled so get masterName from system
- hostname = java.net.InetAddress.getLocalHost().getHostName();
- }
- } catch (Exception e) {
- }
- masterName = hostname;
- }
-
- @Override
- public void onCompleted(Run build, TaskListener listener) {
- String event = "onCompleted";
- String json = Phase.COMPLETED.handlePhase(build, getStatus(build), masterName, listener);
- sendEvent(event, json);
- }
-
- /* Currently not emitting onDeleted events. This should be fixed.
- @Override
- public void onDeleted(Run build) {
- String update = String.format("onDeleted");
- bindSocket(build);
- publisher.send(update.getBytes(), 0);
- }
- */
-
- @Override
- public void onFinalized(Run build) {
- String event = "onFinalized";
- String json = Phase.FINISHED.handlePhase(build, getStatus(build), masterName, TaskListener.NULL);
- sendEvent(event, json);
- }
-
- @Override
- public void onStarted(Run build, TaskListener listener) {
- String event = "onStarted";
- String json = Phase.STARTED.handlePhase(build, getStatus(build), masterName, listener);
- sendEvent(event, json);
- }
-
- private void sendEvent(String event, String json) {
- if (json != null) {
- event = event + " " + json;
- // Offer the event. If the queue is full this will not block.
- // We may drop events but this should prevent starvation in
- // the calling Jenkins threads.
- if (!queue.offer(event)) {
- LOGGER.log(Level.INFO,
- "Unable to add event to ZMQ queue.");
- }
- }
- }
-
- private String getStatus(Run r) {
- Result result = r.getResult();
- String status = null;
- if (result != null) {
- status = result.toString();
- }
- return status;
- }
-}
diff --git a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/ZMQRunnable.java b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/ZMQRunnable.java
deleted file mode 100644
index 7e54276..0000000
--- a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/ZMQRunnable.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2013 Hewlett-Packard Development Company, L.P.
- *
- * Licensed 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.
- */
-
-package org.jenkinsci.plugins.ZMQEventPublisher;
-
-import jenkins.model.Jenkins;
-
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import org.jeromq.ZMQ;
-import org.jeromq.ZMQException;
-
-public class ZMQRunnable implements Runnable {
- public static final Logger LOGGER = Logger.getLogger(ZMQRunnable.class.getName());
-
- private static final String bind_addr = "tcp://*:%d";
- private int port;
-
- private final LinkedBlockingQueue queue;
- private final ZMQ.Context context;
- private ZMQ.Socket publisher;
-
- public ZMQRunnable(LinkedBlockingQueue queue) {
- this.queue = queue;
- context = ZMQ.context(1);
- bindSocket();
- }
-
- private int getPort() {
- Jenkins jenkins = Jenkins.getInstance();
- HudsonNotificationProperty.HudsonNotificationPropertyDescriptor globalProperty =
- (HudsonNotificationProperty.HudsonNotificationPropertyDescriptor)
- jenkins.getDescriptor(HudsonNotificationProperty.class);
- if (globalProperty != null) {
- return globalProperty.getPort();
- }
- return 8888;
- }
-
- private void bindSocket() {
- int tmpPort = getPort();
- if (publisher == null) {
- port = tmpPort;
- LOGGER.log(Level.INFO,
- String.format("Binding ZMQ PUB to port %d", port));
- publisher = bindSocket(port);
- }
- else if (tmpPort != port) {
- LOGGER.log(Level.INFO,
- String.format("Changing ZMQ PUB port from %d to %d", port, tmpPort));
- try {
- publisher.close();
- } catch (ZMQException e) {
- /* Let the garbage collector sort out cleanup */
- LOGGER.log(Level.INFO,
- "Unable to close ZMQ PUB socket. " + e.toString(), e);
- }
- port = tmpPort;
- publisher = bindSocket(port);
- }
- }
-
- private ZMQ.Socket bindSocket(int port) {
- ZMQ.Socket socket;
- try {
- socket = context.socket(ZMQ.PUB);
- socket.bind(String.format(bind_addr, port));
- } catch (ZMQException e) {
- LOGGER.log(Level.SEVERE,
- "Unable to bind ZMQ PUB socket. " + e.toString(), e);
- socket = null;
- }
- return socket;
- }
-
- public void run() {
- String event;
- while(true) {
- try {
- event = queue.take();
- bindSocket();
- if (publisher != null) {
- try {
- LOGGER.log(Level.FINE, "Publishing ZMQ event: " + event);
- publisher.send(event.getBytes(), 0);
- } catch (ZMQException e) {
- LOGGER.log(Level.INFO,
- "Unable to send event. " + e.toString(), e);
- }
- } else {
- LOGGER.log(Level.WARNING, "ZMQ Publisher is NULL");
- }
- }
- // Catch all exceptions so that this thread does not die.
- catch (Exception e) {
- LOGGER.log(Level.SEVERE,
- "Unhandled exception publishing ZMQ events " + e.toString(), e);
- }
- }
- }
-}
diff --git a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/model/BuildState.java b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/model/BuildState.java
deleted file mode 100644
index 4413a63..0000000
--- a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/model/BuildState.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright Authors of the Jenkins Notification Plugin
- *
- * Licensed 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.
- */
-
-package org.jenkinsci.plugins.ZMQEventPublisher.model;
-
-import org.jenkinsci.plugins.ZMQEventPublisher.Phase;
-
-import java.util.Map;
-
-public class BuildState {
-
- private String fullUrl;
-
- private int number;
-
- private Phase phase;
-
- private String status;
-
- private String url;
-
- private Map parameters;
-
- private String nodeName;
-
- private String nodeDescription;
-
- private String hostName;
-
- public int getNumber() {
- return number;
- }
-
- public void setNumber(int number) {
- this.number = number;
- }
-
- public Phase getPhase() {
- return phase;
- }
-
- public void setPhase(Phase phase) {
- this.phase = phase;
- }
-
- public String getStatus() {
- return status;
- }
-
- public void setStatus(String status) {
- this.status = status;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public String getFullUrl() {
- return fullUrl;
- }
-
- public void setFullUrl(String fullUrl) {
- this.fullUrl = fullUrl;
- }
-
- public Map getParameters() {
- return parameters;
- }
-
- public void setParameters(Map params) {
- this.parameters = params;
- }
-
- public String getNodeName() {
- return nodeName;
- }
-
- public void setNodeName(String nodeName) {
- this.nodeName = nodeName;
- }
-
- public String getNodeDescription() {
- return nodeDescription;
- }
-
- public void setNodeDescription(String nodeDescription) {
- this.nodeDescription = nodeDescription;
- }
-
- public String getHostName() {
- return hostName;
- }
-
- public void setHostName(String hostName) {
- this.hostName = hostName;
- }
-}
diff --git a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/model/JobState.java b/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/model/JobState.java
deleted file mode 100644
index 4986f9c..0000000
--- a/src/main/java/org/jenkinsci/plugins/ZMQEventPublisher/model/JobState.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright Authors of the Jenkins Notification Plugin
- *
- * Licensed 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.
- */
-
-package org.jenkinsci.plugins.ZMQEventPublisher.model;
-
-public class JobState {
-
- private String name;
-
- private String url;
-
- private BuildState build;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getUrl() {
- return url;
- }
-
- public void setUrl(String url) {
- this.url = url;
- }
-
- public BuildState getBuild() {
- return build;
- }
-
- public void setBuild(BuildState build) {
- this.build = build;
- }
-}
diff --git a/src/main/resources/index.jelly b/src/main/resources/index.jelly
deleted file mode 100644
index e53f0ac..0000000
--- a/src/main/resources/index.jelly
+++ /dev/null
@@ -1,3 +0,0 @@
-
- This plugin publishes Jenkins build events in JSON as a ZMQ Publisher.
-