OLD | NEW |
1 # Copyright 2016 The LUCI Authors. All rights reserved. | 1 # Copyright 2016 The LUCI Authors. All rights reserved. |
2 # Use of this source code is governed under the Apache License, Version 2.0 | 2 # Use of this source code is governed under the Apache License, Version 2.0 |
3 # that can be found in the LICENSE file. | 3 # that can be found in the LICENSE file. |
4 | 4 |
5 """Utilities for operating on instance group managers.""" | 5 """Utilities for operating on instance group managers.""" |
6 | 6 |
7 import collections | 7 import collections |
8 import json | 8 import json |
9 import logging | 9 import logging |
10 import math | 10 import math |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 """Returns the base name to use when creating an instance group manager. | 58 """Returns the base name to use when creating an instance group manager. |
59 | 59 |
60 The base name is suffixed randomly by GCE when naming instances. | 60 The base name is suffixed randomly by GCE when naming instances. |
61 | 61 |
62 Args: | 62 Args: |
63 instance_group_manager: models.InstanceGroupManager. | 63 instance_group_manager: models.InstanceGroupManager. |
64 | 64 |
65 Returns: | 65 Returns: |
66 A string. | 66 A string. |
67 """ | 67 """ |
68 # <base-name>-<abbreviated-revision> | 68 # <base-name>-<abbreviated-revision>-<zone> |
69 return '%s-%s' % ( | 69 # TODO(smut): Ensure this name is < 59 characters because the final |
| 70 # instance name must be < 64 characters and the instance group manager |
| 71 # will add a 5 character random suffix when creating instances. |
| 72 return '%s-%s-%s' % ( |
70 instance_group_manager.key.parent().parent().id(), | 73 instance_group_manager.key.parent().parent().id(), |
71 instance_group_manager.key.parent().id()[:8], | 74 instance_group_manager.key.parent().id()[:8], |
| 75 instance_group_manager.key.id(), |
72 ) | 76 ) |
73 | 77 |
74 | 78 |
75 @ndb.transactional | 79 @ndb.transactional |
76 def set_instances(key, keys): | 80 def set_instances(key, keys): |
77 """Associates the given Instances with the given InstanceGroupManager. | 81 """Associates the given Instances with the given InstanceGroupManager. |
78 | 82 |
79 Args: | 83 Args: |
80 key: ndb.Key for a models.InstanceGroupManager entity. | 84 key: ndb.Key for a models.InstanceGroupManager entity. |
81 keys: List of ndb.Keys for models.Instance entities. | 85 keys: List of ndb.Keys for models.Instance entities. |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 Returns: | 405 Returns: |
402 A dict mapping instance template name to count of instances. | 406 A dict mapping instance template name to count of instances. |
403 """ | 407 """ |
404 # Aggregate the number of instances owned by each instance group manager | 408 # Aggregate the number of instances owned by each instance group manager |
405 # created for each instance template. | 409 # created for each instance template. |
406 totals = collections.defaultdict(int) | 410 totals = collections.defaultdict(int) |
407 for instance_group_manager in models.InstanceGroupManager.query(): | 411 for instance_group_manager in models.InstanceGroupManager.query(): |
408 instance_template_name = instance_group_manager.key.parent().parent().id() | 412 instance_template_name = instance_group_manager.key.parent().parent().id() |
409 totals[instance_template_name] += len(instance_group_manager.instances) | 413 totals[instance_template_name] += len(instance_group_manager.instances) |
410 return totals | 414 return totals |
OLD | NEW |