|
3 | 3 | from django.conf import settings |
4 | 4 | from django.db import models |
5 | 5 | from django.contrib.auth import get_user_model |
6 | | -from api.utils import dict_diff |
7 | 6 | from api.tasks import run_pipeline |
8 | 7 | from api.exceptions import DryccException, AlreadyExists |
9 | 8 | from scheduler import KubeHTTPException |
@@ -385,127 +384,13 @@ def save(self, *args, **kwargs): # noqa |
385 | 384 | else: |
386 | 385 | self.summary += "{} deployed {}".format(self.build.owner, self.build.image) |
387 | 386 | elif self.config != old_config: |
388 | | - # if env vars change, log the dict diff |
389 | | - dict1 = self.config.values |
390 | | - dict2 = old_config.values if old_config else {} |
391 | | - diff = dict_diff(dict1, dict2) |
392 | | - # try to be as succinct as possible |
393 | | - added = ', '.join(k for k in diff.get('added', {})) |
394 | | - added = 'added ' + added if added else '' |
395 | | - changed = ', '.join(k for k in diff.get('changed', {})) |
396 | | - changed = 'changed ' + changed if changed else '' |
397 | | - deleted = ', '.join(k for k in diff.get('deleted', {})) |
398 | | - deleted = 'deleted ' + deleted if deleted else '' |
399 | | - changes = ', '.join(i for i in (added, changed, deleted) if i) |
400 | | - if changes: |
401 | | - if self.summary: |
402 | | - self.summary += ' and ' |
403 | | - self.summary += "{} {}".format(self.config.owner, changes) |
404 | | - |
405 | | - # if the limits changed, log the dict diff |
406 | | - changes = [] |
407 | | - old_limits = old_config.limits if old_config else {} |
408 | | - diff = dict_diff(self.config.limits, old_limits) |
409 | | - if diff.get('added') or diff.get('changed') or diff.get('deleted'): |
410 | | - changes.append('limits') |
411 | | - if changes: |
412 | | - changes = 'changed limits for '+', '.join(changes) |
413 | | - self.summary += "{} {}".format(self.config.owner, changes) |
414 | | - |
415 | | - # if the lifecycle_post_start hooks changed, log the dict diff |
416 | | - changes = [] |
417 | | - old_lifecycle_post_start = old_config.lifecycle_post_start if old_config else {} |
418 | | - diff = dict_diff(self.config.lifecycle_post_start, old_lifecycle_post_start) |
419 | | - # try to be as succinct as possible |
420 | | - added = ', '.join(k for k in diff.get('added', {})) |
421 | | - added = 'added lifecycle_post_start ' + added if added else '' |
422 | | - changed = ', '.join(k for k in diff.get('changed', {})) |
423 | | - changed = 'changed lifecycle_post_start ' + changed if changed else '' |
424 | | - deleted = ', '.join(k for k in diff.get('deleted', {})) |
425 | | - deleted = 'deleted lifecycle_post_start ' + deleted if deleted else '' |
426 | | - changes = ', '.join(i for i in (added, changed, deleted) if i) |
427 | | - if changes: |
428 | | - if self.summary: |
429 | | - self.summary += ' and ' |
430 | | - self.summary += "{} {}".format(self.config.owner, changes) |
431 | | - |
432 | | - # if the lifecycle_pre_stop hooks changed, log the dict diff |
433 | | - changes = [] |
434 | | - old_lifecycle_pre_stop = old_config.lifecycle_pre_stop if old_config else {} |
435 | | - diff = dict_diff(self.config.lifecycle_pre_stop, old_lifecycle_pre_stop) |
436 | | - # try to be as succinct as possible |
437 | | - added = ', '.join(k for k in diff.get('added', {})) |
438 | | - added = 'added lifecycle_pre_stop ' + added if added else '' |
439 | | - changed = ', '.join(k for k in diff.get('changed', {})) |
440 | | - changed = 'changed lifecycle_pre_stop ' + changed if changed else '' |
441 | | - deleted = ', '.join(k for k in diff.get('deleted', {})) |
442 | | - deleted = 'deleted lifecycle_pre_stop ' + deleted if deleted else '' |
443 | | - changes = ', '.join(i for i in (added, changed, deleted) if i) |
444 | | - if changes: |
445 | | - if self.summary: |
446 | | - self.summary += ' and ' |
447 | | - |
448 | | - # if the timeouts changed, log the dict diff |
449 | | - changes = [] |
450 | | - old_timeout = old_config.termination_grace_period if old_config else {} |
451 | | - diff = dict_diff(self.config.termination_grace_period, old_timeout) |
452 | | - if diff.get('added') or diff.get('changed') or diff.get('deleted'): |
453 | | - changes.append('termination_grace_period') |
454 | | - if changes: |
455 | | - changes = 'changed timeouts for '+', '.join(changes) |
456 | | - self.summary += "{} {}".format(self.config.owner, changes) |
457 | | - |
458 | | - # if the tags changed, log the dict diff |
459 | | - changes = [] |
460 | | - old_tags = old_config.tags if old_config else {} |
461 | | - diff = dict_diff(self.config.tags, old_tags) |
462 | | - # try to be as succinct as possible |
463 | | - added = ', '.join(k for k in diff.get('added', {})) |
464 | | - added = 'added tag ' + added if added else '' |
465 | | - changed = ', '.join(k for k in diff.get('changed', {})) |
466 | | - changed = 'changed tag ' + changed if changed else '' |
467 | | - deleted = ', '.join(k for k in diff.get('deleted', {})) |
468 | | - deleted = 'deleted tag ' + deleted if deleted else '' |
469 | | - changes = ', '.join(i for i in (added, changed, deleted) if i) |
470 | | - if changes: |
471 | | - if self.summary: |
472 | | - self.summary += ' and ' |
473 | | - self.summary += "{} {}".format(self.config.owner, changes) |
474 | | - |
475 | | - # if the registry information changed, log the dict diff |
476 | | - changes = [] |
477 | | - old_registry = old_config.registry if old_config else {} |
478 | | - diff = dict_diff(self.config.registry, old_registry) |
479 | | - # try to be as succinct as possible |
480 | | - added = ', '.join(k for k in diff.get('added', {})) |
481 | | - added = 'added registry info ' + added if added else '' |
482 | | - changed = ', '.join(k for k in diff.get('changed', {})) |
483 | | - changed = 'changed registry info ' + changed if changed else '' |
484 | | - deleted = ', '.join(k for k in diff.get('deleted', {})) |
485 | | - deleted = 'deleted registry info ' + deleted if deleted else '' |
486 | | - changes = ', '.join(i for i in (added, changed, deleted) if i) |
487 | | - if changes: |
488 | | - if self.summary: |
489 | | - self.summary += ' and ' |
490 | | - self.summary += "{} {}".format(self.config.owner, changes) |
491 | | - |
492 | | - # if the healthcheck information changed, log the dict diff |
493 | | - changes = [] |
494 | | - old_healthcheck = old_config.healthcheck if old_config else {} |
495 | | - diff = dict_diff(self.config.healthcheck, old_healthcheck) |
496 | | - # try to be as succinct as possible |
497 | | - added = ', '.join(list(map(lambda x: 'default' if x == '' else x, [k for k in diff.get('added', {})]))) # noqa |
498 | | - added = 'added healthcheck info for proc type ' + added if added else '' |
499 | | - changed = ', '.join(list(map(lambda x: 'default' if x == '' else x, [k for k in diff.get('changed', {})]))) # noqa |
500 | | - changed = 'changed healthcheck info for proc type ' + changed if changed else '' |
501 | | - deleted = ', '.join(list(map(lambda x: 'default' if x == '' else x, [k for k in diff.get('deleted', {})]))) # noqa |
502 | | - deleted = 'deleted healthcheck info for proc type ' + deleted if deleted else '' |
503 | | - changes = ', '.join(i for i in (added, changed, deleted) if i) |
504 | | - if changes: |
505 | | - if self.summary: |
506 | | - self.summary += ' and ' |
507 | | - self.summary += "{} {}".format(self.config.owner, changes) |
508 | | - |
| 387 | + for field, diff in self.config.diff(old_config).items(): |
| 388 | + diff_list = [] |
| 389 | + for diff_type, values in diff.items(): |
| 390 | + diff_list.append(f'{diff_type} {field} {", ".join(values.keys())}') |
| 391 | + if diff_list: |
| 392 | + changes = ', '.join(diff_list) |
| 393 | + self.summary += "{} {}".format(self.config.owner, changes) |
509 | 394 | if not self.summary: |
510 | 395 | if self.version == 1: |
511 | 396 | self.summary = "{} created the initial release".format(self.owner) |
|
0 commit comments