diff --git a/environments/cavium-liquidio.yaml b/environments/cavium-liquidio.yaml
index facc4bae0d..4644525792 100644
--- a/environments/cavium-liquidio.yaml
+++ b/environments/cavium-liquidio.yaml
@@ -11,6 +11,7 @@ parameter_defaults:
    LiquidioProviderMappings: 'datacentre:eth1'
    ComputeLiquidioParameters:
      KernelArgs: "intel_iommu=on iommu=pt"
+     NovaOVSDBConnection: "tcp:127.0.0.1:6640"
    #NovaSchedulerDefaultFilters: ['RetryFilter', 'AvailabilityZoneFilter', 'RamFilter', 'ComputeFilter', 'ComputeCapabilitiesFilter', 'ImagePropertiesFilter', 'ServerGroupAntiAffinityFilter', 'ServerGroupAffinityFilter', 'PciPassthroughFilter']
    #NovaPCIPassthrough:
    #  - address: "*:02:00.*"
diff --git a/puppet/services/nova-base.yaml b/puppet/services/nova-base.yaml
index e7652e6256..32c2e5aad0 100644
--- a/puppet/services/nova-base.yaml
+++ b/puppet/services/nova-base.yaml
@@ -189,6 +189,12 @@ parameters:
     description: >
         Endpoint interface to be used for the placement API.
     default: 'internal'
+  NovaOVSDBConnection:
+   type: string
+   description: OVS DB connection string to used by Nova
+   default: ''
+   tags:
+     - role_specific
   RpcPort:
     default: 5672
     description: The network port for messaging backend
@@ -213,6 +219,20 @@ conditions:
   compute_upgrade_level_empty: {equals : [{get_param: UpgradeLevelNovaCompute}, '']}
   service_debug_unset: {equals : [{get_param: NovaDebug}, '']}
 
+resources:
+
+  RoleParametersValue:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        map_replace:
+          - map_replace:
+            - nova::ovsdb_connection: NovaOVSDBConnection
+            - values: {get_param: [RoleParameters]}
+          - values:
+              NovaOVSDBConnection: {get_param: NovaOVSDBConnection}
+
 outputs:
   role_data:
     description: Role data for the Nova base service.
@@ -323,6 +343,7 @@ outputs:
           nova::cron::purge_shadow_tables::age: {get_param: NovaCronPurgeShadowTablesAge}
           nova::cron::purge_shadow_tables::verbose: {get_param: NovaCronPurgeShadowTablesVerbose}
           nova::cron::purge_shadow_tables::all_cells: {get_param: NovaCronPurgeShadowTablesAllCells}
+        - get_attr: [RoleParametersValue, value]
         -
           if:
           - compute_upgrade_level_empty