blob: 24606a2226da59a0a7e9a45a2e174931de8e9178 [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.base_tests as base_tests
11
12from oftest.testutils import *
13
14# Nicira vendor extension constants
15NXT_VENDOR = 0x00002320
16
17NXT_ROLE_REQUEST = 10
18
19NXT_ROLE_VALUE = dict( other=0, slave=1, master=2 )
20
Rich Lane0a4f6372013-01-02 14:40:22 -080021@nonstandard
Shudong Zhoudc276ae2012-10-15 16:02:56 -070022class NiciraRoleRequest(base_tests.SimpleDataPlane):
23 """
24 Exercise Nicira vendor extension for requesting HA roles
25 """
26
Shudong Zhoudc276ae2012-10-15 16:02:56 -070027 def nicira_role_request(self, role):
28 """
29 Use the BSN_SET_IP_MASK vendor command to change the IP mask for the
30 given wildcard index
31 """
32 logging.info("Sending role request %s" % role)
Rich Lane28fa9272013-03-08 16:00:25 -080033 m = ofp.message.vendor()
Shudong Zhoudc276ae2012-10-15 16:02:56 -070034 m.vendor = NXT_VENDOR
35 m.data = struct.pack("!LL", NXT_ROLE_REQUEST, NXT_ROLE_VALUE[role])
36 return m
37
38 def runTest(self):
39 '''
40 For now, we only verify that a response is received.
41 '''
42 request = self.nicira_role_request("master")
43 response, pkt = self.controller.transact(request)
44 self.assertTrue(response is not None, "No reply to Nicira role request")