Beispiel #1
0
 def get_vpn_cfg(self):
     """Return VPN configuration of the VRouter5600.
      :return: A tuple: Status, JSON for VPN configuration.
     :rtype: instance of the `Result` class (containing configuration data)
      - STATUS.CONN_ERROR: If the controller did not respond.
     - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did
                                   not provide any status.
     - STATUS.OK: Success. Result is valid.
     - STATUS.HTTP_ERROR: If the controller responded with an error
                          status code.
      """
     status = OperStatus()
     url_ext = "vyatta-security:security/vyatta-security-vpn-ipsec:vpn"
     cfg = None
     ctrl = self.ctrl
     myname = self.name
     url = ctrl.get_ext_mount_config_url(myname)
     url += url_ext
     resp = ctrl.http_get_request(url, data=None, headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         cfg = resp.content
         status.set_status(STATUS.OK)
     elif (resp.status_code == 404):
         status.set_status(STATUS.DATA_NOT_FOUND, resp)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, cfg)
Beispiel #2
0
    def get_hypervisor_details(self, vtep_hvsr):

        status = OperStatus()

        url = self.get_ovrl_mgr_hvsr_oper_url(vtep_hvsr['hvsrIp'], vtep_hvsr['hvsrPortNum'])
        payload = None
        headers = {"content-type": "application/json", "accept": "application/json"}
        timeout = None

        print(url)

        resp = self.http_get_request(url, payload, headers, timeout)

        print(resp)

        if resp is None:
            status.set_status(STATUS.CONN_ERROR)
        elif resp.content is None:
            status.set_status(STATUS.CTRL_INTERNAL_ERROR)
        elif resp.status_code == 200:
            status.set_status(STATUS.NODE_CONFIGURED)
        else:
            status.set_status(STATUS.DATA_NOT_FOUND, resp)

        return Result(status, None)
Beispiel #3
0
 def set_vpn_cfg(self, vpn):
     """ Create/update VPN configuration
      :param vpn: instance of the 'Vpn' class
     :return: A tuple: Status, None
     :rtype: instance of the `Result` class
      - STATUS.CONN_ERROR: If the controller did not respond.
     - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
                                   provide any status.
     - STATUS.OK: Success. Result is valid.
     - STATUS.HTTP_ERROR: If the controller responded with an error
                          status code.
      """
     assert(isinstance(vpn, Vpn))
     status = OperStatus()
     ctrl = self.ctrl
     headers = {'content-type': 'application/yang.data+json'}
     url = ctrl.get_ext_mount_config_url(self.name)
     ext = vpn.get_url_extension()
     url += ext
     payload = vpn.get_payload()
     resp = ctrl.http_put_request(url, payload, headers)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200 or resp.status_code == 204):
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, None)
Beispiel #4
0
 def get_cfg(self):
     """Return configuration
     :return: A tuple: Status, JSON for configuration.
     :rtype: instance of the `Result` class (containing configuration data)
     - STATUS.CONN_ERROR: If the controller did not respond.
     - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
                                   provide any status.
     - STATUS.OK: Success. Result is valid.
     - STATUS.HTTP_ERROR: If the controller responded with an error
                          status code.
     """
     status = OperStatus()
     cfg = None
     ctrl = self.ctrl
     myname = self.name
     url = ctrl.get_ext_mount_config_url(myname)
     resp = ctrl.http_get_request(url, data=None, headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         cfg = resp.content
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, cfg)
Beispiel #5
0
 def delete_dataplane_interface_firewall(self, ifName):
     """ Delete both inbound and outbound firewalls for a
         dataplane interface on the VRouter5600.
      :param string ifName: The dataplane interface to attach a firewall.
     :return: A tuple:  Status, Response from VRouter5600.
     :rtype: instance of the `Result` class
      - STATUS.CONN_ERROR: If the controller did not respond.
     - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did
                                   not provide any status.
     - STATUS.OK: Success. Result is valid.
     - STATUS.HTTP_ERROR: If the controller responded with an error
                          status code.
      """
     status = OperStatus()
     templateModelRef = "vyatta-interfaces:" + \
         "interfaces/vyatta-interfaces-dataplane:" + \
         "dataplane/{}/vyatta-security-firewall:firewall/"
     modelref = templateModelRef.format(ifName)
     myname = self.name
     ctrl = self.ctrl
     url = ctrl.get_ext_mount_config_url(myname)
     resp = ctrl.http_delete_request(url + modelref, data=None,
                                     headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, None)
Beispiel #6
0
 def add_modify_firewall_instance(self, fwInstance):
     """Create a firewall on the VRouter5600.
      :param fwInstance: instance of the 'Firewall' class
     :return: A tuple:  Status, None.
     :rtype: instance of the `Result` class
      - STATUS.CONN_ERROR: If the controller did not respond.
     - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
                                   provide any status.
     - STATUS.OK:  Success. Result is valid.
     - STATUS.HTTP_ERROR: If the controller responded with an error
                          status code.
      """
     status = OperStatus()
     ctrl = self.ctrl
     myname = self.name
     url = ctrl.get_ext_mount_config_url(myname)
     headers = {'content-type': 'application/yang.data+json'}
     payload = fwInstance.get_payload()
     url_ext = fwInstance.get_url_extension()
     url += url_ext
     resp = ctrl.http_put_request(url, payload, headers)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200 or resp.status_code == 204):
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, None)
Beispiel #7
0
    def delete_firewall_instance(self, fwInstance):
        """Delete a firewall from the VRouter5600.
         :param fwInstance: Firewall :class:
        :return: A tuple: Status, None.
        :rtype: instance of the `Result` class
         - STATUS.CONN_ERROR: If the controller did not respond.
        - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
                                     provide any status.
        - STATUS.OK: Success. Result is valid.
        - STATUS.HTTP_ERROR:  if the controller responded with an error status
        .  code.
         """
        assert isinstance(fwInstance, Firewall)
        status = OperStatus()
        ctrl = self.ctrl
        myname = self.name
        url = ctrl.get_ext_mount_config_url(myname)
        ext = fwInstance.get_url_extension()
        url += ext
        resp = ctrl.http_delete_request(url, data=None, headers=None)
        if(resp is None):
            status.set_status(STATUS.CONN_ERROR)
        elif(resp.content is None):
            status.set_status(STATUS.CTRL_INTERNAL_ERROR)
        elif (resp.status_code == 200):
            status.set_status(STATUS.OK)
        else:
            status.set_status(STATUS.HTTP_ERROR, resp)

        return Result(status, None)
Beispiel #8
0
 def get_firewall_instance_cfg(self, instance):
     """Return configuration for a specific firewall on the VRouter5600.
      :param instance of the 'Firewall' class
     :return: A tuple: Status, JSON for firewall configuration.
     :rtype: instance of the `Result` class (containing configuration data)
      - STATUS.CONN_ERROR: If the controller did not respond.
     - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
                                   provide any status.
     - STATUS.OK:  Success. Result is valid.
     - STATUS.HTTP_ERROR: If the controller responded with an error
                          status code.
     """
     status = OperStatus()
     cfg = None
     templateModelRef = "vyatta-security:" + \
         "security/vyatta-security-firewall:firewall/name/{}"
     modelref = templateModelRef.format(instance)
     ctrl = self.ctrl
     myname = self.name
     url = ctrl.get_ext_mount_config_url(myname)
     url += modelref
     resp = ctrl.http_get_request(url, data=None, headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         cfg = resp.content
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, cfg)
Beispiel #9
0
    def delete_vtep_from_hypervisor(self, vtep_hvsr):

        status = OperStatus()

        url = self.get_ovrl_mgr_hvsr_vtep_config_url(vtep_hvsr)
        payload = None
        headers = {"content-type": "application/json", "accept": "application/json"}

        logging.debug(url)
        logging.debug(payload)

        resp = self.http_delete_request(url, payload, headers)

        logging.info(resp)

        if resp is None:
            status.set_status(STATUS.CONN_ERROR)
        elif resp.content is None:
            status.set_status(STATUS.CTRL_INTERNAL_ERROR)
        elif resp.status_code == 200:
            status.set_status(STATUS.NODE_CONFIGURED)
        else:
            status.set_status(STATUS.DATA_NOT_FOUND, resp)

        return Result(status, None)
Beispiel #10
0
    def set_protocols_ospf(self, ospf):
            status = OperStatus()
            ctrl = self.ctrl
            headers = {'content-type': 'application/yang.data+json'}
            url = ctrl.get_ext_mount_config_url(self.name)
            obj = ospf
            payload = obj.get_payload()
            ext = ospf.get_url_extension()
            url += ext

            print(url)
            print(headers)
            print(payload)

            resp = ctrl.http_put_request(url, payload, headers)

            print(resp)

            if(resp is None):
                status.set_status(STATUS.CONN_ERROR)
            elif(resp.content is None):
                status.set_status(STATUS.CTRL_INTERNAL_ERROR)
            elif (resp.status_code == 200 or resp.status_code == 204):
                status.set_status(STATUS.OK)
            else:
                status.set_status(STATUS.HTTP_ERROR, resp)
            return Result(status, None)
Beispiel #11
0
    def register_hypervisor(self, vtep_hvsr):

        status = OperStatus()

        url = self.get_ovrl_mgr_hvsr_config_url(vtep_hvsr['hvsrIp'], vtep_hvsr['hvsrPortNum'])
        var = '{{\"device\": [{{\"ip-address\": \"{0}\",\"user-name\": \"\",\"portnumber\": \"{1}\",\"device-type\": \"hypervisor\",\"name\": \"\",\"device-id\": \"{2}:{3}\",\"password\": \"\"}}]}}'
        payload = var.format(vtep_hvsr['hvsrIp'], vtep_hvsr['hvsrPortNum'], vtep_hvsr['hvsrIp'],
                             vtep_hvsr['hvsrPortNum'])
        headers = {"content-type": "application/json", "accept": "application/json"}

        print(payload)

        resp = self.http_put_request(url, payload, headers)

        print(resp)

        if resp is None:
            status.set_status(STATUS.CONN_ERROR)
        elif resp.content is None:
            status.set_status(STATUS.CTRL_INTERNAL_ERROR)
        elif resp.status_code == 200:
            status.set_status(STATUS.NODE_CONFIGURED)
        else:
            status.set_status(STATUS.DATA_NOT_FOUND, resp)

        return Result(status, None)
Beispiel #12
0
 def get_loopback_interface_cfg(self, ifName):
     """ Return the configuration for a single loopback interface
         on the VRouter5600
      :param string ifName: The interface name of the interface for which
                           configuration should be returned
     :return: A tuple: Status, configuration of dataplane interface
     :rtype: instance of the `Result` class (containing configuration data)
      - STATUS.CONN_ERROR: If the controller did not respond.
     - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
                                   provide any status.
     - STATUS.OK: Success. Result is valid.
     - STATUS.HTTP_ERROR: If the controller responded with an error
                          status code.
      """
     status = OperStatus()
     templateModelRef = "vyatta-interfaces:" + \
         "interfaces/vyatta-interfaces-loopback:" + \
         "loopback/{}"
     modelref = templateModelRef.format(ifName)
     ctrl = self.ctrl
     url = ctrl.get_ext_mount_config_url(self.name)
     url += modelref
     resp = ctrl.http_get_request(url, data=None, headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, resp)
Beispiel #13
0
 def get_interfaces_cfg(ctrl, name):
         """ Return the configuration for the interfaces on the VRouter5600
         :return: A tuple: Status, configuration of the interfaces
         :rtype: instance of the `Result` class (containing configuration data)
         - STATUS.CONN_ERROR: If the controller did not respond.
         - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
                                       provide any status.
         - STATUS.OK:  Success. Result is valid.
         - STATUS.HTTP_ERROR: If the controller responded with an error
                              status code.
         """
         status = OperStatus()
         cfg = None
         templateModelRef = "cliconf-linux:interfaces"
         modelref = templateModelRef
         url = ctrl.get_ext_mount_config_url(name)
         url += modelref
         resp = ctrl.http_get_request(url, data=None, headers=None, timeout=120)
         if(resp is None):
             status.set_status(STATUS.CONN_ERROR)
         elif(resp.content is None):
             status.set_status(STATUS.CTRL_INTERNAL_ERROR)
         elif (resp.status_code == 200):
             cfg = resp.content
             status.set_status(STATUS.OK)
         else:
             status.set_status(STATUS.HTTP_ERROR, resp)
         return Result(status, cfg)
Beispiel #14
0
    def resister_vtep_on_hypervisor(self, vtep_hvsr):

        status = OperStatus()

        url = self.get_ovrl_mgr_hvsr_vtep_config_url(vtep_hvsr)
        var = '{{\"vteps\": [{{\"name\": \"{0}\",\"ip-address\":\"{1}\",\"configuration\": {{\"brocade-app-overlay-ovs-vtep:switch-name\": \"{2}\"}}}}'
        payload = var.format(vtep_hvsr['vtep_hvsr_name'], vtep_hvsr['hvsrIp'], vtep_hvsr['switchName'])
        headers = {"content-type": "application/json", "accept": "application/json"}

        print(url)

        resp = self.http_put_request(url, payload, headers)

        print(resp)

        if resp is None:
            status.set_status(STATUS.CONN_ERROR)
        elif resp.content is None:
            status.set_status(STATUS.CTRL_INTERNAL_ERROR)
        elif resp.status_code == 200:
            status.set_status(STATUS.NODE_CONFIGURED)
        else:
            status.set_status(STATUS.DATA_NOT_FOUND, resp)

        return Result(status, None)
Beispiel #15
0
    def create_tunnel_between_two_hypervisors(self, tnl_name, vni_id, vtep_hvsrA, vtep_hvsrB):

        status = OperStatus()

        url = self.get_ovrl_mgr_tunnel_hvsr2hvsr_config_url(tnl_name)

        var = '{{\"tunnel\": [{{\"tunnel-name\": \"{0}\",\"vni-id\": \"{1}\",\"tunnel-endpoints\": [{{\"device-id\": \"{2}:{3}\",\"vtep-name\": \"{4}\"}},{{\"device-id/": \"{5}:{6}\",\"vtep-name\": \"{7}\"}}]}}'
        payload = var.format(tnl_name, vni_id,
                             vtep_hvsrA['hvsrIp'], vtep_hvsrA['hvsrPortNum'], vtep_hvsrA['vtep_hvsr_name'],
                             vtep_hvsrB['hvsrIp'], vtep_hvsrB['hvsrPortNum'], vtep_hvsrB['vtep_hvsr_name'])
        headers = {"content-type": "application/json", "accept": "application/json"}

        print(payload)

        resp = self.http_put_request(url, payload, headers)

        print(resp)

        if resp is None:
            status.set_status(STATUS.CONN_ERROR)
        elif resp.content is None:
            status.set_status(STATUS.CTRL_INTERNAL_ERROR)
        elif resp.status_code == 200:
            status.set_status(STATUS.NODE_CONFIGURED)
        else:
            status.set_status(STATUS.DATA_NOT_FOUND, resp)

        return Result(status, None)
Beispiel #16
0
 def get_protocols_cfg(self, model_ref=None):
     status = OperStatus()
     templateModelRef = "vyatta-protocols:protocols"
     cfg = None
     ctrl = self.ctrl
     url = ctrl.get_ext_mount_config_url(self.name)
     url += templateModelRef
     if (model_ref is not None):
         url += "/" + model_ref
     resp = ctrl.http_get_request(url, data=None, headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         cfg = resp.content
         status.set_status(STATUS.OK)
     elif (resp.status_code == 404):
         status.set_status(STATUS.DATA_NOT_FOUND, resp)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, cfg)
Beispiel #17
0
 def get_openvpn_interface_cfg(self, ifName):
     status = OperStatus()
     templateModelRef = "vyatta-interfaces:" + \
         "interfaces/vyatta-interfaces-openvpn:" + \
         "openvpn/{}"
     cfg = None
     modelref = templateModelRef.format(ifName)
     ctrl = self.ctrl
     url = ctrl.get_ext_mount_config_url(self.name)
     url += modelref
     resp = ctrl.http_get_request(url, data=None, headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         cfg = resp.content
         status.set_status(STATUS.OK)
     elif (resp.status_code == 404):
         status.set_status(STATUS.DATA_NOT_FOUND, resp)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, cfg)
Beispiel #18
0
 def get_interfaces_cfg(ctrl, name):
         status = OperStatus()
         cfg = None
         templateModelRef = "brocade-interface:interface"
         modelref = templateModelRef
         url = ctrl.get_ext_mount_config_url(name)
         url += modelref
         resp = ctrl.http_get_request(url, data=None, headers=None, timeout=120)
         if(resp is None):
             status.set_status(STATUS.CONN_ERROR)
         elif(resp.content is None):
             status.set_status(STATUS.CTRL_INTERNAL_ERROR)
         elif (resp.status_code == 200):
             cfg = resp.content
             status.set_status(STATUS.OK)
         else:
             status.set_status(STATUS.HTTP_ERROR, resp)
         return Result(status, cfg)
Beispiel #19
0
 def delete_vpn_cfg(self):
     """ Delete VPN configuration """
     status = OperStatus()
     url_ext = "vyatta-security:security/vyatta-security-vpn-ipsec:vpn"
     ctrl = self.ctrl
     myname = self.name
     url = ctrl.get_ext_mount_config_url(myname)
     url += url_ext
     resp = ctrl.http_delete_request(url, data=None, headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, None)
Beispiel #20
0
 def delete_protocols_cfg(self, model_ref=None):
     status = OperStatus()
     url_ext = "vyatta-protocols:protocols"
     ctrl = self.ctrl
     myname = self.name
     url = ctrl.get_ext_mount_config_url(myname)
     url += url_ext
     if (model_ref is not None):
         url += "/" + model_ref
     resp = ctrl.http_delete_request(url, data=None, headers=None)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, None)
Beispiel #21
0
 def set_protocols_static_route_cfg(self, static_route):
     assert(isinstance(static_route, StaticRoute))
     status = OperStatus()
     ctrl = self.ctrl
     headers = {'content-type': 'application/yang.data+json'}
     url = ctrl.get_ext_mount_config_url(self.name)
     obj = static_route
     payload = obj.get_payload()
     ext = static_route.get_url_extension()
     url += ext
     resp = ctrl.http_put_request(url, payload, headers)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200 or resp.status_code == 204):
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, None)
Beispiel #22
0
    def set_dataplane_interface_cfg(self, dpInstance):
        """ Return the configuration for a dataplane interface
            on the VRouter5600
         :param string ifName: The interface name of the interface for which
                              configuration should be returned
        :return: A tuple: Status, configuration of dataplane interface
        :rtype: instance of the `Result` class (containing configuration data)
         - STATUS.CONN_ERROR: If the controller did not respond.
        - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
                                      provide any status.
        - STATUS.OK: Success. Result is valid.
        - STATUS.HTTP_ERROR: If the controller responded with an error
                             status code.
        """
        status = OperStatus()
        ctrl = self.ctrl
        myname = self.name
        url = ctrl.get_ext_mount_config_url(myname)
        headers = {"content-type": "application/json", "accept": "application/json"}
        payload = dpInstance.get_payload()
        url_ext = dpInstance.get_url_extension()
        url += url_ext

        print url
        print payload
        print headers

        resp = ctrl.http_put_request(url, payload, headers)
        print(resp)

        if(resp is None):
            status.set_status(STATUS.CONN_ERROR)
        elif(resp.content is None):
            status.set_status(STATUS.CTRL_INTERNAL_ERROR)
        elif (resp.status_code == 200):
            cfg = resp.content
            status.set_status(STATUS.OK)
        else:
            status.set_status(STATUS.HTTP_ERROR, resp)
        return Result(status, None)
Beispiel #23
0
 def set_dataplane_interface_firewall(self, ifName,
                                      inboundFwName, outboundFwName):
     """ Set a firewall for inbound, outbound or both for a
         dataplane interface on the VRouter5600.
      :param string ifName: The dataplane interface to attache a firewall.
     :param string inboundFwName: None or name of firewall on VRouter5600
                                  to use for traffic inbound towards router.
     :param string outboundFwName: None or name of firewall on VRouter5600
                                  to use for traffic outbound from router.
     :return: A tuple:  Status, None.
     :rtype: instance of the `Result` class
      - STATUS.CONN_ERROR:  if the controller did not respond. schema is
        empty.
     - STATUS.CTRL_INTERNAL_ERROR:  if the controller responded but did not
        provide any status. schema is empty.
     - STATUS.OK:  Success. result is valid.
     - STATUS.HTTP_ERROR:  if the controller responded with an error status
       code.
      """
     status = OperStatus()
     ctrl = self.ctrl
     headers = {'content-type': 'application/yang.data+json'}
     url = ctrl.get_ext_mount_config_url(self.name)
     obj = DataplaneInterfaceFirewall(ifName)
     if (inboundFwName is not None):
         obj.add_in_policy(inboundFwName)
     if (outboundFwName is not None):
         obj.add_out_policy(outboundFwName)
     payload = obj.get_payload()
     url += obj.get_url_extension()
     resp = ctrl.http_put_request(url, payload, headers)
     if(resp is None):
         status.set_status(STATUS.CONN_ERROR)
     elif(resp.content is None):
         status.set_status(STATUS.CTRL_INTERNAL_ERROR)
     elif (resp.status_code == 200):
         status.set_status(STATUS.OK)
     else:
         status.set_status(STATUS.HTTP_ERROR, resp)
     return Result(status, None)
Beispiel #24
0
    def set_dataplane_interface_vif_cfg(self, vif):
        status = OperStatus()
        ctrl = self.ctrl
        myname = self.name
        url = ctrl.get_ext_mount_config_url(myname)
        headers = {"content-type": "application/json", "accept": "application/json"}
        payload = vif.get_payload()
        url_ext = vif.get_url_extension()
        url += url_ext

        print url
        print payload
        print headers

        resp = ctrl.http_put_request(url, payload, headers)
        if(resp is None):
            status.set_status(STATUS.CONN_ERROR)
        elif(resp.content is None):
            status.set_status(STATUS.CTRL_INTERNAL_ERROR)
        elif (resp.status_code == 200 or resp.status_code == 204):
            status.set_status(STATUS.OK)
        else:
            status.set_status(STATUS.HTTP_ERROR, resp)
        return Result(status, None)