2 * Copyright (C) 2014 Red Hat, Inc.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 * Authors : Dave Tucker
11 package org.opendaylight.ovsdb.openstack.netvirt.providers;
13 import java.util.UUID;
16 * A PipelineOrchestrator provides the necessary orchestration logic to allow multiple network services
17 * to share a common OpenFlow 1.3 based multi-table pipeline.
19 public interface PipelineOrchestrator {
21 enum ServiceDirection {
27 static final Integer PRE_NAT = 2;
28 static final Integer PRE_ACL = 7;
29 //ToDo: Add some sensible altitude constants
32 * Register a new service in the pipeline
33 * @param altitude an integer representing the desired placement in the pipeline where 0 = lowest.
34 * @param direction whether the service is ingress, egress
35 * @return a unique service identifier
37 UUID registerService(Integer altitude, ServiceDirection direction);
40 * Unregister a service from the pipeline
41 * This clears any assigned table IDs and registers
43 void unregisterService(UUID serviceID);
46 * Get the OpenFlow Table ID
47 * @param serviceID unique service identifier
49 Integer getTableId(UUID serviceID);
52 * Assign an OVS Register to a service
53 * @return the integer value of the assigned register
55 Integer assignRegister(UUID serviceID);