Skip to content

Commit 953a242

Browse files
author
Pete Pickerill
authored
Merge pull request #3 from IBM-UrbanCode/BM-1165
Update UCD/UCB Plug In for Datical 5 & Immutable Project Deploys
2 parents 6e62844 + b0589e8 commit 953a242

8 files changed

Lines changed: 302 additions & 92 deletions

File tree

README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ This plugin brings Datical DB functionality to IBM UrbanCode Deploy and Build.
55

66
Two properties in the plugin step, Datical DB Install Directory and Datical DB Drivers Directory, read a default property at the resource (Agent) level. For each agent that is going to execute Datical DB, create a Resource Property called daticalDBCmd and daticalDBDriversDir.
77

8-
Note: This is not the plug-in distributable! The full plugin can be found under the releases tab.
8+
## NOTE - As of Oct 20, 2017, this repo is discontinued!
9+
Please browse here for the latest code: https://github.com/IBM-UrbanCode/DaticalDB-UCD-UCB
10+
11+
Latest release of the plugin can be found here: https://github.com/IBM-UrbanCode/DaticalDB-UCD-UCB/releases
912

1013
### License
1114
This plug-in is protected under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0)
@@ -17,6 +20,10 @@ This plug-in is protected under the [Apache 2.0 License](https://www.apache.org/
1720

1821
Release Notes:
1922

23+
### Version 25 - May 2, 2018
24+
25+
Added Support for Datical 5 Command Parameters and the immutableProject flag for artifact based Deployments
26+
2027
### Version 24 - October 20, 2017
2128

2229
Added Support for Runtime Credentials in Forecast, Deploy, Status, and Status Details steps

plugin/info.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@
5858
<release-note plugin-version="24">
5959
Added Support for Runtime Credentials in Forecast, Deploy, Status and Status Details steps
6060
</release-note>
61+
<release-note plugin-version="25">
62+
Added Pipeline Parameter to Status, Status Details and Forecast Commands
63+
Added Support for Datical 5 Server Parameters to Forecast, Deploy, Status, and Status Details Commands
64+
</release-note>
6165
</release-notes>
6266

6367
</pluginInfo>

plugin/plugin.xml

Lines changed: 109 additions & 49 deletions
Large diffs are not rendered by default.

plugin/upgrade.xml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22
<plugin-upgrade xmlns="http://www.urbancode.com/UpgradeXMLSchema_v1"
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
44

5+
<migrate to-version="25">
6+
7+
<migrate-command name="Deploy with Datical DB">
8+
<migrate-properties>
9+
<migrate-property name="daticalServiceUsername"/>
10+
<migrate-property name="daticalService"/>
11+
</migrate-properties>
12+
</migrate-command>
13+
14+
</migrate>
515

616
<migrate to-version="23">
717

@@ -13,6 +23,35 @@
1323

1424
</migrate>
1525

26+
<migrate to-version="23">
27+
28+
<migrate-command name="Run Groovy Script"/>
29+
<migrate-command name="Register and Baseline Datical DB Project"/>
30+
<migrate-command name="Create Datical DB Project"/>
31+
<migrate-command name="Get Datical DB Version"/>
32+
<migrate-command name="Deploy with Datical DB">
33+
<migrate-properties>
34+
<migrate-property name="daticalDBPipeline"/>
35+
</migrate-properties>
36+
</migrate-command>
37+
<migrate-command name="Validate and Forecast with Datical DB"/>
38+
<migrate-command name="Export Database Schema (Snapshot)"/>
39+
<migrate-command name="Read Datical DB History"/>
40+
<migrate-command name="Sync Datical DB Change Log"/>
41+
<migrate-command name="Delete Datical DB Check Sums"/>
42+
<migrate-command name="View Datical DB Status"/>
43+
<migrate-command name="View Datical DB Status Details"/>
44+
<migrate-command name="Check Datical DB Drivers"/>
45+
<migrate-command name="Validate Datical DB Rules"/>
46+
<migrate-command name="Datical DB Rollback"/>
47+
<migrate-command name="Get Database Differences (Change Log)"/>
48+
<migrate-command name="Get Database Differences (Report)"/>
49+
<migrate-command name="Add Datical DB Project"/>
50+
<migrate-command name="Add Datical DB Database Definition"/>
51+
<migrate-command name="Datical DB Install License"/>
52+
53+
</migrate>
54+
1655
<migrate to-version="22">
1756

1857
<migrate-command name="Run Groovy Script"/>

src/main/scripts/deploy.groovy

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ catch (IOException e) {
1414
final def cwd = new File('.');
1515
final def cmdHelper = new CommandHelper(cwd);
1616

17-
18-
1917
//--------------------------------------------------------------------------------------------------
2018
def getAbsPath(def file) {
2119
def tempFile = null;
@@ -32,43 +30,57 @@ def daticalDBPassword = props['daticalDBPassword'];
3230
def daticalDBDriversDir = getAbsPath(props['daticalDBDriversDir']);
3331
def daticalDBPipeline = props['daticalDBPipeline'];
3432
def daticalDBProjectDir = getAbsPath(props['daticalDBProjectDir']);
33+
def daticalImmutableProject = props['daticalImmutableProject'];
34+
def daticalProjectName = props['daticalProjectName'];
3535
def daticalDBAction = "deploy";
3636
def daticalDBServer = props['daticalDBServer'];
3737
def daticalDBContext = props['daticalDBContext'];
3838
def daticalDBRollback = props['daticalDBRollback']
3939
def daticalDBExportSQL = props['daticalDBExportSQL'];
4040
def daticalDBExportRollbackSQL = props['daticalDBExportRollbackSQL'];
4141
def daticalDBLabels = props['daticalDBLabels'];
42+
def daticalServiceUsername = props['daticalServiceUsername'];
43+
def daticalService = props['daticalService'];
44+
4245

4346
if (daticalDBRollback == "false") {
4447
daticalDBAction = "deploy";
4548
} else {
4649
daticalDBAction = "deploy-autoRollback";
4750
}
4851

49-
def cmdArgs = "";
52+
// START building the CLI args. Start with the pointer to hammer
53+
def cmdArgs = [daticalDBCmd];
5054

51-
if (daticalDBExportSQL == "true") {
52-
53-
if (daticalDBExportRollbackSQL == "true") {
54-
55-
cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir, "--genSQL", "--genRollbackSQL"];
56-
57-
} else {
58-
59-
cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir, "--genSQL"];
55+
//Check for Datical Service Specific Properties nd BUild the Appropriate Command Line
56+
if (daticalService && daticalServiceUsername) {
57+
cmdArgs << "--daticalServer=" + daticalService;
58+
cmdArgs << "--daticalUsername=" + daticalServiceUsername;
59+
}
6060

61-
}
62-
63-
} else if (daticalDBExportRollbackSQL == "true") {
61+
// Set the immutableProject flag if needed
62+
if (daticalImmutableProject) {
63+
cmdArgs << "--immutableProject=" + daticalImmutableProject;
64+
}
6465

65-
cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir, "--genRollbackSQL"];
66+
if (daticalProjectName){
67+
cmdArgs << "--projectKey=" + daticalProjectName;
68+
}
6669

67-
} else {
70+
// Add driver location and project directory
71+
cmdArgs << '--drivers';
72+
cmdArgs << daticalDBDriversDir;
73+
cmdArgs << '--project';
74+
cmdArgs << daticalDBProjectDir;
6875

69-
cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir];
76+
// Handle SQL Exports
77+
if (daticalDBExportSQL == "true") {
78+
cmdArgs << '--genSQL';
79+
}
7080

71-
}
81+
if (daticalDBExportRollbackSQL == "true") {
82+
cmdArgs << '--genRollbackSQL';
83+
}
7284

7385
if (daticalDBUsername) {
7486
def usernameString = daticalDBContext + ":::" + daticalDBUsername;

src/main/scripts/forecast.groovy

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ catch (IOException e) {
1414
final def cwd = new File('.');
1515
final def cmdHelper = new CommandHelper(cwd);
1616

17-
18-
1917
//--------------------------------------------------------------------------------------------------
2018
def getAbsPath(def file) {
2119
def tempFile = null;
@@ -31,37 +29,50 @@ def daticalDBUsername = props['daticalDBUsername'];
3129
def daticalDBPassword = props['daticalDBPassword'];
3230
def daticalDBDriversDir = getAbsPath(props['daticalDBDriversDir']);
3331
def daticalDBProjectDir = getAbsPath(props['daticalDBProjectDir']);
32+
def daticalImmutableProject = props['daticalImmutableProject'];
33+
def daticalProjectName = props['daticalProjectName'];
34+
def daticalDBPipeline = props['daticalDBPipeline'];
3435
def daticalDBAction = "forecast";
3536
def daticalDBServer = props['daticalDBServer'];
3637
def daticalDBContext = props['daticalDBContext'];
3738
def daticalDBExportSQL = props['daticalDBExportSQL'];
3839
def daticalDBExportRollbackSQL = props['daticalDBExportRollbackSQL'];
3940
def daticalDBLabels = props['daticalDBLabels'];
41+
def daticalServiceUsername = props['daticalServiceUsername'];
42+
def daticalService = props['daticalService'];
4043

44+
// START building the CLI args. Start with the pointer to hammer
45+
def cmdArgs = [daticalDBCmd];
4146

42-
def cmdArgs = "";
43-
44-
if (daticalDBExportSQL == "true") {
45-
46-
if (daticalDBExportRollbackSQL == "true") {
47-
48-
cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir, "--genSQL", "--genRollbackSQL"];
49-
50-
} else {
51-
52-
cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir, "--genSQL"];
47+
//Check for Datical Service Specific Properties nd BUild the Appropriate Command Line
48+
if (daticalService && daticalServiceUsername) {
49+
cmdArgs << "--daticalServer=" + daticalService;
50+
cmdArgs << "--daticalUsername=" + daticalServiceUsername;
51+
}
5352

54-
}
55-
56-
} else if (daticalDBExportRollbackSQL == "true") {
53+
// Set the immutableProject flag if needed
54+
if (daticalImmutableProject) {
55+
cmdArgs << "--immutableProject=" + daticalImmutableProject;
56+
}
5757

58-
cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir, "--genRollbackSQL"];
58+
if (daticalProjectName){
59+
cmdArgs << "--projectKey=" + daticalProjectName;
60+
}
5961

60-
} else {
62+
// Add driver location and project directory
63+
cmdArgs << '--drivers';
64+
cmdArgs << daticalDBDriversDir;
65+
cmdArgs << '--project';
66+
cmdArgs << daticalDBProjectDir;
6167

62-
cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir];
68+
// Handle SQL Exports
69+
if (daticalDBExportSQL == "true") {
70+
cmdArgs << '--genSQL';
71+
}
6372

64-
}
73+
if (daticalDBExportRollbackSQL == "true") {
74+
cmdArgs << '--genRollbackSQL';
75+
}
6576

6677
if (daticalDBUsername) {
6778
def usernameString = daticalDBContext + ":::" + daticalDBUsername;
@@ -91,6 +102,11 @@ if (daticalDBLabels) {
91102
cmdArgs << daticalDBLabels;
92103
}
93104

105+
if (daticalDBPipeline) {
106+
cmdArgs << "--pipeline";
107+
cmdArgs << daticalDBPipeline;
108+
}
109+
94110
cmdArgs << daticalDBAction;
95111
cmdArgs << daticalDBServer;
96112

src/main/scripts/status.groovy

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,37 @@ def daticalDBUsername = props['daticalDBUsername'];
3131
def daticalDBPassword = props['daticalDBPassword'];
3232
def daticalDBDriversDir = getAbsPath(props['daticalDBDriversDir']);
3333
def daticalDBProjectDir = getAbsPath(props['daticalDBProjectDir']);
34+
def daticalImmutableProject = props['daticalImmutableProject'];
35+
def daticalProjectName = props['daticalProjectName'];
36+
def daticalDBPipeline = props['daticalDBPipeline'];
3437
def daticalDBAction = "status";
3538
def daticalDBServer = props['daticalDBServer'];
39+
def daticalServiceUsername = props['daticalServiceUsername'];
40+
def daticalService = props['daticalService'];
3641

37-
def cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir];
42+
// START building the CLI args. Start with the pointer to hammer
43+
def cmdArgs = [daticalDBCmd];
44+
45+
//Check for Datical Service Specific Properties nd BUild the Appropriate Command Line
46+
if (daticalService && daticalServiceUsername) {
47+
cmdArgs << "--daticalServer=" + daticalService;
48+
cmdArgs << "--daticalUsername=" + daticalServiceUsername;
49+
}
50+
51+
// Set the immutableProject flag if needed
52+
if (daticalImmutableProject) {
53+
cmdArgs << "--immutableProject=" + daticalImmutableProject;
54+
}
55+
56+
if (daticalProjectName){
57+
cmdArgs << "--projectKey=" + daticalProjectName;
58+
}
59+
60+
// Add driver location and project directory
61+
cmdArgs << '--drivers';
62+
cmdArgs << daticalDBDriversDir;
63+
cmdArgs << '--project';
64+
cmdArgs << daticalDBProjectDir;
3865

3966
if (daticalDBUsername) {
4067
def usernameString = daticalDBServer + ":::" + daticalDBUsername;
@@ -48,8 +75,20 @@ if (daticalDBPassword) {
4875
cmdArgs << passwordString;
4976
}
5077

78+
if (daticalDBPipeline) {
79+
cmdArgs << "--pipeline";
80+
cmdArgs << daticalDBPipeline;
81+
}
82+
5183
cmdArgs << daticalDBAction;
52-
cmdArgs << daticalDBServer;
84+
85+
//Check for service to see if we're running against the service.
86+
//If we are status the pipeline. If not status the environment
87+
if(daticalService && daticalProjectName) {
88+
cmdArgs << daticalProjectName;
89+
} else {
90+
cmdArgs << daticalDBServer;
91+
}
5392

5493
def daticalDBvm = props['daticalDBvm'];
5594
if (daticalDBvm) {

src/main/scripts/statusdetails.groovy

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,38 @@ def daticalDBUsername = props['daticalDBUsername'];
3131
def daticalDBPassword = props['daticalDBPassword'];
3232
def daticalDBDriversDir = getAbsPath(props['daticalDBDriversDir']);
3333
def daticalDBProjectDir = getAbsPath(props['daticalDBProjectDir']);
34+
def daticalImmutableProject = props['daticalImmutableProject'];
35+
def daticalProjectName = props['daticalProjectName'];
36+
def daticalDBPipeline = props['daticalDBPipeline'];
3437
def daticalDBAction = "statusDetails";
3538
def daticalDBServer = props['daticalDBServer'];
39+
def daticalServiceUsername = props['daticalServiceUsername'];
40+
def daticalService = props['daticalService'];
3641

37-
def cmdArgs = [daticalDBCmd, '-drivers', daticalDBDriversDir, '--project', daticalDBProjectDir];
42+
// START building the CLI args. Start with the pointer to hammer
43+
def cmdArgs = [daticalDBCmd];
44+
45+
//Check for Datical Service Specific Properties nd BUild the Appropriate Command Line
46+
if (daticalService && daticalServiceUsername) {
47+
cmdArgs << "--daticalServer=" + daticalService;
48+
cmdArgs << "--daticalUsername=" + daticalServiceUsername;
49+
}
50+
51+
// Set the immutableProject flag if needed
52+
if (daticalImmutableProject) {
53+
cmdArgs << "--immutableProject=" + daticalImmutableProject;
54+
}
55+
56+
57+
if (daticalProjectName){
58+
cmdArgs << "--projectKey=" + daticalProjectName;
59+
}
60+
61+
// Add driver location and project directory
62+
cmdArgs << '--drivers';
63+
cmdArgs << daticalDBDriversDir;
64+
cmdArgs << '--project';
65+
cmdArgs << daticalDBProjectDir;
3866

3967
if (daticalDBUsername) {
4068
def usernameString = daticalDBServer + ":::" + daticalDBUsername;
@@ -48,6 +76,11 @@ if (daticalDBPassword) {
4876
cmdArgs << passwordString;
4977
}
5078

79+
if (daticalDBPipeline) {
80+
cmdArgs << "--pipeline";
81+
cmdArgs << daticalDBPipeline;
82+
}
83+
5184
cmdArgs << daticalDBAction;
5285
cmdArgs << daticalDBServer;
5386

0 commit comments

Comments
 (0)