Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
ea8cb75
Making docker.host.internal resolvable in Docker for Linux
bocon13 Oct 10, 2019
bae733a
Revert "Making docker.host.internal resolvable in Docker for Linux"
bocon13 Oct 11, 2019
e340ec9
ZTE Netconf driver for ODTN-phase 1.0
Oct 11, 2019
75651b0
Improves ping responder
pierventre Jun 28, 2019
ea5ea01
Fix Xconnect example on web docs
stevenchiu30801 Oct 10, 2019
8b64ee2
Adding PowerConfig capability to the existing Nokia Transponder driver
Oct 8, 2019
e38afb3
Demoting log regarding interrupt exception to warning.
tomikazi Oct 14, 2019
47ff0db
ODTN/Openconfig driver for ADVA terminal devices:
Oct 8, 2019
e4d997f
Revert "Adding PowerConfig capability to the existing Nokia Transpond…
Andrea-Campanella Oct 15, 2019
2bf2453
Updated to build and test with Bazel 1.0 official release.
tomikazi Oct 14, 2019
8bfea5e
Fix for Bug 8005. Parsing Sub Tlv for multiple neighbors
ChinmayaAgarwal Oct 9, 2019
45ff486
Adding PowerConfig capability to the existing Nokia Transponder driver
Oct 8, 2019
356ab8b
Support creation of vendor-specific versions of the fabric pipeconf
ccascone Sep 25, 2019
2c5211d
Improves host location provider introducing a pool of worker threads
pierventre Jun 25, 2019
5bae505
REST API for FPM Accept Routes
Oct 19, 2019
c687ccb
[ONOS-8033] No Visible Indication for Active Applications in ONOS
Oct 25, 2019
71ba99f
Bazel workspace cleanup
ccascone Oct 24, 2019
5a2de71
eth_type moved outside ethernet header in fabric.p4
daniele-moro Sep 24, 2019
e9ba39c
[ONOS-7808] Support P4Runtime default table entries
axis0985 Oct 10, 2019
000e465
Trigger the removal of double tagged rules
daniele-moro Oct 30, 2019
ce424ca
Added bytes in BNG upstream counters
daniele-moro Oct 3, 2019
0ab4c27
Added table miss flow for ovs-ofdpa punt table
charlesmcchan Oct 18, 2019
464e5ed
First implementation of BngProgrammable API
daniele-moro Jul 25, 2019
41ec148
Fixed removal of fwd classifier rules when double tagged hosts
daniele-moro Oct 30, 2019
0a884ad
Upgrading NodeJS to 10.16 and GUI2 to Angular 8
Oct 28, 2019
cda74c8
Fix: do not handle non-smart NIC capable port at direct port provider
gunine Oct 31, 2019
b3d199b
Small fixes and improvements on fabric.p4
daniele-moro Nov 1, 2019
b45ffda
Add REST API for openstackvtap app
gunine Oct 23, 2019
b84e919
Improves host programming introducing a pool of worker threads
pierventre May 17, 2019
e08595d
Improves rules population
pierventre Apr 24, 2019
52517ff
Improves link up handling
pierventre Apr 25, 2019
ef6dc9d
Bump jackson-databind from 2.9.5 to 2.9.10.1 in /tools/build/libgen
dependabot[bot] Nov 13, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ build --incompatible_disable_deprecated_attr_params=false
# intellij-bazel plugin needs this
build --incompatible_depset_is_not_iterable=false
build --incompatible_new_actions_api=false
build --incompatible_generated_protos_in_virtual_imports=false
build --incompatible_depset_union=false

test --test_summary=terse
test --test_output=errors
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ bucklets/plugins/
lib/yang
/tools/gui/bin
/tools/gui/node_modules
/tools/gui/package-lock.json
/tools/gui/false

web/gui/src/main/webapp/tests/node_modules
web/gui/src/test/_karma/node_modules
Expand Down
77 changes: 59 additions & 18 deletions WORKSPACE
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
workspace(name = "org_onosproject_onos")
workspace(
name = "org_onosproject_onos",
managed_directories = {
"@gui1_npm": ["tools/gui/node_modules"],
"@gui2_npm": ["web/gui2-fw-lib/node_modules"],
},
)

load("//tools/build/bazel:bazel_version.bzl", "check_bazel_version")

Expand Down Expand Up @@ -95,31 +101,57 @@ load("//tools/build/bazel:gnoi_workspace.bzl", "generate_gnoi")

generate_gnoi()

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

git_repository(
http_archive(
name = "build_bazel_rules_nodejs",
commit = "70406e05de721520ca568a17186de73e972d7651",
remote = "https://github.com/bazelbuild/rules_nodejs.git",
shallow_since = "1551145517 -0800",
sha256 = "26c39450ce2d825abee5583a43733863098ed29d3cbaebf084ebaca59a21a1c8",
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.39.0/rules_nodejs-0.39.0.tar.gz"],
)

load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories")
load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "npm_install")

node_repositories(
node_version = "8.11.1",
package_json = ["//tools/gui:package.json"],
node_repositories = {
"10.16.0-darwin_amd64": ("node-v10.16.0-darwin-x64.tar.gz", "node-v10.16.0-darwin-x64", "6c009df1b724026d84ae9a838c5b382662e30f6c5563a0995532f2bece39fa9c"),
"10.16.0-linux_amd64": ("node-v10.16.0-linux-x64.tar.xz", "node-v10.16.0-linux-x64", "1827f5b99084740234de0c506f4dd2202a696ed60f76059696747c34339b9d48"),
"10.16.0-windows_amd64": ("node-v10.16.0-win-x64.zip", "node-v10.16.0-win-x64", "aa22cb357f0fb54ccbc06b19b60e37eefea5d7dd9940912675d3ed988bf9a059"),
},
node_version = "10.16.0",
package_json = ["//web/gui2-fw-lib:package.json"],
)

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
# The npm_install rule runs yarn anytime the package.json or package-lock.json file changes.
# It also extracts any Bazel rules distributed in an npm package.
load("@build_bazel_rules_nodejs//:index.bzl", "npm_install")

npm_install(
# Name this npm so that Bazel Label references look like @npm//package
name = "gui1_npm",
package_json = "//tools/gui:package.json",
package_lock_json = "//tools/gui:package-lock.json",
)

npm_install(
# Name this npm so that Bazel Label references look like @npm//package
name = "gui2_npm",
package_json = "//web/gui2-fw-lib:package.json",
package_lock_json = "//web/gui2-fw-lib:package-lock.json",
)

# Install any Bazel rules which were extracted earlier by the npm_install rule.
load("@gui2_npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")

install_bazel_dependencies()

# buildifier is written in Go and hence needs rules_go to be built.
# See https://github.com/bazelbuild/rules_go for the up to date setup instructions.
http_archive(
name = "io_bazel_rules_go",
sha256 = "f04d2373bcaf8aa09bccb08a98a57e721306c8f6043a2a0ee610fd6853dcde3d",
sha256 = "9fb16af4d4836c8222142e54c9efa0bb5fc562ffc893ce2abeac3e25daead144",
urls = [
"https://github.com/bazelbuild/rules_go/releases/download/0.18.6/rules_go-0.18.6.tar.gz",
"https://storage.googleapis.com/bazel-mirror/github.com/bazelbuild/rules_go/releases/download/0.19.0/rules_go-0.19.0.tar.gz",
"https://github.com/bazelbuild/rules_go/releases/download/0.19.0/rules_go-0.19.0.tar.gz",
],
)

Expand All @@ -130,12 +162,21 @@ go_rules_dependencies()
go_register_toolchains()

http_archive(
name = "com_github_bazelbuild_buildtools",
sha256 = "e0b5b400cfef17d65886365dc7289cb4ef8dfe07066165607413a271a32aa2a4",
strip_prefix = "buildtools-db073457c5a56d810e46efc18bb93a4fd7aa7b5e",
url = "https://github.com/bazelbuild/buildtools/archive/db073457c5a56d810e46efc18bb93a4fd7aa7b5e.zip",
name = "bazel_gazelle",
sha256 = "be9296bfd64882e3c08e3283c58fcb461fa6dd3c171764fcc4cf322f60615a9b",
urls = [
"https://storage.googleapis.com/bazel-mirror/github.com/bazelbuild/bazel-gazelle/releases/download/0.18.1/bazel-gazelle-0.18.1.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/0.18.1/bazel-gazelle-0.18.1.tar.gz",
],
)

load("@com_github_bazelbuild_buildtools//buildifier:deps.bzl", "buildifier_dependencies")
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")

buildifier_dependencies()
gazelle_dependencies()

http_archive(
name = "com_github_bazelbuild_buildtools",
sha256 = "05eb52437fb250c7591dd6cbcfd1f9b5b61d85d6b20f04b041e0830dd1ab39b3",
strip_prefix = "buildtools-0.29.0",
url = "https://github.com/bazelbuild/buildtools/archive/0.29.0.zip",
)
12 changes: 4 additions & 8 deletions apps/faultmanagement/fm-gui2-lib/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,7 @@ genrule(
name = "fm-gui2-lib-build",
srcs = [
"@nodejs//:bin/npm",
"@nodejs//:bin/node",
"@nodejs//:bin/nodejs/bin/node",
"@nodejs//:bin/nodejs/bin/npm",
"//web/gui2-fw-lib:onos-gui2-fw-npm-install",
"//web/gui2-fw-lib:onos-gui2-fw-ng-build",
"//web/gui2-fw-lib:gui2_fw_lib_ext_css",
Expand All @@ -91,7 +89,7 @@ genrule(
cmd = "ROOT=`pwd` &&" +
" export HOME=. &&" +
" export XDG_CONFIG_HOME=$(@D)/config &&" +
" NODE=$(location @nodejs//:bin/node) &&" +
" NODE=$(location @nodejs//:bin/nodejs/bin/node) &&" +
" INSTALL_FILES=($(locations //web/gui2-fw-lib:onos-gui2-fw-npm-install)) &&" + # An array of filenames - sorted by time created
" FWLIB_FILES=($(locations //web/gui2-fw-lib:onos-gui2-fw-ng-build)) &&" + # An array of filenames - sorted by time created
" mkdir -p apps/faultmanagement/fm-gui2-lib &&" +
Expand All @@ -113,7 +111,7 @@ genrule(
" exit 1;" +
" fi;" +
" cd dist/fm-gui2-lib && " +
" npm pack >> $$ROOT/$(location fm-gui2-lib.log) 2>&1 &&" +
" $$ROOT/$(location @nodejs//:bin/npm) pack >> $$ROOT/$(location fm-gui2-lib.log) 2>&1 &&" +
" mv fm-gui2-lib-*.tgz $$ROOT/$(location fm-gui2-lib-ver.tgz) &&" +
" touch $$ROOT/$(location fm-gui2-lib.log)", # to get the log always as the 2nd file,
message = "Angular FM GUI2 build",
Expand All @@ -130,9 +128,7 @@ genrule(
name = "_fm-gui2-lib-test-genrule",
srcs = [
"@nodejs//:bin/npm",
"@nodejs//:bin/node",
"@nodejs//:bin/nodejs/bin/node",
"@nodejs//:bin/nodejs/bin/npm",
"//web/gui2-fw-lib:onos-gui2-fw-npm-install",
"//web/gui2-fw-lib:onos-gui2-fw-ng-build",
"//web/gui2-fw-lib:gui2_fw_lib_ext_css",
Expand All @@ -148,7 +144,7 @@ genrule(
cmd = " ROOT=`pwd` &&" +
" export HOME=. &&" +
" export XDG_CONFIG_HOME=$(@D)/config &&" +
" NODE=$(location @nodejs//:bin/node) &&" +
" NODE=$(location @nodejs//:bin/nodejs/bin/node) &&" +
" INSTALL_FILES=($(locations //web/gui2-fw-lib:onos-gui2-fw-npm-install)) &&" + # An array of filenames - sorted by time created
" FWLIB_FILES=($(locations //web/gui2-fw-lib:onos-gui2-fw-ng-build)) &&" + # An array of filenames - sorted by time created
" mkdir -p apps/faultmanagement/fm-gui2-lib &&" +
Expand All @@ -163,7 +159,7 @@ genrule(
" chmod +x $$ROOT/apps/faultmanagement/fm-gui2-lib/node_modules/@angular/cli/bin/ng &&" +
" export PATH=$$ROOT/$$(dirname $${NODE}):node_modules/@angular/cli/bin:$$PATH &&" +
" node -v > ../../../$(location fm-gui2-lib-ver.log) &&" +
" npm -v >> ../../../$(location fm-gui2-lib-ver.log) &&" +
" $$ROOT/$(location @nodejs//:bin/npm) -v >> ../../../$(location fm-gui2-lib-ver.log) &&" +
" ng -v >> ../../../$(location fm-gui2-lib-ver.log) &&" +
" ng lint fm-gui2-lib > ../../../$(location fm-gui2-lib-lint.log);" +
" if [ -f /usr/bin/chromium-browser ]; then " + # Add to this for Mac and Chrome
Expand Down
2 changes: 1 addition & 1 deletion apps/faultmanagement/fm-gui2-lib/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "fm-gui2-lib-app",
"version": "2.1.0",
"version": "2.3.0",
"private": true,
"dependencies": {
"@angular/animations": "^7.0.2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
import static org.onosproject.openstacknetworking.api.Constants.UNSUPPORTED_VENDOR;
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getIntfNameFromPciAddress;
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.hasIntfAleadyInDevice;
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.isSmartNicCapable;
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.COMPUTE;
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.CONTROLLER;

Expand Down Expand Up @@ -148,6 +149,10 @@ private void processPortUpdate(OpenstackNetworkEvent event) {
return;
}

if (!isSmartNicCapable(event.port())) {
return;
}

if (event.port().getState() == State.DOWN) {
removePort(event.port());
} else {
Expand All @@ -160,6 +165,10 @@ private void processPortRemoval(OpenstackNetworkEvent event) {
return;
}

if (!isSmartNicCapable(event.port())) {
return;
}

removePort(event.port());
}

Expand Down Expand Up @@ -307,6 +316,7 @@ private void processComputeState(OpenstackNode node) {
.filter(port -> port.getvNicType().equals(DIRECT))
.filter(port -> !port.getVifType().equals(UNBOUND))
.filter(port -> port.getHostId().equals(node.hostname()))
.filter(OpenstackNetworkingUtil::isSmartNicCapable)
.collect(Collectors.toList());

ports.forEach(port -> addIntfToDevice(node, port));
Expand All @@ -318,7 +328,7 @@ private void addIntfToDevice(OpenstackNode node, Port port) {
log.error("Failed to retrieve interface name from a port {}", port.getId());
} else if (intfName.equals(UNSUPPORTED_VENDOR)) {
log.warn("Failed to retrieve interface name from a port {} " +
"because of unsupported ovs-based sr-iov");
"because of unsupported ovs-based sr-iov", port.getId());
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@
import static org.onlab.packet.Ip4Address.valueOf;
import static org.onosproject.net.AnnotationKeys.PORT_NAME;
import static org.onosproject.openstacknetworking.api.Constants.DEFAULT_GATEWAY_MAC_STR;
import static org.onosproject.openstacknetworking.api.Constants.DIRECT;
import static org.onosproject.openstacknetworking.api.Constants.FLOATING_IP_FORMAT;
import static org.onosproject.openstacknetworking.api.Constants.NETWORK_FORMAT;
import static org.onosproject.openstacknetworking.api.Constants.OPENSTACK_NETWORKING_REST_PATH;
Expand Down Expand Up @@ -398,6 +399,24 @@ public static OSClient getConnectedClient(OpenstackNode osNode) {
}
}

/**
* Checks whether the given openstack port is smart NIC capable.
*
* @param port openstack port
* @return true if the given port is smart NIC capable, false otherwise
*/
public static boolean isSmartNicCapable(Port port) {
if (port.getProfile() != null && port.getvNicType().equals(DIRECT)) {
String vendorInfo = String.valueOf(port.getProfile().get(PCI_VENDOR_INFO));
if (portNamePrefixMap().containsKey(vendorInfo)) {
log.debug("Port {} is a Smart NIC capable port.", port.getId());
return true;
}
return false;
}
return false;
}

/**
* Extract the interface name with the supplied port.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
* Copyright 2019-present Open Networking Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onosproject.openstackvtap.api;

import java.nio.charset.StandardCharsets;

/**
* Provides constants used in OpenstackVtap.
*/
public final class Constants {

private Constants() {
}

public static final String REST_UTF8 = StandardCharsets.UTF_8.name();
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,13 @@
import org.apache.karaf.shell.api.action.Command;
import org.apache.karaf.shell.api.action.Completion;
import org.apache.karaf.shell.api.action.lifecycle.Service;
import org.onlab.packet.IpPrefix;
import org.onlab.packet.TpPort;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.openstackvtap.api.OpenstackVtap;
import org.onosproject.openstackvtap.api.OpenstackVtapAdminService;
import org.onosproject.openstackvtap.impl.DefaultOpenstackVtapCriterion;
import org.onosproject.openstackvtap.api.OpenstackVtapCriterion;

import static org.onosproject.openstackvtap.util.OpenstackVtapUtil.getProtocolTypeFromString;
import static org.onosproject.openstackvtap.util.OpenstackVtapUtil.getVtapTypeFromString;
import static org.onosproject.openstackvtap.util.OpenstackVtapUtil.makeVtapCriterion;

/**
* Adds a openstack vtap rule.
Expand Down Expand Up @@ -76,38 +74,19 @@ public class OpenstackVtapAddCommand extends AbstractShellCommand {

@Override
protected void doExecute() {
DefaultOpenstackVtapCriterion.Builder vtapCriterionBuilder = DefaultOpenstackVtapCriterion.builder();
if (makeCriterion(vtapCriterionBuilder)) {
OpenstackVtap.Type type = getVtapTypeFromString(vtapTypeStr);

if (type == null) {
print("Invalid vtap type");
return;
}

OpenstackVtap vtap = vtapService.createVtap(type, vtapCriterionBuilder.build());
if (vtap != null) {
print("Created OpenstackVtap with id { %s }", vtap.id().toString());
} else {
print("Failed to create OpenstackVtap");
}
OpenstackVtapCriterion criterion =
makeVtapCriterion(srcIp, dstIp, ipProto, srcTpPort, dstTpPort);
OpenstackVtap.Type type = getVtapTypeFromString(vtapTypeStr);
if (type == null) {
print("Invalid vtap type");
return;
}
}

private boolean makeCriterion(DefaultOpenstackVtapCriterion.Builder vtapCriterionBuilder) {
try {
vtapCriterionBuilder.srcIpPrefix(IpPrefix.valueOf(srcIp));
vtapCriterionBuilder.dstIpPrefix(IpPrefix.valueOf(dstIp));
} catch (Exception e) {
print("Inputted valid source IP & destination IP in CIDR (e.g., \"10.1.0.4/32\")");
return false;
OpenstackVtap vtap = vtapService.createVtap(type, criterion);
if (vtap != null) {
print("Created OpenstackVtap with id { %s }", vtap.id().toString());
} else {
print("Failed to create OpenstackVtap");
}

vtapCriterionBuilder.ipProtocol(getProtocolTypeFromString(ipProto.toLowerCase()));

vtapCriterionBuilder.srcTpPort(TpPort.tpPort(srcTpPort));
vtapCriterionBuilder.dstTpPort(TpPort.tpPort(dstTpPort));

return true;
}
}
Loading