blob: e8ff88e9d1fd7b3fde944ce0f7686d8a673478fb [file] [log] [blame]
Shudong Zhoudc276ae2012-10-15 16:02:56 -07001"""
2"""
3import struct
4
5import logging
6
7from oftest import config
8import oftest.controller as controller
Rich Laned7b0ffa2013-03-08 15:53:42 -08009import ofp
Shudong Zhoudc276ae2012-10-15 16:02:56 -070010import oftest.message as message
11import oftest.base_tests as base_tests
12
13from oftest.testutils import *
14
15# Nicira vendor extension constants
16NXT_VENDOR = 0x00002320
17
18NXT_ROLE_REQUEST = 10
19
20NXT_ROLE_VALUE = dict( other=0, slave=1, master=2 )
21
Rich Lane0a4f6372013-01-02 14:40:22 -080022@nonstandard
Shudong Zhoudc276ae2012-10-15 16:02:56 -070023class NiciraRoleRequest(base_tests.SimpleDataPlane):
24 """
25 Exercise Nicira vendor extension for requesting HA roles
26 """
27
Shudong Zhoudc276ae2012-10-15 16:02:56 -070028 def nicira_role_request(self, role):
29 """
30 Use the BSN_SET_IP_MASK vendor command to change the IP mask for the
31 given wildcard index
32 """
33 logging.info("Sending role request %s" % role)
34 m = message.vendor()
35 m.vendor = NXT_VENDOR
36 m.data = struct.pack("!LL", NXT_ROLE_REQUEST, NXT_ROLE_VALUE[role])
37 return m
38
39 def runTest(self):
40 '''
41 For now, we only verify that a response is received.
42 '''
43 request = self.nicira_role_request("master")
44 response, pkt = self.controller.transact(request)
45 self.assertTrue(response is not None, "No reply to Nicira role request")