.. This work is licensed under a Creative Commons Attribution 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 .. Copyright 2018 Huawei Intellectual Property. All rights reserved. Service Orchestrator Release Notes ================================== The SO provides the highest level of service orchestration in the ONAP architecture. Version: 1.4.4 ----------------------- :Release Date: 2019-06-13 **Docker Images** **Dockers released for SO:** - onap/so/api-handler-infra,1.4.4 - onap/so/bpmn-infra,1.4.4 - onap/so/catalog-db-adapter,1.4.4 - onap/so/openstack-adapter,1.4.4 - onap/so/request-db-adapter,1.4.4 - onap/so/sdc-controller,1.4.4 - onap/so/sdnc-adapter,1.4.4 - onap/so/so-monitoring,1.4.4 - onap/so/vfc-adapter,1.4.4 **Release Purpose** **New Features** The main goal of the Dublin release was to: - Support CCVPN extension - Support BroadBand Service Usecase - SO SOL003 plugin support - Improve PNF PnP **Epics** - [`SO-1508 `__\ ] - ETSI Alignment - SO SOL003 plugin support to connect to external VNFMs - [`SO-1468 `__\ ] - Hardening of HPA in SO and extension of HPA capabilities to existing use-cases - [`SO-1394 `__\ ] - Extended and enhance the SO generic building block to support pre and post instantiation. - [`SO-1393 `__\ ] - Support the CCVPN Extension - [`SO-1392 `__\ ] - Support the BroadBand Service Usecase - [`SO-1353 `__\ ] - SO to be made independent of Cloud technologies - [`SO-1273 `__\ ] - PNF PnP Dublin updates & improvements - [`SO-1271 `__\ ] - PNF PnP Casablanca MR updates - [`SO-677 `__\ ] - Improve the issues and findings of the SO Casablanca Release - [`SO-166 `__\ ] - Non-stop operations required. **Stories** - [`SO-1974 `__\ ] - Turn off OpenStack heat stack audit - [`SO-1924 `__\ ] - Add VnfConfigUpdate to the list of native CM workflows returned to VID - [`SO-1820 `__\ ] - Add Model Version Query - [`SO-1806 `__\ ] - Fix issue where null variable causes task to not - [`SO-1793 `__\ ] - add status for delete - [`SO-1792 `__\ ] - add status message requirement for create vf module event audit - [`SO-1791 `__\ ] - Moved base client to new location - [`SO-1790 `__\ ] - Enhanced sniro BB to account for sole service proxies to support 1908. - [`SO-1765 `__\ ] - Convert Tabs to Spaces - [`SO-1760 `__\ ] - Add Query param to pull back nested stack information - [`SO-1758 `__\ ] - Fix POM to allow HTTP long polling to work on camunda - [`SO-1749 `__\ ] - re add openstack audit of delete functions after refactor - [`SO-1748 `__\ ] - Add support to parse cdl inside LOB and platform - [`SO-1737 `__\ ] - if audit fails write sub interface data to a ai - [`SO-1729 `__\ ] - Monitor Job Status-Delete - [`SO-1687 `__\ ] - removed unused test classes and methods - [`SO-1678 `__\ ] - removed extra argument from extractByKey method - [`SO-1676 `__\ ] - replace all fixed wiremock ports - [`SO-1671 `__\ ] - skip_post_instantiation_configuration schema and tosca ingestion - [`SO-1657 `__\ ] - Automated testing for the SO Monitoring component - [`SO-1648 `__\ ] - Increasing the test coverage of SO-Monitoring UI - [`SO-1634 `__\ ] - Notification Handling - Terminate - [`SO-1633 `__\ ] - Terminate VNF (with SVNFM interaction) - [`SO-1632 `__\ ] - Handle VNF delete and termination (without SVNFM integration) - [`SO-1630 `__\ ] - Monitor Job Status-Create - [`SO-1629 `__\ ] - Notification Handling - Instantiate - [`SO-1628 `__\ ] - Handle Notification Subscription - [`SO-1627 `__\ ] - Create relationship between esr-vnfm and generic-vnf in AAI - [`SO-1626 `__\ ] - Monitor Node Status - [`SO-1625 `__\ ] - Handle Grant Request (Without Homing/OOF) - [`SO-1624 `__\ ] - Instantiate VNF (with SVNFM Interaction) - [`SO-1623 `__\ ] - Handle Create VNF request in VNFM adapter - [`SO-1622 `__\ ] - Check for existing VNF (with SVNFM Interaction) - [`SO-1621 `__\ ] - Create placeholder implementation for create VNF (without SVNFM interaction) - [`SO-1620 `__\ ] - Create Shell Adapter - [`SO-1619 `__\ ] - Create SO VNFM Adapter Northbound Interface using Swagger - [`SO-1618 `__\ ] - SVNFM Simulator - [`SO-1616 `__\ ] - Add instance group support to SO - [`SO-1604 `__\ ] - SO Catalog Enhancement to support CDS Meta Data for VNF/PNF and PNF Tosca Ingestion - [`SO-1598 `__\ ] - add equals and hashcode support to dslquerybuilder - [`SO-1597 `__\ ] - improvements to audit inventory feature - [`SO-1596 `__\ ] - query clients now have more useable result methods - [`SO-1590 `__\ ] - skip cloud region validation for 1906 - [`SO-1589 `__\ ] - flow validators can now be skipped via an annotation - [`SO-1582 `__\ ] - vnf spin up gr api vnf s base module fails - [`SO-1573 `__\ ] - Abstract for CDS Implementation - [`SO-1569 `__\ ] - do not attempt to commit empty transactions - [`SO-1538 `__\ ] - Integration Test for SO VNFM Adapter - Perform the functional test to validate VNFM Adapter NBI and SOL003-based SBI - [`SO-1534 `__\ ] - Create Pre Building Block validator to check if cloud-region orchestration-disabled is true - [`SO-1533 `__\ ] - flowvaldiator will allow more flexible filt
Setting up a database connection
================================
 
Most applications will need access to a database. In this tutorial, we'll connect to a database in order to pull data for displaying in a Google chart.

Injecting data
--------------

First, let's generate some fake data to display. Create an sql file and populate it with the following:

.. code-block:: sql

  use ecomp_sdk;

  create table MOCK_DATA_AVG_SPEED (
    data_date DATE,
    speedmbps INT,
    direction varchar(10)
  );
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-01', 40, 'download');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-02', 18, 'download');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-03', 25, 'download');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-04', 48, 'download');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-05', 49, 'download');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-06', 46, 'download');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-07', 35, 'download');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-01', 10, 'upload');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-02', 15, 'upload');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-03', 14, 'upload');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-04', 9, 'upload');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-05', 12, 'upload');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-06', 13, 'upload');
  insert into MOCK_DATA_AVG_SPEED (data_date, speedmbps, direction) values ('2017-08-07', 15, 'upload');

Now, run it. Something like this:

::

	mysql -p<passwd> -u<user> < mock_data.sql

.. _connectionjava:

Setting up a connection in Java
-------------------------------

We'll need a place to store some data sources. In this case, we only need one, but your application might have more. Add the following member variable to your :code:`MyAppController.java` class:

.. code-block:: java

	private HashMap<String,DataSource> m_dataSources;

Don't forget to import the HashMap object:

.. code-block:: java

	import java.util.HashMap;

Now, we'll add a new private function, :code:`_getDataSources`:

.. code-block:: java

  private HashMap<String,DataSource> _getDataSources() throws Exception {
    HashMap<String,DataSource> dataSources = new HashMap<String,DataSource>();
    ComboPooledDataSource ds = new ComboPooledDataSource();
    try {
      ds.setDriverClass(SystemProperties.getProperty("db.driver"));
      ds.setJdbcUrl(SystemProperties.getProperty("db.connectionURL"));
      ds.setUser(SystemProperties.getProperty("db.userName"));
      ds.setPassword(SystemProperties.getProperty("db.password"));
      ds.setMinPoolSize(Integer.parseInt(SystemProperties.getProperty(SystemProperties.DB_MIN_POOL_SIZE)));
      ds.setMaxPoolSize(Integer.parseInt(SystemProperties.getProperty(SystemProperties.DB_MAX_POOL_SIZE)));
      ds.setIdleConnectionTestPeriod(Integer.parseInt(SystemProperties.getProperty(SystemProperties.IDLE_CONNECTION_TEST_PERIOD)));
      dataSources.put("myappdb", ds);
    }
    catch (Exception e) {
      throw e;
    }
    
    return dataSources;
  }

Notice that because we're piggy-backing our data to the ecomp_sdk database, we're borrowing a few properties as well. You can also add your own properties to :code:`sdk/ecomp-sdk/epsdk-app-os/src/main/webapp/WEB-INF/conf/system.properties` and use them. This allows you to create any number of connections and connection methods in your app. E.g.:

.. code-block:: java

	ds.setDriverClass(SystemProperties.getProperty("db.some_other_driver"));

Now, we need to add some code to our constructor so that the connection is set up when the controller is instantiated:

.. code-block:: java

  public MyAppController() {
    super();
    try {
      this.m_dataSources = _getDataSources();
    }
    catch (Exception e) {
      // Probably a good idea to do something here ;-)
    }
  }
in gerrit repo: - mso - mso/chef-repo - mso/docker-config - mso/libs - mso/mso-config **Other** NA =========== End of Release Notes