class PowerBI::Workspace

Attributes

datasets[R]
id[R]
is_on_dedicated_capacity[R]
is_read_only[R]
name[R]
reports[R]
users[R]

Public Class Methods

new(tenant, data) click to toggle source
# File lib/power-bi/workspace.rb, line 7
def initialize(tenant, data)
  @id = data[:id]
  @is_read_only = data[:isReadOnly]
  @is_on_dedicated_capacity = data[:isOnDedicatedCapacity]
  @name = data[:name]
  @tenant = tenant
  @reports = ReportArray.new(@tenant, self)
  @datasets = DatasetArray.new(@tenant, self)
  @users = UserArray.new(@tenant, self)
end

Public Instance Methods

delete() click to toggle source
# File lib/power-bi/workspace.rb, line 41
def delete
  @tenant.delete("/groups/#{@id}")
  @tenant.workspaces.reload
  true
end
upload_pbix(file, dataset_name, timeout: 30) click to toggle source
# File lib/power-bi/workspace.rb, line 18
def upload_pbix(file, dataset_name, timeout: 30)
  data = @tenant.post_file("/groups/#{@id}/imports", file, {datasetDisplayName: dataset_name})
  import_id = data[:id]
  success = false
  iterations = 0
  status_history = ''
  old_status = ''
  while !success
    sleep 0.1
    iterations += 1
    raise UploadError.new("Upload did not succeed after #{timeout} seconds. Status history:#{status_history}") if iterations > (10 * timeout)
    new_status = @tenant.get("/groups/#{@id}/imports/#{import_id}")[:importState].to_s
    success = (new_status == "Succeeded")
    if new_status != old_status
      status_history += "\nStatus change after #{iterations/10.0}s: '#{old_status}' --> '#{new_status}'"
      old_status = new_status
    end
  end
  @reports.reload
  @datasets.reload
  true
end