You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by du...@apache.org on 2013/08/31 01:28:42 UTC
[49/50] [abbrv] Bring up to date with master
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/plugins/user-authenticators/ldap/pom.xml
----------------------------------------------------------------------
diff --cc plugins/user-authenticators/ldap/pom.xml
index a00d189,02752ac..1f9dea0
--- a/plugins/user-authenticators/ldap/pom.xml
+++ b/plugins/user-authenticators/ldap/pom.xml
@@@ -15,96 -23,7 +15,96 @@@
<parent>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloudstack-plugins</artifactId>
- <version>4.2.0-SNAPSHOT</version>
+ <version>4.3.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.gmaven</groupId>
+ <artifactId>gmaven-plugin</artifactId>
+ <version>1.3</version>
+ <configuration>
+ <providerSelection>1.7</providerSelection>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>compile</goal>
+ <goal>testCompile</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <fileset>
+ <directory>test/groovy</directory>
+ <includes>
+ <include>**/*.groovy</include>
+ </includes>
+ </fileset>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.gmaven.runtime</groupId>
+ <artifactId>gmaven-runtime-1.7</artifactId>
+ <version>1.3</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-all</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy-all</artifactId>
+ <version>2.0.5</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <includes>
+ <include>**/*Spec*</include>
+ </includes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>com.btmatthews.maven.plugins</groupId>
+ <artifactId>ldap-maven-plugin</artifactId>
+ <version>1.1.0</version>
+ <configuration>
+ <monitorPort>11389</monitorPort>
+ <monitorKey>ldap</monitorKey>
+ <daemon>false</daemon>
+ <rootDn>dc=cloudstack,dc=org</rootDn>
+ <ldapPort>10389</ldapPort>
+ <ldifFile>test/resources/cloudstack.org.ldif</ldifFile>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <dependencies>
+ <!-- Mandatory dependencies for using Spock -->
+ <dependency>
+ <groupId>org.spockframework</groupId>
+ <artifactId>spock-core</artifactId>
+ <version>0.7-groovy-2.0</version>
+ </dependency>
+
+ <!-- Optional dependencies for using Spock -->
+ <dependency> <!-- enables mocking of classes (in addition to interfaces) -->
+ <groupId>cglib</groupId>
+ <artifactId>cglib-nodep</artifactId>
+ <version>2.2</version>
+ </dependency>
+ </dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapConfiguration.java
----------------------------------------------------------------------
diff --cc plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapConfiguration.java
index 5e56c21,0000000..0cfb37c
mode 100644,000000..100644
--- a/plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapConfiguration.java
+++ b/plugins/user-authenticators/ldap/src/org/apache/cloudstack/ldap/LdapConfiguration.java
@@@ -1,145 -1,0 +1,145 @@@
+// 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.ldap;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.naming.directory.SearchControls;
+
+import org.apache.cloudstack.api.command.LdapListConfigurationCmd;
+
- import com.cloud.configuration.dao.ConfigurationDao;
++import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import com.cloud.utils.Pair;
+
+public class LdapConfiguration {
+ private final static String factory = "com.sun.jndi.ldap.LdapCtxFactory";
+
+ private final static int scope = SearchControls.SUBTREE_SCOPE;
+
+ @Inject
+ private ConfigurationDao _configDao;
+
+ @Inject
+ private LdapManager _ldapManager;
+
+ public LdapConfiguration() {
+ }
+
+ public LdapConfiguration(final ConfigurationDao configDao,
+ final LdapManager ldapManager) {
+ _configDao = configDao;
+ _ldapManager = ldapManager;
+ }
+
+ public String getAuthentication() {
+ if ((getBindPrincipal() == null) && (getBindPassword() == null)) {
+ return "none";
+ } else {
+ return "simple";
+ }
+ }
+
+ public String getBaseDn() {
+ return _configDao.getValue("ldap.basedn");
+ }
+
+ public String getBindPassword() {
+ return _configDao.getValue("ldap.bind.password");
+ }
+
+ public String getBindPrincipal() {
+ return _configDao.getValue("ldap.bind.principal");
+ }
+
+ public String getEmailAttribute() {
+ final String emailAttribute = _configDao
+ .getValue("ldap.email.attribute");
+ return emailAttribute == null ? "mail" : emailAttribute;
+ }
+
+ public String getFactory() {
+ return factory;
+ }
+
+ public String getFirstnameAttribute() {
+ final String firstnameAttribute = _configDao
+ .getValue("ldap.firstname.attribute");
+ return firstnameAttribute == null ? "givenname" : firstnameAttribute;
+ }
+
+ public String getLastnameAttribute() {
+ final String lastnameAttribute = _configDao
+ .getValue("ldap.lastname.attribute");
+ return lastnameAttribute == null ? "sn" : lastnameAttribute;
+ }
+
+ public String getProviderUrl() {
+ final String protocol = getSSLStatus() == true ? "ldaps://" : "ldap://";
+ final Pair<List<? extends LdapConfigurationVO>, Integer> result = _ldapManager
+ .listConfigurations(new LdapListConfigurationCmd(_ldapManager));
+ final StringBuilder providerUrls = new StringBuilder();
+ String delim = "";
+ for (final LdapConfigurationVO resource : result.first()) {
+ final String providerUrl = protocol + resource.getHostname() + ":"
+ + resource.getPort();
+ providerUrls.append(delim).append(providerUrl);
+ delim = " ";
+ }
+ return providerUrls.toString();
+ }
+
+ public String[] getReturnAttributes() {
+ return new String[] { getUsernameAttribute(), getEmailAttribute(),
+ getFirstnameAttribute(), getLastnameAttribute() };
+ }
+
+ public int getScope() {
+ return scope;
+ }
+
+ public String getSearchGroupPrinciple() {
+ return _configDao.getValue("ldap.search.group.principle");
+ }
+
+ public boolean getSSLStatus() {
+ boolean sslStatus = false;
+ if (getTrustStore() != null && getTrustStorePassword() != null) {
+ sslStatus = true;
+ }
+ return sslStatus;
+ }
+
+ public String getTrustStore() {
+ return _configDao.getValue("ldap.truststore");
+ }
+
+ public String getTrustStorePassword() {
+ return _configDao.getValue("ldap.truststore.password");
+ }
+
+ public String getUsernameAttribute() {
+ final String usernameAttribute = _configDao
+ .getValue("ldap.username.attribute");
+ return usernameAttribute == null ? "uid" : usernameAttribute;
+ }
+
+ public String getUserObject() {
+ final String userObject = _configDao.getValue("ldap.user.object");
+ return userObject == null ? "inetOrgPerson" : userObject;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/plugins/user-authenticators/ldap/test/groovy/org/apache/cloudstack/ldap/LdapConfigurationSpec.groovy
----------------------------------------------------------------------
diff --cc plugins/user-authenticators/ldap/test/groovy/org/apache/cloudstack/ldap/LdapConfigurationSpec.groovy
index bb86625,0000000..c593959
mode 100644,000000..100644
--- a/plugins/user-authenticators/ldap/test/groovy/org/apache/cloudstack/ldap/LdapConfigurationSpec.groovy
+++ b/plugins/user-authenticators/ldap/test/groovy/org/apache/cloudstack/ldap/LdapConfigurationSpec.groovy
@@@ -1,223 -1,0 +1,223 @@@
+// 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 groovy.org.apache.cloudstack.ldap
+
- import com.cloud.configuration.dao.ConfigurationDao
++import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import com.cloud.utils.Pair
+import org.apache.cloudstack.api.ServerApiException
+import org.apache.cloudstack.ldap.LdapConfiguration
+import org.apache.cloudstack.ldap.LdapConfigurationVO
+import org.apache.cloudstack.ldap.LdapManager
+
+import javax.naming.directory.SearchControls
+
+class LdapConfigurationSpec extends spock.lang.Specification {
+ def "Test that getAuthentication returns none"() {
+ given: "We have a ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get authentication is called"
+ String authentication = ldapConfiguration.getAuthentication()
+ then: "none should be returned"
+ authentication == "none"
+ }
+
+ def "Test that getAuthentication returns simple"() {
+ given: "We have a configDao, LdapManager and LdapConfiguration with bind principle and password set"
+ def configDao = Mock(ConfigurationDao)
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ configDao.getValue("ldap.bind.password") >> "password"
+ configDao.getValue("ldap.bind.principal") >> "cn=rmurphy,dc=cloudstack,dc=org"
+ when: "Get authentication is called"
+ String authentication = ldapConfiguration.getAuthentication()
+ then: "authentication should be set to simple"
+ authentication == "simple"
+ }
+
+ def "Test that getBaseDn returns dc=cloudstack,dc=org"() {
+ given: "We have a ConfigDao, LdapManager and ldapConfiguration with a baseDn value set."
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.basedn") >> "dc=cloudstack,dc=org"
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get basedn is called"
+ String baseDn = ldapConfiguration.getBaseDn();
+ then: "The set baseDn should be returned"
+ baseDn == "dc=cloudstack,dc=org"
+ }
+
+ def "Test that getEmailAttribute returns mail"() {
+ given: "Given that we have a ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.email.attribute") >> "mail"
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get Email Attribute is called"
+ String emailAttribute = ldapConfiguration.getEmailAttribute()
+ then: "mail should be returned"
+ emailAttribute == "mail"
+ }
+
+ def "Test that getFactory returns com.sun.jndi.ldap.LdapCtxFactory"() {
+ given: "We have a ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get Factory is scalled"
+ String factory = ldapConfiguration.getFactory();
+ then: "com.sun.jndi.ldap.LdapCtxFactory is returned"
+ factory == "com.sun.jndi.ldap.LdapCtxFactory"
+ }
+
+ def "Test that getFirstnameAttribute returns givenname"() {
+ given: "We have a ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.firstname.attribute") >> "givenname"
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get firstname attribute is called"
+ String firstname = ldapConfiguration.getFirstnameAttribute()
+ then: "givennam should be returned"
+ firstname == "givenname"
+ }
+
+ def "Test that getLastnameAttribute returns givenname"() {
+ given: "We have a ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.lastname.attribute") >> "sn"
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get Lastname Attribute is scalled "
+ String lastname = ldapConfiguration.getLastnameAttribute()
+ then: "sn should be returned"
+ lastname == "sn"
+ }
+
+ def "Test that getReturnAttributes returns the correct data"() {
+ given: "We have a ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.firstname.attribute") >> "givenname"
+ configDao.getValue("ldap.lastname.attribute") >> "sn"
+ configDao.getValue("ldap.username.attribute") >> "uid"
+ configDao.getValue("ldap.email.attribute") >> "mail"
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get return attributes is called"
+ String[] returnAttributes = ldapConfiguration.getReturnAttributes()
+ then: "An array containing uid, mail, givenname and sn is returned"
+ returnAttributes == ["uid", "mail", "givenname", "sn"]
+ }
+
+ def "Test that getScope returns SearchControls.SUBTREE_SCOPE"() {
+ given: "We have ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get scope is called"
+ int scope = ldapConfiguration.getScope()
+ then: "SearchControls.SUBTRE_SCOPE should be returned"
+ scope == SearchControls.SUBTREE_SCOPE;
+ }
+
+ def "Test that getUsernameAttribute returns uid"() {
+ given: "We have ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.username.attribute") >> "uid"
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get Username Attribute is called"
+ String usernameAttribute = ldapConfiguration.getUsernameAttribute()
+ then: "uid should be returned"
+ usernameAttribute == "uid"
+ }
+
+ def "Test that getUserObject returns inetOrgPerson"() {
+ given: "We have a ConfigDao, LdapManager and LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.user.object") >> "inetOrgPerson"
+ def ldapManager = Mock(LdapManager)
+ def ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+ when: "Get user object is called"
+ String userObject = ldapConfiguration.getUserObject()
+ then: "inetOrgPerson is returned"
+ userObject == "inetOrgPerson"
+ }
+
+ def "Test that providerUrl successfully returns a URL when a configuration is available"() {
+ given: "We have a ConfigDao, LdapManager, LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ def ldapManager = Mock(LdapManager)
+ List<LdapConfigurationVO> ldapConfigurationList = new ArrayList()
+ ldapConfigurationList.add(new LdapConfigurationVO("localhost", 389))
+ Pair<List<LdapConfigurationVO>, Integer> result = new Pair<List<LdapConfigurationVO>, Integer>();
+ result.set(ldapConfigurationList, ldapConfigurationList.size())
+ ldapManager.listConfigurations(_) >> result
+
+ LdapConfiguration ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+
+ when: "A request is made to get the providerUrl"
+ String providerUrl = ldapConfiguration.getProviderUrl()
+
+ then: "The providerUrl should be given."
+ providerUrl == "ldap://localhost:389"
+ }
+
+ def "Test that get search group principle returns successfully"() {
+ given: "We have a ConfigDao with a value for ldap.search.group.principle and an LdapConfiguration"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.search.group.principle") >> "cn=cloudstack,cn=users,dc=cloudstack,dc=org"
+ def ldapManager = Mock(LdapManager)
+ LdapConfiguration ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+
+ when: "A request is made to get the search group principle"
+ String result = ldapConfiguration.getSearchGroupPrinciple();
+
+ then: "The result holds the same value configDao did"
+ result == "cn=cloudstack,cn=users,dc=cloudstack,dc=org"
+ }
+
+ def "Test that getTrustStorePassword resopnds"() {
+ given: "We have a ConfigDao with a value for truststore password"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.truststore.password") >> "password"
+ def ldapManager = Mock(LdapManager)
+ LdapConfiguration ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+
+ when: "A request is made to get the truststore password"
+ String result = ldapConfiguration.getTrustStorePassword()
+
+ then: "The result is password"
+ result == "password";
+ }
+
+ def "Test that getSSLStatus can be true"() {
+ given: "We have a ConfigDao with values for truststore and truststore password set"
+ def configDao = Mock(ConfigurationDao)
+ configDao.getValue("ldap.truststore") >> "/tmp/ldap.ts"
+ configDao.getValue("ldap.truststore.password") >> "password"
+ def ldapManager = Mock(LdapManager)
+ LdapConfiguration ldapConfiguration = new LdapConfiguration(configDao, ldapManager)
+
+ when: "A request is made to get the status of SSL"
+ boolean result = ldapConfiguration.getSSLStatus();
+
+ then: "The response should be true"
+ result == true
+ }
+}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/server/src/com/cloud/configuration/Config.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 1243fb8,5550237..2fdc9f2
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@@ -39,11 -40,11 +40,8 @@@ import javax.naming.NamingException
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
- import org.apache.log4j.Logger;
- import org.springframework.stereotype.Component;
-
import org.apache.cloudstack.acl.SecurityChecker;
-import org.apache.cloudstack.api.ApiConstants.LDAPParams;
import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
-import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
-import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.network.UpdateNetworkOfferingCmd;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --cc server/test/com/cloud/vpc/MockConfigurationManagerImpl.java
index 29b899c,74211d4..3ec146b
--- a/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java
+++ b/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java
@@@ -25,7 -25,11 +25,9 @@@ import javax.inject.Inject
import javax.naming.ConfigurationException;
import javax.naming.NamingException;
+ import org.springframework.stereotype.Component;
+
import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
-import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
-import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd;
import org.apache.cloudstack.api.command.admin.network.UpdateNetworkOfferingCmd;
@@@ -371,15 -319,33 +317,6 @@@ public class MockConfigurationManagerIm
}
/* (non-Javadoc)
- * @see com.cloud.configuration.ConfigurationService#getDiskOffering(long)
- */
- @Override
- public DiskOffering getDiskOffering(long diskOfferingId) {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
- * @see com.cloud.configuration.ConfigurationService#updateLDAP(org.apache.cloudstack.api.commands.LDAPConfigCmd)
- */
- @Override
- public boolean updateLDAP(LDAPConfigCmd cmd) throws NamingException {
- // TODO Auto-generated method stub
- return false;
- }
-
- /* (non-Javadoc)
- * @see com.cloud.configuration.ConfigurationService#removeLDAP(org.apache.cloudstack.api.commands.LDAPRemoveCmd)
- */
- @Override
- public boolean removeLDAP(LDAPRemoveCmd cmd) {
- // TODO Auto-generated method stub
- return false;
- }
-
- /* (non-Javadoc)
- * @see com.cloud.configuration.ConfigurationService#listLDAPConfig(org.apache.cloudstack.api.commands.LDAPConfigCmd)
- */
- @Override
- public LDAPConfigCmd listLDAPConfig(LDAPConfigCmd cmd) {
- // TODO Auto-generated method stub
- return null;
- }
-
- /* (non-Javadoc)
* @see com.cloud.configuration.ConfigurationService#isOfferingForVpc(com.cloud.offering.NetworkOffering)
*/
@Override
@@@ -655,4 -576,4 +547,4 @@@
}
--}
++}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --cc setup/db/db/schema-410to420.sql
index 43c6c74,6be91ea..ad3076f
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@@ -2142,36 -2241,69 +2241,89 @@@ CREATE VIEW `cloud`.`project_view` A
left join
`cloud`.`project_account` pacct ON projects.id = pacct.project_id;
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Network', 'DEFAULT', 'management-server', 'network.loadbalancer.haproxy.max.conn', '4096', 'Load Balancer(haproxy) maximum number of concurrent connections(global max)');
+
+ ALTER TABLE `cloud`.`network_offerings` ADD COLUMN `concurrent_connections` int(10) unsigned COMMENT 'Load Balancer(haproxy) maximum number of concurrent connections(global max)';
+
+
+ ALTER TABLE `cloud`.`sync_queue` MODIFY `queue_size` smallint(6) NOT NULL DEFAULT '0' COMMENT 'number of items being processed by the queue';
+ ALTER TABLE `cloud`.`sync_queue` MODIFY `queue_size_limit` smallint(6) NOT NULL DEFAULT '1' COMMENT 'max number of items the queue can process concurrently';
+
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ucs.sync.blade.interval', '3600', 'the interval cloudstack sync with UCS manager for available blades in case user remove blades from chassis without notifying CloudStack');
+
+ ALTER TABLE `cloud`.`usage_event` ADD COLUMN `virtual_size` bigint unsigned;
+ ALTER TABLE `cloud_usage`.`usage_event` ADD COLUMN `virtual_size` bigint unsigned;
+ ALTER TABLE `cloud_usage`.`usage_storage` ADD COLUMN `virtual_size` bigint unsigned;
+ ALTER TABLE `cloud_usage`.`cloud_usage` ADD COLUMN `virtual_size` bigint unsigned;
+
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'kvm.ssh.to.agent', 'true', 'Specify whether or not the management server is allowed to SSH into KVM Agents');
+
+ #update the account_vmstats_view - count only user vms
+ DROP VIEW IF EXISTS `cloud`.`account_vmstats_view`;
+ CREATE VIEW `cloud`.`account_vmstats_view` AS
+ SELECT
+ account_id, state, count(*) as vmcount
+ from
+ `cloud`.`vm_instance`
+ where
+ vm_type = 'User'
+ group by account_id , state;
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Network', 'DEFAULT', 'management-server', 'network.loadbalancer.haproxy.max.conn', '4096', 'Load Balancer(haproxy) maximum number of concurrent connections(global max)');
+
+
+ DROP TABLE IF EXISTS `cloud_usage`.`usage_vmsnapshot`;
+ CREATE TABLE `cloud_usage`.`usage_vmsnapshot` (
+ `id` bigint(20) unsigned NOT NULL,
+ `zone_id` bigint(20) unsigned NOT NULL,
+ `account_id` bigint(20) unsigned NOT NULL,
+ `domain_id` bigint(20) unsigned NOT NULL,
+ `vm_id` bigint(20) unsigned NOT NULL,
+ `disk_offering_id` bigint(20) unsigned,
+ `size` bigint(20),
+ `created` datetime NOT NULL,
+ `processed` datetime,
+ INDEX `i_usage_vmsnapshot` (`account_id`,`id`,`vm_id`,`created`)
+ ) ENGINE=InnoDB CHARSET=utf8;
+
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'healthcheck.update.interval', '600', 'Time Interval to fetch the LB health check states (in sec)');
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Snapshots', 'DEFAULT', 'SnapshotManager', 'kvm.snapshot.enabled', 'false', 'whether snapshot is enabled for KVM hosts');
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'eip.use.multiple.netscalers', 'false', 'Should be set to true, if there will be multiple NetScaler devices providing EIP service in a zone');
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Snapshots', 'DEFAULT', 'SnapshotManager', 'snapshot.backup.rightafter', 'true', 'backup snapshot right after snapshot is taken');
+
+ DELETE FROM `cloud`.`configuration` where name='vmware.guest.vswitch';
+ DELETE FROM `cloud`.`configuration` where name='vmware.private.vswitch';
+ DELETE FROM `cloud`.`configuration` where name='vmware.public.vswitch';
+
+
+ UPDATE `cloud`.`autoscale_vmgroups` set uuid=id WHERE uuid is NULL;
+ UPDATE `cloud`.`autoscale_vmprofiles` set uuid=id WHERE uuid is NULL;
+ UPDATE `cloud`.`autoscale_policies` set uuid=id WHERE uuid is NULL;
+ UPDATE `cloud`.`counter` set uuid=id WHERE uuid is NULL;
+ UPDATE `cloud`.`conditions` set uuid=id WHERE uuid is NULL;
+ update `cloud`.`configuration` set component = 'SnapshotManager' where category = 'Snapshots' and component = 'none';
+
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Storage', 'DEFAULT', 'management-server', 'storage.cache.replacement.lru.interval', '30', 'time interval for unused data on cache storage (in days).');
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Storage', 'DEFAULT', 'management-server', 'storage.cache.replacement.enabled', 'true', 'enable or disable cache storage replacement algorithm.');
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Storage', 'DEFAULT', 'management-server', 'storage.cache.replacement.interval', '86400', 'time interval between cache replacement threads (in seconds).');
+ INSERT IGNORE INTO `cloud`.`configuration` VALUES ("Advanced", 'DEFAULT', 'management-server', 'vmware.nested.virtualization', 'false', 'When set to true this will enable nested virtualization when this is supported by the hypervisor');
+
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.bind.principal', NULL, 'Specifies the bind principal to use for bind to LDAP');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.bind.password', NULL, 'Specifies the password to use for binding to LDAP');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.username.attribute', 'uid', 'Sets the username attribute used within LDAP');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.email.attribute', 'mail', 'Sets the email attribute used within LDAP');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.firstname.attribute', 'givenname', 'Sets the firstname attribute used within LDAP');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.lastname.attribute', 'sn', 'Sets the lastname attribute used within LDAP');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.user.object', 'inetOrgPerson', 'Sets the object type of users within LDAP');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.basedn', NULL, 'Sets the basedn for LDAP');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.search.group.principle', NULL, 'Sets the principle of the group that users must be a member of');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.truststore', NULL, 'Sets the path to the truststore to use for LDAP SSL');
+INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ldap.truststore.password', NULL, 'Sets the password for the truststore');
+
+
+CREATE TABLE `cloud`.`ldap_configuration` (
+ `id` bigint unsigned NOT NULL auto_increment COMMENT 'id',
+ `hostname` varchar(255) NOT NULL COMMENT 'the hostname of the ldap server',
+ `port` int(10) COMMENT 'port that the ldap server is listening on',
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
- INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Network', 'DEFAULT', 'management-server', 'network.loadbalancer.haproxy.max.conn', '4096', 'Load Balancer(haproxy) maximum number of concurrent connections(global max)');
-
- ALTER TABLE `cloud`.`network_offerings` ADD COLUMN `concurrent_connections` int(10) unsigned COMMENT 'Load Balancer(haproxy) maximum number of concurrent connections(global max)';
-
- ALTER TABLE `cloud`.`sync_queue` MODIFY `queue_size` smallint(6) NOT NULL DEFAULT '0' COMMENT 'number of items being processed by the queue';
- ALTER TABLE `cloud`.`sync_queue` MODIFY `queue_size_limit` smallint(6) NOT NULL DEFAULT '1' COMMENT 'max number of items the queue can process concurrently';
-
- INSERT IGNORE INTO `cloud`.`configuration` VALUES ('Advanced', 'DEFAULT', 'management-server', 'ucs.sync.blade.interval', '3600', 'the interval cloudstack sync with UCS manager for available blades in case user remove blades from chassis without notifying CloudStack');
-
- ALTER TABLE `cloud`.`usage_event` ADD COLUMN `virtual_size` bigint unsigned;
- ALTER TABLE `cloud_usage`.`usage_event` ADD COLUMN `virtual_size` bigint unsigned;
- ALTER TABLE `cloud_usage`.`usage_storage` ADD COLUMN `virtual_size` bigint unsigned;
- ALTER TABLE `cloud_usage`.`cloud_usage` ADD COLUMN `virtual_size` bigint unsigned;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/tools/apidoc/gen_toc.py
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/css/cloudstack3.css
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/dictionary.jsp
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/index.jsp
----------------------------------------------------------------------
diff --cc ui/index.jsp
index e193c22,0ac48c9..086495a
--- a/ui/index.jsp
+++ b/ui/index.jsp
@@@ -429,10 -443,10 +443,10 @@@ under the License
<span wizard-field="default-network" conditional-field="select-network"></span>
</div>
<div class="edit">
- <a href="5"><fmt:message key="label.edit"/></a>
+ <a href="6"><fmt:message key="label.edit"/></a>
</div>
</div>
-
+
<!-- Security groups -->
<div class="select odd">
<div class="name">
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/accounts.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/autoscaler.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/globalSettings.js
----------------------------------------------------------------------
diff --cc ui/scripts/globalSettings.js
index 48b71d4,bee6ae3..d703e64
--- a/ui/scripts/globalSettings.js
+++ b/ui/scripts/globalSettings.js
@@@ -329,4 -440,4 +329,4 @@@
}
}
};
--})(cloudStack);
++})(cloudStack);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/sharedFunctions.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/system.js
----------------------------------------------------------------------
diff --cc ui/scripts/system.js
index 56eaec3,78f0242..6a4f606
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@@ -16643,4 -16253,4 +16253,4 @@@
return [];
};
--})($, cloudStack);
++})($, cloudStack);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/ui/dialog.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/ui/widgets/listView.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/ui/widgets/multiEdit.js
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bdba0dde/ui/scripts/zoneWizard.js
----------------------------------------------------------------------
diff --cc ui/scripts/zoneWizard.js
index 15fedb5,0ecddee..de319d5
--- a/ui/scripts/zoneWizard.js
+++ b/ui/scripts/zoneWizard.js
@@@ -4320,4 -4261,4 +4261,4 @@@
});
}
};
--}(cloudStack, jQuery));
++}(cloudStack, jQuery));