@@ -18,64 +18,64 @@ def create_initial_data(**kwargs): # NOSONAR
18
18
"""
19
19
Loads in platform feature flags when the server starts
20
20
"""
21
+ delete_feature_flags ()
22
+ load_feature_flags ()
21
23
22
- from ansible_base .feature_flags .models .aap_flag import AAPFlag
23
24
24
- def update_feature_flag (existing : AAPFlag , new ):
25
- """
26
- Update only the required fields of the feature flag model.
27
- This is used to ensure that flags can be loaded in when the server starts, with any applicable updates.
28
- """
29
- existing .support_level = new .get ('support_level' )
30
- existing .visibility = new .get ('visibility' )
31
- existing .ui_name = new .get ('ui_name' )
32
- existing .support_url = new .get ('support_url' )
33
- existing .required = new .get ('required' , False )
34
- existing .toggle_type = new .get ('toggle_type' , 'run-time' )
35
- existing .labels = new .get ('labels' , [])
36
- existing .description = new .get ('description' , '' )
37
- return existing
25
+ def update_feature_flag (existing , new ):
26
+ """
27
+ Update only the required fields of the feature flag model.
28
+ This is used to ensure that flags can be loaded in when the server starts, with any applicable updates.
29
+ """
30
+ existing .support_level = new .get ('support_level' )
31
+ existing .visibility = new .get ('visibility' )
32
+ existing .ui_name = new .get ('ui_name' )
33
+ existing .support_url = new .get ('support_url' )
34
+ existing .required = new .get ('required' , False )
35
+ existing .toggle_type = new .get ('toggle_type' , 'run-time' )
36
+ existing .labels = new .get ('labels' , [])
37
+ existing .description = new .get ('description' , '' )
38
+ return existing
38
39
39
- def load_feature_flags ():
40
- """
41
- Loads in all feature flags into the database. Updates them if necessary.
42
- """
43
- feature_flags_model = apps .get_model ('dab_feature_flags' , 'AAPFlag' )
44
- for flag in AAP_FEATURE_FLAGS :
45
- try :
46
- existing_flag = feature_flags_model .objects .filter (name = flag ['name' ], condition = flag ['condition' ])
47
- if existing_flag :
48
- feature_flag = update_feature_flag (existing_flag .first (), flag )
49
- else :
50
- if hasattr (settings , flag ['name' ]):
51
- flag ['value' ] = getattr (settings , flag ['name' ])
52
- feature_flag = feature_flags_model (** flag )
53
- feature_flag .full_clean ()
54
- feature_flag .save ()
55
- except ValidationError as e :
56
- # Ignore this error unless better way to bypass this
57
- if e .messages [0 ] == 'Aap flag with this Name and Condition already exists.' :
58
- logger .info (f"Feature flag: { flag ['name' ]} already exists" )
59
- else :
60
- error_msg = f"Invalid feature flag: { flag ['name' ]} . Error: { e } "
61
- logger .error (error_msg )
62
40
63
- def delete_feature_flags ():
64
- """
65
- If a feature flag has been removed from the platform flags list, delete it from the database.
66
- """
67
- all_flags = apps .get_model ('dab_feature_flags' , 'AAPFlag' ).objects .all ()
68
- for flag in all_flags :
69
- found = False
70
- for _flag in AAP_FEATURE_FLAGS :
71
- if flag .name == _flag ['name' ] and flag .condition == _flag ['condition' ]:
72
- found = True
73
- break
74
- if found :
75
- continue
76
- if not found :
77
- logger .info (f"Deleting feature flag: { flag .name } as it is no longer available as a platform flag" )
78
- flag .delete ()
41
+ def load_feature_flags ():
42
+ """
43
+ Loads in all feature flags into the database. Updates them if necessary.
44
+ """
45
+ feature_flags_model = apps .get_model ('dab_feature_flags' , 'AAPFlag' )
46
+ for flag in AAP_FEATURE_FLAGS :
47
+ try :
48
+ existing_flag = feature_flags_model .objects .filter (name = flag ['name' ], condition = flag ['condition' ])
49
+ if existing_flag :
50
+ feature_flag = update_feature_flag (existing_flag .first (), flag )
51
+ else :
52
+ if hasattr (settings , flag ['name' ]):
53
+ flag ['value' ] = getattr (settings , flag ['name' ])
54
+ feature_flag = feature_flags_model (** flag )
55
+ feature_flag .full_clean ()
56
+ feature_flag .save ()
57
+ except ValidationError as e :
58
+ # Ignore this error unless better way to bypass this
59
+ if e .messages [0 ] == 'Aap flag with this Name and Condition already exists.' :
60
+ logger .info (f"Feature flag: { flag ['name' ]} already exists" )
61
+ else :
62
+ error_msg = f"Invalid feature flag: { flag ['name' ]} . Error: { e } "
63
+ logger .error (error_msg )
79
64
80
- delete_feature_flags ()
81
- load_feature_flags ()
65
+
66
+ def delete_feature_flags ():
67
+ """
68
+ If a feature flag has been removed from the platform flags list, delete it from the database.
69
+ """
70
+ all_flags = apps .get_model ('dab_feature_flags' , 'AAPFlag' ).objects .all ()
71
+ for flag in all_flags :
72
+ found = False
73
+ for _flag in AAP_FEATURE_FLAGS :
74
+ if flag .name == _flag ['name' ] and flag .condition == _flag ['condition' ]:
75
+ found = True
76
+ break
77
+ if found :
78
+ continue
79
+ if not found :
80
+ logger .info (f"Deleting feature flag: { flag .name } as it is no longer available as a platform flag" )
81
+ flag .delete ()
0 commit comments