Skip to content

Commit eecc757

Browse files
committed
Adding initial changes to the api
1 parent 223f70c commit eecc757

6 files changed

Lines changed: 44 additions & 2 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ docker-build: check-docker
3333
docker-build-test: check-docker
3434
docker build ${DOCKER_BUILD_FLAGS} -t ${IMAGE}.test -f rootfs/Dockerfile.test rootfs
3535

36-
deploy: check-kubectl docker-build docker-push
36+
deploy: docker-build docker-push
3737
kubectl --namespace=deis patch deployment deis-$(COMPONENT) --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"$(IMAGE)"}]'
3838

3939
clean: check-docker

rootfs/api/migrations/0001_initial.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ class Migration(migrations.Migration):
7373
('updated', models.DateTimeField(auto_now=True)),
7474
('values', jsonfield.fields.JSONField(default={}, blank=True)),
7575
('memory', jsonfield.fields.JSONField(default={}, blank=True)),
76+
('lifecycle_post_start', jsonfield.fields.JSONField(default={}, blank=True)),
77+
('lifecycle_pre_stop', jsonfield.fields.JSONField(default={}, blank=True)),
7678
('cpu', jsonfield.fields.JSONField(default={}, blank=True)),
7779
('tags', jsonfield.fields.JSONField(default={}, blank=True)),
7880
('app', models.ForeignKey(to='api.App')),

rootfs/api/models/app.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,6 +1082,8 @@ def _gather_app_settings(self, release, app_settings, process_type, replicas):
10821082
'app_type': process_type,
10831083
'build_type': release.build.type,
10841084
'healthcheck': healthcheck,
1085+
'lifecycle_post_start': config.lifecycle_post_start,
1086+
'lifecycle_pre_stop': config.lifecycle_pre_stop,
10851087
'routable': routable,
10861088
'deploy_batches': batches,
10871089
'deploy_timeout': deploy_timeout,

rootfs/api/models/config.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ class Config(UuidAuditedModel):
1818
app = models.ForeignKey('App', on_delete=models.CASCADE)
1919
values = JSONField(default={}, blank=True)
2020
memory = JSONField(default={}, blank=True)
21+
lifecycle_post_start = JSONField(default={}, blank=True)
22+
lifecycle_pre_stop = JSONField(default={}, blank=True)
2123
cpu = JSONField(default={}, blank=True)
2224
tags = JSONField(default={}, blank=True)
2325
registry = JSONField(default={}, blank=True)
@@ -162,7 +164,7 @@ def save(self, **kwargs):
162164
# usually means a totally new app
163165
previous_config = self.app.config_set.latest()
164166

165-
for attr in ['cpu', 'memory', 'tags', 'registry', 'values']:
167+
for attr in ['cpu', 'memory', 'tags', 'registry', 'values', 'lifecycle_post_start', 'lifecycle_pre_stop']:
166168
data = getattr(previous_config, attr, {}).copy()
167169
new_data = getattr(self, attr, {}).copy()
168170

rootfs/api/models/release.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,40 @@ def save(self, *args, **kwargs): # noqa
424424
changes = 'changed limits for '+', '.join(changes)
425425
self.summary += "{} {}".format(self.config.owner, changes)
426426

427+
# if the lifecycle_post_start hooks changed, log the dict diff
428+
changes = []
429+
old_lifecycle_post_start = old_config.lifecycle_post_start if old_config else {}
430+
diff = dict_diff(self.config.lifecycle_post_start, old_lifecycle_post_start)
431+
# try to be as succinct as possible
432+
added = ', '.join(k for k in diff.get('added', {}))
433+
added = 'added lifecycle_post_start ' + added if added else ''
434+
changed = ', '.join(k for k in diff.get('changed', {}))
435+
changed = 'changed lifecycle_post_start ' + changed if changed else ''
436+
deleted = ', '.join(k for k in diff.get('deleted', {}))
437+
deleted = 'deleted lifecycle_post_start ' + deleted if deleted else ''
438+
changes = ', '.join(i for i in (added, changed, deleted) if i)
439+
if changes:
440+
if self.summary:
441+
self.summary += ' and '
442+
self.summary += "{} {}".format(self.config.owner, changes)
443+
444+
# if the lifecycle_post_start hooks changed, log the dict diff
445+
changes = []
446+
old_lifecycle_post_start = old_config.lifecycle_post_start if old_config else {}
447+
diff = dict_diff(self.config.lifecycle_post_start, old_lifecycle_post_start)
448+
# try to be as succinct as possible
449+
added = ', '.join(k for k in diff.get('added', {}))
450+
added = 'added lifecycle_post_start ' + added if added else ''
451+
changed = ', '.join(k for k in diff.get('changed', {}))
452+
changed = 'changed lifecycle_post_start ' + changed if changed else ''
453+
deleted = ', '.join(k for k in diff.get('deleted', {}))
454+
deleted = 'deleted lifecycle_post_start ' + deleted if deleted else ''
455+
changes = ', '.join(i for i in (added, changed, deleted) if i)
456+
if changes:
457+
if self.summary:
458+
self.summary += ' and '
459+
self.summary += "{} {}".format(self.config.owner, changes)
460+
427461
# if the tags changed, log the dict diff
428462
changes = []
429463
old_tags = old_config.tags if old_config else {}

rootfs/api/serializers.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,8 @@ class ConfigSerializer(serializers.ModelSerializer):
210210
owner = serializers.ReadOnlyField(source='owner.username')
211211
values = JSONFieldSerializer(required=False, binary=True)
212212
memory = JSONFieldSerializer(required=False, binary=True)
213+
lifecycle_post_start = JSONFieldSerializer(required=False, binary=True)
214+
lifecycle_pre_stop = JSONFieldSerializer(required=False, binary=True)
213215
cpu = JSONFieldSerializer(required=False, binary=True)
214216
tags = JSONFieldSerializer(required=False, binary=True)
215217
registry = JSONFieldSerializer(required=False, binary=True)

0 commit comments

Comments
 (0)