예제 #1
0
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
예제 #2
0
    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)
예제 #3
0
 def testGetEnvVarsAsDict_EnvVar_None(self):
     messages = api_util.GetApiMessagesModule()
     function = messages.CloudFunction()
     actual = env_vars.GetEnvVarsAsDict(function.environmentVariables)
     self.assertEqual({}, actual)