Skip to content

Commit a48ae7d

Browse files
committed
chore(release): add version_name
1 parent f93fc67 commit a48ae7d

3 files changed

Lines changed: 31 additions & 28 deletions

File tree

rootfs/api/models/app.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ def scale(self, user, structure):
240240
self._scale(user, structure, release, app_settings)
241241

242242
def pipeline(self, release, force_deploy=False, rollback_on_failure=True):
243-
prefix = f"[pipeline] release v{release.version}"
243+
prefix = f"[pipeline] release {release.version_name}"
244244
try:
245245
self.log(f"{prefix} starts running...")
246246
if release.build.dryccfile:
@@ -518,9 +518,8 @@ def set_application_config(self, release, procfile_type):
518518
updates it if it already exists
519519
"""
520520
# env vars are stored in secrets and mapped to env in k8s
521-
version = 'v{}'.format(release.version)
522521
labels = {
523-
'version': version,
522+
'version': release.version_name,
524523
'type': procfile_type,
525524
'class': 'env'
526525
}
@@ -533,7 +532,7 @@ def set_application_config(self, release, procfile_type):
533532
# dictionary sorted by key
534533
secrets_env = OrderedDict(sorted(secrets_env.items(), key=lambda t: t[0]))
535534

536-
secret_name = "{}-{}-{}-env".format(self.id, procfile_type, version)
535+
secret_name = "{}-{}-{}-env".format(self.id, procfile_type, release.version_name)
537536
try:
538537
self.scheduler().secret.get(self.id, secret_name)
539538
except KubeHTTPException:
@@ -645,7 +644,7 @@ def _deploy(self, deploys, procfile_types, prev_release,
645644
if (prev_release.canary == release.canary and
646645
rollback_on_failure and prev_release.build is not None):
647646
err = 'There was a problem deploying {}. Rolling back to release {}.'.format(
648-
'v{}'.format(release.version), "v{}".format(prev_release.version))
647+
release.version_name, prev_release.version_name)
649648
# This goes in the log before the rollback starts
650649
self.log(err, logging.ERROR)
651650
# revert all process types to old release
@@ -925,7 +924,7 @@ def _build_env_vars(self, release, procfile_type):
925924
# mix in default environment information drycc may require
926925
default_env = {
927926
'DRYCC_APP': self.id,
928-
'WORKFLOW_RELEASE': 'v{}'.format(release.version),
927+
'WORKFLOW_RELEASE': release.version_name,
929928
'WORKFLOW_RELEASE_SUMMARY': release.summary,
930929
'WORKFLOW_RELEASE_CREATED_AT': str(release.created.strftime(
931930
settings.DRYCC_DATETIME_FORMAT))
@@ -1042,7 +1041,7 @@ def _gather_app_settings(self, release, app_settings, procfile_type, replicas, v
10421041
'envs': envs,
10431042
'registry': config.registry,
10441043
'replicas': replicas,
1045-
'version': 'v{}'.format(release.version),
1044+
'version': release.version_name,
10461045
'app_type': procfile_type,
10471046
'resources': {"limits": limit_plan.limits, "requests": limit_plan.requests},
10481047
'build_type': release.build.type,

rootfs/api/models/release.py

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,18 @@ class Meta:
4444
unique_together = (('app', 'version'),)
4545

4646
def __str__(self):
47-
return "{0}-v{1}".format(self.app.id, self.version)
47+
return "{0}-{1}".format(self.app.id, self.version_name)
4848

4949
@property
5050
def procfile_types(self):
5151
if self.build is not None:
5252
return self.build.procfile_types
5353
return []
5454

55+
@property
56+
def version_name(self):
57+
return f'v{self.version}'
58+
5559
def get_run_image(self):
5660
"""
5761
In the run phase of dryccfile
@@ -272,9 +276,8 @@ def cleanup_old(self, procfile_types=None):
272276
Secrets no longer tied to any ReplicaSet
273277
Stray pods no longer relevant to the latest release
274278
"""
275-
latest_version = 'v{}'.format(self.version)
276279
self.log(
277-
'Cleaning up RSs for releases older than {} (latest)'.format(latest_version),
280+
'Cleaning up RSs for releases older than {} (latest)'.format(self.version_name),
278281
level=logging.DEBUG
279282
)
280283
# base labels
@@ -287,29 +290,30 @@ def cleanup_old(self, procfile_types=None):
287290
if not replica_sets:
288291
replica_sets = []
289292
for replica_set in replica_sets:
290-
current_version = replica_set['metadata']['labels']['version']
293+
current_version_name = replica_set['metadata']['labels']['version']
291294
# skip the latest release
292-
if current_version == latest_version:
295+
if current_version_name == self.version_name:
293296
continue
294297

295298
# aggregate versions together to removal all at once
296-
if current_version not in replica_sets_removal:
297-
replica_sets_removal.append(current_version)
299+
if current_version_name not in replica_sets_removal:
300+
replica_sets_removal.append(current_version_name)
298301

299302
if replica_sets_removal:
300303
self.log(
301-
'Found the following versions to cleanup: {}'.format(', '.join(replica_sets_removal)), # noqa
304+
'Found the following versions to cleanup: {}'.format(
305+
', '.join(replica_sets_removal)),
302306
level=logging.DEBUG
303307
)
304308
# this is RC related
305-
for version in replica_sets_removal:
306-
self._delete_release_in_scheduler(self.app.id, procfile_types, version)
309+
for version_name in replica_sets_removal:
310+
self._delete_release_in_scheduler(self.app.id, procfile_types, version_name)
307311
# handle Deployments specific cleanups
308312
self._cleanup_deployment_secrets_and_configs(self.app.id, procfile_types)
309313
# Remove stray pods
310-
self._cleanup_stray_pods(self.app.id, procfile_types, latest_version)
314+
self._cleanup_stray_pods(self.app.id, procfile_types, self.version_name)
311315

312-
def _cleanup_stray_pods(self, namespace, procfile_types, latest_version):
316+
def _cleanup_stray_pods(self, namespace, procfile_types, latest_version_name):
313317
labels = {'heritage': 'drycc'}
314318
if procfile_types is not None:
315319
labels['type__in'] = procfile_types
@@ -320,9 +324,9 @@ def _cleanup_stray_pods(self, namespace, procfile_types, latest_version):
320324
if self.scheduler().pod.deleted(pod):
321325
continue
322326

323-
current_version = pod['metadata']['labels']['version']
327+
current_version_name = pod['metadata']['labels']['version']
324328
# skip the latest release
325-
if current_version == latest_version:
329+
if current_version_name == latest_version_name:
326330
continue
327331

328332
try:
@@ -343,27 +347,27 @@ def _cleanup_deployment_secrets_and_configs(self, namespace, procfile_types=None
343347
"""
344348

345349
# Find all ReplicaSets
346-
versions = ['v{}'.format(self.version), ]
350+
version_names = [self.version_name, ]
347351
labels = {'heritage': 'drycc', 'app': namespace}
348352
replicasets = self.scheduler().rs.get(namespace, labels=labels).json()['items']
349353
if not replicasets:
350354
replicasets = []
351355
for replicaset in replicasets:
352356
if (
353357
'version' not in replicaset['metadata']['labels'] or
354-
replicaset['metadata']['labels']['version'] in versions
358+
replicaset['metadata']['labels']['version'] in version_names
355359
):
356360
continue
357361

358-
versions.append(replicaset['metadata']['labels']['version'])
362+
version_names.append(replicaset['metadata']['labels']['version'])
359363

360364
# find all env secrets not owned by any replicaset
361365
labels = {
362366
'heritage': 'drycc',
363367
'app': namespace,
364368
'class': 'env',
365369
# http://kubernetes.io/docs/user-guide/labels/#set-based-requirement
366-
'version__notin': versions
370+
'version__notin': version_names
367371
}
368372
if procfile_types is not None:
369373
labels['type__in'] = procfile_types
@@ -374,7 +378,7 @@ def _cleanup_deployment_secrets_and_configs(self, namespace, procfile_types=None
374378
for secret in secrets:
375379
self.scheduler().secret.delete(namespace, secret['metadata']['name'])
376380

377-
def _delete_release_in_scheduler(self, namespace, procfile_types, version):
381+
def _delete_release_in_scheduler(self, namespace, procfile_types, version_name):
378382
"""
379383
Deletes a specific release in k8s based on ReplicationController
380384
@@ -384,7 +388,7 @@ def _delete_release_in_scheduler(self, namespace, procfile_types, version):
384388
labels = {
385389
'heritage': 'drycc',
386390
'app': namespace,
387-
'version': version
391+
'version': version_name
388392
}
389393
if procfile_types is not None:
390394
labels['type__in'] = procfile_types

rootfs/api/signals.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def _hook_release_created(**kwargs):
9090
url = deploy_hook
9191
params = {
9292
'app': release.app,
93-
'release': 'v{}'.format(release.version),
93+
'release': release.version_name,
9494
'release_summary': release.summary,
9595
'sha': '',
9696
'user': release.owner,

0 commit comments

Comments
 (0)