mirror of
https://github.com/apache/archiva.git
synced 2025-02-07 02:29:23 +00:00
MRM-541 - convenient way to take Archiva proxies "offline"
* Implemented UI for enabling/disabling proxy connectors * changes to RepositoryProxyConnectors to skip offline connectors git-svn-id: https://svn.apache.org/repos/asf/archiva/branches@686984 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
cec63bb250
commit
6368368aeb
@ -725,6 +725,15 @@
|
||||
<multiplicity>*</multiplicity>
|
||||
</association>
|
||||
</field>
|
||||
<field>
|
||||
<name>disabled</name>
|
||||
<version>1.2+</version>
|
||||
<description>
|
||||
If the the repository proxy connector is disabled or not
|
||||
</description>
|
||||
<type>boolean</type>
|
||||
<defaultValue>false</defaultValue>
|
||||
</field>
|
||||
</fields>
|
||||
<codeSegments>
|
||||
<codeSegment>
|
||||
|
@ -151,6 +151,11 @@ public File fetchFromProxies( ManagedRepositoryContent repository, ArtifactRefer
|
||||
Map<String, Exception> previousExceptions = new LinkedHashMap<String, Exception>();
|
||||
for ( ProxyConnector connector : connectors )
|
||||
{
|
||||
if (connector.isDisabled())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
RemoteRepositoryContent targetRepository = connector.getTargetRepository();
|
||||
requestProperties.setProperty( "remoteRepositoryId", targetRepository.getId() );
|
||||
|
||||
@ -221,6 +226,11 @@ public File fetchFromProxies( ManagedRepositoryContent repository, String path )
|
||||
List<ProxyConnector> connectors = getProxyConnectors( repository );
|
||||
for ( ProxyConnector connector : connectors )
|
||||
{
|
||||
if (connector.isDisabled())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
RemoteRepositoryContent targetRepository = connector.getTargetRepository();
|
||||
requestProperties.setProperty( "remoteRepositoryId", targetRepository.getId() );
|
||||
|
||||
@ -280,6 +290,11 @@ public File fetchMetatadaFromProxies(ManagedRepositoryContent repository, String
|
||||
List<ProxyConnector> connectors = getProxyConnectors( repository );
|
||||
for ( ProxyConnector connector : connectors )
|
||||
{
|
||||
if (connector.isDisabled())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
RemoteRepositoryContent targetRepository = connector.getTargetRepository();
|
||||
|
||||
File localRepoFile = toLocalRepoFile( repository, targetRepository, logicalPath );
|
||||
|
@ -49,6 +49,18 @@ public class ProxyConnector
|
||||
private int order;
|
||||
|
||||
private Map<String, String> policies;
|
||||
|
||||
private boolean disabled;
|
||||
|
||||
public boolean isDisabled()
|
||||
{
|
||||
return disabled;
|
||||
}
|
||||
|
||||
public void setDisabled(boolean disabled)
|
||||
{
|
||||
this.disabled = disabled;
|
||||
}
|
||||
|
||||
public List<String> getBlacklist()
|
||||
{
|
||||
@ -110,6 +122,7 @@ public void setProxyId( String proxyId )
|
||||
this.proxyId = proxyId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
StringBuffer sb = new StringBuffer();
|
||||
|
@ -39,4 +39,8 @@ public interface RepositoryConnector
|
||||
public List<String> getBlacklist();
|
||||
|
||||
public List<String> getWhitelist();
|
||||
|
||||
public boolean isDisabled();
|
||||
|
||||
public void setDisabled(boolean disabled);
|
||||
}
|
||||
|
@ -0,0 +1,98 @@
|
||||
package org.apache.maven.archiva.web.action.admin.connectors.proxy;
|
||||
|
||||
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DisableProxyConnectorAction
|
||||
*
|
||||
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="disableProxyConnectorAction"
|
||||
*/
|
||||
public class DisableProxyConnectorAction extends AbstractProxyConnectorAction
|
||||
{
|
||||
private String source;
|
||||
|
||||
private String target;
|
||||
|
||||
private ProxyConnectorConfiguration proxyConfig;
|
||||
|
||||
public String confirmDisable()
|
||||
{
|
||||
this.proxyConfig = findProxyConnector( source, target );
|
||||
|
||||
// Not set? Then there is nothing to delete.
|
||||
if ( this.proxyConfig == null )
|
||||
{
|
||||
addActionError( "Unable to disable proxy configuration, configuration with source [" + source
|
||||
+ "], and target [" + target + "] does not exist." );
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
return INPUT;
|
||||
}
|
||||
|
||||
public String disable()
|
||||
{
|
||||
this.proxyConfig = findProxyConnector( source, target );
|
||||
|
||||
// Not set? Then there is nothing to delete.
|
||||
if ( this.proxyConfig == null )
|
||||
{
|
||||
addActionError( "Unable to disable proxy configuration, configuration with source [" + source
|
||||
+ "], and target [" + target + "] does not exist." );
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
if ( hasActionErrors() )
|
||||
{
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
proxyConfig.setDisabled(true);
|
||||
|
||||
addActionMessage( "Successfully disabled proxy connector [" + source + " , " + target + " ]" );
|
||||
|
||||
setSource( null );
|
||||
setTarget( null );
|
||||
|
||||
return saveConfiguration();
|
||||
}
|
||||
|
||||
public String getSource()
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
public void setSource(String source)
|
||||
{
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getTarget()
|
||||
{
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(String target)
|
||||
{
|
||||
this.target = target;
|
||||
}
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
package org.apache.maven.archiva.web.action.admin.connectors.proxy;
|
||||
|
||||
import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
|
||||
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* EnableProxyConnectorAction
|
||||
*
|
||||
* @plexus.component role="com.opensymphony.xwork.Action" role-hint="enableProxyConnectorAction"
|
||||
*/
|
||||
public class EnableProxyConnectorAction extends AbstractProxyConnectorAction
|
||||
{
|
||||
private String source;
|
||||
|
||||
private String target;
|
||||
|
||||
private ProxyConnectorConfiguration proxyConfig;
|
||||
|
||||
public String confirmEnable()
|
||||
{
|
||||
this.proxyConfig = findProxyConnector( source, target );
|
||||
|
||||
// Not set? Then there is nothing to delete.
|
||||
if ( this.proxyConfig == null )
|
||||
{
|
||||
addActionError( "Unable to enable proxy configuration, configuration with source [" + source
|
||||
+ "], and target [" + target + "] does not exist." );
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
return INPUT;
|
||||
}
|
||||
|
||||
public String enable()
|
||||
{
|
||||
this.proxyConfig = findProxyConnector( source, target );
|
||||
|
||||
// Not set? Then there is nothing to delete.
|
||||
if ( this.proxyConfig == null )
|
||||
{
|
||||
addActionError( "Unable to enabled proxy configuration, configuration with source [" + source
|
||||
+ "], and target [" + target + "] does not exist." );
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
if ( hasActionErrors() )
|
||||
{
|
||||
return ERROR;
|
||||
}
|
||||
|
||||
proxyConfig.setDisabled(true);
|
||||
|
||||
addActionMessage( "Successfully enabled proxy connector [" + source + " , " + target + " ]" );
|
||||
|
||||
setSource( null );
|
||||
setTarget( null );
|
||||
|
||||
return saveConfiguration();
|
||||
}
|
||||
|
||||
public String getSource()
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
public void setSource(String source)
|
||||
{
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getTarget()
|
||||
{
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(String target)
|
||||
{
|
||||
this.target = target;
|
||||
}
|
||||
}
|
@ -377,6 +377,19 @@
|
||||
<result name="success" type="redirect-action">proxyConnectors</result>
|
||||
<interceptor-ref name="configuredPrepareParamsStack"/>
|
||||
</action>
|
||||
|
||||
<action name="enableProxyConnector" class="enableProxyConnectorAction" method="confirm">
|
||||
<result name="input">/WEB-INF/jsp/admin/enableProxyConnector.jsp</result>
|
||||
<result name="success" type="redirect-action">proxyConnectors</result>
|
||||
<interceptor-ref name="configuredPrepareParamsStack"/>
|
||||
</action>
|
||||
|
||||
<action name="disableProxyConnector" class="disableProxyConnectorAction" method="confirm">
|
||||
<result name="input">/WEB-INF/jsp/admin/disableProxyConnector.jsp</result>
|
||||
<result name="success" type="redirect-action">proxyConnectors</result>
|
||||
<interceptor-ref name="configuredPrepareParamsStack"/>
|
||||
</action>
|
||||
|
||||
|
||||
<!-- .\ NETWORK PROXIES \._________________________________________ -->
|
||||
|
||||
|
@ -0,0 +1,50 @@
|
||||
<%--
|
||||
~ 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.
|
||||
--%>
|
||||
|
||||
<%@ taglib prefix="ww" uri="/webwork" %>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Admin: Disable Proxy Connector</title>
|
||||
<ww:head/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Admin: Disable Proxy Connector</h1>
|
||||
|
||||
<ww:actionerror/>
|
||||
|
||||
<div id="contentArea">
|
||||
|
||||
<h2>Disable Proxy Connector</h2>
|
||||
|
||||
<p>
|
||||
Are you sure you want to disable proxy connector <code>[ ${source} , ${target} ]</code> ?
|
||||
</p>
|
||||
|
||||
<ww:form method="post" action="disableProxyConnector!disable" namespace="/admin" validate="true">
|
||||
<ww:hidden name="target"/>
|
||||
<ww:hidden name="source"/>
|
||||
<ww:submit value="Disable"/>
|
||||
</ww:form>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,50 @@
|
||||
<%--
|
||||
~ 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.
|
||||
--%>
|
||||
|
||||
<%@ taglib prefix="ww" uri="/webwork" %>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Admin: Enable Proxy Connector</title>
|
||||
<ww:head/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Admin: Enable Proxy Connector</h1>
|
||||
|
||||
<ww:actionerror/>
|
||||
|
||||
<div id="contentArea">
|
||||
|
||||
<h2>Enable Proxy Connector</h2>
|
||||
|
||||
<p>
|
||||
Are you sure you want to enable proxy connector <code>[ ${source} , ${target} ]</code> ?
|
||||
</p>
|
||||
|
||||
<ww:form method="post" action="enableProxyConnector!enable" namespace="/admin" validate="true">
|
||||
<ww:hidden name="target"/>
|
||||
<ww:hidden name="source"/>
|
||||
<ww:submit value="Enable"/>
|
||||
</ww:form>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -105,6 +105,24 @@
|
||||
<ww:param name="source" value="%{'${connector.sourceRepoId}'}"/>
|
||||
<ww:param name="target" value="%{'${connector.targetRepoId}'}"/>
|
||||
</ww:url>
|
||||
<ww:url id="enableProxyConnectorUrl" action="enableProxyConnector" method="confirmEnable">
|
||||
<ww:param name="source" value="%{'${connector.sourceRepoId}'}"/>
|
||||
<ww:param name="target" value="%{'${connector.targetRepoId}'}"/>
|
||||
</ww:url>
|
||||
<ww:url id="disableProxyConnectorUrl" action="disableProxyConnector" method="confirmDisable">
|
||||
<ww:param name="source" value="%{'${connector.sourceRepoId}'}"/>
|
||||
<ww:param name="target" value="%{'${connector.targetRepoId}'}"/>
|
||||
</ww:url>
|
||||
<c:if test="${connector.disabled}">
|
||||
<ww:a href="%{enableProxyConnectorUrl}" label="Enable Proxy Connector">
|
||||
Enable
|
||||
</ww:a>
|
||||
</c:if>
|
||||
<c:if test="${connector.disabled == false}">
|
||||
<ww:a href="%{disableProxyConnectorUrl}" title="Disable Proxy Connector">
|
||||
Disable
|
||||
</ww:a>
|
||||
</c:if>
|
||||
<c:if test="${pc.count > 1}">
|
||||
<ww:a href="%{sortUpProxyConnectorUrl}" cssClass="up" title="Move Proxy Connector Up">
|
||||
<img src="${iconUpUrl}"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user