external_messenger.py (6083B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\sovereignty\workforce\client\external_messenger.py 2 from publicGateway.grpc.exceptions import GenericException 3 from sovereignty.client.base_external_messenger import BaseClientExternalMessenger 4 from six.moves import http_client as httplib 5 from eveProto.generated.eve_public.sovereignty.hub.workforce.api import requests_pb2 6 from eveProto.generated.eve_public.sovereignty.hub.hub_pb2 import Identifier as HubIdentifier 7 from eveProto.generated.eve_public.sovereignty.hub.workforce.workforce_pb2 import Configuration, ImportConfiguration, ExportConfiguration 8 from eveProto.generated.eve_public.solarsystem.solarsystem_pb2 import Identifier as SolarSystemID 9 import sovereignty.workforce.client.errors as errors 10 from sovereignty.workforce.client.data_types import WorkforceConfiguration, WorkforceState, WorkforceNetworkedHub 11 MODE_IDLE = 1 12 MODE_IMPORT = 2 13 MODE_EXPORT = 3 14 MODE_TRANSIT = 4 15 16 class WorkforceExternalMessenger(BaseClientExternalMessenger): 17 18 def get_configuration(self, hub_id): 19 try: 20 request = requests_pb2.GetConfigurationRequest(hub=HubIdentifier(sequential=hub_id)) 21 request_wrapper, response_wrapper, response_payload = self._send_request(request, requests_pb2.GetConfigurationResponse) 22 except GenericException as e: 23 if e.response_primitive.status_code == httplib.FORBIDDEN: 24 raise errors.SovWorkforceGetConfigForbiddenError(e) 25 if e.response_primitive.status_code == httplib.INTERNAL_SERVER_ERROR: 26 raise errors.SovWorkforceGetConfigInternalError(e) 27 raise errors.SovWorkforceGetConfigError(e) 28 29 configuration = response_payload.configuration 30 workforceConfiguration = WorkforceConfiguration.create_from_proto(hub_id, configuration) 31 return workforceConfiguration 32 33 def configure(self, hub_id, workforceConfiguration): 34 try: 35 newConfiguration = self._get_new_configuration(workforceConfiguration) 36 if newConfiguration: 37 request = requests_pb2.ConfigureRequest(hub=HubIdentifier(sequential=hub_id), configuration=newConfiguration) 38 request_wrapper, response_wrapper, response_payload = self._send_request(request, requests_pb2.ConfigureResponse) 39 return True 40 except GenericException as e: 41 if e.response_primitive.status_code == httplib.FORBIDDEN: 42 raise errors.SovWorkforceConfigureForbiddenError(e) 43 if e.response_primitive.status_code == httplib.INTERNAL_SERVER_ERROR: 44 raise errors.SovWorkforceConfigureInternalError(e) 45 raise errors.SovWorkforceConfigureError(e) 46 47 def _get_new_configuration(self, workforceConfiguration): 48 import_configuration = workforceConfiguration.import_configuration 49 if import_configuration: 50 source_system_ids = import_configuration.source_system_ids 51 source_system_ids_list = sorted(source_system_ids) 52 importSources = [ ImportConfiguration.Source(source=SolarSystemID(sequential=x)) for x in source_system_ids_list ] 53 return Configuration(import_settings=ImportConfiguration(sources=importSources)) 54 export_configuration = workforceConfiguration.export_configuration 55 if export_configuration: 56 if export_configuration.destination_system_id is None: 57 return Configuration(export_settings=ExportConfiguration(no_destination=True, amount=export_configuration.amount)) 58 else: 59 return Configuration(export_settings=ExportConfiguration(destination_system=SolarSystemID(sequential=export_configuration.destination_system_id), amount=export_configuration.amount)) 60 inactive = workforceConfiguration.inactive 61 if inactive: 62 return Configuration(inactive=True) 63 transit = workforceConfiguration.transit 64 if transit: 65 return Configuration(transit=True) 66 67 def get_state(self, hub_id): 68 try: 69 request = requests_pb2.GetStateRequest(hub=HubIdentifier(sequential=hub_id)) 70 request_wrapper, response_wrapper, response_payload = self._send_request(request, requests_pb2.GetStateResponse) 71 except GenericException as e: 72 if e.response_primitive.status_code == httplib.FORBIDDEN: 73 raise errors.SovWorkforceGetStateForbiddenError(e) 74 if e.response_primitive.status_code == httplib.INTERNAL_SERVER_ERROR: 75 raise errors.SovWorkforceGetStateInternalError(e) 76 raise errors.SovWorkforceGetStateError(e) 77 78 state = response_payload.state 79 workforceState = WorkforceState.create_from_proto(hub_id, state) 80 return workforceState 81 82 def get_networkable_hubs(self, hub_id): 83 try: 84 request = requests_pb2.GetNetworkableHubsRequest(hub=HubIdentifier(sequential=hub_id)) 85 request_wrapper, response_wrapper, response_payload = self._send_request(request, requests_pb2.GetNetworkableHubsResponse) 86 except GenericException as e: 87 raise errors.SovWorkforceGetNetworkableHubsError(e) 88 89 hubs = response_payload.hubs 90 networkedHubs = [ WorkforceNetworkedHub.create_from_proto(x.hub.sequential, x.system.sequential, x.configuration, x.state) for x in hubs ] 91 return networkedHubs 92 93 94 class FakeWorkforceExternalMessenger(BaseClientExternalMessenger): 95 workforceByHubID = {} 96 97 def _GetConfiguration(self, hubID): 98 if hubID in self.workforceByHubID: 99 return self.workforceByHubID[hubID] 100 rem = hubID % 2 101 if rem == 0: 102 return WorkforceConfiguration(hubID, transit=True) 103 return WorkforceConfiguration(hubID, inactive=True) 104 105 def get_configuration(self, hub_id): 106 return self._GetConfiguration(hub_id) 107 108 def configure(self, hub_id, workforceConfiguration): 109 self.workforceByHubID[hub_id] = workforceConfiguration 110 return True 111 112 def get_state(self, hub_id): 113 pass