class ZuoraConnect::AppInstanceBase

def fetch_org_details(debug: false)

def fetch_org_details(debug: false)
  details_count ||= 0
  self.refresh if !defined?(self.target_login)
  response = HTTParty.get("#{ZuoraConnect.configuration.url}/api/#{self.api_version}/tenants/search?hostname=#{self.target_login.client.hostname}&node_id=#{self.zuora_entity_ids.first}")
  if response.success?
    parsed_json =  JSON.parse(response.body)
    #Set Org
    if self.auto_deployed? && parsed_json['organization'].present?
      login_cache = self.zuora_logins
      login_cache.delete('organization')
      self.zuora_logins = login_cache.merge({'organizations' => [parsed_json['organization']]})
    end
    if defined?(ZuoraConnect::AppInstance::CONNECT_APPLICATION_ID)
      downloads = parsed_json.fetch('downloads',[]).select{|a| a['applicationId'] == ZuoraConnect::AppInstance::CONNECT_APPLICATION_ID }.map { |h| h.slice('Name', 'provisionState') }
      Rails.logger.info("Instance Downloads: #{downloads.to_s}") if debug
      if downloads.size > 1
        self.provision_status = 'MultipleProvisioningRecords'
        self.provisioned_app = downloads.map {|d| d['Name']}.to_s
      elsif downloads.size == 1
        self.provision_status = downloads.first['provisionState']
        self.provisioned_app = downloads.first['Name']
      else
        self.provision_status = 'NoProvisioningRecords'
        self.provisioned_app = nil
      end
    end
    self.save(:validate => false)
    return parsed_json
  end
rescue *(ZuoraAPI::Login::CONNECTION_EXCEPTIONS + ZuoraAPI::Login::CONNECTION_READ_EXCEPTIONS) => ex
  if (details_count += 1) < 3
    retry
  else
    raise
  end
end