Example #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)
Example #2
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)
Example #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)
     ]
Example #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)
   ]
Example #5
0
    def render_task_pretty(scheduled_task):
      assigned_task = scheduled_task.assignedTask
      task_info = assigned_task.task
      task_strings = []
      task_strings.append("\tTask role: %s, env: %s, name: %s, instance: %s, status: %s on %s" %
             (task_info.job.role,
              task_info.job.environment,
              task_info.job.name,
              assigned_task.instanceId,
              ScheduleStatus._VALUES_TO_NAMES[scheduled_task.status],
              assigned_task.slaveHost))

      resource_details = ResourceManager.resource_details_from_task(task_info)
      if task_info:
        task_strings.append("""\t  %s""" % ", ".join("%s: %s%s" % (
            r.resource_type.display_name,
            r.value,
            r.resource_type.display_unit) for r in resource_details))

      if assigned_task.assignedPorts:
        task_strings.append("\t  assigned ports: %s" % assigned_task.assignedPorts)
        # TODO(mchucarroll): only add the max if taskInfo is filled in!
        task_strings.append("\t  failure count: %s (max %s)" % (scheduled_task.failureCount,
            task_info.maxTaskFailures))
      task_strings.append("\t  events:")
      events = sorted(scheduled_task.taskEvents, key=lambda event: event.timestamp)
      for event in events:
        task_strings.append("\t   %s %s: %s" % (datetime.fromtimestamp(event.timestamp / 1000),
            ScheduleStatus._VALUES_TO_NAMES[event.status], event.message))
      if assigned_task.task.metadata is not None and len(assigned_task.task.metadata) > 0:
        task_strings.append("\t  metadata:")
        for md in assigned_task.task.metadata:
          task_strings.append("\t\t  (key: '%s', value: '%s')" % (md.key, md.value))
      task_strings.append("")
      return "\n".join(task_strings)
Example #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'),
   ]
Example #7
0
 def test_resource_details(self):
   details = ResourceManager.resource_details([
       Resource(ramMb=2), Resource(numCpus=1.0), Resource(numGpus=1.0)
   ])
   assert len(details) == 3
   assert details[1] == ResourceDetails(ResourceType.RAM_MB, 2)
   assert details[0] == ResourceDetails(ResourceType.CPUS, 1.0)
   assert details[2] == ResourceDetails(ResourceType.GPUS, 1)
Example #8
0
 def test_resource_details(self):
     details = ResourceManager.resource_details(
         [Resource(ramMb=2),
          Resource(numCpus=1.0),
          Resource(numGpus=1.0)])
     assert len(details) == 3
     assert details[1] == ResourceDetails(ResourceType.RAM_MB, 2)
     assert details[0] == ResourceDetails(ResourceType.CPUS, 1.0)
     assert details[2] == ResourceDetails(ResourceType.GPUS, 1)
Example #9
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'),
     ]
Example #10
0
 def test_quantity_of(self):
   quantity = ResourceManager.quantity_of(
       ResourceManager.resource_details([Resource(ramMb=2), Resource(numCpus=1.0)]),
       ResourceType.CPUS)
   assert quantity == 1.0
Example #11
0
 def test_quantity_of(self):
     quantity = ResourceManager.quantity_of(
         ResourceManager.resource_details(
             [Resource(ramMb=2), Resource(numCpus=1.0)]), ResourceType.CPUS)
     assert quantity == 1.0
Example #12
0
 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)