""" Library for dynamic flow construction. Authors: james.luhrsen@hp.com Updated: 2014-08-29 """ ''' xmltodict and json libs not needed at this point, but may be useful in the future. ''' # bare bones xml for building a flow xml for flow:inventory flow_xml_skeleton = '' + \ '' + \ '' + \ '' + \ '' input_xml_skeleton = '' + \ '' + \ '' class Flow: ''' Flow class for creating and interacting with OpenFlow flows ''' strict = "false" instruction_xmls = "" match_xmls = "" cookie = 0 cookie_mask = 0 table_id = 0 id = 1 hard_timeout = 60 idle_timeout = 30 flow_name = "No Name" priority = 0 barrier = "false" xml = "" json = "" def set_field(self, field, value): ''' allows for generically setting any attribute in this class based on the 'field' passed in. In the future, adding a new attribute only requires that single line addition. no need for additional setter. ''' setattr(self, field, value) def Make_Inventory_Flow(): ''' Robot Keyword to create and return an instance of the Flow class. ''' flow = Flow() flow.xml = flow_xml_skeleton return flow def Make_Service_Flow(): ''' Robot Keyword to create an input XML that can be used to directly send to flow:service for things like accessing the remove-flow RPC via restconf ''' flow = Flow() flow.xml = input_xml_skeleton return flow def Set_Flow_Field(flow, field, value): ''' Robot Keyword to allow the modification (setting) of the flow object attributes ''' flow.set_field(field, value) return flow # def Convert_Flow_XML_To_Json(flow): # ''' # There may be a need in the future to use json to push # flows, as opposed to xml format that is prevalent in # test code at this point. This function will give a # conversion, but unsure if it's proper. Also, unsure # if the xmltodict library is viable in the CSIT environment # ''' # flowXmlDict = xmltodict.parse(flow.xml) # flow.json = json.dumps(flowXmlDict) # return flow