Merge " Added new feature *odl-ovsdb-openstack-clusteraware*."
[netvirt.git] / openstack / net-virt-sfc / it / src / test / java / org / opendaylight / ovsdb / openstack / netvirt / sfc / utils / AclUtils.java
1 /*
2  * Copyright © 2015 Red Hat, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.ovsdb.openstack.netvirt.sfc.utils;
10
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessListsBuilder;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.Acl;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.AclBuilder;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.AccessListEntriesBuilder;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.Ace;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.AceBuilder;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.ActionsBuilder;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.MatchesBuilder;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.actions.packet.handling.PermitBuilder;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.AceIpBuilder;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.acl.access.list.entries.ace.matches.ace.type.ace.ip.ace.ip.version.AceIpv4Builder;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev150611.acl.transport.header.fields.DestinationPortRangeBuilder;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev150611.acl.transport.header.fields.SourcePortRange;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.packet.fields.rev150611.acl.transport.header.fields.SourcePortRangeBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.acl.rev150105.RedirectToSfc;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.sfc.acl.rev150105.RedirectToSfcBuilder;
30
31 public class AclUtils extends AbstractUtils {
32     public MatchesBuilder matchesBuilder(MatchesBuilder matchesBuilder, int destPort) {
33         SourcePortRangeBuilder sourcePortRangeBuilder = new SourcePortRangeBuilder()
34                 .setLowerPort(PortNumber.getDefaultInstance("0"))
35                 .setUpperPort(PortNumber.getDefaultInstance("0"));
36
37         PortNumber portNumber = new PortNumber(destPort);
38         DestinationPortRangeBuilder destinationPortRangeBuilder = new DestinationPortRangeBuilder()
39                 .setLowerPort(portNumber)
40                 .setUpperPort(portNumber);
41
42         AceIpBuilder aceIpBuilder = new AceIpBuilder()
43                 .setSourcePortRange(sourcePortRangeBuilder.build())
44                 .setDestinationPortRange(destinationPortRangeBuilder.build())
45                 .setProtocol((short)6)
46                 .setAceIpVersion(new AceIpv4Builder().build());
47
48         return matchesBuilder.setAceType(aceIpBuilder.build());
49     }
50
51     public ActionsBuilder actionsBuilder(ActionsBuilder actionsBuilder, Boolean permit) {
52         return actionsBuilder.setPacketHandling(new PermitBuilder().setPermit(permit).build());
53     }
54
55     public ActionsBuilder actionsBuilder(ActionsBuilder actionsBuilder, String sfcName) {
56         RedirectToSfcBuilder redirectToSfcBuilder = new RedirectToSfcBuilder().setSfcName(sfcName);
57
58         return actionsBuilder.addAugmentation(RedirectToSfc.class, redirectToSfcBuilder.build());
59     }
60
61     public AceBuilder aceBuilder(AceBuilder accessListEntryBuilder,
62                                  String ruleName,
63                                  MatchesBuilder matchesBuilder,
64                                  ActionsBuilder actionsBuilder) {
65         return accessListEntryBuilder
66                 .setRuleName(ruleName)
67                 .setMatches(matchesBuilder.build())
68                 .setActions(actionsBuilder.build());
69     }
70
71     public AccessListEntriesBuilder accessListEntriesBuidler(AccessListEntriesBuilder accessListEntriesBuilder,
72                                                              AceBuilder aceBuilder) {
73         List<Ace> aceList = new ArrayList<>();
74         aceList.add(aceBuilder.build());
75
76         return accessListEntriesBuilder.setAce(aceList);
77     }
78
79     public AclBuilder aclBuilder(AclBuilder aclBuilder,
80                                  String aclName,
81                                  AccessListEntriesBuilder accessListEntriesBuilder) {
82         return aclBuilder
83                 .setAclName(aclName)
84                 .setAccessListEntries(accessListEntriesBuilder.build());
85     }
86
87     public AccessListsBuilder accesslistsbuilder(AccessListsBuilder accessListsBuilder,
88                                                  AclBuilder aclBuilder) {
89         List<Acl> aclList = new ArrayList<>();
90         aclList.add(aclBuilder.build());
91
92         return accessListsBuilder.setAcl(aclList);
93     }
94 }