def save(self, *args, **kwargs): # noqa if not self.summary: self.summary = '' prev_release = self.previous() # compare this build to the previous build old_build = prev_release.build if prev_release else None old_config = prev_release.config if prev_release else None old_limit = prev_release.config.limit if prev_release else None # if the build changed, log it and who pushed it if self.version == 1: self.summary += "{} created initial release".format( self.app.owner) elif self.build != old_build: if self.build.sha: self.summary += "{} deployed {}".format( self.build.owner, self.build.sha[:7]) else: self.summary += "{} deployed {}".format( self.build.owner, self.build.image) # if the config data changed, log the dict diff if self.config != old_config: dict1 = self.config.values dict2 = old_config.values if old_config else {} diff = dict_diff(dict1, dict2) # try to be as succinct as possible added = ', '.join(k for k in diff.get('added', {})) added = 'added ' + added if added else '' changed = ', '.join(k for k in diff.get('changed', {})) changed = 'changed ' + changed if changed else '' deleted = ', '.join(k for k in diff.get('deleted', {})) deleted = 'deleted ' + deleted if deleted else '' changes = ', '.join(i for i in (added, changed, deleted) if i) if changes: if self.summary: self.summary += ' and ' self.summary += "{} {}".format(self.config.owner, changes) # if the limit changes, log the dict diff if self.config.limit != old_limit: changes = [] old_mem = old_limit.memory if old_limit else {} diff = dict_diff(self.config.limit.memory, old_mem) if diff.get('added') or diff.get('changed') or diff.get( 'deleted'): changes.append('memory') old_cpu = old_limit.cpu if old_limit else {} diff = dict_diff(self.config.limit.cpu, old_cpu) if diff.get('added') or diff.get('changed') or diff.get( 'deleted'): changes.append('cpu') if changes: changes = 'changed limits for ' + ', '.join(changes) self.summary += "{} {}".format(self.config.owner, changes) if not self.summary: if self.version == 1: self.summary = "{} created the initial release".format( self.owner) else: self.summary = "{} changed nothing".format(self.owner) super(Release, self).save(*args, **kwargs)
def save(self, *args, **kwargs): # noqa if not self.summary: self.summary = '' prev_release = self.previous() # compare this build to the previous build old_build = prev_release.build if prev_release else None old_config = prev_release.config if prev_release else None old_limit = prev_release.config.limit if prev_release else None # if the build changed, log it and who pushed it if self.version == 1: self.summary += "{} created initial release".format(self.app.owner) elif self.build != old_build: if self.build.sha: self.summary += "{} deployed {}".format(self.build.owner, self.build.sha[:7]) else: self.summary += "{} deployed {}".format(self.build.owner, self.build.image) # if the config data changed, log the dict diff if self.config != old_config: dict1 = self.config.values dict2 = old_config.values if old_config else {} diff = dict_diff(dict1, dict2) # try to be as succinct as possible added = ', '.join(k for k in diff.get('added', {})) added = 'added ' + added if added else '' changed = ', '.join(k for k in diff.get('changed', {})) changed = 'changed ' + changed if changed else '' deleted = ', '.join(k for k in diff.get('deleted', {})) deleted = 'deleted ' + deleted if deleted else '' changes = ', '.join(i for i in (added, changed, deleted) if i) if changes: if self.summary: self.summary += ' and ' self.summary += "{} {}".format(self.config.owner, changes) # if the limit changes, log the dict diff if self.config.limit != old_limit: changes = [] old_mem = old_limit.memory if old_limit else {} diff = dict_diff(self.config.limit.memory, old_mem) if diff.get('added') or diff.get('changed') or diff.get('deleted'): changes.append('memory') old_cpu = old_limit.cpu if old_limit else {} diff = dict_diff(self.config.limit.cpu, old_cpu) if diff.get('added') or diff.get('changed') or diff.get('deleted'): changes.append('cpu') if changes: changes = 'changed limits for '+', '.join(changes) self.summary += "{} {}".format(self.config.owner, changes) if not self.summary: if self.version == 1: self.summary = "{} created the initial release".format(self.owner) else: self.summary = "{} changed nothing".format(self.owner) super(Release, self).save(*args, **kwargs)
def save(self, *args, **kwargs): if not self.summary: self.summary = '' prev_release = self.previous() # compare this build to the previous build old_build = prev_release.build if prev_release else None # if the build changed, log it and who pushed it if self.build != old_build: self.summary += "{} deployed {}".format(self.build.owner, self.build.image) # compare this config to the previous config old_config = prev_release.config if prev_release else None # if the config data changed, log the dict diff if self.config != old_config: dict1 = self.config.values dict2 = old_config.values if old_config else {} diff = dict_diff(dict1, dict2) # try to be as succinct as possible added = ', '.join(k for k in diff.get('added', {})) added = 'added ' + added if added else '' changed = ', '.join(k for k in diff.get('changed', {})) changed = 'changed ' + changed if changed else '' deleted = ', '.join(k for k in diff.get('deleted', {})) deleted = 'deleted ' + deleted if deleted else '' changes = ', '.join(i for i in (added, changed, deleted) if i) if changes: if self.summary: self.summary += ' and ' self.summary += "{} {}".format(self.config.owner, changes) if not self.summary: if self.version == 1: self.summary = "{} created the initial release".format(self.owner) else: self.summary = "{} changed nothing".format(self.owner) super(Release, self).save(*args, **kwargs)
def diff(self, other, display_only=False): if not isinstance(other, MBSObject): raise Exception("Cannot diff against a non mbs object") my_dict = self.to_document(display_only=display_only) other_dict = other.to_document(display_only=display_only) return utils.dict_diff(my_dict, other_dict)
def save(self, *args, **kwargs): # noqa if not self.summary: self.summary = "" prev_release = self.previous() # compare this build to the previous build old_build = prev_release.build if prev_release else None old_config = prev_release.config if prev_release else None # if the build changed, log it and who pushed it if self.version == 1: self.summary += "{} created initial release".format(self.app.owner) elif self.build != old_build: if self.build.sha: self.summary += "{} deployed {}".format(self.build.owner, self.build.sha[:7]) else: self.summary += "{} deployed {}".format(self.build.owner, self.build.image) # if the config data changed, log the dict diff if self.config != old_config: dict1 = self.config.values dict2 = old_config.values if old_config else {} diff = dict_diff(dict1, dict2) # try to be as succinct as possible added = ", ".join(k for k in diff.get("added", {})) added = "added " + added if added else "" changed = ", ".join(k for k in diff.get("changed", {})) changed = "changed " + changed if changed else "" deleted = ", ".join(k for k in diff.get("deleted", {})) deleted = "deleted " + deleted if deleted else "" changes = ", ".join(i for i in (added, changed, deleted) if i) if changes: if self.summary: self.summary += " and " self.summary += "{} {}".format(self.config.owner, changes) # if the limits changed (memory or cpu), log the dict diff changes = [] old_mem = old_config.memory if old_config else {} diff = dict_diff(self.config.memory, old_mem) if diff.get("added") or diff.get("changed") or diff.get("deleted"): changes.append("memory") old_cpu = old_config.cpu if old_config else {} diff = dict_diff(self.config.cpu, old_cpu) if diff.get("added") or diff.get("changed") or diff.get("deleted"): changes.append("cpu") if changes: changes = "changed limits for " + ", ".join(changes) self.summary += "{} {}".format(self.config.owner, changes) # if the tags changed, log the dict diff changes = [] old_tags = old_config.tags if old_config else {} diff = dict_diff(self.config.tags, old_tags) # try to be as succinct as possible added = ", ".join(k for k in diff.get("added", {})) added = "added tag " + added if added else "" changed = ", ".join(k for k in diff.get("changed", {})) changed = "changed tag " + changed if changed else "" deleted = ", ".join(k for k in diff.get("deleted", {})) deleted = "deleted tag " + deleted if deleted else "" changes = ", ".join(i for i in (added, changed, deleted) if i) if changes: if self.summary: self.summary += " and " self.summary += "{} {}".format(self.config.owner, changes) if not self.summary: if self.version == 1: self.summary = "{} created the initial release".format(self.owner) else: self.summary = "{} changed nothing".format(self.owner) super(Release, self).save(*args, **kwargs)