Age | Commit message (Collapse) | Author | Files | Lines |
|
Currently there's a fixed mapping between abstracted interface
names (nic1, nic2 etc) and the underlying biosdevname for the
device.
In many cases, this mapping based on system enumeration is
sufficient, but in some cases, particularly when you perform
detailed pre-deployment discovery of interfaces, you may wish
to alter the mapping independently of the config (e.g if the
config is in a heat template, and the discovery data is
provided at runtime).
So this adds a -m option to os-net-config, which enables a
mapping file to be provided, such that specific interfaces
may be mapped to their abstract names based on knowledge of
the devices or the networks they are connected to.
The mapping file has the following format, where em1 and em2 are
device names as detected by the OS (e.g biosdevname):
interface_mapping:
nic1: em2
nic2: em1
Or you can use the device MAC instead:
interface_mapping:
nic1: 12:34:56:78:9a:bc
nic2: 12:34:56:de:f0:12
Change-Id: I93e6d3ed733244834bb3c2126c91db705b4d9167
|
|
Currently no check for error output on stderr is made, and no
sanity checked performed on the stdout string - both yaml and json
versions could be empty and the test would still pass.
So add sanity assertions for each case so the test is a bit more
robust.
Change-Id: Iced683ff3365e0766d345a2ce840b69b501fbb54
|
|
Currently test_cli fails if you don't run it from the repository
top directory, so instead derive a relative path from the test,
which e.g allows you to do nosetests -svx test_cli.py which can
be more convenient when debugging.
Change-Id: I120065ca17104be7c2f4bf00d3e4e281a3179703
|
|
Currently we ignore the actual return code from the main() function,
due to the try/catch, which isn't appropriate where we're directly
calling the function. Instead assert the return value directly,
which will catch failures where main returns a non-zero status.
Change-Id: Ic92ca243230f732201f30cc63be5101f70c206bb
|
|
Adds a simple example showing how an individual interface can be
configured, e.g outside of a bond etc.
Change-Id: I05dcb4fabe718686e306bdc719b32f0fb40c1b5e
|
|
|
|
|
|
Change-Id: I88118836605fade6bc7978b2d65ed51cef0cdc80
|
|
These options seem to be reversed, in most other tools verbose
means INFO and debug means DEBUG.
Change-Id: I31005e4e10372018685a93dc2f80619f16c513d9
|
|
Without this change, when configuring a default route, it's neccessary
to explicitly provide an ip_netmask of 0.0.0.0/0 - otherwise line 177
errors because there's no route.ip_netmask.
With this change, it's still possible to provide an ip_netmask for a
default route (even though that makes no sense), but if none is provided
The Right Thing is done.
Change-Id: Idac59e571a72cc8d5693f811ec0121273b891d0f
|
|
Updates the impl_ifcfg.child_members method so that it
uses a set instead of an array (this avoids dups). Also
fixes an issue with this method which would cause tests
to fail intermittently due to ordering differences.
Adding each member object regardless solves this
(not sure why I had commented out the children.append before)
Also fixes an issue in test_cli which causes tests to fail
on Debian which doesn't yet support the add_bond method
on its ENI provider. This fix was to explicitly set
--provider=ifcfg on the failing tests. We should be able to
remove these once ENI supports bonding properly.
Closes-bug: #1370615
Change-Id: Id9cfa2b2eaab27c93113956f5956facfa2a2aeee
|
|
|
|
If a top level bridge or bond is modified we also want to
restart the child interfaces.
|
|
|
|
Update the utils.get_file_data method so that it doesn't log
errors if a file doesn't exist.
|
|
Adds support for ovs_extra to the OVS Bridge and
OVS bond objects.
|
|
Updates the object model so that a VLAN on top of a bridge
(an OVS int port) doesn't require a physical device to
be set in the object model.
|
|
Corrects the eni provider so that it returns the correct
format in noop mode.
|
|
Adds new YAML examples. Also adds some new CLI test
cases which compare --noop stdout (from the CLI) for
the json and yaml examples to verify they generate
the same things.
|
|
Implements a new active NIC abstraction and naming convention
that allows nic1, nic2, etc. to be translated to actual (active)
network device names like em1, em2 (or eth0, eth1).
This includes some logic to map ordered active nics to the
nic1, nic2 naming scheme. Embedded nics are always listed
first (in sort order) followed by any other active Nics
on the system.
With the new code:
{"type": "interface", "name": "nic1" }
is automatically translated (internally) to:
{"type": "interface", "name": "em1" }
This works for all top level "interface" devices, vlans, bonds, and
bridges alike. For vlans the 'device' name is translated instead
of the device name per vlan object conventions.
|
|
This interface should always exist... we don't want to clean
it up.
|
|
Missed this in 9e515950c7eb4a73e02a4f4883c223dd24ba93ff
|
|
|
|
Adds a new cleanup option which can be used to ifdown and
remove interfaces that exists but aren't specified in
the object model (or JSON).
|
|
|
|
Adds support for a new 'primary' interface option exposed via the
object model and JSON parsers which can be used to force the
MAC address on a bridge. Only one interface on a given
bridge (or bond) may be set as the primary interface.
Also, update the ifcfg and eni providers so that they use
OVS_EXTRA (or ovs_extra) to pin the mac accordingly.
|
|
Updates the apply() function for each NetConfig object
so that it now accepts noop instead. Also, the updated
files are not returned (always instead of conditionally
if mock was used).
|
|
Specifying mock=True for 'apply' will return a string
representing the changes required, or commands to be used
in order to implement the requested/specified configuration.
This is also exposed to the cli, with -m (--mock), e.g.
os-net-config --mock -c ./etc/example_os_net_config_1.json -p eni
|
|
This fixes issues where running os-net-config did nothing.
|
|
Corrects an issue where 'None' got written into the
ifcfg format route files instead of ''.
|
|
|
|
Adds -d (--debug) and -v (--verbose) options to control
the log levels.
|
|
|
|
|
|
|
|
We should bring up the interfaces on boot in the same order
with which we bring them up in this tool.
|
|
|
|
|
|
Drop the 'set Interface $DEVICE external-ids:iface-id=...' config
from ifcfg ovs vlans.
|
|
|
|
We were shutting the interfaces down but not bringing them up
again. This fixes that...
|
|
Updates the ENI format so it creates multiple config sections
for a single os-net-config interface object if both v4 and v6
IP addresses are defined.
Also, fixes several of the test so that DHCP is not enabled on
OvsPorts. If an OVS port is part of a bridge that is itself using
DHCP we don't also need to run DHCP on the OvsPort interface.
|
|
Adds a new CLI which parses the JSON and calls the configured
provider to apply the configuration.
|
|
Adds a from_json static method to all objects.
Also adds a top level object_from_json function that
can be used for all the interface and bridge types.
(everything except addresses and routes). This should
be useful for wiring processing JSON from the CLI.
|
|
|
|
Supports the configuration of OVS bond interfaces.
Also adds the ability to configure extra OVS_OPTIONS
for both bonds and bridges (useful for some modes of
operation)
|
|
Consolidates the test data into a single string block for the
ovs vlan port test string.
|
|
Add ifcfg configuration support for Vlans and Vlan OVS ports.
|
|
This uses /etc/network/interfaces single file format.
Includes basic tests
|
|
Adds new object for OvsBridge. Also update the ifcfg network
config class to support adding bridges.
As part of the change both the bridge and interface classes
extend a _BaseOpts base class.
|