blob: fa4cc973348028a78be940ef4869e4cd9fe59b45 [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
9import oftest.cstruct as ofp
10import 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")