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)
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)
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