RDK Resources

[*RDK Preferred*]

Code Management Facility

Code Releases

RDK Forums

[RDK Conferences]

RDK Support

Archives

Papers & Presentations Archive

In the News!

Skip to end of metadata
Go to start of metadata

This Page is work in progress and hence may not be suitable for general audience.


Software Requirements (Reference setup)

Component


Recommendation

System/OS

Ubuntu 18.04.1 LTS
Disk space> 5GB
GIT(Version 2.17.1)
Java/JDK(Version 1.8.0_212)

Installation of Dependencies

  1. Install Java JDK

    To install JDK follow these steps:

    • For x86 Linux architecture
      Download jdk-7u80-linux-x64.tar.gz from oracle jdk download site.

    • For AWS VM (aarch64 ARM architecture)
      Download jdk-8u211-linux-arm64-vfp-hflt.tar.gz from oracle java download site.

    • Extract the compressed archive under /opt
      $ tar xzf <archive-name> -C /opt

    • If there are other versions of JDK previously installed ,then to use this version do the following:

    sudo update-alternatives  --install  “/usr/bin/java” “java” “path/of /java/binary” 1

    Similarly repeat the above step for javac, javaws etc. Once it’s done, run the command :

    sudo update-alternatives  --config java

    Then select the choice which corresponds to your JDK version. You can repeat the same for javac , javaws etc. 
    Check your installation using the command : java  -version

  2. Install Maven (Version 3.6.0)

    To install maven follow these steps:

    • sudo apt update
    • sudo apt install maven
    • Check the installation using : mvn -version
  3. Install a local copy of npm (specific to the user)

    Steps to install nvm & configure node using nvm:
    ---------------------------------------------------
    $ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
    [Follow instruction from console to set the nvm Environment]
    $ nvm install node
    
    Only required,If you Prefer to set particular version
    $ nvm install 10.2.1
    $ nvm alias default v10.2.1
  4. Install Cassandra (Version 2.0.17)

      To install Cassandra follow below steps:

CREATE KEYSPACE "ApplicationsDiscoveryDataService" WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '3'
};
  • To use this key space run the command: USE "ApplicationsDiscoveryDataService";
  •  To check if tables were created successfully use the command:

    DESCRIBE KEYSPACE;

  • NOTE: If the keyspace has already been created  run these commands  to check if all tables present in cassandra_schema_tables has been added to the keyspace:

USE "ApplicationsDiscoveryDataService";

 DESCRIBE KEYSPACE;

Build Xconf server application

Download the xconfserver code from the rdk central code repository using the following command:

$ git clone "https://code.rdkcentral.com/r/rdk/components/generic/xconfserver"

For the new updates download from the latest branch.

Configuration & service startup

  1. Start Cassandra service

    To start an Xconf application, start the Cassandra server by executing the following commands:

    $ cd cassandra/apache-cassandra-2.0.17
    $ sudo bin/cassandra
    The status of cassandra can be checked by invoking below command
    $ bin/nodetool status
  2. Configure and start Xconf Application services

    1. Resolve Dependencies

      Go to the xconf folder and run the following command to download all dependencies.
      $ mvn clean install

    2. Configure angular admin (UI) service

For running the angular admin application, execute the following in the folder xconfserver/xconf-angular-admin:

For the first time application deployment,

create a "service.properties"  file under the path xconfserver/xconf-angular-admin/src/main/resources/service.properties with the following contents:

#autoGenerate schema is true by default but can be turned to false
autoGenerateSchema=true

Then run the command,

mvn jetty:run  -DappConfig=<path_to_xconfserver>/xconf-angular-admin/src/main/resources/service.properties

For the subsequent runs execute the below command in the folder xconfserver/xconf-angular-admin:

mvn jetty:run

Download the following packages under the folder /xconfserver/xconf-angular-admin/src/main/webapp

    • • npm install -g bower
      • npm install -g grunt-cli
      • npm install
      • npm install grunt-contrib-copy --save-den 
      • grunt install

To run the admin UI launch it as http://localhost:9093/admin/ in any browser.

c. Configure Data Service

    1. To run the data service application go to the xconfserver/xconf-dataservice folder and execute the following:

      For the first time application deployment, create a "service.properties"  file e.g. xconfserver/xconf-dataservice/src/main/resources/service.properties with the following contents:

      #autoGenerate schema is true by default but can be turned to false
      autoGenerateSchema=true

      Then run the command,

      mvn jetty:run  -DappConfig=<path_to_xconfserver>/xconf-dataservice/src/main/resources/service.properties

      For the subsequent runs execute the below command in the folder xconfserver/xconf-dataservice :

      mvn jetty:run


8.To launch the application go to http://localhost:9092/queries/environments .  To verify add an entry in the environments tab of the xconf admin application and check whether the same is updated here.

9. NOTE:To run the Admin UI and dataservice applications in background start jetty server as follows:

   nohup mvn jetty:run &

Admin UI common configuration

Below steps will affect all the features in xconf system and should be configured after initial setup.

Define Environments

Site Navigation: <xconf-server>:9093 >> Common >> Environments | Example URL: http://34.219.243.214:9093/admin/ux/#/environment/all

Define Models

Site Navigation: http://<XCONF-SERVER>:9093 >> Common >> Models | Example URL : http://34.219.243.214:9093/admin/ux/#/model/all


Define MAC List (This will be used to target certain list of MACs against a particular feature configuration)

Site Navigation htp://<XCONF-SERVER>:9093 >> Common >> MAC List | Example URL : http://34.219.243.214:9093/admin/ux/#/namespacedlist/MAC_LIST


Feature Validation (RFC)

RDK Feature control configuration can be added by adding below 2 sections

  • Define the Feature
  • Define the Feature Rule

Configuration

Site Navigation | http://<XCONF_SERVER>:9093 >> RFC >> Feature

Site Navigation | http://<XCONF_SERVER>:9093 >> RFC >> Feature Rule


Client end verification (RPI)

CURL Commandcurl 'http://<XCONF_IP>:9092/featureControl/getSettings?estbMacAddress=B8:27:EB:FF:54:95&firmwareVersion=rdk-generic-hybrid-wpe-image_default_20190702100618&env=pi&model=RPI&ecmMacAddress=B8:27:EB:FF:54:95&controllerId=2504&channelMapId=2345&vodId=15660&partnerId=&accountId=Unknown&version=2'
CPE Script (RDK-V)/lib/rdk/RFCbase.sh
CPE Service (RDK-V)/lib/systemd/system/rfc-config.service


Feature Validation (LogUpload)

Configuration

  1. Create an upload repository under http://<XCONF_IP>:9093/admin/ux/#/uploadrepository
  2. Add the formula under http://<XCONF_IP>:9093 >> DCM >> Forumlas e.g. http://<XCONF_IP>:9093/admin/ux/#/formulas
  3. Edit the Device Settings Tab
  4. Edit the Log upload Setting (Create schedule & Add the upload repository created beforehand.

Client end verification (RPI)

CURL Commandcurl 'http://<XCONF_IP>:9092/loguploader/getSettings?estbMacAddress=B8:27:EB:FF:54:95&firmwareVersion=rdk-generic-hybrid-wpe-image_default_20190702100618&env=dev&model=RPI&ecmMacAddress=B8:27:EB:FF:54:95&controllerId=2504&channelMapId=2345&vodId=15660&timezone=&partnerId=&accountId=Unknown&version=2'
CPE Script (RDK-V)

/lib/rdk/StartDCM.sh

/lib/rdk/DCMscript.sh

CPE Service (RDK-V)/lib/systemd/system/dcm-log.service

Feature Validation (Telemetry)

  1. Telemetry configuration can be done by adding an permanent profile which contains below objects
    1. Upload repository
    2. Profile options (Header, content, frequency etc.)
  2. Creating a targeting rule which is basically mapping the profile to a set of MAC/IP/Device etc.

Configuration

Site Navigation: http://<XCONF_SERVER>:9093 >> Telemetry >> Permanent Profiles | Example URL: http://34.219.243.214:9093/admin/ux/#/permanentprofile

Site Navigation: http://<XCONF_SERVER>:9093 >> Telemetry >> Targeting Rule | Example URL: http://34.219.243.214:9093/admin/ux/#/targetingrule


Client end verification (RPI)

CURL Commandcurl 'http://<XCONF_IP>:9092/loguploader/getSettings?estbMacAddress=B8:27:EB:FF:54:95&firmwareVersion=rdk-generic-hybrid-wpe-image_default_20190702100618&env=dev&model=RPI&ecmMacAddress=B8:27:EB:FF:54:95&controllerId=2504&channelMapId=2345&vodId=15660&timezone=&partnerId=&accountId=Unknown&version=2'
CPE Script (RDK-V)

/lib/rdk/DCMscript.sh

/lib/rdk/dca_utility.sh

CPE Service (RDK-V)/lib/systemd/system/dcm-log.service

Feature Validation (Firmware update)

Please refer below links for firmware update

XConf - Configuring Firmware Download Location

https://wiki.rdkcentral.com/display/RDK/XConf+-+Configuring+Firmware


  • No labels

18 Comments

  1. Hi,

    The following link is not working.

    https://code.rdkcentral.com/r/beta/components/generic/xconfserver

    Can someone help me to configure xconf in my local machine?

    Thanks in advance.

    1. Please try with the below link, it should work:

      git clone "https://code.rdkcentral.com/r/rdk/components/generic/xconfserver"


  2. Hi

    As there mentioned maven 3.6 is successfully installed, when it comes to Xconf server maven Iam not able to download it, Iam getting errors.

  3. Hi,

    We have 2 questions for this.

    1. Can you let us know minimum MEMORY size requirement to execute server components stable?
    2. How can we gracefully stop Xconf server components for xconf-angular-admin, xconf-dataservice?

    1. Hi

      For application it takes >5GB of disk space, In my system I have availabe disk space as 71GB.

      Coming to memory I have 9GB memory, still Iam getting errors like this,


      [INFO] Scanning for projects...
      [WARNING]
      [WARNING] Some problems were encountered while building the effective model for com.comcast.coast.xconf.oss:xconf-automation-tests:jar:1.0.0-SNAPSHOT
      [WARNING] Reporting configuration should be done in <reporting> section, not in maven-site-plugin <configuration> as reportPlugins parameter. @ com.comcast.coast.xconf.oss:xconf-automation-tests:[unknown-version], /home/sharanya/Downloads/rdk-xconfserver-RDK-DEV-2001/xconf-automation-tests/pom.xml, line 124, column 40
      [WARNING]
      [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
      [WARNING]
      [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
      [WARNING]
      [INFO] ------------------------------------------------------------------------
      [INFO] Reactor Build Order:
      [INFO]
      [INFO] xconf [pom]
      [INFO] Hydra Astyanax Common Classes [jar]
      [INFO] Hesperuis Common Classes (added on top of those of Hydra) [jar]
      [INFO] rules-engine [jar]
      [INFO] xconf-common [jar]
      [INFO] Health Check [jar]
      [INFO] Hesperius core classes [jar]
      [INFO] Hesperius core support classes [jar]
      [INFO] xconf-dataservice [war]
      [INFO] xconf-angular-admin [war]
      [INFO] xconf-automation-tests [jar]
      [INFO]
      [INFO] -----------------< com.comcast.coast.xconf.oss:xconf >------------------
      [INFO] Building xconf 1.0.0-SNAPSHOT [1/11]
      [INFO] --------------------------------[ pom ]---------------------------------
      Downloading from central: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
      [INFO] ------------------------------------------------------------------------
      [INFO] Reactor Summary for xconf 1.0.0-SNAPSHOT:
      [INFO]
      [INFO] xconf .............................................. FAILURE [ 0.986 s]
      [INFO] Hydra Astyanax Common Classes ...................... SKIPPED
      [INFO] Hesperuis Common Classes (added on top of those of Hydra) SKIPPED
      [INFO] rules-engine ....................................... SKIPPED
      [INFO] xconf-common ....................................... SKIPPED
      [INFO] Health Check ....................................... SKIPPED
      [INFO] Hesperius core classes ............................. SKIPPED
      [INFO] Hesperius core support classes ..................... SKIPPED
      [INFO] xconf-dataservice .................................. SKIPPED
      [INFO] xconf-angular-admin ................................ SKIPPED
      [INFO] xconf-automation-tests ............................. SKIPPED
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD FAILURE
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 1.339 s
      [INFO] Finished at: 2020-01-20T10:57:08+05:30
      [INFO] ------------------------------------------------------------------------
      [ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version -> [Help 1]
      [ERROR]
      [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
      [ERROR] Re-run Maven using the -X switch to enable full debug logging.
      [ERROR]
      [ERROR] For more information about the errors and possible solutions, please read the following articles:
      [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

      1. When you run the maven app, the process fails with a protocol error if you don’t force TLSv1.2 as follows. 

         

        mvn -Dhttps.protocols=TLSv1.2 clean install

        mvn jetty:run  Dhttps.protocols=TLSv1.2  -DappConfig=…..\xconfserver\xconf-angular-admin\src\main\resources\service.properties

        1. Hi John,

          You are right, it happens in some version of the Ubuntu security update.


  4. Hello, if I wanted to run my Cassandra database on a separate node, where in the Xconf configuration would I pass in the details for that?

    1. Hi Tom.  In service.properties, you can add the following properties.  The "seeds" property is just a comma-separated list of a few Cassandra hosts.  If you are using a single host, then it's just that one.  The other properties may not be needed.


      connectionPools.SharedConnectionPool.seeds=192.168.0.100,192.168.0.101
      connectionPools.SharedConnectionPool.localDatacenter=DC_NAME
      connectionPools.SharedConnectionPool.readConsistencyLevel=CL_LOCAL_QUORUM
      connectionPools.SharedConnectionPool.writeConsistencyLevel=CL_LOCAL_QUORUM
      connectionPools.SharedConnectionPool.autoDiscoverHosts=true

      1. Great, thanks a lot for the quick response!

        Out of curiosity, is there any reason why this guide suggests Cassandra 2.0.17?  I initially installed 3.11.6 following the Cassandra documentation and discovered that the rpc port is not started by default.  Once I changed:

        # Whether to start the thrift rpc server.
        start_rpc: true

        in /etc/cassandra/cassandra.yml, I was able to run the "mvn jetty:run" command without hitting:

        com.netflix.astyanax.connectionpool.exceptions.NoAvailableHostsException: NoAvailableHostsException: [host=None(0.0.0.0):0, latency
        =0(0), attempts=0]No hosts to borrow from

        and it all appears to work.

        1. We have only tested with the 2.0.17 version of Cassandra.  We are still using the Astyanax driver (Thrift).  It's great that it works for you with a newer version of Cassandra.

          We should soon have a version of XConf that uses the CQL3 driver.  This should make it easier to use newer versions of Cassandra.

  5. Hello,

    Is it possible to run xconf-angular-admin and xconf-dataservice on separate nodes? If yes, is there any specific configuration that will basically allow both the services to discover each other?

    Thanks in advance

    Biju

    1. Hi Biju.  The admin and dataservice do not need to discover each other.  They both use the Cassandra database, so they need to be able to reach it.  If you install the admin and dataservice on separate nodes, you will probably have Cassandra on a third node.  The service.properties file for each service should include the "seeds" property, as described in the response to Tom's question above.

  6. WoW, that was really quick.

    Thank you Stephen, really appreciate your quick response. 

  7. @Stephen Lynn, 

    I am trying to configure AWS Keyspace, which is managed Cassandra service from AWS. As part of configuration to connect to the Keyspace required for XConf, AWS mandates .pem file to be used for authentication purposes. I would like to know is there any provision to configure the .pem file path in service.properties or somewhere else in the configuration?

    Have you ever tried anything similar with XConf?

    1. Hi Rahesh, I tried something similar, I don't think it will work while Xconf uses Thrift/Astanyax driver, need to wait for CQL support as a first step.

  8. Hi Stephen Lynn

    I saw in one of your replies to Tom, you mentioned that "We should soon have a version of XConf that uses the CQL3 driver".

    Do you have any timelines for that release? and expected release date?

    Thanks

    Biju

    1. Hi Biju,

      I would expect it to be available in 1-2 months.

      Steve