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.id >= 25000000 && 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