Configurable Settings - Java Viper Controller on Linux for Static Analysis



How to apply changes to the Controller environment

Changes in the installation.yaml can be applied by running the install script or the upgrade script. Note that re-running the install script will delete any information that would have been stored previously.


Required fields in installation.yaml

Variable Name
Key Value
Explanation of the Variable and Key Values
controller.name
String This will be the identifier used in the VF Server UI. So, this should be as precise a name as possible, e.g. "UAT Viper" or "Prod App1"
controller.host
String The controller.host is the address that the vFunction Server address with which the Controller will connect. The value needs to start with http:// or https://. The value can be an IP Address or a FQDN
controller.org_id
controller.app_id
controller.client_id
controller.client_secret
Strings Once the Server is installed, the Admin can log into the UI and create the App. In the UI's Install Controller dialog box, the YAML values for the org_id, app_id, client_id and client_secret will be displayed. The values for this YAML file should be copied for the Server UI to here
controller.type
String "java"
viper.port
Integer Used by the VF Viper process to communication internally with the VF Controller process. This only needs to be modified if multiples instances of a Controller are running on the same Server or if a Port is in use
viper.archives
List of Strings Path(s) to the App's Binary Archives such as /opt/application/lib/*.jar

Sample with required fields in installation.yaml

controller:
  name: Prod App1
  host: http://10.0.0.143
  org_id: 3cf59199-0a0a-0a0a-0a0a-7c63ffac776e
  app_id: 7b1ab58d-0a0a-0a0a-0a0a-098a113ad721
  client_id: 20761b99-0a0a-0a0a-0a0a-94c2e0bc1859
  client_secret: 6b5b7bc1-0a0a-0a0a-0a0a-2bd10db75e2f
  type: java
  jolokia_port: 8778
  instrconf_additions:
    inclusions:
    exclusions:
server_application:
agent:
  application_server: raw
  override_properties:
viper:
  port: 8090
  archives:
    - /opt/application/lib/*.jar
  stored_procedures:
  spring:
    custom_context_roots:
    root_bean_classes:

Optional fields in installation.yaml


controller.instance_id
Installation.yaml Configuration
Details
controller:
   instance_id: containerized
  • Used for containerized vFunction controllers
  • Can be set to any String value (e.g., ID1234)
  • Used to prevent an ongoing increase in the number of Down Controllers in the vFunction Server UI's Select Controllers page when Controllers are down
  • Maps a restarted controllers (i.e., a container that went down and came back up) with a controller in the down state that has the same ID

viper.debug_mode
Installation.yaml Configuration
Details
viper:
   debug_mode: true
  • Adds additional logging to the output of the vfviper.log

viper.jvm_memory_params
Installation.yaml Configuration
Details
viper:
   jvm_memory_params: "-Xms300m -Xmx4g -Xss50m"
  • By default, the Viper service is started with the Memory-related settings:
    -Xms300m -Xmx3g -Xss50m
  • For larger applications, this may cause the static analysis to run slowly
  • Increase the Max Heap Size (Xmx setting) to speed up the static analysis

The table below can help to set the viper.jvm_memory_params’s Xmx value depending on the number of Classes in the Namespaces of the Application’s Business Logic.

Classes in Namespaces(s) Recommended RAM
Less than 8k 2gb
8k-20k 4gb
20k-100k 8gb

viper.port
Installation.yaml Configuration
Details
viper:
   port: 8091
  • If the Viper port identified is in use, change the port to use an unused port

viper.stored_procedure
Prerequisites for viper.stored_procedure

The following prerequisites are needed for tracking Stored Procedures with vFunction:

  1. Oracle database using Stored Procedures
  2. An Oracle database user who has SELECT access to the DBA_DEPENDENCIES table in the Oracle database

As a best practice, create a new user for the purpose of gathering Stored Procedures information for the vFunction Analysis:

  1. Log into the DB as an Administrator
  2. Create a new user
  • Find-and-replace $USERNAME with the actual Username
  • Find-and-replace $PASSWORD with the desired Password
create user $USERNAME identified by "$PASSWORD";
  1. Grant access to DBA_DEPENDENCIES
  • Find-and-replace $USERNAME with the actual Username
grant select on DBA_DEPENDENCIES to $USERNAME;
  1. The URL to access the Oracle Database from the VF Controller, including the Driver Type used in the DB Connection and whether the connection is made using SIDs or a Service Name
  2. The Username and Password for the Oracle database user
Settings for viper.stored_procedure

The following settings should be added to the installation.yaml:

Installation.yaml Configuration
Details
viper:
   stored_procedure:
      db_url:
jdbc:oracle:thin://@10.0.0.43:15421/XE
      ### Format displayed: jdbc:oracle:thin://@HOST:PORT/SERVICE_NAME
      ### If the user is a sysoper or sysdba, use the internal_login parameter: jdbc:oracle:thin://@HOST:PORT/SERVICE_NAME?internal_login=SYSDBA
      ### Alternate format using SID: jdbc:oracle:thin:@\HOST:PORT:SID
      ### Alternate format using OCI driver: jdbc:oracle:oci://@DATABASE_NAME
      db_username: charlotteLee
      db_password: c0mpleX!
  • For organizations using an Oracle database for Stored Procedures
  • vFunction displays the database tables used by the Stored Procedures that are seen in the Static Analysis
  • Information about Stored Procedures is gathered through the Viper process
  • It will not be necessary to redo Dynamic Learning if setting up Stored Procedures on an existing Application