Handle onboard ALTER tables to support upgrade

Change-Id: I6c96aecccf00a3b02bf07cf172ff752b69d3cc94
Issue-ID: SDC-2640
Signed-off-by: Ben David, Elad (eb7504) <eb7504@intl.att.com>
diff --git a/.gitignore b/.gitignore
index 1775301..51d111f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -271,4 +271,6 @@
 asdctool/report_delete_1538046694389.json
 asdctool/report_test_1538046722484.json
 
-/ajcore*.txt
\ No newline at end of file
+/ajcore*.txt
+**/.factorypath
+
diff --git a/openecomp-be/dist/sdc-onboard-backend-docker/pom.xml b/openecomp-be/dist/sdc-onboard-backend-docker/pom.xml
index e3f5801..924f8e2 100644
--- a/openecomp-be/dist/sdc-onboard-backend-docker/pom.xml
+++ b/openecomp-be/dist/sdc-onboard-backend-docker/pom.xml
@@ -18,7 +18,12 @@
 
     <properties>
         <docker.image.name>sdc-onboard-backend</docker.image.name>
+        <docker.registry>nexus3.onap.org:10001</docker.registry>
+        <docker.password>docker</docker.password>
+        <docker.username>docker</docker.username>
+        <docker.namespace>onap</docker.namespace>
     </properties>
+
     <build>
         <plugins>
             <plugin>
@@ -51,115 +56,117 @@
             <plugin>
                 <artifactId>maven-resources-plugin</artifactId>
                 <version>3.0.2</version>
-                        <executions>
-                            <execution>
-                                <id>copy-resources-war</id>
-                                <phase>verify</phase>
-                                <goals>
-                                    <goal>copy-resources</goal>
-                                </goals>
-                                <configuration>
-                                    <outputDirectory>${project.basedir}/artifacts</outputDirectory>
-                                    <resources>
-                                        <resource>
-                                            <directory>
-                                                ${project.parent.basedir}/../../openecomp-be/tools/swagger-ui/target/api-docs
-                                            </directory>
-                                            <includes>
-                                                <include>api-docs.war</include>
-                                            </includes>
-                                        </resource>
-                                        <resource>
-                                            <directory>
-                                                ${project.parent.basedir}/../../openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/target
-                                            </directory>
-                                            <includes>
-                                                <include>onboarding-be-${project.version}.war</include>
-                                            </includes>
-                                        </resource>
-                                        <resource>
-                                            <directory>
-                                                ${project.parent.basedir}/../../openecomp-be/lib/openecomp-sdc-notification-lib/openecomp-sdc-notification-worker/src/main/resources
-                                            </directory>
-                                            <includes>
-                                                <include>onboarding_configuration.yaml</include>
-                                            </includes>
-                                        </resource>
-                                        <resource>
-                                            <directory>
-                                                ${project.parent.basedir}/../../catalog-be/src/main/resources/config
-                                            </directory>
-                                            <includes>
-                                                <include>logback.xml</include>
-                                            </includes>
-                                        </resource>
-                                    </resources>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <groupId>io.fabric8</groupId>
-                        <artifactId>docker-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-resources-war</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
                         <configuration>
-                            <apiVersion>1.23</apiVersion>
-                            <registry>nexus3.onap.org:10001</registry>
-                            <authConfig>
-                                <pull>
-                                    <username>docker</username>
-                                    <password>docker</password>
-                                </pull>
-                            </authConfig>
-                            <images>
-
-                                <!-- Build backend image -->
-                                <image>
-                                    <name>onap/${docker.image.name}</name>
-                                    <alias>${docker.image.name}</alias>
-                                    <build>
-                                        <cleanup>try</cleanup>
-                                        <dockerFileDir>${project.basedir}/artifacts</dockerFileDir>
-                                        <tags>
-                                            <tag>${docker.tag}</tag>
-                                            <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-latest</tag>
-                                        </tags>
-                                    </build>
-                                </image>
-                            </images>
+                            <outputDirectory>${project.basedir}/artifacts</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>
+                                        ${project.parent.basedir}/../../openecomp-be/tools/swagger-ui/target/api-docs
+                                    </directory>
+                                    <includes>
+                                        <include>api-docs.war</include>
+                                    </includes>
+                                </resource>
+                                <resource>
+                                    <directory>
+                                        ${project.parent.basedir}/../../openecomp-be/api/openecomp-sdc-rest-webapp/onboarding-rest-war/target
+                                    </directory>
+                                    <includes>
+                                        <include>onboarding-be-${project.version}.war</include>
+                                    </includes>
+                                </resource>
+                                <resource>
+                                    <directory>
+                                        ${project.parent.basedir}/../../openecomp-be/lib/openecomp-sdc-notification-lib/openecomp-sdc-notification-worker/src/main/resources
+                                    </directory>
+                                    <includes>
+                                        <include>onboarding_configuration.yaml</include>
+                                    </includes>
+                                </resource>
+                                <resource>
+                                    <directory>
+                                        ${project.parent.basedir}/../../catalog-be/src/main/resources/config
+                                    </directory>
+                                    <includes>
+                                        <include>logback.xml</include>
+                                    </includes>
+                                </resource>
+                            </resources>
                         </configuration>
-                        <executions>
-                            <execution>
-                                <id>clean-images</id>
-                                <phase>pre-clean</phase>
-                                <goals>
-                                    <goal>remove</goal>
-                                </goals>
-                                <configuration>
-                                    <removeAll>true</removeAll>
-                                    <image>onap/${docker.image.name}</image>
-                                </configuration>
-                            </execution>
+                    </execution>
+                </executions>
+            </plugin>
 
-                            <execution>
-                                <id>generate-images</id>
-                                <phase>install</phase>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                            </execution>
+            <plugin>
+                <groupId>io.fabric8</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <configuration>
+                    <apiVersion>1.23</apiVersion>
+                    <registry>${docker.registry}</registry>
+                    <authConfig>
+                        <pull>
+                            <username>${docker.username}</username>
+                            <password>${docker.password}</password>
+                        </pull>
+                    </authConfig>
+                    <images>
 
-                            <execution>
-                                <id>push-images</id>
-                                <phase>deploy</phase>
-                                <goals>
-                                    <goal>push</goal>
-                                </goals>
-                                <configuration>
-                                    <image>onap/${docker.image.name}</image>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-</project>
\ No newline at end of file
+                        <!-- Build backend image -->
+                        <image>
+                            <name>${docker.namespace}/${docker.image.name}</name>
+                            <alias>${docker.image.name}</alias>
+                            <build>
+                                <cleanup>try</cleanup>
+                                <dockerFileDir>${project.basedir}/artifacts</dockerFileDir>
+                                <tags>
+                                    <tag>${docker.tag}</tag>
+                                    <tag>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-latest</tag>
+                                </tags>
+                            </build>
+                        </image>
+                    </images>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>clean-images</id>
+                        <phase>pre-clean</phase>
+                        <goals>
+                            <goal>remove</goal>
+                        </goals>
+                        <configuration>
+                            <removeAll>true</removeAll>
+                            <image>${docker.namespace}/${docker.image.name}</image>
+                        </configuration>
+                    </execution>
+
+                    <execution>
+                        <id>generate-images</id>
+                        <phase>install</phase>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>push-images</id>
+                        <phase>deploy</phase>
+                        <goals>
+                            <goal>push</goal>
+                        </goals>
+                        <configuration>
+                            <image>${docker.namespace}/${docker.image.name}</image>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
+
diff --git a/openecomp-be/dist/sdc-onboard-db-init-docker/artifacts/Dockerfile b/openecomp-be/dist/sdc-onboard-db-init-docker/artifacts/Dockerfile
index 526ab95..76e1d2b 100644
--- a/openecomp-be/dist/sdc-onboard-db-init-docker/artifacts/Dockerfile
+++ b/openecomp-be/dist/sdc-onboard-db-init-docker/artifacts/Dockerfile
@@ -4,6 +4,8 @@
 
 COPY init_schemas.cql /root/
 
+COPY alter_tables.cql /root/
+
 COPY startup.sh /root/
 
 RUN chmod 770 /root/startup.sh
diff --git a/openecomp-be/dist/sdc-onboard-db-init-docker/pom.xml b/openecomp-be/dist/sdc-onboard-db-init-docker/pom.xml
index 05d8377..c2cafd7 100644
--- a/openecomp-be/dist/sdc-onboard-db-init-docker/pom.xml
+++ b/openecomp-be/dist/sdc-onboard-db-init-docker/pom.xml
@@ -18,7 +18,12 @@
 
     <properties>
         <docker.image.name>sdc-onboard-cassandra-init</docker.image.name>
+        <docker.namespace>onap</docker.namespace>
+        <docker.password>docker</docker.password>
+        <docker.username>docker</docker.username>
+        <docker.registry>nexus3.onap.org:10001</docker.registry>
     </properties>
+
     <build>
         <plugins>
             <plugin>
@@ -57,15 +62,15 @@
                     <registry>nexus3.onap.org:10001</registry>
                     <authConfig>
                         <pull>
-                            <username>docker</username>
-                            <password>docker</password>
+                            <username>${docker.username}</username>
+                            <password>${docker.password}</password>
                         </pull>
                     </authConfig>
                     <images>
 
                         <!-- Build backend image -->
                         <image>
-                            <name>onap/${docker.image.name}</name>
+                            <name>${docker.namespace}/${docker.image.name}</name>
                             <alias>${docker.image.name}</alias>
                             <build>
                                 <cleanup>try</cleanup>
@@ -87,7 +92,7 @@
                         </goals>
                         <configuration>
                             <removeAll>true</removeAll>
-                            <image>onap/${docker.image.name}</image>
+                            <image>${docker.namespace}/${docker.image.name}</image>
                         </configuration>
                     </execution>
 
@@ -106,7 +111,7 @@
                             <goal>push</goal>
                         </goals>
                         <configuration>
-                            <image>onap/${docker.image.name}</image>
+                            <image>${docker.namespace}/${docker.image.name}</image>
                         </configuration>
                     </execution>
                 </executions>
diff --git a/openecomp-be/tools/install/database/alter_tables.cql b/openecomp-be/tools/install/database/alter_tables.cql
new file mode 100644
index 0000000..9363a03
--- /dev/null
+++ b/openecomp-be/tools/install/database/alter_tables.cql
@@ -0,0 +1 @@
+ALTER TABLE dox.package_details ADD  RESOURCE_TYPE text;
diff --git a/openecomp-be/tools/install/database/init_schemas.cql b/openecomp-be/tools/install/database/init_schemas.cql
index 8458c6f..0569a12 100644
--- a/openecomp-be/tools/install/database/init_schemas.cql
+++ b/openecomp-be/tools/install/database/init_schemas.cql
@@ -39,10 +39,6 @@
 INSERT INTO application_config (namespace,key,value) VALUES ('vsp.schemaTemplates', 'questionnaire.vsp', '{ "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "properties": { "general": { "type": "object", "properties": { "affinityData": { "type": "string", "enum": [ "", "Affinity", "Anti Affinity", "None" ], "default": "" }, "availability": { "type": "object", "properties": { "useAvailabilityZonesForHighAvailability": { "type": "boolean", "default": false } }, "additionalProperties": false }, "regionsData": { "type": "object", "properties": { "multiRegion": { "type": "boolean", "default": false }, "regions": { "type": "array", "items": { "type": "string", "enum": [ "", "Alphareta", "Birmingham", "Dallas", "Fairfield CA", "Hayward CA", "Lisle", "Mission", "San Diego", "Secaucus" ], "default": "" } } }, "additionalProperties": false }, "storageDataReplication": { "type": "object", "properties": { "storageReplicationAcrossRegion": { "type": "boolean", "default": false }, "storageReplicationSize": { "type": "number", "minimum": 0, "maximum": 100, "exclusiveMaximum": true }, "storageReplicationFrequency": { "type": "number", "minimum": 5 }, "storageReplicationSource": { "type": "string", "maxLength": 300 }, "storageReplicationDestination": { "type": "string", "maxLength": 300 } }, "additionalProperties": false } }, "additionalProperties": false } }, "additionalProperties": false }');
 INSERT INTO application_config (namespace,key,value) VALUES ('vsp.monitoring', 'compute.ceilometer', '{ "ceilometerMetricList": [ { "name": "instance", "type": "Gauge", "unit": "instance", "category": "compute", "description": "Existence of instance" }, { "name": "memory", "type": "Gauge", "unit": "MB", "category": "compute", "description": "Volume of RAM allocated to the instance" }, { "name": "memory.usage", "type": "Gauge", "unit": "MB", "category": "compute", "description": "Volume of RAM used by the instance from the amount of its allocated memory" }, { "name": "memory.resident", "type": "Gauge", "unit": "MB", "category": "compute", "description": "Volume of RAM used by the instance on the physical machine" }, { "name": "cpu", "type": "Cumulative", "unit": "ns", "category": "compute", "description": "CPU time used" }, { "name": "cpu_util", "type": "Gauge", "unit": "%", "category": "compute", "description": "Average CPU utilization" }, { "name": "cpu.delta", "type": "Delta", "unit": "ns", "category": "compute", "description": "CPU time used since previous datapoint" }, { "name": "vcpus", "type": "Gauge", "unit": "vcpu", "category": "compute", "description": "Number of virtual CPUs allocated to the instance" }, { "name": "disk.latency", "type": "Gauge", "unit": "ms", "category": "disk", "description": "Average disk latency" }, { "name": "disk.iops", "type": "Gauge", "unit": "count/s", "category": "disk", "description": "Average disk iops" }, { "name": "disk.device.latency", "type": "Gauge", "unit": "ms", "category": "disk", "description": "Average disk latency per device" }, { "name": "disk.device.iops", "type": "Gauge", "unit": "count/s", "category": "disk", "description": "Average disk iops per device" }, { "name": "disk.capacity", "type": "Gauge", "unit": "B", "category": "disk", "description": "The amount of disk that the instance can see" }, { "name": "disk.allocation", "type": "Gauge", "unit": "B", "category": "disk", "description": "The amount of disk occupied by the instance on the host machine" }, { "name": "disk.usage", "type": "Gauge", "unit": "B", "category": "disk", "description": "The physical size in bytes of the image container on the host" }, { "name": "disk.device.capacity", "type": "Gauge", "unit": "B", "category": "disk", "description": "The amount of disk per device that the instance can see" }, { "name": "disk.device.allocation", "type": "Gauge", "unit": "B", "category": "disk", "description": "The amount of disk per device occupied by the instance on the host machine" }, { "name": "disk.device.usage", "type": "Gauge", "unit": "B", "category": "disk", "description": "The physical size in bytes of the image container on the host per device" }, { "name": "disk.device.read.requests", "type": "Cumulative", "unit": "request", "category": "disk", "description": "Number of read requests" }, { "name": "disk.device.read.requests.rate", "type": "Gauge", "unit": "request/s", "category": "disk", "description": "Average rate of read requests" }, { "name": "disk.device.write.requests", "type": "Cumulative", "unit": "request", "category": "disk", "description": "Number of write requests" }, { "name": "disk.device.write.requests.rate", "type": "Gauge", "unit": "request/s", "category": "disk", "description": "Average rate of write requests" }, { "name": "disk.device.read.bytes", "type": "Cumulative", "unit": "B", "category": "disk", "description": "Volume of reads" }, { "name": "disk.device.read.bytes.rate", "type": "Gauge", "unit": "B/s", "category": "disk", "description": "Average rate of reads" }, { "name": "disk.device.write.bytes", "type": "Cumulative", "unit": "B", "category": "disk", "description": "Volume of writes" }, { "name": "disk.device.write.bytes.rate", "type": "Gauge", "unit": "B/s", "category": "disk", "description": "Average rate of writes" }, { "name": "disk.write.requests", "type": "Cumulative", "unit": "request", "category": "compute", "description": "Number of write requests" }, { "name": "disk.write.requests.rate", "type": "Gauge", "unit": "request/s", "category": "compute", "description": "Average rate of write requests" }, { "name": "disk.read.bytes", "type": "Cumulative", "unit": "B", "category": "compute", "description": "Volume of reads" }, { "name": "disk.read.bytes.rate", "type": "Gauge", "unit": "B/s", "category": "compute", "description": "Average rate of reads" }, { "name": "disk.write.bytes", "type": "Cumulative", "unit": "B", "category": "compute", "description": "Volume of writes" }, { "name": "disk.write.bytes.rate", "type": "Gauge", "unit": "B/s", "category": "compute", "description": "Average rate of writes" }, { "name": "disk.read.requests", "type": "Cumulative", "unit": "request", "category": "compute", "description": "Number of read requests" }, { "name": "disk.root.size", "type": "Gauge", "unit": "GB", "category": "compute", "description": "Size of root disk" }, { "name": "disk.ephemeral.size", "type": "Gauge", "unit": "GB", "category": "compute", "description": "Size of ephemeral disk" } ] }');
 INSERT INTO application_config (namespace,key,value) VALUES ('vsp.monitoring', 'port.ceilometer', '{ "ceilometerMetricList": [ { "name": "network.incoming.bytes", "type": "Cumulative", "unit": "B", "category": "network", "description": "Number of incoming bytes" }, { "name": "network.incoming.bytes.rate", "type": "Gauge", "unit": "B/s", "category": "network", "description": "Average rate of incoming bytes" }, { "name": "network.outgoing.bytes", "type": "Cumulative", "unit": "B", "category": "network", "description": "Number of outgoing bytes" }, { "name": "network.outgoing.bytes.rate", "type": "Gauge", "unit": "B/s", "category": "network", "description": "Average rate of outgoing bytes" }, { "name": "network.incoming.packets", "type": "Cumulative", "unit": "packet", "category": "network", "description": "Number of incoming packets" }, { "name": "network.incoming.packets.rate", "type": "Gauge", "unit": "packet/s", "category": "network", "description": "Average rate of incoming packets" }, { "name": "network.outpoing.packets", "type": "Cumulative", "unit": "packet", "category": "network", "description": "Number of outgoing packets" }, { "name": "network.outgoing.packets.rate", "type": "Gauge", "unit": "packet/s", "category": "network", "description": "Average rate of outgoing packets" } ] }');
---temporary solution for schema update as cassandra doesn't support ALTER IF NOT EXISTS(CASSANDRA-14706),
--- should be updated when ticket implemented
--- or removed when not required, e.g. schema update strategy changed
-ALTER TABLE package_details ADD  RESOURCE_TYPE text;
 USE zusammen_dox;
 CREATE TABLE IF NOT EXISTS item (item_id text primary key, item_info text, creation_time timestamp, modification_time timestamp);
 CREATE TABLE IF NOT EXISTS version (space text, item_id text, version_id text,base_version_id text,info text,relations text,creation_time timestamp,modification_time timestamp ,PRIMARY KEY (( space, item_id ), version_id));