def voip_client_new(self, operator, owner_designation, client_type, mac_address, client_info, sip_enabled=True): """Create a new voip_client. If the owner (be it voip_service or person) does NOT have a voip_address, create that as well. """ self.ba.can_create_voip_client(operator.get_entity_id()) # Find the owner first... owner = self._get_voip_owner(owner_designation) if isinstance(sip_enabled, (str, unicode)): sip_enabled = self._get_boolean(sip_enabled) # Does that mac_address point to something? try: self._get_voip_client(mac_address) except CerebrumError: pass else: # As _get_voip_client raises CerebrumError, we can't # just raise that in the try clause. raise CerebrumError("Mac address %r is already bound to a " "voip_client." % mac_address) # Check that info/type_code make sense... ct = self._get_constant(client_type, self.const.VoipClientTypeCode) ci = self._get_constant(client_info, self.const.VoipClientInfoCode) if not ((ct == self.const.voip_client_type_softphone and not mac_address) or (ct == self.const.voip_client_type_hardphone and mac_address)): raise CerebrumError("Hardphones must have mac; softphones must " "not: %s -> %s" % (text_type(ct), mac_address)) # get/create an address for that owner already... address = self._get_or_create_voip_address( owner.entity_id, with_softphone=(ct == self.const.voip_client_type_softphone)) client = VoipClient(self.db) client.populate(address.entity_id, ct, sip_enabled, mac_address, ci) client.write_db() client.set_auth_data(self.const.voip_auth_sip_secret, client.generate_sip_secret()) return "OK, created voipClient %s, id=%s" % (text_type(ct), client.entity_id)
def _create_default_softphone_client(self, voip_address_id): """Help function to create default softphone client for all addresses and services. """ # # If it exists, we are done... client = VoipClient(self.db) if client.search(voip_address_id=voip_address_id, client_type=self.const.voip_client_type_softphone): return client.populate(voip_address_id, self.const.voip_client_type_softphone, True, # sip_enabled by default None, # softphones don't have MACs self.const.voip_client_info_softphone) client.write_db() client.set_auth_data(self.const.voip_auth_sip_secret, client.generate_sip_secret()) self.logger.debug("Automatically generated softphone " "client id=%s for address %s", client.entity_id, voip_address_id)
def _create_default_softphone_client(self, voip_address_id): """Help function to create default softphone client for all addresses and services. """ # # If it exists, we are done... client = VoipClient(self.db) if client.search(voip_address_id=voip_address_id, client_type=self.const.voip_client_type_softphone): return client.populate( voip_address_id, self.const.voip_client_type_softphone, True, # sip_enabled by default None, # softphones don't have MACs self.const.voip_client_info_softphone) client.write_db() client.set_auth_data(self.const.voip_auth_sip_secret, client.generate_sip_secret()) self.logger.debug( "Automatically generated softphone " "client id=%s for address %s", client.entity_id, voip_address_id)