Skip to content

Commit 31e6839

Browse files
authored
Merge pull request #640 from coreemu/develop
8.0.0 merge
2 parents 7e18a7a + bc8c49c commit 31e6839

File tree

151 files changed

+5528
-9806
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

151 files changed

+5528
-9806
lines changed

CHANGELOG.md

+53
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,56 @@
1+
## 2022-01-12 CORE 8.0.0
2+
3+
*Breaking Changes
4+
* heavily refactored gRPC client, removing some calls, adding others, all using type hinted classes representing their protobuf counterparts
5+
* emane adjustments to run each nem in its own process, includes adjustments to configuration, which may cause issues
6+
* internal daemon cleanup and refactoring, in a script directly driving a scenario is used
7+
* Installation
8+
* added options to allow installation without ospf mdr
9+
* removed tasks that are no longer needed
10+
* updates to properly install/remove example files
11+
* pipx/poetry/invoke versions are now locked to help avoid update related issues
12+
* install.sh is now setup.sh and is a convenience to get tool setup to run invoke
13+
* Documentation
14+
* formally added notes for Docker and LXD based node types
15+
* added config services
16+
* Updated README to have quick notes for installation
17+
* \#563 - update to note how to enable core service
18+
* Examples
19+
* \#598 - update to fix sample1.imn to working order
20+
* core-daemon
21+
* emane global configuration is now configurable per nem
22+
* fixed wlan loss to support float values
23+
* improved default service loading to use full core path
24+
* improved emane model loading to occur one time
25+
* fixed handling rj45 link edits from tlv api
26+
* fixed wlan config getting a default value for the promiscuous setting when not provided
27+
* ebtables usage has now been replaced with nftables
28+
* \#564 - logging is now using module named loggers
29+
* \#573 - emane processes are not created 1 to 1 with nems
30+
* \#608 - update lxml version
31+
* \#609 - update pyyaml version
32+
* \#623 - fixed issue with ovs mode and mac learning
33+
* core-gui
34+
* config services are now the default service type
35+
* legacy services are marked as deprecated
36+
* fix to properly load session options
37+
* logging is now using module named loggers
38+
* save as will not update the current session file name as expected
39+
* fix to properly clear out removed customized services
40+
* adding directories to a service that do not exist, is now valid
41+
* added flag to exit after creating gui directory from command line
42+
* added new options to enable/disable ip4/ip6 assignment
43+
* improved canvas draw order, when joining sessions
44+
* improved node copy/paste to avoid issues when pasting text into service config dialogs
45+
* each canvas will not correctly save and load their size from xml
46+
* gRPC API
47+
* session options are now returned for GetSession
48+
* fixed issue not properly creating the session directory during start session definition state
49+
* updates to separate editing a node and moving a node, new MoveNode call added, EditNode is now used for editing icons
50+
* Services
51+
* fixed default route config service
52+
* config services now have options for shadowing directories, including per node customization
53+
154
## 2021-09-17 CORE 7.5.2
255

356
* Installation

Dockerfile

+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# syntax=docker/dockerfile:1
2+
FROM ubuntu:20.04
3+
LABEL Description="CORE Docker Image"
4+
5+
# define variables
6+
ARG DEBIAN_FRONTEND=noninteractive
7+
ARG PREFIX=/usr/local
8+
ARG BRANCH=master
9+
ARG CORE_TARBALL=core.tar.gz
10+
ARG OSPF_TARBALL=ospf.tar.gz
11+
12+
# install system dependencies
13+
RUN apt-get update && \
14+
apt-get install -y --no-install-recommends \
15+
automake \
16+
bash \
17+
ca-certificates \
18+
ethtool \
19+
gawk \
20+
gcc \
21+
g++ \
22+
iproute2 \
23+
iputils-ping \
24+
libc-dev \
25+
libev-dev \
26+
libreadline-dev \
27+
libtool \
28+
libtk-img \
29+
make \
30+
nftables \
31+
python3 \
32+
python3-pip \
33+
python3-tk \
34+
pkg-config \
35+
systemctl \
36+
tk \
37+
wget \
38+
xauth \
39+
xterm \
40+
&& apt-get clean
41+
# install python dependencies
42+
RUN python3 -m pip install \
43+
grpcio==1.27.2 \
44+
grpcio-tools==1.27.2 \
45+
poetry==1.1.7
46+
# retrieve, build, and install core
47+
RUN wget -q -O ${CORE_TARBALL} https://api.github.com/repos/coreemu/core/tarball/${BRANCH} && \
48+
tar xf ${CORE_TARBALL} && \
49+
cd coreemu-core* && \
50+
./bootstrap.sh && \
51+
./configure && \
52+
make -j $(nproc) && \
53+
make install && \
54+
cd daemon && \
55+
python3 -m poetry build -f wheel && \
56+
python3 -m pip install dist/* && \
57+
cp scripts/* ${PREFIX}/bin && \
58+
mkdir /etc/core && \
59+
cp -n data/core.conf /etc/core && \
60+
cp -n data/logging.conf /etc/core && \
61+
mkdir -p ${PREFIX}/share/core && \
62+
cp -r examples ${PREFIX}/share/core && \
63+
echo '\
64+
[Unit]\n\
65+
Description=Common Open Research Emulator Service\n\
66+
After=network.target\n\
67+
\n\
68+
[Service]\n\
69+
Type=simple\n\
70+
ExecStart=/usr/local/bin/core-daemon\n\
71+
TasksMax=infinity\n\
72+
\n\
73+
[Install]\n\
74+
WantedBy=multi-user.target\
75+
' > /lib/systemd/system/core-daemon.service && \
76+
cd ../.. && \
77+
rm ${CORE_TARBALL} && \
78+
rm -rf coreemu-core*
79+
# retrieve, build, and install ospf mdr
80+
RUN wget -q -O ${OSPF_TARBALL} https://github.com/USNavalResearchLaboratory/ospf-mdr/tarball/master && \
81+
tar xf ${OSPF_TARBALL} && \
82+
cd USNavalResearchLaboratory-ospf-mdr* && \
83+
./bootstrap.sh && \
84+
./configure --disable-doc --enable-user=root --enable-group=root \
85+
--with-cflags=-ggdb --sysconfdir=/usr/local/etc/quagga --enable-vtysh \
86+
--localstatedir=/var/run/quagga && \
87+
make -j $(nproc) && \
88+
make install && \
89+
cd .. && \
90+
rm ${OSPF_TARBALL} && \
91+
rm -rf USNavalResearchLaboratory-ospf-mdr*
92+
# retrieve and install emane packages
93+
RUN wget -q https://adjacentlink.com/downloads/emane/emane-1.2.7-release-1.ubuntu-20_04.amd64.tar.gz && \
94+
tar xf emane*.tar.gz && \
95+
cd emane-1.2.7-release-1/debs/ubuntu-20_04/amd64 && \
96+
apt-get install -y ./emane*.deb ./python3-emane_*.deb && \
97+
cd ../../../.. && \
98+
rm emane-1.2.7-release-1.ubuntu-20_04.amd64.tar.gz && \
99+
rm -rf emane-1.2.7-release-1
100+
CMD ["systemctl", "start", "core-daemon"]

Makefile.am

+3-3
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ fpm -s dir -t deb -n core-distributed \
5757
-d "procps" \
5858
-d "libc6 >= 2.14" \
5959
-d "bash >= 3.0" \
60-
-d "ebtables" \
60+
-d "nftables" \
6161
-d "iproute2" \
6262
-d "libev4" \
6363
-d "openssh-server" \
@@ -77,7 +77,7 @@ fpm -s dir -t rpm -n core-distributed \
7777
-d "ethtool" \
7878
-d "procps-ng" \
7979
-d "bash >= 3.0" \
80-
-d "ebtables" \
80+
-d "nftables" \
8181
-d "iproute" \
8282
-d "libev" \
8383
-d "net-tools" \
@@ -123,7 +123,7 @@ all: change-files
123123

124124
.PHONY: change-files
125125
change-files:
126-
$(call change-files,gui/core-gui)
126+
$(call change-files,gui/core-gui-legacy)
127127
$(call change-files,daemon/core/constants.py)
128128
$(call change-files,netns/setup.py)
129129

README.md

+19-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
CORE: Common Open Research Emulator
44

5-
Copyright (c)2005-2020 the Boeing Company.
5+
Copyright (c)2005-2022 the Boeing Company.
66

77
See the LICENSE file included in this distribution.
88

@@ -14,6 +14,24 @@ networks to live networks. CORE consists of a GUI for drawing
1414
topologies of lightweight virtual machines, and Python modules for
1515
scripting network emulation.
1616

17+
## Quick Start
18+
19+
The following should get you up and running on Ubuntu 18+ and CentOS 7+
20+
from a clean install, it will prompt you for sudo password. This would
21+
install CORE into a python3 virtual environment and install
22+
[OSPF MDR](https://github.com/USNavalResearchLaboratory/ospf-mdr) from source.
23+
For more detailed installation see [here](https://coreemu.github.io/core/install.html).
24+
25+
```shell
26+
git clone https://github.com/coreemu/core.git
27+
cd core
28+
./setup.sh
29+
# Ubuntu
30+
inv install
31+
# CentOS
32+
./install.sh -p /usr
33+
```
34+
1735
## Documentation & Support
1836

1937
We are leveraging GitHub hosted documentation and Discord for persistent

configure.ac

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Process this file with autoconf to produce a configure script.
33

44
# this defines the CORE version number, must be static for AC_INIT
5-
AC_INIT(core, 7.5.2)
5+
AC_INIT(core, 8.0.0)
66

77
# autoconf and automake initialization
88
AC_CONFIG_SRCDIR([netns/version.h.in])
@@ -123,9 +123,9 @@ if test "x$enable_daemon" = "xyes"; then
123123
AC_MSG_ERROR([Could not locate sysctl (from procps package).])
124124
fi
125125

126-
AC_CHECK_PROG(ebtables_path, ebtables, $as_dir, no, $SEARCHPATH)
127-
if test "x$ebtables_path" = "xno" ; then
128-
AC_MSG_ERROR([Could not locate ebtables (from ebtables package).])
126+
AC_CHECK_PROG(nftables_path, nft, $as_dir, no, $SEARCHPATH)
127+
if test "x$nftables_path" = "xno" ; then
128+
AC_MSG_ERROR([Could not locate nftables (from nftables package).])
129129
fi
130130

131131
AC_CHECK_PROG(ip_path, ip, $as_dir, no, $SEARCHPATH)

daemon/core/__init__.py

-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,3 @@
22

33
# setup default null handler
44
logging.getLogger(__name__).addHandler(logging.NullHandler())
5-
6-
# disable paramiko logging
7-
logging.getLogger("paramiko").setLevel(logging.WARNING)

0 commit comments

Comments
 (0)