/**
  * Update details and settings of an existing partner
  * 
  * @action update
  * @param KalturaPartner $partner
  * @param bool $allowEmpty
  * @return KalturaPartner
  *
  * @throws APIErrors::UNKNOWN_PARTNER_ID
  */
 public function updateAction(KalturaPartner $partner, $allowEmpty = false)
 {
     kWAMS::testConnection($partner->wamsAccountName, $partner->wamsAccountKey);
     $dbPartner = PartnerPeer::retrieveByPK($this->getPartnerId());
     if (!$dbPartner) {
         throw new KalturaAPIException(APIErrors::UNKNOWN_PARTNER_ID, $this->getPartnerId());
     }
     try {
         $dbPartner = $partner->toUpdatableObject($dbPartner);
         $dbPartner->save();
     } catch (kUserException $e) {
         if ($e->getCode() === kUserException::USER_NOT_FOUND) {
             throw new KalturaAPIException(KalturaErrors::USER_NOT_FOUND);
         }
         throw $e;
     } catch (kPermissionException $e) {
         if ($e->getCode() === kPermissionException::ACCOUNT_OWNER_NEEDS_PARTNER_ADMIN_ROLE) {
             throw new KalturaAPIException(KalturaErrors::ACCOUNT_OWNER_NEEDS_PARTNER_ADMIN_ROLE);
         }
         throw $e;
     }
     $partner = new KalturaPartner();
     $partner->fromPartner($dbPartner);
     return $partner;
 }