Ignore:
Timestamp:
01/28/10 15:31:34 (12 years ago)
Author:
sc
Message:

whitespace and comment cleanup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rc/puzzlebox_brainstorms_client.py

    r5 r6  
    2121 
    2222import puzzlebox_brainstorms_configuration as configuration 
    23 #import puzzlebox_common_operations as common_operations 
    2423#import puzzlebox_logger 
    25  
    2624 
    2725##################################################################### 
     
    3331 
    3432MAX_CONNECTION_ATTEMPTS = configuration.MAX_CONNECTION_ATTEMPTS 
    35 #HEALTH_CHECK_CONNECTION_ATTEMPTS = puzzlebox_configuration.HEALTH_CHECK_CONNECTION_ATTEMPTS 
    3633NO_REPLY_WAIT = configuration.NO_REPLY_WAIT 
    3734 
     
    4643 
    4744class puzzlebox_brainstorms_client: 
    48  
     45         
    4946        def __init__(self, log, hostname, port, \ 
    5047                          service_name = 'MCC', \ 
    5148                          target_name = 'MCP', \ 
    5249                          max_connection_attempts = MAX_CONNECTION_ATTEMPTS): 
    53  
     50                 
    5451                self.log = log 
    5552                self.hostname = hostname 
     
    5855                self.target_name = target_name 
    5956                self.max_connection_attempts = max_connection_attempts 
    60  
    61  
    62         ################################################################## 
    63  
     57         
     58         
     59        ################################################################## 
     60         
    6461        def test_drive(self): 
    65  
     62                 
    6663                instruction = {} 
    6764                instruction['command'] = 'test_drive' 
    68  
     65                 
    6966                #self.log.debug("Requesting to hide_all_components") 
    70  
     67                 
    7168                return self.send_instruction(instruction) 
    72  
    73  
    74         ################################################################## 
    75  
    76         #def hide_all_components(self): 
    77  
    78                 #instruction = {} 
    79                 #instruction['command'] = 'hide_all_components' 
    80  
    81                 #self.log.debug("Requesting to hide_all_components") 
    82  
    83                 #return self.send_instruction(instruction) 
    84  
    85  
    86         ################################################################## 
    87  
    88         #def register_window(self, window_id): 
    89  
    90                 #instruction = {} 
    91                 #instruction['command'] = 'register_window' 
    92                 #instruction['information'] = {} 
    93                 #instruction['information']['window_id'] = window_id 
    94  
    95                 #return self.send_instruction(instruction) 
    96  
    97  
    98         ################################################################## 
    99  
    100         #def get_window_data(self, window_id): 
    101  
    102                 #instruction = {} 
    103                 #instruction['command'] = 'get_window_data' 
    104                 #instruction['information'] = {} 
    105                 #instruction['information']['window_id'] = window_id 
    106                  
    107                 #return self.send_instruction(instruction) 
    108  
    109  
    110         ################################################################## 
    111  
    112         #def get_registry(self): 
    113                  
    114                 #registry = {} 
    115                  
    116                 #instruction = {} 
    117                 #instruction['command'] = 'get_registry' 
    118                 #instruction['information'] = {} 
    119                  
    120                 #return self.send_instruction(instruction) 
    121  
    122  
    123         ################################################################## 
    124  
    125         #def unregister_all_windows(self): 
    126  
    127                 #instruction = {} 
    128                 #instruction['command'] = 'unregister_all_windows' 
    129                 #instruction['information'] = {} 
    130  
    131                 #return self.send_instruction(instruction) 
    132  
    133  
    134         ################################################################## 
    135  
    136         #def unregister_component(self, component): 
    137  
    138                 #instruction = {} 
    139                 #instruction['command'] = 'unregister_component' 
    140                 #instruction['information'] = {} 
    141                 #instruction['information']['pid'] = component['pid'] 
    142  
    143                 #return self.send_instruction(instruction) 
    144  
    145  
    146         ################################################################## 
    147  
    148         #def restart_component(self, component): 
    149  
    150                 #instruction = {} 
    151                 #instruction['command'] = 'restart_component' 
    152                 #instruction['information'] = {} 
    153                 #instruction['information']['pid'] = component['pid'] 
    154  
    155                 #return self.send_instruction(instruction) 
    156  
    157  
    158         ################################################################## 
    159  
    160         #def exit_content_set(self): 
    161  
    162                 #instruction = {} 
    163                 #instruction['command'] = 'exit_content_set' 
    164                 #instruction['information'] = {} 
    165  
    166                 #return self.send_instruction(instruction) 
    167  
    168  
    169         ################################################################## 
    170  
    171         #def change_content_set(self, data): 
    172  
    173                 #instruction = {} 
    174                 #instruction['command'] = 'change_content_set' 
    175                 #instruction['information'] = {} 
    176                 #instruction['information']['content_set_id'] = data['content_set_id'] 
    177  
    178                 #return self.send_instruction(instruction) 
    179  
    180  
    181         ################################################################## 
    182  
    183         #def end_current_entry(self, data): 
    184  
    185                 #instruction = {} 
    186                 #instruction['command'] = 'end_current_entry' 
    187                 #instruction['information'] = {} 
    188                 #instruction['information']['window_id'] = data['window_id'] 
    189  
    190                 #return self.send_instruction(instruction) 
    191  
    192  
    193         ################################################################## 
    194  
    195         #def request_screenshot(self): 
    196  
    197                 #instruction = {} 
    198                 #instruction['command'] = 'request_screenshot' 
    199                 #instruction['information'] = {} 
    200  
    201                 #return self.send_instruction(instruction) 
    202  
    203  
    204         ################################################################## 
    205  
    206         #def upload_screenshot(self): 
    207  
    208                 #instruction = {} 
    209                 #instruction['command'] = 'upload_screenshot' 
    210                 #instruction['information'] = {} 
    211  
    212                 #return self.send_instruction(instruction) 
    213  
    214  
    215         ################################################################## 
    216  
    217         #def export_schedule(self, data): 
    218  
    219                 #instruction = {} 
    220                 #instruction['command'] = 'export_schedule' 
    221                 #instruction['information'] = {} 
    222  
    223                 #for key in data.keys(): 
    224                         #instruction['information'][key] = data[key] 
    225  
    226                 #return self.send_instruction(instruction) 
    227  
    228  
    229         ################################################################## 
    230  
    231         #def check_health(self, component={}): 
    232  
    233                 #instruction = {} 
    234                 #instruction['command'] = 'check_health' 
    235                 #instruction['information'] = {} 
    236  
    237                 #return self.send_instruction(instruction, component, \ 
    238                                         #max_connection_attempts=HEALTH_CHECK_CONNECTION_ATTEMPTS) 
    239  
    240  
    241         ################################################################## 
    242  
     69         
     70         
     71        ################################################################## 
     72         
    24373        def send_instruction(self, instruction, component=None, \ 
    24474                                        max_connection_attempts=MAX_CONNECTION_ATTEMPTS): 
    245  
     75                 
    24676                if not component: 
    24777                        component = {} 
     
    25080                        component['source'] = self.service_name 
    25181                        component['target'] = self.target_name 
    252  
     82                 
    25383                factory = puzzlebox_brainstorms_client_send_instruction_factory(self.log, \ 
    25484                                                       component, \ 
    25585                                                       instruction, \ 
    25686                                                       max_connection_attempts) 
    257  
     87                 
    25888                reactor.connectTCP(component['hostname'], component['port'], factory) 
    259  
     89                 
    26090                return factory.replyDefer 
    26191 
     
    26696 
    26797class mcc_send_instruction_protocol(protocol.Protocol): 
    268  
     98         
    26999        def __init__(self): 
    270100                self.data_chunk = "" 
    271  
    272  
    273         ################################################################## 
    274  
     101         
     102         
     103        ################################################################## 
     104         
    275105        def connectionMade(self): 
    276106                data = pickle.dumps(self.factory.instruction) 
    277107                self.transport.write(data) 
    278  
     108                 
    279109                #self.factory.log.debug("%s sent '%s' to remote %s component at %s:%s " % \ 
    280110                                #(self.factory.component['source'], \ 
     
    283113                                 #self.factory.component['hostname'], \ 
    284114                                 #self.factory.component['port'])) 
    285  
     115                 
    286116                self.factory.noReply = reactor.callLater(NO_REPLY_WAIT, self.noReply) 
    287  
    288  
    289         ################################################################## 
    290  
     117         
     118         
     119        ################################################################## 
     120         
    291121        def noReply(self): 
    292  
     122                 
    293123                #self.factory.log.error('No reply from %s for instruction %s' % \ 
    294124                        #(self.factory.component['target'], self.factory.instruction)) 
    295  
     125                 
    296126                try: 
    297127                        self.factory.replyDefer.callback(('NO_REPLY', self.factory.component)) 
    298128                except: 
    299129                        self.factory.log.error("noReply failed to call callback?") 
    300  
     130                 
    301131                self.transport.loseConnection() 
    302  
    303  
    304         ################################################################## 
    305  
     132         
     133         
     134        ################################################################## 
     135         
    306136        def dataReceived(self, data): 
    307  
     137                 
    308138                try: 
    309139                        self.factory.noReply.cancel() 
    310140                except: 
    311141                        self.factory.log.error("dataReceived after noReply triggered (or cancelled)?!") 
    312  
     142                 
    313143                self.data_chunk += data 
    314144                try: 
     
    318148                else: 
    319149                        self.data_chunk = "" 
    320  
     150                         
    321151                        #self.factory.log.debug('%s received reply from %s: %s' % \ 
    322152                                #(self.factory.component['source'], \ 
    323153                                 #self.factory.component['target'], \ 
    324154                                 #reply)) 
    325  
     155                         
    326156                        try: 
    327157                                self.factory.replyDefer.callback((reply, self.factory.component)) 
     
    329159                                #self.factory.log.error("dataReceived failed to call callback?") 
    330160                                pass 
    331  
     161                         
    332162                        self.transport.loseConnection() 
    333163 
     
    338168 
    339169class puzzlebox_brainstorms_client_send_instruction_factory(protocol.ClientFactory): 
    340  
     170                 
    341171        def __init__(self, log, \ 
    342172                     component, \ 
    343173                     instruction, \ 
    344174                     max_connection_attempts=MAX_CONNECTION_ATTEMPTS): 
    345  
     175                 
    346176                self.protocol = mcc_send_instruction_protocol 
    347177                self.log = log 
    348178                self.component = component 
    349179                self.instruction = instruction 
    350  
     180                 
    351181                self.max_connection_attempts = max_connection_attempts 
    352182                self.connection_attempt = 1 
    353  
     183                 
    354184                self.replyDefer = defer.Deferred() 
    355  
    356  
    357         ################################################################## 
    358  
     185         
     186         
     187        ################################################################## 
     188         
    359189        def clientConnectionFailed(self, connector, reason): 
    360190                 
     
    364194                                 #self.component['hostname'], \ 
    365195                                 #self.component['port'])) 
    366  
     196                 
    367197                reply='FAILED_TO_CONNECT' 
    368  
     198                 
    369199                self.connection_attempt = self.connection_attempt + 1 
    370  
     200                 
    371201                if self.max_connection_attempts == None or \ 
    372202                        self.connection_attempt <= self.max_connection_attempts: 
    373  
     203                 
    374204                        # If connection failed retry after one second 
    375205                        reactor.callLater(1, connector.connect) 
    376  
     206                 
    377207                else: 
    378208                        #self.log.error("Maximum connection retries from %s to %s reached, aborting" % \ 
    379                                  #(self.component['source'], self.component['target'])) 
     209                                       #(self.component['source'], self.component['target'])) 
    380210                        pass 
    381  
     211                         
    382212                        self.replyDefer.callback((reply, self.component)) 
    383  
    384  
    385         ################################################################## 
    386  
     213         
     214         
     215        ################################################################## 
     216         
    387217        def clientConnectionLost(self, connector, reason): 
    388  
     218                 
    389219                # Losing Connection is expected after data exchange is complete 
    390220                #self.log.debug("Connection to %s lost for instruction %s" % (self.component, self.instruction)) 
     
    400230 
    401231class puzzlebox_brainstorms_client_command_line(puzzlebox_brainstorms_client): 
    402  
     232         
    403233        def __init__(self, log, command_parameters, SERVER_HOST, SERVER_PORT): 
    404234                 
     
    410240                self.target_name = 'MCP' 
    411241                self.max_connection_attempts = MAX_CONNECTION_ATTEMPTS 
    412  
    413  
    414         ################################################################## 
    415  
     242         
     243         
     244        ################################################################## 
     245         
    416246        def execute_command_line(self): 
    417  
     247                 
    418248                (command, information) = self.parse_command_list(self.command_parameters) 
    419  
     249                 
    420250                instruction = {} 
    421251                instruction['command'] = command 
    422252                instruction['information'] = information 
    423  
     253                 
    424254                d = self.send_instruction(instruction) 
    425255                d.addCallback(self.print_response_and_stop) 
    426  
    427  
     256         
     257         
    428258        ################################################################## 
    429259         
    430260        def print_response_and_stop(self, response): 
    431          
     261                 
    432262                print response[0] 
    433          
     263                 
    434264                reactor.stop() 
    435  
    436          
    437         ################################################################## 
    438  
     265         
     266         
     267        ################################################################## 
     268         
    439269        def parse_command_list(self, command_parameters): 
    440  
     270                 
    441271                command = None 
    442272                data = {} 
    443  
     273                 
    444274                if (command_parameters[0] == 'test_drive'): 
    445  
    446275                        command = 'test_drive' 
    447  
    448  
    449                 #if command_parameters[0] == '/usr/sbin/chroot': 
    450  
    451                         #self.command_parameters = command_parameters[:5] 
    452                         #command_parameters = command_parameters[5:] 
    453                         #if self.DEBUG: 
    454                                 #print "Chroot command parameters:", 
    455                                 #print self.command_parameters 
    456                                 #print "Data command parameters:", 
    457                                 #print command_parameters 
    458  
    459  
    460                 #elif (command_parameters[0] == 'hide_all_components'): 
    461  
    462                         #command = 'hide_all_components' 
    463  
    464  
    465                 #elif (command_parameters[0] == 'unregister_all_windows'): 
    466  
    467                         #command = 'unregister_all_windows' 
    468  
    469  
    470                 #elif (command_parameters[0] == 'unregister_component'): 
    471  
    472                         #command = 'unregister_component' 
    473                         #data['pid'] = int(command_parameters[-1]) 
    474  
    475  
    476                 #elif (command_parameters[0] == 'restart_component'): 
    477  
    478                         #command = 'restart_component' 
    479                         #data['pid'] = int(command_parameters[-1]) 
    480  
    481  
    482                 #elif (command_parameters[0] == 'animation_started'): 
    483  
    484                         #command = 'animation_started' 
    485                         #data['window_id'] = int(command_parameters[-1]) 
    486  
    487  
    488                 #elif (command_parameters[0] == 'register_window'): 
    489  
    490                         #command = 'register_window' 
    491                         #data['window_id'] = int(command_parameters[-1]) 
    492  
    493  
    494                 #elif (command_parameters[0] == 'register_channel_detection'): 
    495  
    496                         #command = 'register_component' 
    497                         #data['type'] = 'channel_detection' 
    498                         #data['pid'] = int(command_parameters[-2]) 
    499                         #data['device'] = command_parameters[-1] 
    500  
    501  
    502                 #elif (command_parameters[0] == 'exit_content_set'): 
    503  
    504                         #command = 'exit_content_set' 
    505  
    506  
    507                 #elif (command_parameters[0] == 'change_content_set'): 
    508  
    509                         #command = 'change_content_set' 
    510                         #data['content_set_id'] = int(command_parameters[-1]) 
    511  
    512  
    513                 #elif (command_parameters[0] == 'end_current_entry'): 
    514  
    515                         #command = 'end_current_entry' 
    516                         #data['window_id'] = int(command_parameters[-1]) 
    517  
    518  
    519                 #elif (command_parameters[0] == 'request_screenshot'): 
    520  
    521                         #command = 'request_screenshot' 
    522  
    523  
    524                 #elif (command_parameters[0] == 'upload_screenshot'): 
    525  
    526                         #command = 'upload_screenshot' 
    527  
    528  
    529                 #elif (command_parameters[0] == 'check_health'): 
    530  
    531                         #command = 'check_health' 
    532  
    533                         #if self.DEBUG > 1: 
    534                                 #print "-->Check health command parameters:", command_parameters 
    535  
    536                         #data['hostname'] = command_parameters[1] 
    537                         #data['port'] = command_parameters[2] 
    538                         #data['source'] = command_parameters[3] 
    539                         #data['target'] = command_parameters[4] 
    540                         #data['execute_inside_screen'] = False 
    541  
    542  
    543                 #elif (command_parameters[0] == 'export_schedule'): 
    544  
    545                         #command = 'export_schedule' 
    546                         #data['content_set_sequence_schedule_id'] = int(command_parameters[-1]) 
    547  
    548  
     276                 
     277                 
    549278                else: 
    550  
    551279                        self.log.error("Unrecognized command received: %s" % command_parameters[0]) 
    552  
    553  
     280                 
     281                 
    554282                return (command, data) 
    555  
    556  
    557         ################################################################## 
    558  
     283         
     284         
     285        ################################################################## 
     286         
    559287        #def run_blocking_mcc_command(self, instruction, \ 
    560288                                #component={}, \ 
    561289                                #max_connection_attempts = MAX_CONNECTION_ATTEMPTS): 
    562  
     290                 
    563291                #command = 'puzzlebox_master_control_client.py' 
    564292                #command = '%s %s' % (command, instruction['command']) 
    565  
     293                 
    566294                #if 'hostname' in component.keys() and \ 
    567295                                #component['hostname'] != None: 
    568296                        #command = '%s %s' % (command, component['hostname']) 
    569  
     297                 
    570298                #if 'port' in component.keys() and \ 
    571299                                #component['port'] != None: 
    572300                        #command = '%s %s' % (command, component['port']) 
    573  
     301                 
    574302                #if 'source' in component.keys() and \ 
    575303                                #component['source'] != None: 
    576304                        #command = '%s %s' % (command, component['source']) 
    577  
     305                 
    578306                #if 'target' in component.keys() and \ 
    579307                                #component['target'] != None: 
    580308                        #command = '%s %s' % (command, component['target']) 
    581  
     309                 
    582310                #if 'information' in instruction.keys() and \ 
    583311                                #'window_id' in instruction['information'].keys(): 
    584312                        #command = '%s %s' % (command, instruction['information']['window_id']) 
    585  
     313                 
    586314                #self.log.info("Executing external command: [%s]" % command) 
    587  
     315                 
    588316                #result = os.popen(command, 'r').read() 
    589317                #result = result.strip() 
    590  
     318                 
    591319                #print "MCC-CL Result:", 
    592320                #print result 
    593  
     321                 
    594322                #return result 
    595323 
     
    600328 
    601329if __name__ == '__main__': 
    602  
     330         
    603331        #log = puzzlebox_logger.puzzlebox_logger(logfile='mcc') 
    604332        log = None 
    605  
     333         
    606334        command_parameters = sys.argv[1:] 
    607  
     335         
    608336        #log.info("Command parameters: %s" % command_parameters) 
    609  
    610         client = puzzlebox_brainstorms_client_command_line(log, command_parameters, SERVER_HOST, SERVER_PORT) 
     337         
     338        client = puzzlebox_brainstorms_client_command_line(log, \ 
     339                                                           command_parameters, \ 
     340                                                           SERVER_HOST, \ 
     341                                                           SERVER_PORT) 
    611342        reactor.callWhenRunning(client.execute_command_line) 
    612343        reactor.run() 
Note: See TracChangeset for help on using the changeset viewer.