blob: 07247b0f10d3f105869d39c419481cced0e44683 [file] [log] [blame]
Dan Shi6964fa52014-12-18 11:04:27 -08001# Copyright 2014 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# This file contains utility functions to get and set stable versions for given
6# boards.
7
8import common
Gregory Nisbet8b15ece2019-11-18 17:11:03 -08009import logging
Dan Shi6964fa52014-12-18 11:04:27 -080010import django.core.exceptions
11from autotest_lib.client.common_lib import global_config
12from autotest_lib.frontend import setup_django_environment
13from autotest_lib.frontend.afe import models
14
15
16# Name of the default board. For boards that don't have stable version
17# explicitly set, version for the default board will be used.
18DEFAULT = 'DEFAULT'
19
Dan Shi25e1fd42014-12-19 14:36:42 -080020# Type of metadata to store stable_version changes.
21_STABLE_VERSION_TYPE = 'stable_version'
22
Dan Shi6964fa52014-12-18 11:04:27 -080023def get_all():
24 """Get stable versions of all boards.
25
26 @return: A dictionary of boards and stable versions.
27 """
Dan Shi25e1fd42014-12-19 14:36:42 -080028 versions = dict([(v.board, v.version)
29 for v in models.StableVersion.objects.all()])
30 # Set default to the global config value of CROS.stable_cros_version if
31 # there is no entry in afe_stable_versions table.
32 if not versions:
33 versions = {DEFAULT: global_config.global_config.get_config_value(
34 'CROS', 'stable_cros_version')}
35 return versions
Dan Shi6964fa52014-12-18 11:04:27 -080036
37
Richard Barnettee4f93992018-08-04 07:28:33 -070038def get(board=DEFAULT):
Dan Shi6964fa52014-12-18 11:04:27 -080039 """Get stable version for the given board.
40
41 @param board: Name of the board, default to value `DEFAULT`.
Simran Basibeb2bb22016-02-03 15:25:48 -080042
Dan Shi25e1fd42014-12-19 14:36:42 -080043 @return: Stable version of the given board. If the given board is not listed
44 in afe_stable_versions table, DEFAULT will be used.
45 Return global_config value of CROS.stable_cros_version if
46 afe_stable_versions table does not have entry of board DEFAULT.
Dan Shi6964fa52014-12-18 11:04:27 -080047 """
48 try:
49 return models.StableVersion.objects.get(board=board).version
50 except django.core.exceptions.ObjectDoesNotExist:
51 if board == DEFAULT:
52 return global_config.global_config.get_config_value(
53 'CROS', 'stable_cros_version')
54 else:
Dan Shi25e1fd42014-12-19 14:36:42 -080055 return get(board=DEFAULT)
56
57
58def set(version, board=DEFAULT):
59 """Set stable version for the given board.
60
61 @param version: The new value of stable version for given board.
62 @param board: Name of the board, default to value `DEFAULT`.
63 """
Gregory Nisbet8b15ece2019-11-18 17:11:03 -080064
65 logging.warning("stable_version_utils::set: attmpted to set stable version. setting the stable version is not permitted")
66 return None
Dan Shi25e1fd42014-12-19 14:36:42 -080067
68
69def delete(board):
70 """Delete stable version record for the given board.
71
72 @param board: Name of the board.
73 """
Gregory Nisbet8b15ece2019-11-18 17:11:03 -080074 logging.warning("stable_version_utils::set: attmpted to delete stable version. deleting the stable version is not permitted")
75 return None