예제 #1
0
def increase_quota(cluster, role, cpu_str, ram_str, disk_str):
    """usage: increase_quota cluster role cpu ram[unit] disk[unit]

  Increases the amount of production quota allocated to a user.
  """
    cpu = float(cpu_str)
    ram = parse_data(ram_str).as_(Data.MB)
    disk = parse_data(disk_str).as_(Data.MB)

    client = make_admin_client_with_options(cluster)
    resp = client.get_quota(role)
    quota = resp.result.getQuotaResult.quota
    resource_details = ResourceManager.resource_details_from_quota(quota)
    log.info('Current quota for %s:\n\t%s' % (role, '\n\t'.join(
        '%s\t%s%s' %
        (r.resource_type.display_name, r.value, r.resource_type.display_unit)
        for r in resource_details)))

    new_cpu = ResourceType.CPUS.value_type(
        cpu + ResourceManager.quantity_of(resource_details, ResourceType.CPUS))
    new_ram = ResourceType.RAM_MB.value_type(
        ram +
        ResourceManager.quantity_of(resource_details, ResourceType.RAM_MB))
    new_disk = ResourceType.DISK_MB.value_type(
        disk +
        ResourceManager.quantity_of(resource_details, ResourceType.DISK_MB))

    log.info(
        'Attempting to update quota for %s to\n\tCPU\t%s\n\tRAM\t%s MB\n\tDisk\t%s MB'
        % (role, new_cpu, new_ram, new_disk))

    resp = client.set_quota(role, new_cpu, new_ram, new_disk)
    check_and_log_response(resp)
예제 #2
0
파일: admin.py 프로젝트: bmhatfield/aurora
def increase_quota(cluster, role, cpu_str, ram_str, disk_str):
  """usage: increase_quota cluster role cpu ram[unit] disk[unit]

  Increases the amount of production quota allocated to a user.
  """
  cpu = float(cpu_str)
  ram = parse_data(ram_str).as_(Data.MB)
  disk = parse_data(disk_str).as_(Data.MB)

  client = make_admin_client_with_options(cluster)
  resp = client.get_quota(role)
  quota = resp.result.getQuotaResult.quota
  resource_details = ResourceManager.resource_details_from_quota(quota)
  log.info('Current quota for %s:\n\t%s' % (
      role,
      '\n\t'.join('%s\t%s%s' % (
          r.resource_type.display_name,
          r.value,
          r.resource_type.display_unit) for r in resource_details)))

  new_cpu = ResourceType.CPUS.value_type(
    cpu + ResourceManager.quantity_of(resource_details, ResourceType.CPUS))
  new_ram = ResourceType.RAM_MB.value_type(
    ram + ResourceManager.quantity_of(resource_details, ResourceType.RAM_MB))
  new_disk = ResourceType.DISK_MB.value_type(
    disk + ResourceManager.quantity_of(resource_details, ResourceType.DISK_MB))

  log.info('Attempting to update quota for %s to\n\tCPU\t%s\n\tRAM\t%s MB\n\tDisk\t%s MB' %
           (role, new_cpu, new_ram, new_disk))

  resp = client.set_quota(role, new_cpu, new_ram, new_disk)
  check_and_log_response(resp)
예제 #3
0
 def test_backfill_quota(self):
   quota = ResourceAggregate(numCpus=1.0, ramMb=2, diskMb=3)
   assert ResourceManager.resource_details_from_quota(quota) == [
       ResourceDetails(ResourceType.CPUS, 1.0),
       ResourceDetails(ResourceType.RAM_MB, 2),
       ResourceDetails(ResourceType.DISK_MB, 3)
   ]
예제 #4
0
 def test_backfill_quota(self):
     quota = ResourceAggregate(numCpus=1.0, ramMb=2, diskMb=3)
     assert ResourceManager.resource_details_from_quota(quota) == [
         ResourceDetails(ResourceType.CPUS, 1.0),
         ResourceDetails(ResourceType.RAM_MB, 2),
         ResourceDetails(ResourceType.DISK_MB, 3)
     ]
예제 #5
0
 def test_backfill_task(self):
   task = TaskConfig(numCpus=1.0, ramMb=2, diskMb=3, requestedPorts=frozenset(['http']))
   assert ResourceManager.resource_details_from_quota(task) == [
       ResourceDetails(ResourceType.CPUS, 1.0),
       ResourceDetails(ResourceType.RAM_MB, 2),
       ResourceDetails(ResourceType.DISK_MB, 3),
       ResourceDetails(ResourceType.PORTS, 'http'),
   ]
예제 #6
0
 def test_backfill_task(self):
     task = TaskConfig(numCpus=1.0,
                       ramMb=2,
                       diskMb=3,
                       requestedPorts=frozenset(['http']))
     assert ResourceManager.resource_details_from_quota(task) == [
         ResourceDetails(ResourceType.CPUS, 1.0),
         ResourceDetails(ResourceType.RAM_MB, 2),
         ResourceDetails(ResourceType.DISK_MB, 3),
         ResourceDetails(ResourceType.PORTS, 'http'),
     ]
예제 #7
0
파일: quota.py 프로젝트: AltanAlpay/aurora
 def get_quota_str(quota):
   resource_details = ResourceManager.resource_details_from_quota(quota)
   return ('  %s: %s%s' % (
       r.resource_type.display_name,
       r.value,
       r.resource_type.display_unit) for r in resource_details)