VNF zero impact host maintenance¶
Tacker allows you to maintenance host with VNF zero impact. Maintenance
workflows will be performed in the Fenix service by creating a session
which can do scaling, migrating VNFs and patch hosts.
References¶
Installation and configurations¶
- You need Fenix, Ceilometer and Aodh OpenStack services. 
- Modify the below configuration files: 
/etc/ceilometer/event_pipeline.yaml
sinks:
  - name: event_sink
    publishers:
        - panko://
        - notifier://
        - notifier://?topic=alarm.all
/etc/ceilometer/event_definitions.yaml:
- event_type: 'maintenance.scheduled'
  traits:
    service:
      fields: payload.service
    allowed_actions:
      fields: payload.allowed_actions
    instance_ids:
      fields: payload.instance_ids
    reply_url:
      fields: payload.reply_url
    state:
      fields: payload.state
    session_id:
      fields: payload.session_id
    actions_at:
      fields: payload.actions_at
      type: datetime
    project_id:
      fields: payload.project_id
    reply_at:
      fields: payload.reply_at
      type: datetime
    metadata:
      fields: payload.metadata
- event_type: 'maintenance.host'
  traits:
    host:
      fields: payload.host
    project_id:
      fields: payload.project_id
    session_id:
      fields: payload.session_id
    state:
      fields: payload.state
Deploying maintenance tosca template with tacker¶
When template is normal¶
If Fenix service is enabled and maintenance event_types are defined, then
all VNF created by legacy VNFM will get ALL_MAINTENANCE resource in Stack.
resources:
  ALL_maintenance:
    properties:
      alarm_actions:
      - http://openstack-master:9890/v1.0/vnfs/e8b9bec5-541b-492c-954e-cd4af71eda1f/maintenance/0cc65f4bba9c42bfadf4aebec6ae7348/hbyhgkav
      event_type: maintenance.scheduled
    type: OS::Aodh::EventAlarm
When template has maintenance property¶
If VDU in VNFD has maintenance property, then VNFM creates
[VDU_NAME]_MAINTENANCE alarm resources and will be use for VNF software
modification later. This is not works yet. It will be updated.
Sample tosca-template:
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: VNF TOSCA template with maintenance
metadata:
  template_name: sample-tosca-vnfd-maintenance
topology_template:
  node_templates:
    VDU1:
      type: tosca.nodes.nfv.VDU.Tacker
      properties:
        maintenance: True
        image: cirros-0.5.2-x86_64-disk
        capabilities:
          nfv_compute:
            properties:
              disk_size: 1 GB
              mem_size: 512 MB
              num_cpus: 2
    CP1:
      type: tosca.nodes.nfv.CP.Tacker
      properties:
        management: true
        order: 0
        anti_spoofing_protection: false
      requirements:
        - virtualLink:
            node: VL1
        - virtualBinding:
            node: VDU1
    VL1:
      type: tosca.nodes.nfv.VL
      properties:
        network_name: net_mgmt
        vendor: Tacker
  policies:
    - SP1:
        type: tosca.policies.tacker.Scaling
        properties:
          increment: 1
          cooldown: 120
          min_instances: 1
          max_instances: 3
          default_instances: 2
        targets: [VDU1]
Configure maintenance constraints with config yaml¶
When Fenix does maintenance, it requires some constraints for zero impact.
Like below config file, each VNF can set and update constraints.
maintenance:
  max_impacted_members: 1
  recovery_time: 60,
  mitigation_type: True,
  lead_time: 120,
  migration_type: 'MIGRATE'
