You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ap...@apache.org on 2013/12/11 11:10:14 UTC

[1/2] git commit: updated refs/heads/master to ab025f0

Updated Branches:
  refs/heads/master a3b7248a1 -> ab025f026


CLOUDSTACK-5375 :ldapconfig and ldapRemove api's are not working Added support for 4.2 ldap apis

Signed-off-by: Abhinandan Prateek <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/db8f83d7
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/db8f83d7
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/db8f83d7

Branch: refs/heads/master
Commit: db8f83d71b97774552c7c2b66285771bd63d2424
Parents: a3b7248
Author: Rajani Karuturi <ra...@gmail.com>
Authored: Tue Dec 10 13:36:35 2013 +0530
Committer: Abhinandan Prateek <ap...@apache.org>
Committed: Wed Dec 11 15:30:03 2013 +0530

----------------------------------------------------------------------
 .../cloudstack/api/command/LDAPConfigCmd.java   | 261 +++++++++++++++++++
 .../cloudstack/api/command/LDAPRemoveCmd.java   |  77 ++++++
 .../api/response/LDAPConfigResponse.java        | 115 ++++++++
 .../api/response/LDAPRemoveResponse.java        |  30 +++
 .../apache/cloudstack/ldap/LdapManagerImpl.java |  17 +-
 5 files changed, 489 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/db8f83d7/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LDAPConfigCmd.java
----------------------------------------------------------------------
diff --git a/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LDAPConfigCmd.java b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LDAPConfigCmd.java
new file mode 100644
index 0000000..3faf8b7
--- /dev/null
+++ b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LDAPConfigCmd.java
@@ -0,0 +1,261 @@
+// 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.
+package org.apache.cloudstack.api.command;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.cloudstack.api.*;
+import org.apache.cloudstack.api.response.LDAPConfigResponse;
+import org.apache.cloudstack.api.response.LdapConfigurationResponse;
+import org.apache.cloudstack.api.response.ListResponse;
+import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import org.apache.cloudstack.framework.config.impl.ConfigurationVO;
+import org.apache.cloudstack.ldap.LdapConfiguration;
+import org.apache.cloudstack.ldap.LdapConfigurationVO;
+import org.apache.cloudstack.ldap.LdapManager;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.log4j.Logger;
+
+import com.cloud.exception.*;
+import com.cloud.user.Account;
+import com.cloud.utils.Pair;
+
+/**
+ * @deprecated as of 4.3 use the new api {@link LdapAddConfigurationCmd}
+ */
+@Deprecated
+@APICommand(name = "ldapConfig", description = "Configure the LDAP context for this site.", responseObject = LDAPConfigResponse.class, since = "3.0.0")
+public class LDAPConfigCmd extends BaseCmd {
+    public static final Logger s_logger = Logger.getLogger(LDAPConfigCmd.class.getName());
+
+    private static final String s_name = "ldapconfigresponse";
+
+    @Inject
+    private ConfigurationDao _configDao;
+
+    @Inject
+    private LdapManager _ldapManager;
+
+    @Inject
+    private LdapConfiguration _ldapConfiguration;
+
+    /////////////////////////////////////////////////////
+    //////////////// API parameters /////////////////////
+    /////////////////////////////////////////////////////
+    @Parameter(name = ApiConstants.LIST_ALL, type = CommandType.BOOLEAN, description = "If true return current LDAP configuration")
+    private Boolean listAll;
+
+    @Parameter(name = ApiConstants.HOST_NAME, type = CommandType.STRING, description = "Hostname or ip address of the ldap server eg: my.ldap.com")
+    private String hostname;
+
+    @Parameter(name = ApiConstants.PORT, type = CommandType.INTEGER, description = "Specify the LDAP port if required, default is 389.")
+    private Integer port = 0;
+
+    @Parameter(name = ApiConstants.USE_SSL, type = CommandType.BOOLEAN, description = "Check Use SSL if the external LDAP server is configured for LDAP over SSL.")
+    private Boolean useSSL;
+
+    @Parameter(name = ApiConstants.SEARCH_BASE, type = CommandType.STRING, description = "The search base defines the starting point for the search in the directory tree Example:  dc=cloud,dc=com.")
+    private String searchBase;
+
+    @Parameter(name = ApiConstants.QUERY_FILTER, type = CommandType.STRING, description = "You specify a query filter here, which narrows down the users, who can be part of this domain.")
+    private String queryFilter;
+
+    @Parameter(name = ApiConstants.BIND_DN, type = CommandType.STRING, description = "Specify the distinguished name of a user with the search permission on the directory.")
+    private String bindDN;
+
+    @Parameter(name = ApiConstants.BIND_PASSWORD, type = CommandType.STRING, description = "Enter the password.")
+    private String bindPassword;
+
+    @Parameter(name = ApiConstants.TRUST_STORE, type = CommandType.STRING, description = "Enter the path to trust certificates store.")
+    private String trustStore;
+
+    @Parameter(name = ApiConstants.TRUST_STORE_PASSWORD, type = CommandType.STRING, description = "Enter the password for trust store.")
+    private String trustStorePassword;
+
+    public Boolean getListAll() {
+        return listAll == null ? Boolean.FALSE : listAll;
+    }
+
+    public String getBindPassword() {
+        return bindPassword;
+    }
+
+    public String getBindDN() {
+        return bindDN;
+    }
+
+    public void setBindDN(String bdn) {
+        this.bindDN = bdn;
+    }
+
+    public String getQueryFilter() {
+        return queryFilter;
+    }
+
+    public void setQueryFilter(String queryFilter) {
+        this.queryFilter = StringEscapeUtils.unescapeHtml(queryFilter);
+    }
+
+    public String getSearchBase() {
+        return searchBase;
+    }
+
+    public void setSearchBase(String searchBase) {
+        this.searchBase = searchBase;
+    }
+
+    public Boolean getUseSSL() {
+        return useSSL == null ? Boolean.FALSE : useSSL;
+    }
+
+    public void setUseSSL(Boolean useSSL) {
+        this.useSSL = useSSL;
+    }
+
+    public String getHostname() {
+        return hostname;
+    }
+
+    public void setHostname(String hostname) {
+        this.hostname = hostname;
+    }
+
+    public Integer getPort() {
+        return port <= 0 ? 389 : port;
+    }
+
+    public void setPort(Integer port) {
+        this.port = port;
+    }
+
+    public String getTrustStore() {
+        return trustStore;
+    }
+
+    public void setTrustStore(String trustStore) {
+        this.trustStore = trustStore;
+    }
+
+    public String getTrustStorePassword() {
+        return trustStorePassword;
+    }
+
+    /////////////////////////////////////////////////////
+    /////////////// API Implementation///////////////////
+    /////////////////////////////////////////////////////
+
+    @Override
+    public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException {
+        if (getListAll()) {
+            // return the existing conf
+
+            LdapListConfigurationCmd listConfigurationCmd = new LdapListConfigurationCmd(_ldapManager);
+            Pair<List<? extends LdapConfigurationVO>, Integer> result = _ldapManager.listConfigurations(listConfigurationCmd);
+            ListResponse<LDAPConfigResponse> response = new ListResponse<LDAPConfigResponse>();
+            List<LDAPConfigResponse> responses = new ArrayList<LDAPConfigResponse>();
+
+            if (result.second() > 0) {
+                boolean useSSlConfig = _ldapConfiguration.getSSLStatus();
+                String searchBaseConfig = _ldapConfiguration.getBaseDn();
+                String bindDnConfig = _ldapConfiguration.getBindPrincipal();
+                for (LdapConfigurationVO ldapConfigurationVO : result.first()) {
+                    responses.add(this.createLDAPConfigResponse(ldapConfigurationVO.getHostname(), ldapConfigurationVO.getPort(), useSSlConfig, null, searchBaseConfig,
+                            bindDnConfig));
+                }
+            }
+            response.setResponses(responses);
+            response.setResponseName(getCommandName());
+            this.setResponseObject(response);
+        } else if (getHostname() == null || getPort() == null) {
+            throw new InvalidParameterValueException("You need to provide hostname, port to configure your LDAP server");
+        } else {
+            boolean result = this.updateLDAP();
+            if (result) {
+                LDAPConfigResponse lr = this.createLDAPConfigResponse(getHostname(), getPort(), getUseSSL(), getQueryFilter(), getSearchBase(), getBindDN());
+                lr.setResponseName(getCommandName());
+                this.setResponseObject(lr);
+            }
+        }
+
+    }
+
+    private LDAPConfigResponse createLDAPConfigResponse(String hostname, Integer port, Boolean useSSL, String queryFilter, String searchBase, String bindDN) {
+        LDAPConfigResponse lr = new LDAPConfigResponse();
+        lr.setHostname(hostname);
+        lr.setPort(port.toString());
+        lr.setUseSSL(useSSL.toString());
+        lr.setQueryFilter(queryFilter);
+        lr.setBindDN(bindDN);
+        lr.setSearchBase(searchBase);
+        lr.setObjectName("ldapconfig");
+        return lr;
+    }
+
+    private boolean updateLDAP() {
+        LdapConfigurationResponse response = _ldapManager.addConfiguration(hostname, port);
+
+        /**
+         * There is no query filter now. It is derived from ldap.user.object and ldap.search.group.principle
+         */
+//        ConfigurationVO cvo = _configDao.findByName(LDAPParams.queryfilter.toString());
+//        _configDao.update(cvo.getName(),cvo.getCategory(),getQueryFilter());
+
+        ConfigurationVO cvo = _configDao.findByName("ldap.basedn");
+        _configDao.update(cvo.getName(), cvo.getCategory(), getSearchBase());
+
+        /**
+         * There is no ssl now. it is derived from the presence of trust store and password 
+         */
+//        cvo = _configDao.findByName(LDAPParams.usessl.toString());
+//        _configDao.update(cvo.getName(),cvo.getCategory(),getUseSSL().toString());
+
+        cvo = _configDao.findByName("ldap.bind.principal");
+        _configDao.update(cvo.getName(), cvo.getCategory(), getBindDN());
+
+        cvo = _configDao.findByName("ldap.bind.password");
+        _configDao.update(cvo.getName(), cvo.getCategory(), getBindPassword());
+
+        cvo = _configDao.findByName("ldap.truststore");
+        _configDao.update(cvo.getName(), cvo.getCategory(), getTrustStore());
+
+        cvo = _configDao.findByName("ldap.truststore.password");
+        _configDao.update(cvo.getName(), cvo.getCategory(), getTrustStorePassword());
+
+        return true;
+    }
+
+    private List<? extends LdapConfigurationVO> listLDAPConfig() {
+
+        LdapListConfigurationCmd listConfigurationCmd = new LdapListConfigurationCmd(_ldapManager);
+        Pair<List<? extends LdapConfigurationVO>, Integer> result = _ldapManager.listConfigurations(listConfigurationCmd);
+        return result.first();
+    }
+
+    @Override
+    public String getCommandName() {
+        return s_name;
+    }
+
+    @Override
+    public long getEntityOwnerId() {
+        return Account.ACCOUNT_ID_SYSTEM;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/db8f83d7/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LDAPRemoveCmd.java
----------------------------------------------------------------------
diff --git a/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LDAPRemoveCmd.java b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LDAPRemoveCmd.java
new file mode 100644
index 0000000..535a545
--- /dev/null
+++ b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/command/LDAPRemoveCmd.java
@@ -0,0 +1,77 @@
+// 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.
+package org.apache.cloudstack.api.command;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.BaseCmd;
+import org.apache.cloudstack.api.response.LDAPConfigResponse;
+import org.apache.cloudstack.api.response.LDAPRemoveResponse;
+import org.apache.cloudstack.ldap.LdapConfigurationVO;
+import org.apache.cloudstack.ldap.LdapManager;
+import org.apache.log4j.Logger;
+
+import com.cloud.user.Account;
+import com.cloud.utils.Pair;
+
+/**
+ * @deprecated as of 4.3 use the new api {@link LdapDeleteConfigurationCmd}
+ */
+@Deprecated
+@APICommand(name = "ldapRemove", description = "Remove the LDAP context for this site.", responseObject = LDAPConfigResponse.class, since = "3.0.1")
+public class LDAPRemoveCmd extends BaseCmd {
+    public static final Logger s_logger = Logger.getLogger(LDAPRemoveCmd.class.getName());
+
+    @Inject
+    private LdapManager _ldapManager;
+
+    private static final String s_name = "ldapremoveresponse";
+
+    @Override
+    public void execute() {
+        boolean result = this.removeLDAP();
+        if (result) {
+            LDAPRemoveResponse lr = new LDAPRemoveResponse();
+            lr.setObjectName("ldapremove");
+            lr.setResponseName(getCommandName());
+            this.setResponseObject(lr);
+        }
+    }
+
+    private boolean removeLDAP() {
+        LdapListConfigurationCmd listConfigurationCmd = new LdapListConfigurationCmd(_ldapManager);
+        Pair<List<? extends LdapConfigurationVO>, Integer> result = _ldapManager.listConfigurations(listConfigurationCmd);
+        for (LdapConfigurationVO config : result.first()) {
+            _ldapManager.deleteConfiguration(config.getHostname());
+        }
+        return true;
+    }
+
+    @Override
+    public String getCommandName() {
+        return s_name;
+    }
+
+    @Override
+    public long getEntityOwnerId() {
+        return Account.ACCOUNT_ID_SYSTEM;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/db8f83d7/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/response/LDAPConfigResponse.java
----------------------------------------------------------------------
diff --git a/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/response/LDAPConfigResponse.java b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/response/LDAPConfigResponse.java
new file mode 100644
index 0000000..8570bac
--- /dev/null
+++ b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/response/LDAPConfigResponse.java
@@ -0,0 +1,115 @@
+// 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.
+package org.apache.cloudstack.api.response;
+
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.BaseResponse;
+
+import com.cloud.serializer.Param;
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * @deprecated as of 4.3 along with the api {@link org.apache.cloudstack.api.command.LDAPConfigCmd}
+ */
+@Deprecated
+public class LDAPConfigResponse extends BaseResponse {
+
+    @SerializedName(ApiConstants.HOST_NAME)
+    @Param(description = "Hostname or ip address of the ldap server eg: my.ldap.com")
+    private String hostname;
+
+    @SerializedName(ApiConstants.PORT)
+    @Param(description = "Specify the LDAP port if required, default is 389")
+    private String port;
+
+    @SerializedName(ApiConstants.USE_SSL)
+    @Param(description = "Check Use SSL if the external LDAP server is configured for LDAP over SSL")
+    private String useSSL;
+
+    @SerializedName(ApiConstants.SEARCH_BASE)
+    @Param(description = "The search base defines the starting point for the search in the directory tree Example:  dc=cloud,dc=com")
+    private String searchBase;
+
+    @SerializedName(ApiConstants.QUERY_FILTER)
+    @Param(description = "You specify a query filter here, which narrows down the users, who can be part of this domain")
+    private String queryFilter;
+
+    @SerializedName(ApiConstants.BIND_DN)
+    @Param(description = "Specify the distinguished name of a user with the search permission on the directory")
+    private String bindDN;
+
+    @SerializedName(ApiConstants.BIND_PASSWORD)
+    @Param(description = "DN password")
+    private String bindPassword;
+
+    public String getHostname() {
+        return hostname;
+    }
+
+    public void setHostname(String hostname) {
+        this.hostname = hostname;
+    }
+
+    public String getPort() {
+        return port;
+    }
+
+    public void setPort(String port) {
+        this.port = port;
+    }
+
+    public String getUseSSL() {
+        return useSSL;
+    }
+
+    public void setUseSSL(String useSSL) {
+        this.useSSL = useSSL;
+    }
+
+    public String getSearchBase() {
+        return searchBase;
+    }
+
+    public void setSearchBase(String searchBase) {
+        this.searchBase = searchBase;
+    }
+
+    public String getQueryFilter() {
+        return queryFilter;
+    }
+
+    public void setQueryFilter(String queryFilter) {
+        this.queryFilter = queryFilter;
+    }
+
+    public String getBindDN() {
+        return bindDN;
+    }
+
+    public void setBindDN(String bindDN) {
+        this.bindDN = bindDN;
+    }
+
+    public String getBindPassword() {
+        return bindPassword;
+    }
+
+    public void setBindPassword(String bindPassword) {
+        this.bindPassword = bindPassword;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/db8f83d7/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/response/LDAPRemoveResponse.java
----------------------------------------------------------------------
diff --git a/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/response/LDAPRemoveResponse.java b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/response/LDAPRemoveResponse.java
new file mode 100644
index 0000000..9b473d2
--- /dev/null
+++ b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/api/response/LDAPRemoveResponse.java
@@ -0,0 +1,30 @@
+// 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.
+package org.apache.cloudstack.api.response;
+
+import org.apache.cloudstack.api.BaseResponse;
+
+/**
+ * @deprecated as of 4.3 along with the api {@link org.apache.cloudstack.api.command.LDAPRemoveCmd}
+ */
+@Deprecated
+public class LDAPRemoveResponse extends BaseResponse {
+
+    public LDAPRemoveResponse() {
+        super();
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/db8f83d7/plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapManagerImpl.java b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapManagerImpl.java
index f41bd3a..578ebce 100644
--- a/plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapManagerImpl.java
+++ b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapManagerImpl.java
@@ -24,20 +24,13 @@ import javax.inject.Inject;
 import javax.naming.NamingException;
 import javax.naming.directory.DirContext;
 
-import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
-
 import org.apache.cloudstack.api.LdapValidator;
-import org.apache.cloudstack.api.command.LdapAddConfigurationCmd;
-import org.apache.cloudstack.api.command.LdapCreateAccountCmd;
-import org.apache.cloudstack.api.command.LdapDeleteConfigurationCmd;
-import org.apache.cloudstack.api.command.LdapImportUsersCmd;
-import org.apache.cloudstack.api.command.LdapListConfigurationCmd;
-import org.apache.cloudstack.api.command.LdapListUsersCmd;
-import org.apache.cloudstack.api.command.LdapUserSearchCmd;
+import org.apache.cloudstack.api.command.*;
 import org.apache.cloudstack.api.response.LdapConfigurationResponse;
 import org.apache.cloudstack.api.response.LdapUserResponse;
 import org.apache.cloudstack.ldap.dao.LdapConfigurationDao;
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Component;
 
 import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.utils.Pair;
@@ -153,6 +146,8 @@ public class LdapManagerImpl implements LdapManager, LdapValidator {
         cmdList.add(LdapListConfigurationCmd.class);
         cmdList.add(LdapCreateAccountCmd.class);
         cmdList.add(LdapImportUsersCmd.class);
+        cmdList.add(LDAPConfigCmd.class);
+        cmdList.add(LDAPRemoveCmd.class);
         return cmdList;
     }
 
@@ -224,4 +219,4 @@ public class LdapManagerImpl implements LdapManager, LdapValidator {
             closeContext(context);
         }
     }
-}
\ No newline at end of file
+}


[2/2] git commit: updated refs/heads/master to ab025f0

Posted by ap...@apache.org.
Fixed CLOUDSTACK-5436

Fixed few RAT issues reported for new additions of files to repo.
Signed-off-by: Santhosh Edukulla <Sa...@citrix.com>
Signed-off-by: Abhinandan Prateek <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ab025f02
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ab025f02
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ab025f02

Branch: refs/heads/master
Commit: ab025f02692bbbf5d0d27e7126d7f2b37271d380
Parents: db8f83d
Author: Santhosh Edukulla <Sa...@citrix.com>
Authored: Tue Dec 10 05:23:40 2013 +0530
Committer: Abhinandan Prateek <ap...@apache.org>
Committed: Wed Dec 11 15:33:52 2013 +0530

----------------------------------------------------------------------
 tools/marvin/marvin/misc/build/CI.md            | 18 ++++++++++++++++++
 tools/marvin/marvin/misc/build/README.md        | 18 ++++++++++++++++++
 tools/marvin/marvin/misc/build/advanced_env.py  |  7 +++++--
 tools/marvin/marvin/misc/build/asf_test.cfg     | 18 ++++++++++++++++++
 tools/marvin/marvin/misc/build/bashUtils.py     | 18 ++++++++++++++++++
 .../marvin/marvin/misc/build/buildGenerator.py  | 18 ++++++++++++++++++
 tools/marvin/marvin/misc/build/configure.py     | 17 +++++++++++++++++
 tools/marvin/marvin/misc/build/hudson.sh        | 17 +++++++++++++++++
 tools/marvin/marvin/misc/build/kvm.cfg          | 20 +++++++++++++++++++-
 tools/marvin/marvin/misc/build/openport.py      | 18 ++++++++++++++++++
 tools/marvin/marvin/misc/build/redeploy.sh      | 19 +++++++++++++++++++
 tools/marvin/marvin/misc/build/restartMgmt.py   | 17 +++++++++++++++++
 .../marvin/marvin/misc/build/system.properties  | 19 ++++++++++++++++++-
 .../marvin/misc/build/testSetupSuccess.py       | 17 +++++++++++++++++
 tools/marvin/marvin/misc/build/vm-start.sh      | 18 ++++++++++++++++++
 tools/marvin/marvin/misc/build/vm-uninstall.sh  | 17 +++++++++++++++++
 tools/marvin/marvin/misc/build/xen.cfg          | 20 +++++++++++++++++++-
 tools/marvin/marvin/misc/build/xunitmp/setup.py |  9 +++++----
 .../misc/build/xunitmp/xunitmultiprocess.py     | 16 ++++++++++++++++
 19 files changed, 312 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/CI.md
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/CI.md b/tools/marvin/marvin/misc/build/CI.md
index c320125..0daa597 100644
--- a/tools/marvin/marvin/misc/build/CI.md
+++ b/tools/marvin/marvin/misc/build/CI.md
@@ -1,3 +1,21 @@
+# 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.
+
+
 about
 =====
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/README.md
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/README.md b/tools/marvin/marvin/misc/build/README.md
index bf0e03c..8dd30db 100644
--- a/tools/marvin/marvin/misc/build/README.md
+++ b/tools/marvin/marvin/misc/build/README.md
@@ -1,3 +1,21 @@
+#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.
+
+
 #Cloud AutoDeploy
 
 Scripts here are used to refresh the builds of the management server with those

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/advanced_env.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/advanced_env.py b/tools/marvin/marvin/misc/build/advanced_env.py
index b01e912..07991f1 100644
--- a/tools/marvin/marvin/misc/build/advanced_env.py
+++ b/tools/marvin/marvin/misc/build/advanced_env.py
@@ -1,3 +1,4 @@
+
 #!/usr/bin/env python
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
@@ -6,15 +7,17 @@
 # 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.
+
+
 '''
 ############################################################
 # Experimental state of scripts 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/asf_test.cfg
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/asf_test.cfg b/tools/marvin/marvin/misc/build/asf_test.cfg
index b75827d..658afee 100644
--- a/tools/marvin/marvin/misc/build/asf_test.cfg
+++ b/tools/marvin/marvin/misc/build/asf_test.cfg
@@ -1,3 +1,21 @@
+# 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.
+
+
 {
     "zones": [
         {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/bashUtils.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/bashUtils.py b/tools/marvin/marvin/misc/build/bashUtils.py
index f1bf471..d4e74f3 100644
--- a/tools/marvin/marvin/misc/build/bashUtils.py
+++ b/tools/marvin/marvin/misc/build/bashUtils.py
@@ -1,3 +1,21 @@
+# 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.
+
+
 from optparse import OptionParser
 from signal import alarm, signal, SIGALRM, SIGKILL
 from subprocess import PIPE, Popen

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/buildGenerator.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/buildGenerator.py b/tools/marvin/marvin/misc/build/buildGenerator.py
index 6964943..5794067 100644
--- a/tools/marvin/marvin/misc/build/buildGenerator.py
+++ b/tools/marvin/marvin/misc/build/buildGenerator.py
@@ -1,5 +1,23 @@
 #!/usr/bin/env python
 
+# 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.
+
+
 from ConfigParser import ConfigParser
 from jenkinsapi import api, jenkins, job
 from time import sleep as delay

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/configure.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/configure.py b/tools/marvin/marvin/misc/build/configure.py
index 796ab2d..b571f53 100644
--- a/tools/marvin/marvin/misc/build/configure.py
+++ b/tools/marvin/marvin/misc/build/configure.py
@@ -1,3 +1,20 @@
+# 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.
+
 from ConfigParser import ConfigParser
 from bashUtils import bash
 from marvin import configGenerator

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/hudson.sh
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/hudson.sh b/tools/marvin/marvin/misc/build/hudson.sh
index d5ece96..d4eb53b 100644
--- a/tools/marvin/marvin/misc/build/hudson.sh
+++ b/tools/marvin/marvin/misc/build/hudson.sh
@@ -1,3 +1,20 @@
+# 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.
+
 hypervisor="kvm"
 
 #Isolate the run into a virtualenv

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/kvm.cfg
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/kvm.cfg b/tools/marvin/marvin/misc/build/kvm.cfg
index d02eefa..630ccba 100644
--- a/tools/marvin/marvin/misc/build/kvm.cfg
+++ b/tools/marvin/marvin/misc/build/kvm.cfg
@@ -1,3 +1,21 @@
+# 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.
+
+
 {
     "zones": [
         {
@@ -222,4 +240,4 @@
             "port": 8096
         }
     ]
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/openport.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/openport.py b/tools/marvin/marvin/misc/build/openport.py
index ab2726d..0c40b0a 100644
--- a/tools/marvin/marvin/misc/build/openport.py
+++ b/tools/marvin/marvin/misc/build/openport.py
@@ -1,3 +1,21 @@
+# 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.
+
+
 from marvin import dbConnection
 
 def _openIntegrationPort():

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/redeploy.sh
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/redeploy.sh b/tools/marvin/marvin/misc/build/redeploy.sh
index 4ddd302..a9c13cc 100755
--- a/tools/marvin/marvin/misc/build/redeploy.sh
+++ b/tools/marvin/marvin/misc/build/redeploy.sh
@@ -1,4 +1,23 @@
+
 #!/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.
+
 #set -x
 usage() {
   printf "Usage: %s:\n

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/restartMgmt.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/restartMgmt.py b/tools/marvin/marvin/misc/build/restartMgmt.py
index fd005a8..be5c76a 100644
--- a/tools/marvin/marvin/misc/build/restartMgmt.py
+++ b/tools/marvin/marvin/misc/build/restartMgmt.py
@@ -1,3 +1,20 @@
+# 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.
+
 from ConfigParser import ConfigParser
 from optparse import OptionParser
 import marvin

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/system.properties
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/system.properties b/tools/marvin/marvin/misc/build/system.properties
index a4e1e0f..07aa84e 100644
--- a/tools/marvin/marvin/misc/build/system.properties
+++ b/tools/marvin/marvin/misc/build/system.properties
@@ -1,3 +1,20 @@
+# 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.
+
 [cobbler]
 #nic=network,gateway,cobbler_gateway
 eth0=10.223.75.0/25,10.223.75.1,10.223.75.10
@@ -22,4 +39,4 @@ acs-qa-h11=d0:67:e5:ef:e0:1b,password,10.223.75.20
 acs-qa-h20=d0:67:e5:ef:e0:ff,password,10.223.78.20
 acs-qa-h21=d0:67:e5:ef:e0:2d,password,10.223.78.140
 acs-qa-h23=d0:67:e5:f1:b1:36,password,10.223.75.21
-acs-qa-jenkins-slave=9e:2f:91:31:f4:8d,password,10.223.75.11
\ No newline at end of file
+acs-qa-jenkins-slave=9e:2f:91:31:f4:8d,password,10.223.75.11

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/testSetupSuccess.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/testSetupSuccess.py b/tools/marvin/marvin/misc/build/testSetupSuccess.py
index ed167a1..1bf2510 100644
--- a/tools/marvin/marvin/misc/build/testSetupSuccess.py
+++ b/tools/marvin/marvin/misc/build/testSetupSuccess.py
@@ -1,3 +1,20 @@
+# 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.
+
 import marvin
 import unittest
 from marvin.cloudstackTestCase import *

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/vm-start.sh
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/vm-start.sh b/tools/marvin/marvin/misc/build/vm-start.sh
index 48878fb..e23f434 100755
--- a/tools/marvin/marvin/misc/build/vm-start.sh
+++ b/tools/marvin/marvin/misc/build/vm-start.sh
@@ -1,3 +1,21 @@
+# 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.
+
+
 #!/bin/bash
 # Starts a vm on the xenserver with a predefined MAC and name-label
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/vm-uninstall.sh
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/vm-uninstall.sh b/tools/marvin/marvin/misc/build/vm-uninstall.sh
index 48f2d74..3746050 100755
--- a/tools/marvin/marvin/misc/build/vm-uninstall.sh
+++ b/tools/marvin/marvin/misc/build/vm-uninstall.sh
@@ -1,4 +1,21 @@
+
 #!/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.
 
 # Uninstalls a given VM
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/xen.cfg
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/xen.cfg b/tools/marvin/marvin/misc/build/xen.cfg
index bdeacda..5e9464b 100644
--- a/tools/marvin/marvin/misc/build/xen.cfg
+++ b/tools/marvin/marvin/misc/build/xen.cfg
@@ -1,3 +1,21 @@
+# 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.
+
+
 {
     "zones": [
         {
@@ -222,4 +240,4 @@
             "port": 8096
         }
     ]
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/xunitmp/setup.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/xunitmp/setup.py b/tools/marvin/marvin/misc/build/xunitmp/setup.py
index b5ad6d8..f27cbfd 100644
--- a/tools/marvin/marvin/misc/build/xunitmp/setup.py
+++ b/tools/marvin/marvin/misc/build/xunitmp/setup.py
@@ -2,12 +2,12 @@
 # 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 .0 (the
+# 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-.0
-# 
+#
+#   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
@@ -15,6 +15,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
+
 import os
 from setuptools import setup
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ab025f02/tools/marvin/marvin/misc/build/xunitmp/xunitmultiprocess.py
----------------------------------------------------------------------
diff --git a/tools/marvin/marvin/misc/build/xunitmp/xunitmultiprocess.py b/tools/marvin/marvin/misc/build/xunitmp/xunitmultiprocess.py
index 950a2e3..e119752 100644
--- a/tools/marvin/marvin/misc/build/xunitmp/xunitmultiprocess.py
+++ b/tools/marvin/marvin/misc/build/xunitmp/xunitmultiprocess.py
@@ -1,3 +1,19 @@
+# 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.
 
 """This plugin provides test results in the standard XUnit XML format.