add modify role API in ofctl_rest

add description about role API

Signed-off-by: tungyueh <tylin.cs03g@nctu.edu.tw>
Reviewed-by: Iwase Yusuke <iwase.yusuke0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
tungyueh 2016-08-25 15:53:17 +08:00 committed by FUJITA Tomonori
parent 03e8028ce6
commit 1970e70a0d
7 changed files with 65 additions and 0 deletions

View File

@ -2512,6 +2512,33 @@ Delete a meter entry
"meter_id": 1
}' http://localhost:8080/stats/meterentry/delete
Modify role
--------------------
modify the role of the switch.
Usage:
======= =========================
Method POST
URI /stats/role
======= =========================
Request message body:
=========== ============================ ========= =================
Attribute Description Example Default
=========== ============================ ========= =================
dpid Datapath ID (int) 1 (Mandatory)
role One of OFPCR_ROLE_*(string) "MASTER" OFPCR_ROLE_EQUAL
=========== ============================ ========= =================
Example of use::
$ curl -X POST -d '{
"dpid": 1,
"role": "MASTER"
}' http://localhost:8080/stats/role
Support for experimenter multipart
==================================

View File

@ -177,6 +177,9 @@ supported_ofctl = {
# modify behavior of the physical port
# POST /stats/portdesc/modify
#
# modify role of controller
# POST /stats/role
#
#
# send a experimeter message
# POST /stats/experimenter/<dpid>
@ -488,6 +491,10 @@ class StatsController(ControllerBase):
def send_experimenter(self, req, dp, ofctl, exp, **kwargs):
ofctl.send_experimenter(dp, exp)
@command_method
def set_role(self, req, dp, ofctl, role, **kwargs):
ofctl.set_role(dp, role)
class RestStatsApi(app_manager.RyuApp):
OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION,
@ -698,6 +705,11 @@ class RestStatsApi(app_manager.RyuApp):
controller=StatsController, action='send_experimenter',
conditions=dict(method=['POST']))
uri = path + '/role'
mapper.connect('stats', uri,
controller=StatsController, action='set_role',
conditions=dict(method=['POST']))
@set_ev_cls([ofp_event.EventOFPStatsReply,
ofp_event.EventOFPDescStatsReply,
ofp_event.EventOFPFlowStatsReply,

View File

@ -424,3 +424,6 @@ class OFCtlUtil(object):
def ofp_queue_to_user(self, queue):
return self._reserved_num_to_user(queue, 'OFPQ_')
def ofp_role_from_user(self, role):
return self._reserved_num_from_user(role, 'OFPCR_ROLE_')

View File

@ -926,5 +926,11 @@ def mod_port_behavior(dp, port_config):
ofctl_utils.send_msg(dp, port_mod, LOG)
def set_role(dp, role):
r = UTIL.ofp_role_from_user(role.get('role', dp.ofproto.OFPCR_ROLE_EQUAL))
role_request = dp.ofproto_parser.OFPRoleRequest(dp, r, 0)
ofctl_utils.send_msg(dp, role_request, LOG)
# NOTE(jkoelker) Alias common funcitons
send_experimenter = ofctl_utils.send_experimenter

View File

@ -1152,5 +1152,11 @@ def mod_port_behavior(dp, port_config):
ofctl_utils.send_msg(dp, port_mod, LOG)
def set_role(dp, role):
r = UTIL.ofp_role_from_user(role.get('role', dp.ofproto.OFPCR_ROLE_EQUAL))
role_request = dp.ofproto_parser.OFPRoleRequest(dp, r, 0)
ofctl_utils.send_msg(dp, role_request, LOG)
# NOTE(jkoelker) Alias common funcitons
send_experimenter = ofctl_utils.send_experimenter

View File

@ -939,5 +939,11 @@ def mod_port_behavior(dp, port_config):
ofctl_utils.send_msg(dp, port_mod, LOG)
def set_role(dp, role):
r = UTIL.ofp_role_from_user(role.get('role', dp.ofproto.OFPCR_ROLE_EQUAL))
role_request = dp.ofproto_parser.OFPRoleRequest(dp, r, 0)
ofctl_utils.send_msg(dp, role_request, LOG)
# NOTE(jkoelker) Alias common funcitons
send_experimenter = ofctl_utils.send_experimenter

View File

@ -1084,5 +1084,10 @@ def mod_port_behavior(dp, port_config):
ofctl_utils.send_msg(dp, port_mod, LOG)
def set_role(dp, role):
r = UTIL.ofp_role_from_user(role.get('role', dp.ofproto.OFPCR_ROLE_EQUAL))
role_request = dp.ofproto_parser.OFPRoleRequest(dp, r, 0)
ofctl_utils.send_msg(dp, role_request, LOG)
# NOTE(jkoelker) Alias common funcitons
send_experimenter = ofctl_utils.send_experimenter