Example #1
0
 def __init__(self, ip, cpe, listenport, platform_config, ping_path,
              acs_url=None, ping_ip6dev=None, fetch_args=dict(), ioloop=None,
              restrict_acs_hosts=None):
   self.cpe = cpe
   self.cpe_soap = api_soap.CPE(self.cpe)
   self.encode = api_soap.Encode()
   self.outstanding = None
   self.response_queue = []
   self.request_queue = []
   self.event_queue = LimitDeque(MAX_EVENT_QUEUE_SIZE, self.EventQueueHandler)
   self.ioloop = ioloop or tornado.ioloop.IOLoop.instance()
   self.retry_count = 0  # for Inform.RetryCount
   self.start_session_timeout = None  # timer for CWMPRetryInterval
   self.session = None
   self.my_configured_ip = ip
   self.ping_ip6dev = ping_ip6dev
   self.fetch_args = fetch_args
   self.rate_limit_seconds = 60
   self.platform_config = platform_config
   self.previous_ping_time = 0
   self.ping_timeout_pending = None
   self._changed_parameters = set()
   self._changed_parameters_sent = set()
   self.cpe_management_server = cpe_management_server.CpeManagementServer(
       acs_url=acs_url, platform_config=platform_config, port=listenport,
       ping_path=ping_path, get_parameter_key=cpe.getParameterKey,
       start_periodic_session=self.NewPeriodicSession, ioloop=self.ioloop,
       restrict_acs_hosts=restrict_acs_hosts)
Example #2
0
  def testTransferComplete(self):
    encode = api_soap.Encode()
    start = datetime.datetime(2011, 12, 5, 12, 01, 02)
    end = datetime.datetime(2011, 12, 5, 12, 01, 03)
    xml = str(encode.TransferComplete('cmdkey', 123, 'faultstring', start, end))

    root = ET.fromstring(str(xml))
    xfer = root.find(SOAPNS + 'Body/' + CWMPNS + 'TransferComplete')
    self.assertTrue(xfer)
    self.assertEqual(xfer.find('CommandKey').text, 'cmdkey')
    self.assertEqual(xfer.find('FaultStruct/FaultCode').text, '123')
    self.assertEqual(xfer.find('FaultStruct/FaultString').text, 'faultstring')
    self.assertTrue(xfer.find('StartTime').text)
    self.assertTrue(xfer.find('CompleteTime').text)
Example #3
0
  def __init__(self, ip, cpe, listenport, acs_config,
               ping_path, acs_url=None, fetch_args=None,
               ioloop=None, restrict_acs_hosts=None):
    tornado.httpclient.AsyncHTTPClient.configure(
        'tornado.curl_httpclient.CurlAsyncHTTPClient')
    # pylint:disable=protected-access
    oldcreate = tornado.curl_httpclient._curl_create
    tornado.curl_httpclient._curl_create = (
        lambda *args, **kwargs: CurlCreator(oldcreate, *args, **kwargs))
    # pylint:enable=protected-access
    self.cpe = cpe
    self.cpe_soap = api_soap.CPE(self.cpe)
    self.encode = api_soap.Encode()
    self.cwmplogger = cwmplog.Logger(full_logs=10)
    self.outstanding = None
    self.response_queue = []
    self.request_queue = []
    self.event_queue = LimitDeque(MAX_EVENT_QUEUE_SIZE, self.EventQueueHandler)
    self.ioloop = ioloop or tornado.ioloop.IOLoop.instance()
    self.retry_count = 0  # for Inform.RetryCount
    self.start_session_timeout = None  # timer for CWMPRetryInterval
    self.session = None
    self.my_configured_ip = ip
    self.fetch_args = fetch_args or dict()
    self.ping_rate_limit_seconds = 2
    self.previous_ping_time = 0
    self.ping_timeout_pending = None
    self._changed_parameters = set()
    self._changed_parameters_sent = set()
    self._acs_config = acs_config
    self.cpe_management_server = cpe_management_server.CpeManagementServer(
        acs_url=acs_url, acs_config=acs_config, port=listenport,
        ping_path=ping_path, get_parameter_key=cpe.getParameterKey,
        start_periodic_session=self.NewPeriodicSession, ioloop=self.ioloop,
        restrict_acs_hosts=restrict_acs_hosts)
    self.last_success_response = 0  # used by DiagUI
    self.num_599_responses = 0
    self._acs_disabled_until = None

    try:
      notifier = filenotifier.FileNotifier(mainloop.MainLoop())
      self.watch_acs_disabled = notifier.WatchObj(self._AcsDisabledFilename(),
                                                  self._UpdateAcsDisabled)
      self._UpdateAcsDisabled()
    except pyinotify.WatchManagerError:
      print 'cwmp temp dir (%s) does not exist' % CWMP_TMPDIR