Committed by
Gerrit Code Review
add CLI for vBNG to show IP address mappings
Change-Id: I50035a69de43fcbe374bdceacfa2d2ba8f1af130
Showing
7 changed files
with
138 additions
and
2 deletions
| ... | @@ -39,6 +39,15 @@ | ... | @@ -39,6 +39,15 @@ |
| 39 | <dependencies> | 39 | <dependencies> |
| 40 | <dependency> | 40 | <dependency> |
| 41 | <groupId>org.onosproject</groupId> | 41 | <groupId>org.onosproject</groupId> |
| 42 | + <artifactId>onos-cli</artifactId> | ||
| 43 | + <version>${project.version}</version> | ||
| 44 | + </dependency> | ||
| 45 | + <dependency> | ||
| 46 | + <groupId>org.apache.karaf.shell</groupId> | ||
| 47 | + <artifactId>org.apache.karaf.shell.console</artifactId> | ||
| 48 | + </dependency> | ||
| 49 | + <dependency> | ||
| 50 | + <groupId>org.onosproject</groupId> | ||
| 42 | <artifactId>onlab-rest</artifactId> | 51 | <artifactId>onlab-rest</artifactId> |
| 43 | <version>${project.version}</version> | 52 | <version>${project.version}</version> |
| 44 | </dependency> | 53 | </dependency> |
| ... | @@ -68,6 +77,7 @@ | ... | @@ -68,6 +77,7 @@ |
| 68 | com.sun.jersey.spi.container.servlet, | 77 | com.sun.jersey.spi.container.servlet, |
| 69 | com.sun.jersey.server.impl.container.servlet, | 78 | com.sun.jersey.server.impl.container.servlet, |
| 70 | com.fasterxml.jackson.databind, | 79 | com.fasterxml.jackson.databind, |
| 80 | + org.apache.karaf.shell.commands, | ||
| 71 | com.google.common.*, | 81 | com.google.common.*, |
| 72 | org.onlab.packet.*, | 82 | org.onlab.packet.*, |
| 73 | org.onlab.rest.*, | 83 | org.onlab.rest.*, | ... | ... |
| ... | @@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; | ... | @@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; |
| 20 | import java.io.File; | 20 | import java.io.File; |
| 21 | import java.io.FileNotFoundException; | 21 | import java.io.FileNotFoundException; |
| 22 | import java.io.IOException; | 22 | import java.io.IOException; |
| 23 | +import java.util.Collections; | ||
| 23 | import java.util.Iterator; | 24 | import java.util.Iterator; |
| 24 | import java.util.Map; | 25 | import java.util.Map; |
| 25 | import java.util.Map.Entry; | 26 | import java.util.Map.Entry; |
| ... | @@ -199,10 +200,16 @@ public class VbngConfigurationManager implements VbngConfigurationService { | ... | @@ -199,10 +200,16 @@ public class VbngConfigurationManager implements VbngConfigurationService { |
| 199 | updateIpPrefixStatus(prefixEntry.getKey(), true); | 200 | updateIpPrefixStatus(prefixEntry.getKey(), true); |
| 200 | } | 201 | } |
| 201 | } | 202 | } |
| 202 | - | 203 | + log.info("[DELETE] Private IP to Public IP mapping: {} --> {}", |
| 204 | + privateIpAddress, publicIpAddress); | ||
| 203 | return publicIpAddress; | 205 | return publicIpAddress; |
| 204 | } | 206 | } |
| 205 | 207 | ||
| 208 | + @Override | ||
| 209 | + public Map<IpAddress, IpAddress> getIpAddressMappings() { | ||
| 210 | + return Collections.unmodifiableMap(ipAddressMap); | ||
| 211 | + } | ||
| 212 | + | ||
| 206 | /** | 213 | /** |
| 207 | * Generates a new IP address base on a given IP address plus a number to | 214 | * Generates a new IP address base on a given IP address plus a number to |
| 208 | * increase. | 215 | * increase. | ... | ... |
| ... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
| 15 | */ | 15 | */ |
| 16 | package org.onosproject.virtualbng; | 16 | package org.onosproject.virtualbng; |
| 17 | 17 | ||
| 18 | +import java.util.Map; | ||
| 19 | + | ||
| 18 | import org.onlab.packet.IpAddress; | 20 | import org.onlab.packet.IpAddress; |
| 19 | import org.onlab.packet.MacAddress; | 21 | import org.onlab.packet.MacAddress; |
| 20 | 22 | ||
| ... | @@ -71,4 +73,12 @@ public interface VbngConfigurationService { | ... | @@ -71,4 +73,12 @@ public interface VbngConfigurationService { |
| 71 | * @return the assigned public IP address if it exists, otherwise null | 73 | * @return the assigned public IP address if it exists, otherwise null |
| 72 | */ | 74 | */ |
| 73 | IpAddress recycleAssignedPublicIpAddress(IpAddress privateIpAddress); | 75 | IpAddress recycleAssignedPublicIpAddress(IpAddress privateIpAddress); |
| 76 | + | ||
| 77 | + /** | ||
| 78 | + * Gets all the mapping entries from private IP address to public IP | ||
| 79 | + * address. | ||
| 80 | + * | ||
| 81 | + * @return the address map from private IP address to public IP address | ||
| 82 | + */ | ||
| 83 | + Map<IpAddress, IpAddress> getIpAddressMappings(); | ||
| 74 | } | 84 | } | ... | ... |
| ... | @@ -121,7 +121,7 @@ public class VbngManager implements VbngService { | ... | @@ -121,7 +121,7 @@ public class VbngManager implements VbngService { |
| 121 | log.info("Did not find an available public IP address to use."); | 121 | log.info("Did not find an available public IP address to use."); |
| 122 | return null; | 122 | return null; |
| 123 | } | 123 | } |
| 124 | - log.info("Private IP to Public IP mapping: {} --> {}", | 124 | + log.info("[ADD] Private IP to Public IP mapping: {} --> {}", |
| 125 | privateIpAddress, publicIpAddress); | 125 | privateIpAddress, publicIpAddress); |
| 126 | 126 | ||
| 127 | // Setup paths between the host configured with private IP and | 127 | // Setup paths between the host configured with private IP and | ... | ... |
| 1 | +/* | ||
| 2 | + * Copyright 2015 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | + | ||
| 17 | +package org.onosproject.virtualbng.cli; | ||
| 18 | +import java.util.Iterator; | ||
| 19 | +import java.util.Map; | ||
| 20 | +import java.util.Map.Entry; | ||
| 21 | + | ||
| 22 | +import org.apache.karaf.shell.commands.Command; | ||
| 23 | +import org.onlab.packet.IpAddress; | ||
| 24 | +import org.onosproject.cli.AbstractShellCommand; | ||
| 25 | +import org.onosproject.virtualbng.VbngConfigurationService; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * Command to show the list of vBNG IP address mapping entries. | ||
| 29 | + */ | ||
| 30 | +@Command(scope = "onos", name = "vbngs", | ||
| 31 | + description = "Lists all vBNG IP address mapping entries") | ||
| 32 | +public class MappingListCommand extends AbstractShellCommand { | ||
| 33 | + | ||
| 34 | + private static final String FORMAT_HEADER = | ||
| 35 | + " Private IP - Public IP"; | ||
| 36 | + private static final String FORMAT_MAPPING = | ||
| 37 | + " %s - %s"; | ||
| 38 | + | ||
| 39 | + @Override | ||
| 40 | + protected void execute() { | ||
| 41 | + | ||
| 42 | + VbngConfigurationService service = | ||
| 43 | + AbstractShellCommand.get(VbngConfigurationService.class); | ||
| 44 | + | ||
| 45 | + // Print all mapping entries | ||
| 46 | + printMappingEntries(service.getIpAddressMappings()); | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + /** | ||
| 50 | + * Prints all vBNG IP address mapping entries. | ||
| 51 | + * | ||
| 52 | + * @param map the map from private IP address to public address | ||
| 53 | + */ | ||
| 54 | + private void printMappingEntries(Map<IpAddress, IpAddress> map) { | ||
| 55 | + print(FORMAT_HEADER); | ||
| 56 | + | ||
| 57 | + Iterator<Entry<IpAddress, IpAddress>> entries = | ||
| 58 | + map.entrySet().iterator(); | ||
| 59 | + while (entries.hasNext()) { | ||
| 60 | + Entry<IpAddress, IpAddress> entry = entries.next(); | ||
| 61 | + print(FORMAT_MAPPING, entry.getKey(), entry.getValue()); | ||
| 62 | + } | ||
| 63 | + | ||
| 64 | + print(""); | ||
| 65 | + } | ||
| 66 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +/* | ||
| 2 | + * Copyright 2015 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + * The CLI of vBNG application. | ||
| 19 | + */ | ||
| 20 | +package org.onosproject.virtualbng.cli; |
| 1 | +<!-- | ||
| 2 | + ~ Copyright 2015 Open Networking Laboratory | ||
| 3 | + ~ | ||
| 4 | + ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + ~ you may not use this file except in compliance with the License. | ||
| 6 | + ~ You may obtain a copy of the License at | ||
| 7 | + ~ | ||
| 8 | + ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + ~ | ||
| 10 | + ~ Unless required by applicable law or agreed to in writing, software | ||
| 11 | + ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + ~ See the License for the specific language governing permissions and | ||
| 14 | + ~ limitations under the License. | ||
| 15 | + --> | ||
| 16 | +<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> | ||
| 17 | + | ||
| 18 | + <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> | ||
| 19 | + <command> | ||
| 20 | + <action class="org.onosproject.virtualbng.cli.MappingListCommand"/> | ||
| 21 | + </command> | ||
| 22 | + </command-bundle> | ||
| 23 | +</blueprint> |
-
Please register or login to post a comment