heat_template_version: rocky

description: >
  Vpp service configured with Puppet

parameters:
  ServiceData:
    default: {}
    description: Dictionary packing service data
    type: json
  ServiceNetMap:
    default: {}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
    type: json
  DefaultPasswords:
    default: {}
    type: json
  RoleName:
    default: ''
    description: Role name on which the service is applied
    type: string
  RoleParameters:
    default: {}
    description: Parameters specific to the role
    type: json
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json
  VppCpuMainCore:
    default: ''
    description: VPP main thread core pinning.
    type: string
  VppCpuCorelistWorkers:
    default: ''
    description: List of cores for VPP worker thread pinning
    type: string
  MonitoringSubscriptionVpp:
    default: 'overcloud-vpp'
    type: string

outputs:
  role_data:
    description: Role data for the Vpp role.
    value:
      service_name: vpp
      monitoring_subscription: {get_param: MonitoringSubscriptionVpp}
      config_settings:
        fdio::vpp_cpu_main_core: {get_param: VppCpuMainCore}
        fdio::vpp_cpu_corelist_workers: {get_param: VppCpuCorelistWorkers}
      step_config: |
        include ::tripleo::profile::base::vpp
      upgrade_tasks:
        - name: Check if vpp is deployed
          command: systemctl is-enabled vpp
          tags: common
          ignore_errors: True
          register: vpp_enabled
        - name: "PreUpgrade step0,validation: Check service vpp is running"
          shell: /usr/bin/systemctl show 'vpp' --property ActiveState | grep '\bactive\b'
          when:
            - step|int == 0
            - vpp_enabled.rc == 0
          tags: validation
        - name: Stop vpp service
          when:
            - step|int == 1
            - vpp_enabled.rc == 0
          service: name=vpp state=stopped
