コード例 #1
0
ファイル: tcpclient.py プロジェクト: 52-41-4d/GreyFiber
    def run(self):
        '''
         Thread handler
        '''
        try:
            # Request creation
            resource = []
            resource.append(self.__resourcepath)
            resource.append(self.__buyerFile)
            self.__logger.debug("[TCPClient][run]Resource read: {}\n".format(resource))

            # Test if compressed content is needed
            bidList = []
            zippedfile = None
            testfile = None
            if (self.__compression):
                zippedfile = gzip.open(''.join(resource)+".gz", "r+")
                bidList = zippedfile.readlines()
                self.__logger.info("[TCPClient][run](Compressed) Content size {0}".format(sys.getsizeof(bidList)))
            else:
                testfile = open(''.join(resource), 'r')
                bidList = testfile.readlines()
                self.__logger.info("[TCPClient][run](Uncompressed) Content size {0}".format(sys.getsizeof(bidList)))
            data = Request(self.__client_request_type, self.__client_request_code, bidList)

            # Client socket binding
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            sock.connect((self.__serverhost, self.__serverport))

            # Sending JSON data over the socket
            sock.send(data.to_json())
            self.__logger.info("[TCPClient][run]Request sent...")
            start = time.time()
            response = self.__receive_data(sock)
            end = time.time()

            self.__logger.debug("[TCPClient][run]Reception::Time Elapsed: {0}".format(end - start))
            self.__logger.debug("[TCPClient][run](Compressed) Dimension:: {0}".format(sys.getsizeof(response)))

            # Treating compressed data
            result = self.__compression.decompress(response)
            data = Data(False, [], 0)
            data.from_json(result)
            if (int(data.nrbytes) == sys.getsizeof(data.vector)):
                self.__logger.info("[TCPClient][run]Integrity is OK")
                self.__logger.info("[TCPClient][run]Allocations")
                for allocation in data.vector:
                    self.__logger.info(allocation)

        except Exception, e:
            self.__logger.error("Error::NET::sending exception {0}".format(e))
コード例 #2
0
    def run(self):
        '''
         Thread handler
        '''
        try:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            # Request creation
            resource = []
            resource.append(self.__resourcepath)
            resource.append(self.__buyerFile)
            self.__logger.debug(
                "[TCPClient][run]Resource read: {}\n".format(resource))

            # Test if compressed content is needed
            bidList = []
            zippedfile = None
            testfile = None
            if (self.__compression):
                zippedfile = gzip.open(''.join(resource) + ".gz", "r+")
                bidList = zippedfile.readlines()
                self.__logger.info(
                    "[TCPClient][run](Compressed) Content size {0}".format(
                        sys.getsizeof(bidList)))
            else:
                testfile = open(''.join(resource), 'r')
                bidList = testfile.readlines()
                self.__logger.info(
                    "[TCPClient][run](Uncompressed) Content size {0}".format(
                        sys.getsizeof(bidList)))
            data = Request(self.__client_request_type,
                           self.__client_request_code, bidList)

            # Client socket binding
            connected = False
            hosts = self.__serverhosts[:]
            while not connected and hosts:
                host = hosts.pop()
                try:
                    self.__logger.debug(
                        "[TCPClient][run]Trying to connect to host {0}".format(
                            host))
                    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    sock.settimeout(self.__conn_timeout)
                    sock.connect((host, self.__serverport))
                    connected = True
                    sock.settimeout(self.__recv_timeout)
                except socket.error as e:
                    self.__logger.debug(
                        "[TCPClient][run]Failed to connect to host {0}".format(
                            host))
                    if not hosts:
                        self.__logger.error("Error::NET::No hosts available")
                        raise Exception

            # Sending JSON data over the socket
            sock.sendall(data.to_json())
            self.__logger.info("[TCPClient][run]Request sent...")
            start = time.time()
            response = self.__receive_data(sock)
            end = time.time()

            self.__logger.debug(
                "[TCPClient][run]Reception::Time Elapsed: {0}".format(end -
                                                                      start))
            self.__logger.debug(
                "[TCPClient][run](Compressed) Dimension:: {0}".format(
                    sys.getsizeof(response)))
            self.__logger.debug(
                "[TCPClient][run]Raw Response: {0}".format(response))

            # Treating compressed data
            result = self.__compression.decompress(response)
            data = Data(False, [], 0)
            data.from_json(result)
            if (int(data.nrbytes) == sys.getsizeof(data.vector)):
                self.__logger.info("[TCPClient][run]Integrity is OK")
                self.__logger.info("[TCPClient][run]Allocations")
                for allocation in data.vector:
                    self.__logger.info(allocation)
            else:
                self.__logger.debug(
                    "[TCPClient][run]Data from json: {0}".format(data))

        except Exception, e:
            self.__logger.error("Error::NET::sending exception {0}".format(e))
コード例 #3
0
ファイル: monitor.py プロジェクト: mattall/V-Fiber
    def start_monitor(self):
        '''
        Thread handler
        '''
        print('starting monitor')
        conn = None
        ports = [
            'Gi 0/25',
            'Gi 0/26',
            'Gi 0/27',
            'Gi 0/28',
        ]
        stop_count = [0 for x in range(len(ports))]
        try:
            # Request creation
            conn = self.login_to_switch(self.__switch_addr, False)
            while 1:
                if conn == -1:
                    print("Error connecting")
                    break

                for i in range(len(ports)):
                    p = ports[i]
                    conn, disconnected = self.link_disconnected(conn, p)
                    print("link {} disconnected: {}".format(p, disconnected))
                    if disconnected:
                        stop_count[i] += 1
                        print("stop count: ", stop_count)
                        if stop_count[i] == self.tolerance:
                            sock = socket.socket(socket.AF_INET,
                                                 socket.SOCK_STREAM)
                            try:
                                sock.connect(
                                    (self.__serverhosts, self.__serverport))
                            except Exception as e:
                                print(e)
                                print("host :", self.__serverhosts)
                                print("port :", self.__serverport)

                            print("link {} disconnected: {}".format(
                                p, disconnected))
                            data = Request(self.__request_type,
                                           self.__request_code,
                                           (self.__switch_addr, p))
                            sock.sendall(data.to_json())
                            print(data.to_json())
                            del ports[i]
                            del stop_count[i]

                    else:
                        stop_count[i] = 0
                sleep(self.interval)

        except Exception as e:
            print(e)

        finally:
            if conn:
                conn.close()

        print("ending monitor")