def _ApplyEnvVarsArgsToFunction(function, args): """Determines if environment variables have to be updated. It compares the cli args with the existing environment variables to compute the resulting build environment variables. Args: function: CloudFunction message to be checked and filled with env vars based on the flags args: all cli args Returns: updated_fields: update mask containing the list of fields that are considered for updating based on the cli args and existing variables """ updated_fields = [] old_env_vars = env_vars_api_util.GetEnvVarsAsDict( function.environmentVariables) env_var_flags = map_util.GetMapFlagsFromArgs('env-vars', args) new_env_vars = map_util.ApplyMapFlags(old_env_vars, **env_var_flags) if old_env_vars != new_env_vars: env_vars_type_class = api_util.GetApiMessagesModule( ).CloudFunction.EnvironmentVariablesValue function.environmentVariables = env_vars_api_util.DictToEnvVarsProperty( env_vars_type_class, new_env_vars) updated_fields.append('environmentVariables') return updated_fields
def testGetEnvVarsAsDict_EnvVar(self): expected = { 'FOO': 'BAR', 'BAZ': 'BOO', } messages = api_util.GetApiMessagesModule() env_vars_class = self._ENV_VARS_TYPE_CLASS function = messages.CloudFunction() function.environmentVariables = (env_vars_class(additionalProperties=[ env_vars_class.AdditionalProperty(key='BAZ', value='BOO'), env_vars_class.AdditionalProperty(key='FOO', value='BAR'), ])) actual = env_vars.GetEnvVarsAsDict(function.environmentVariables) self.assertEqual(expected, actual)
def testGetEnvVarsAsDict_EnvVar_None(self): messages = api_util.GetApiMessagesModule() function = messages.CloudFunction() actual = env_vars.GetEnvVarsAsDict(function.environmentVariables) self.assertEqual({}, actual)