You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2012/11/01 21:40:43 UTC
[3/3] git commit: Changed the create database steps to be create from
a single create-schema.sql and then apply database modifications
Changed the create database steps to be create from a single create-schema.sql and then apply database modifications
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/772f660c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/772f660c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/772f660c
Branch: refs/heads/javelin
Commit: 772f660c33162f628c03f36b8f357e5cfca65c60
Parents: 3423c5d
Author: Alex Huang <al...@citrix.com>
Authored: Fri Oct 26 17:34:24 2012 -0700
Committer: Alex Huang <al...@citrix.com>
Committed: Thu Nov 1 13:40:15 2012 -0700
----------------------------------------------------------------------
developer/pom.xml | 206 ++++++++++-----
platform/api/pom.xml | 2 +-
.../platform/cloud/entity/api/NetworkEntity.java | 1 +
.../cloud/entity/api/VirtualMachineEntity.java | 4 +-
server/src/com/cloud/upgrade/DatabaseCreator.java | 95 +++++---
5 files changed, 205 insertions(+), 103 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/772f660c/developer/pom.xml
----------------------------------------------------------------------
diff --git a/developer/pom.xml b/developer/pom.xml
index 2d39233..3eb493d 100644
--- a/developer/pom.xml
+++ b/developer/pom.xml
@@ -1,13 +1,13 @@
-<!-- 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. -->
+<?xml version="1.0" encoding="UTF-8"?><!-- 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. -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -34,16 +34,63 @@
<profiles>
<profile>
- <id>deploydb2</id>
+ <id>deploydb</id>
<activation>
<property>
- <name>deploydb2</name>
+ <name>deploydb</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
+ <artifactId>properties-maven-plugin</artifactId>
+ <version>1.0-alpha-2</version>
+ <executions>
+ <execution>
+ <phase>initialize</phase>
+ <goals>
+ <goal>read-project-properties</goal>
+ </goals>
+ <configuration>
+ <files>
+ <file>${project.parent.basedir}/utils/conf/db.properties</file>
+ <file>${project.parent.basedir}/utils/conf/db.properties.override</file>
+ </files>
+ <quiet>true</quiet>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.7</version>
+ <executions>
+ <execution>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target>
+ <filter token="VERSION" value="${project.version}" />
+ <copy todir="${basedir}/target/db" filtering="true">
+ <fileset dir="${project.basedir}/../setup/db/" />
+
+ </copy>
+ <copy todir="${basedir}/target/db" filtering="true">
+ <fileset
+ dir="${project.basedir}/../awsapi-setup/db/mysql/">
+ <include name="**/*.sql" />
+ </fileset>
+ </copy>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<dependencies>
@@ -81,8 +128,8 @@
</dependencies>
<executions>
<execution>
- <phase>package</phase>
- <id>create-database-2</id>
+ <phase>process-test-resources</phase>
+ <id>create-schema</id>
<goals>
<goal>java</goal>
</goals>
@@ -96,16 +143,91 @@
<artifactId>cloud-server</artifactId>
</executableDependency>
<mainClass>com.cloud.upgrade.DatabaseCreator</mainClass>
+ <arguments>
+ <argument>${basedir}/target/db/create-schema.sql</argument>
+ <argument>${basedir}/target/db/create-schema-premium.sql</argument>
+ <argument>com.cloud.upgrade.DatabaseUpgradeChecker</argument>
+ </arguments>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>sql-maven-plugin</artifactId>
+ <version>1.5</version>
+ <dependencies>
+ <!-- specify the dependent jdbc driver here -->
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>${cs.mysql.version}</version>
+ </dependency>
+ </dependencies>
+ <configuration>
+ <driver>org.gjt.mm.mysql.Driver</driver>
+ <url>jdbc:mysql://${db.cloud.host}:${db.cloud.port}/cloud</url>
+ <username>${db.cloud.username}</username>
+ <password>${db.cloud.password}</password>
+ <!--all executions are ignored if -Dmaven.test.skip=true -->
+ <skip>${maven.test.skip}</skip>
+ <forceMojoExecution>true</forceMojoExecution>
+ </configuration>
+ <executions>
+ <execution>
+ <id>create-other-schema</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <srcFiles>
+ <srcFile>${basedir}/target/db/templates.sql</srcFile>
+ <srcFile>${basedir}/target/db/create-index-fk.sql</srcFile>
+ <srcFile>${basedir}/target/db/cloudbridge_schema.sql</srcFile>
+ <srcFile>${basedir}/target/db/cloudbridge_multipart.sql</srcFile>
+ <srcFile>${basedir}/target/db/cloudbridge_index.sql</srcFile>
+ <srcFile>${basedir}/target/db/cloudbridge_multipart_alter.sql</srcFile>
+ <srcFile>${basedir}/target/db/cloudbridge_bucketpolicy.sql</srcFile>
+ <srcFile>${basedir}/target/db/cloudbridge_policy_alter.sql</srcFile>
+ <srcFile>${basedir}/target/db/cloudbridge_offering.sql</srcFile>
+ <srcFile>${basedir}/target/db/cloudbridge_offering_alter.sql</srcFile>
+ </srcFiles>
+ </configuration>
+ </execution>
+ <execution>
+ <id>prefill-schema</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <sqlCommand>INSERT INTO `cloud`.`domain` (id, name,
+ parent, path, owner) VALUES (1, 'ROOT', NULL, '/',
+ 2)</sqlCommand>
+ </configuration>
+ </execution>
+ <execution>
+ <id>prefill-configuration</id>
+ <phase>process-test-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <sqlCommand>INSERT INTO `cloud`.`configuration`
+ (category, instance, component, name, value) VALUES
+ ('Hidden', 'DEFAULT', 'management-server', 'init',
+ 'false')</sqlCommand>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
</profile>
<profile>
- <id>deploydb</id>
+ <id>cleandb</id>
<activation>
<property>
- <name>deploydb</name>
+ <name>cleandb</name>
</property>
</activation>
<build>
@@ -143,8 +265,8 @@
<target>
<filter token="VERSION" value="${project.version}" />
<copy todir="${basedir}/target/db" filtering="true">
- <fileset dir="${project.basedir}/../setup/db/">
- </fileset>
+ <fileset dir="${project.basedir}/../setup/db/" />
+
</copy>
<copy todir="${basedir}/target/db" filtering="true">
<fileset
@@ -348,54 +470,6 @@
'${db.cloud.password}';</sqlCommand>
</configuration>
</execution>
- <execution>
- <id>create-schema</id>
- <phase>process-test-resources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
- <configuration>
- <srcFiles>
- <srcFile>${basedir}/target/db/create-schema.sql</srcFile>
- <srcFile>${basedir}/target/db/create-schema-premium.sql</srcFile>
- <srcFile>${basedir}/target/db/templates.sql</srcFile>
- <srcFile>${basedir}/target/db/create-index-fk.sql</srcFile>
- <srcFile>${basedir}/target/db/cloudbridge_schema.sql</srcFile>
- <srcFile>${basedir}/target/db/cloudbridge_multipart.sql</srcFile>
- <srcFile>${basedir}/target/db/cloudbridge_index.sql</srcFile>
- <srcFile>${basedir}/target/db/cloudbridge_multipart_alter.sql</srcFile>
- <srcFile>${basedir}/target/db/cloudbridge_bucketpolicy.sql</srcFile>
- <srcFile>${basedir}/target/db/cloudbridge_policy_alter.sql</srcFile>
- <srcFile>${basedir}/target/db/cloudbridge_offering.sql</srcFile>
- <srcFile>${basedir}/target/db/cloudbridge_offering_alter.sql</srcFile>
- </srcFiles>
- </configuration>
- </execution>
- <execution>
- <id>prefill-schema</id>
- <phase>process-test-resources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
- <configuration>
- <sqlCommand>INSERT INTO `cloud`.`domain` (id, name,
- parent, path, owner) VALUES (1, 'ROOT', NULL, '/',
- 2)</sqlCommand>
- </configuration>
- </execution>
- <execution>
- <id>prefill-configuration</id>
- <phase>process-test-resources</phase>
- <goals>
- <goal>execute</goal>
- </goals>
- <configuration>
- <sqlCommand>INSERT INTO `cloud`.`configuration`
- (category, instance, component, name, value) VALUES
- ('Hidden', 'DEFAULT', 'management-server', 'init',
- 'false')</sqlCommand>
- </configuration>
- </execution>
</executions>
</plugin>
</plugins>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/772f660c/platform/api/pom.xml
----------------------------------------------------------------------
diff --git a/platform/api/pom.xml b/platform/api/pom.xml
index 66f7755..ce0344a 100644
--- a/platform/api/pom.xml
+++ b/platform/api/pom.xml
@@ -37,6 +37,6 @@
<build>
<defaultGoal>install</defaultGoal>
<sourceDirectory>src</sourceDirectory>
- <!-- <testSourceDirectory>test</testSourceDirectory> -->
+ <testSourceDirectory>test</testSourceDirectory>
</build>
</project>
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/772f660c/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/NetworkEntity.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/NetworkEntity.java b/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/NetworkEntity.java
index ce7be7c..6a91cc1 100755
--- a/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/NetworkEntity.java
+++ b/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/NetworkEntity.java
@@ -23,4 +23,5 @@ import org.apache.cloudstack.platform.entity.api.CloudEntity;
import com.cloud.network.Network;
public interface NetworkEntity extends CloudEntity, Network {
+ void connectTo(NetworkEntity network);
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/772f660c/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/VirtualMachineEntity.java
----------------------------------------------------------------------
diff --git a/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/VirtualMachineEntity.java b/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/VirtualMachineEntity.java
index 23d1dad..7ed3db5 100755
--- a/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/VirtualMachineEntity.java
+++ b/platform/api/src/org/apache/cloudstack/platform/cloud/entity/api/VirtualMachineEntity.java
@@ -110,11 +110,11 @@ public interface VirtualMachineEntity extends VirtualMachine, CloudEntity {
* @param network network to attach
* @param deviceId device id to use when a nic is created
*/
- void connectTo(NetworkEntity network, short deviceId);
+ void connectTo(NetworkEntity network, short nicId);
/**
* Disconnect the VM from this network
* @param netowrk network to disconnect from
*/
- void disconnectFrom(NetworkEntity netowrk);
+ void disconnectFrom(NetworkEntity netowrk, short nicId);
}
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/772f660c/server/src/com/cloud/upgrade/DatabaseCreator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/upgrade/DatabaseCreator.java b/server/src/com/cloud/upgrade/DatabaseCreator.java
index 89e4b6b..f6a5017 100755
--- a/server/src/com/cloud/upgrade/DatabaseCreator.java
+++ b/server/src/com/cloud/upgrade/DatabaseCreator.java
@@ -26,11 +26,14 @@ import java.sql.Connection;
import java.sql.SQLException;
import com.cloud.utils.PropertiesUtil;
+import com.cloud.utils.component.ComponentLocator;
+import com.cloud.utils.component.SystemIntegrityChecker;
import com.cloud.utils.db.ScriptRunner;
import com.cloud.utils.db.Transaction;
/**
- * Creates the CloudStack Database
+ * Creates the CloudStack Database by using the 4.0 schema and apply
+ * upgrade steps to it.
*/
public class DatabaseCreator {
protected static void printHelp(String cmd) {
@@ -42,46 +45,70 @@ public class DatabaseCreator {
}
public static void main(String[] args) {
- System.out.println("Hello world!");
- }
- public static void main2(String[] args) {
if (args.length < 2) {
printHelp("DatabaseCreator");
System.exit(1);
}
- File cleanScript = PropertiesUtil.findConfigFile(args[0]);
- if (cleanScript == null) {
- System.err.println("Unable to find " + args[0]);
- printHelp("DatabaseCreator");
- System.exit(1);
- }
+ for (int i = 0; i < args.length; i++) {
- Connection conn = Transaction.getStandaloneConnection();
+ if (args[i].endsWith("sql")) {
- ScriptRunner runner = new ScriptRunner(conn, true, true);
- FileReader reader = null;
- try {
- reader = new FileReader(cleanScript);
- } catch (FileNotFoundException e) {
- System.err.println("Unable to read " + args[0] + ": " + e.getMessage());
- System.exit(1);
- }
- try {
- runner.runScript(reader);
- } catch (IOException e) {
- System.err.println("Unable to read " + args[0] + ": " + e.getMessage());
- System.exit(1);
- } catch (SQLException e) {
- System.err.println("Unable to execute " + args[0] + ": " + e.getMessage());
- System.exit(1);
- }
+ File sqlScript = PropertiesUtil.findConfigFile(args[i]);
+ if (sqlScript == null) {
+ System.err.println("Unable to find " + args[i]);
+ printHelp("DatabaseCreator");
+ System.exit(1);
+ }
+
+ System.out.println("=============> Processing SQL file at " + sqlScript.getAbsolutePath());
+
+ Connection conn = Transaction.getStandaloneConnection();
+ try {
+
+ ScriptRunner runner = new ScriptRunner(conn, false, true);
+ FileReader reader = null;
+ try {
+ reader = new FileReader(sqlScript);
+ } catch (FileNotFoundException e) {
+ System.err.println("Unable to read " + args[i] + ": " + e.getMessage());
+ System.exit(1);
+ }
+ try {
+ runner.runScript(reader);
+ } catch (IOException e) {
+ System.err.println("Unable to read " + args[i] + ": " + e.getMessage());
+ System.exit(1);
+ } catch (SQLException e) {
+ System.err.println("Unable to execute " + args[i] + ": " + e.getMessage());
+ System.exit(1);
+ }
+ } finally {
- try {
- conn.close();
- } catch (SQLException e) {
- System.err.println("Unable to close DB connection: " + e.getMessage());
+ try {
+ conn.close();
+ } catch (SQLException e) {
+ System.err.println("Unable to close DB connection: " + e.getMessage());
+ }
+ }
+
+ } else {
+ System.out.println("=============> Processing upgrade: " + args[i]);
+ Class<?> clazz = null;
+ try {
+ clazz = Class.forName(args[i]);
+ if (!SystemIntegrityChecker.class.isAssignableFrom(clazz)) {
+ System.err.println("The class must be of SystemIntegrityChecker: " + clazz.getName());
+ System.exit(1);
+ }
+ } catch (ClassNotFoundException e) {
+ System.err.println("Unable to find " + args[i] + ": " + e.getMessage());
+ System.exit(1);
+ }
+
+ SystemIntegrityChecker checker = (SystemIntegrityChecker)ComponentLocator.inject(clazz);
+ checker.check();
+ }
}
}
-
-}
+}
\ No newline at end of file