Class GerritServer

  • All Implemented Interfaces:
    Action, Describable<GerritServer>, ModelObject

    @ExportedBean(defaultVisibility=2)
    @StaplerAccessibleType
    public class GerritServer
    extends Object
    implements Describable<GerritServer>, Action
    Every instance of this class represents a Gerrit server having its own unique name, connection, project list updater, configuration, and lists of listeners. All interactions with a Gerrit server should go through this class. The list of GerritServer is kept in @PluginImpl.
    Author:
    Robert Sandell <robert.sandell@sonyericsson.com>, Mathieu Wang <mathieu.wang@ericsson.com>
    • Field Detail

      • ANY_SERVER

        public static final String ANY_SERVER
        Key that is used to select to trigger a build on events from any server.
        See Also:
        Constant Field Values
    • Constructor Detail

      • GerritServer

        @DataBoundConstructor
        public GerritServer()
        Empty constructor.
      • GerritServer

        public GerritServer​(String name)
        Constructor.
        Parameters:
        name - the name of the server.
      • GerritServer

        public GerritServer​(String name,
                            boolean noConnectionOnStartup)
        Constructor.
        Parameters:
        name - the name of the server.
        noConnectionOnStartup - if noConnectionOnStartup or not.
    • Method Detail

      • getMissedEventsPlaybackManager

        public GerritMissedEventsPlaybackManager getMissedEventsPlaybackManager()
        Returns the Missed Events playback manager.
        Returns:
        GerritMissedEventsPlaybackManager
      • getParentUrl

        public String getParentUrl()
        Convenience method for jelly to get url of the server list's page relative to root.
        Returns:
        the relative url
        See Also:
        GerritManagement.getUrlName()
      • getUrl

        public String getUrl()
        Convenience method for jelly to get url of this server's config page relative to root.
        Returns:
        the relative url
        See Also:
        GerritManagement.getUrlName()
      • isAnyServer

        public static boolean isAnyServer​(String serverName)
        If the parameter represents ANY_SERVER. I.e. if serverName is null or empty or equal to ANY_SERVER.
        Parameters:
        serverName - the String to test
        Returns:
        true if so.
        See Also:
        GerritTrigger.isAnyServer()
      • setConfig

        @DataBoundSetter
        public void setConfig​(IGerritHudsonTriggerConfig config)
        Sets the global config of this server.
        Parameters:
        config - the config.
      • getQueryHandler

        public com.sonymobile.tools.gerrit.gerritevents.GerritQueryHandler getQueryHandler()
        Gets the global query handler of this server.
        Returns:
        the query handler.
      • getName

        @Exported
        public String getName()
        Get the name of the server.
        Returns:
        name the name of the server.
      • setName

        public void setName​(String name)
        Set the server name.
        Parameters:
        name - New name
      • getHostName

        @Exported
        public String getHostName()
        Get hostname of the server.
        Returns:
        the hostname of the server.
      • getSshPort

        @Exported
        public int getSshPort()
        Get ssh port of the server.
        Returns:
        the ssh port of the server.
      • getUserName

        @Exported
        public String getUserName()
        Get username of the server.
        Returns:
        the username of the server.
      • getHttpUserName

        @Exported
        public String getHttpUserName()
        Get HTTP username of the server.
        Returns:
        HTTP username of the server.
      • getFrontEndUrl

        @Exported
        public String getFrontEndUrl()
        Get frontend url of the server.
        Returns:
        the frontend url of the server.
      • isPseudoMode

        @Deprecated
        public boolean isPseudoMode()
        Deprecated.
        If pseudo mode or not.
        Returns:
        true if so.
      • setPseudoMode

        @Deprecated
        public void setPseudoMode​(boolean pseudoMode)
        Deprecated.
        Sets pseudo mode.
        Parameters:
        pseudoMode - true if pseudoMode connection.
      • isNoConnectionOnStartup

        @Exported
        public boolean isNoConnectionOnStartup()
        If no connection on startup or not.
        Returns:
        true if so.
      • setNoConnectionOnStartup

        public void setNoConnectionOnStartup​(boolean noConnectionOnStartup)
        Sets connect on startup.
        Parameters:
        noConnectionOnStartup - true if connect on startup.
      • isTimeoutWakeup

        @Exported
        public boolean isTimeoutWakeup()
        Gets wakeup is failed by timeout or not.
        Returns:
        true if wakeup is failed by timeout.
      • getUrlEncodedName

        public String getUrlEncodedName()
        Get the url encoded name of the server.
        Returns:
        the url encoded name.
      • isLastServer

        public boolean isLastServer()
        Check whether this server is the last one. Used by jelly to stop removal if true.
        Returns:
        whether it is the last one;
      • getRequiredPermission

        public final Permission getRequiredPermission()
        Jenkins.ADMINISTER permission for viewing and changing the configuration. Also used by Jelly
        Returns:
        the permission
      • start

        public void start()
        Starts the server's project list updater, send command queue and event manager.
      • stop

        public void stop()
        Stops the server's project list updater, send command queue and event manager.
      • addListener

        public void addListener​(com.sonymobile.tools.gerrit.gerritevents.GerritEventListener listener)
        Adds a listener to the EventManager. The listener will receive all events from Gerrit.
        Parameters:
        listener - the listener to add.
        See Also:
        GerritHandler.addListener(com.sonymobile.tools.gerrit.gerritevents.GerritEventListener)
      • removeListener

        public void removeListener​(com.sonymobile.tools.gerrit.gerritevents.GerritEventListener listener)
        Removes a listener from the manager.
        Parameters:
        listener - the listener to remove.
        See Also:
        GerritHandler.removeListener(com.sonymobile.tools.gerrit.gerritevents.GerritEventListener)
      • removeListener

        public void removeListener​(com.sonymobile.tools.gerrit.gerritevents.ConnectionListener listener)
        Removes a connection listener from the manager.
        Parameters:
        listener - the listener to remove.
      • getGerritConnectionListener

        public GerritConnectionListener getGerritConnectionListener()
        Get the GerritConnectionListener for GerritAdministrativeMonitor.
        Returns:
        the GerritConnectionListener, or null if it has not yet been initialized.
      • startConnection

        public void startConnection()
        Starts the connection to Gerrit stream of events. During startup it is called by GerritItemListener.
      • stopConnection

        public void stopConnection()
        Stops the connection to Gerrit stream of events.
      • isConnected

        @Exported
        public boolean isConnected()
        A quick check if a connection to Gerrit is open.
        Returns:
        true if so.
      • restartConnection

        public void restartConnection()
        Restarts the connection to Gerrit stream of events.
      • addListener

        public void addListener​(com.sonymobile.tools.gerrit.gerritevents.ConnectionListener listener)
        Adds a Connection Listener to the manager. Return the current connection status so that listeners that are added later than a connectionestablished/ connectiondown will get the current connection status.
        Parameters:
        listener - the listener to be added.
      • getGerritProjects

        public List<String> getGerritProjects()
        Returns a list of Gerrit projects.
        Returns:
        list of gerrit projects
      • triggerEvent

        public void triggerEvent​(com.sonymobile.tools.gerrit.gerritevents.dto.GerritEvent event)
        Adds the given event to the stream of events. It gets added to the same event queue as any event coming from the stream-events command in Gerrit. Throws IllegalStateException if the event manager is null
        Parameters:
        event - the event.
        See Also:
        GerritHandler.triggerEvent(com.sonymobile.tools.gerrit.gerritevents.dto.GerritEvent)
      • getProjectListUpdater

        public GerritProjectListUpdater getProjectListUpdater()
        Returns the GerritProjectListUpdater of this server so that it can be configured.
        Returns:
        the GerritProjectListUpdater used in this server
      • getGerritVersion

        public String getGerritVersion()
        Returns the current Gerrit version.
        Returns:
        the current Gerrit version as a String if connected, or null otherwise.
      • isReplicationEventsSupported

        public boolean isReplicationEventsSupported()
        Return if the current server support replication events.
        Returns:
        true if replication events are supported, otherwise false
      • isProjectCreatedEventsSupported

        public boolean isProjectCreatedEventsSupported()
        Checks whether the current server support project-created events or not. Note: We need to exclude snapshot versions from this check. Otherwise, snapshot versions that are < Gerrit 2.12 will default to waiting for Project Created events which are only supported in Gerrit >= 2.12.
        Returns:
        true if project-created events are supported, otherwise false
      • notificationLevelTextsById

        public static Map<com.sonymobile.tools.gerrit.gerritevents.dto.rest.Notify,​String> notificationLevelTextsById()
        Returns localized texts for each known notification value.
        Returns:
        a map with level id to level text.
      • doConfigSubmit

        public void doConfigSubmit​(org.kohsuke.stapler.StaplerRequest req,
                                   org.kohsuke.stapler.StaplerResponse rsp)
                            throws javax.servlet.ServletException,
                                   IOException,
                                   InterruptedException
        Saves the form to the configuration and disk.
        Parameters:
        req - StaplerRequest
        rsp - StaplerResponse
        Throws:
        javax.servlet.ServletException - if something unfortunate happens.
        IOException - if something unfortunate happens.
        InterruptedException - if something unfortunate happens.
      • getConfiguredJobs

        public List<Job> getConfiguredJobs()
        Convenience method for remove.jelly.
        Returns:
        the list of jobs configured with this server.
      • doWakeup

        public net.sf.json.JSONObject doWakeup()
        Wakeup server. This method returns after actual connection status is changed or timeout. Used by jelly.
        Returns:
        connection status.
      • doSleep

        public net.sf.json.JSONObject doSleep()
        Server to sleep. This method returns actual connection status is changed or timeout. Used by jelly.
        Returns:
        connection status.
      • hasErrors

        public boolean hasErrors()
        This server has errors or not.
        Returns:
        true if this server has errors.
      • hasWarnings

        public boolean hasWarnings()
        This server has warnings or not.
        Returns:
        true if this server has warnings.
      • isConnectionError

        @JavaScriptMethod
        public boolean isConnectionError()
        If connection could not be established.
        Returns:
        true if so. false otherwise.
      • isGerritSnapshotVersion

        @JavaScriptMethod
        public boolean isGerritSnapshotVersion()
        If Gerrit is a snapshot version.
        Returns:
        true if so, false otherwise.
      • isGerritMissedEventsSupported

        @JavaScriptMethod
        public boolean isGerritMissedEventsSupported()
        If Gerrit Missed Events Playback is supported.
        Returns:
        true if so, false otherwise.
      • hasDisabledFeatures

        @JavaScriptMethod
        public boolean hasDisabledFeatures()
        If server with features disabled due to old Gerrit version.
        Returns:
        true if so, false otherwise.
      • getDisabledFeatures

        public List<GerritVersionChecker.Feature> getDisabledFeatures()
        Returns the list of disabled features.
        Returns:
        the list of disabled features or empty list if listener not found
      • getConnectionResponse

        public String getConnectionResponse()
        Get the response after a start/stop/restartConnection; Used by jelly.
        Returns:
        the connection response
      • doRemoveConfirm

        public void doRemoveConfirm​(org.kohsuke.stapler.StaplerRequest req,
                                    org.kohsuke.stapler.StaplerResponse rsp)
                             throws javax.servlet.ServletException,
                                    IOException,
                                    InterruptedException
        Saves the form to the configuration and disk.
        Parameters:
        req - StaplerRequest
        rsp - StaplerResponse
        Throws:
        javax.servlet.ServletException - if something unfortunate happens.
        IOException - if something unfortunate happens.
        InterruptedException - if something unfortunate happens.
      • doUrlCheck

        public FormValidation doUrlCheck​(@QueryParameter("value")
                                         String value)
        Checks if the value is a valid URL. It does not check if the URL is reachable.
        Parameters:
        value - the value
        Returns:
        FormValidation.ok() if it is so.
      • doValidKeyFileCheck

        public FormValidation doValidKeyFileCheck​(@QueryParameter("value")
                                                  String value)
        Checks to see if the provided value is a file path to a valid private key file.
        Parameters:
        value - the value.
        Returns:
        FormValidation.ok() if it is so.
      • doValidTimeCheck

        public FormValidation doValidTimeCheck​(@QueryParameter
                                               String from,
                                               @QueryParameter
                                               String to)
        Checks to see if the provided value represents a time on the hh:mm format. Also checks that from is before to.
        Parameters:
        from - the from value.
        to - the to value.
        Returns:
        FormValidation.ok() if it is so.
      • doNameFreeCheck

        public FormValidation doNameFreeCheck​(@QueryParameter("value")
                                              String value)
        Checks whether server name already exists.
        Parameters:
        value - the value of the name field.
        Returns:
        ok or error.
      • generateHelper

        public List<ExceptionDataHelper> generateHelper()
        Generates a list of helper objects for the jelly view.
        Returns:
        a list of helper objects.