I tried based on this url: (based on https://github.com/oVirt/vdsm/blob/master/vdsm_hooks/extra_ipv4_addrs/extra_ipv4_addrs.py_)
It seems to work ok, but the ovirt gui says the network is out of sync.
So I can't add any more networks to that interface.  :-(

If I try detaching the "custom" network I get an error:
So obviously I'm missing something.

2016-03-16 17:09:17,948 WARN [org.ovirt.engine.core.vdsbroker.vdsbroker.HostSetupNetworksVDSCommand] (default task-49) [77dc0af6] Unexpected return value: StatusForXmlRpc [code=-32603, message=Internal JSON-RPC error.] 2016-03-16 17:09:17,948 ERROR [org.ovirt.engine.core.vdsbroker.vdsbroker.HostSetupNetworksVDSCommand] (default task-49) [77dc0af6] Failed in 'HostSetupNetworksVDS' method 2016-03-16 17:09:17,962 ERROR [org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector] (default task-49) [77dc0af6] Correlation ID: null, Call Stack: null, Custom Event ID: -1, Message: VDSM ovirt2.test.j2noc.com command failed: Internal JSON-RPC error. 2016-03-16 17:09:17,962 ERROR [org.ovirt.engine.core.vdsbroker.vdsbroker.HostSetupNetworksVDSCommand] (default task-49) [77dc0af6] Error: VDSGenericException: VDSErrorException: Failed to HostSetupNetworksVDS, error = Internal JSON-RPC error., code = -32603 2016-03-16 17:09:17,962 ERROR [org.ovirt.engine.core.vdsbroker.vdsbroker.HostSetupNetworksVDSCommand] (default task-49) [77dc0af6] Exception: org.ovirt.engine.core.vdsbroker.vdsbroker.VDSErrorException: VDSGenericException: VDSErrorException: Failed to HostSetupNetworksVDS, error = Internal JSON-RPC error., code = -32603 at org.ovirt.engine.core.vdsbroker.vdsbroker.VdsBrokerCommand.createDefaultConcreteException(VdsBrokerCommand.java:75) [vdsbroker.jar:] at org.ovirt.engine.core.vdsbroker.vdsbroker.BrokerCommandBase.createException(BrokerCommandBase.java:211) [vdsbroker.jar:]
...
2016-03-16 17:09:17,973 ERROR [org.ovirt.engine.core.vdsbroker.vdsbroker.HostSetupNetworksVDSCommand] (default task-49) [77dc0af6] Command 'HostSetupNetworksVDSCommand(HostName = ovirt2.test.j2noc.com, HostSetupNetworksVdsCommandParameters:{runAsync='true', hostId='7cd16015-609f-47ce-9ea2-d9c1e83769e0', vds='Host[ovirt2.test.j2noc.com,7cd16015-609f-47ce-9ea2-d9c1e83769e0]', rollbackOnFailure='true', conectivityTimeout='120', hostNetworkQosSupported='true', networks='[]', removedNetworks='[V10_dev]', bonds='[]', removedBonds='[]'})' execution failed: VDSGenericException: VDSErrorException: Failed to HostSetupNetworksVDS, error = Internal JSON-RPC error., code = -32603 2016-03-16 17:09:17,973 ERROR [org.ovirt.engine.core.bll.network.host.HostSetupNetworksCommand] (default task-49) [77dc0af6] Command 'org.ovirt.engine.core.bll.network.host.HostSetupNetworksCommand' failed: EngineException: org.ovirt.engine.core.vdsbroker.vdsbroker.VDSErrorException: VDSGenericException: VDSErrorException: Failed to HostSetupNetworksVDS, error = Internal JSON-RPC error., code = -32603 (Failed with error unexpected and code 16)




My hook script, please excuse the poor scripting since this is my first python script.


#!/usr/bin/env python
"""
    Tweak an interface defintion so that it uses an alternate port group.
    It applies on a per vnic basis, it gets triggered and used by event:
        * before_network_setup

    This hook can be used to  allow multiple NICs with same VLAN ID
    in case they are used on multiple hardware NICs.
From: http://lists.ovirt.org/pipermail/users/2014-November/029227.html
"""


import os
import hooking
import sys
import traceback
import xml.dom



HOOK_NAME = 'extnet_pg'

target = open("/tmp/fake_vlan.out",'w')

def main():
    setup_nets_config = hooking.read_json()
    for network, attrs in setup_nets_config['request']['networks'].items():
        target.write("bbb for in fake: %s, %s\n" % (network,attrs))
        if 'vlan' in attrs:
            target.write("bbb custom in fake\n")
            #_process_network(network, attrs)
            vlanid = int(attrs['vlan'])
            target.write("bbb fake vlanid= %s\n" % vlanid)
            if vlanid > 900:
                newid = vlanid - 900
                attrs['vlan'] = newid
                target.write("bbb fake newid= %s\n" % newid)
                hooking.write_json(setup_nets_config)


def _process_network(network, attrs):
        """ Changes vlan id if > 900 """
        vlanid = int(attrs['vlan'])
        #vlanid = int(filter(str.isdigit, port_group))
        target.write("bbb fake vlanid= %s\n" % vlanid)
        if vlanid > 900:
            newid = vlanid - 900
            attrs['vlan'] = newid
            target.write("bbb fake newid= %s\n" % newid)
            hooking.write_json(setup_nets_config)


def test():
        print "do some test here"

if __name__ == '__main__':
        try:
            if '--test' in sys.argv:
                test()
            else:
                main()
        except:
            hooking.exit_hook('extnet hook: [unexpected error]: %s\n' %
                              traceback.format_exc())





On 03/16/2016 01:17 AM, Edward Haas wrote:
On Tue, Mar 15, 2016 at 8:19 PM, Bill James <[email protected]> wrote:
thank you very much for the reply.
I'm trying to find more about how to setup a 'fake vlan id', but so far have
not been able to find anything.  The link you mentioned mentioned a link
about setup_network_hooks, but the link doesn't work any more.

I have found there is a directory called
/usr/libexec/vdsm/hooks/before_network_setup.

This doc http://www.ovirt.org/develop/developer-guide/vdsm/hook/network-nat/
suggests using "sudo engine-config -s CustomDeviceProperties"
but I haven't found any descriptions on how to use it.
This doc goes into a little detail:

http://200.1.19.60/ovirt-engine/docs/manual/en_US/html/Administration_Guide/VDSM_hooks_defining_custom_properties.html
It's not a must to use the custom properties in your case, although it
will be more flexible.
The idea is to use a 'fake' vlan, say 999, and build a hook on the
host to intercept the request, detect that the vlan id is 999 and
replace it with the correct vlan id.
Using the custom properties just allows you to define the target vlan
id on the Engine and not in the hook code.

You can review this reference for the vdsm part:
http://www.ovirt.org/develop/developer-guide/vdsm/hooks/


but what property define vlan number and how do I tell it that this number
is really that number?
If you look at this hook as an example:
https://github.com/oVirt/vdsm/tree/master/vdsm_hooks/extra_ipv4_addrs
You need to look for the 'vlan' attribute, check it is 999 and
overwrite it with your ID.


Thanks.


On 03/15/2016 04:57 AM, Alona Kaplan wrote:

Hi Bill,

Currently the engine blocks adding two networks with the same vlan id to a
data center.
If you think there is a use case for having more than one network with the
same vlan id in a DC, please open an RFE.

As a workaround, you can add a network with a 'fake vlan id' (a vlan id that
is not in use by the dc).
And using 'vdsm before network setup hook'
(https://bugzilla.redhat.com/1057637) translating the 'fake vlan id' to the
desired one.

Alona.

----- Original Message -----

From: "Bill James" <[email protected]>
To: "users" <[email protected]>
Sent: Tuesday, March 15, 2016 1:34:23 AM
Subject: [ovirt-users] multiple NICs VLAN ID conflict

We have DEV and QA is the same "data center" but on the network side of
things they are on different switches, so they reused some VLAN IDs.
No problem, my server has 4 NICS.
But how do I tell ovirt its ok to have 2 networks with same vlan ID because
I'm going to put them on different NICs?

It says "specified VLAN ID is already in use".


_______________________________________________
Users mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/users



_______________________________________________
Users mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/users



Cloud Services for Business www.j2.com
j2 | eFax | eVoice | FuseMail | Campaigner | KeepItSafe | Onebox


This email, its contents and attachments contain information from j2 Global, 
Inc. and/or its affiliates which may be privileged, confidential or otherwise 
protected from disclosure. The information is intended to be for the 
addressee(s) only. If you are not an addressee, any disclosure, copy, 
distribution, or use of the contents of this message is prohibited. If you have 
received this email in error please notify the sender by reply e-mail and 
delete the original message and any copies. (c) 2015 j2 Global, Inc. All rights 
reserved. eFax, eVoice, Campaigner, FuseMail, KeepItSafe, and Onebox are 
registered trademarks of j2 Global, Inc. and its affiliates.
_______________________________________________
Users mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/users

Reply via email to