def _do_builtinfunction()

in chalice/deploy/executor.py [0:0]


    def _do_builtinfunction(self, instruction):
        # type: (models.BuiltinFunction) -> None
        # Split this out to a separate class of built in functions
        # once we add more functions.
        if instruction.function_name == 'parse_arn':
            resolved_args = self._variable_resolver.resolve_variables(
                instruction.args, self.variables)
            value = resolved_args[0]
            parts = value.split(':')
            result = {
                'partition': parts[1],
                'service': parts[2],
                'region': parts[3],
                'account_id': parts[4],
                'dns_suffix': self._client.endpoint_dns_suffix(parts[2],
                                                               parts[3])
            }
            self.variables[instruction.output_var] = result
        elif instruction.function_name == 'interrogate_profile':
            region = self._client.region_name
            result = {
                'partition': self._client.partition_name,
                'region': region,
                'dns_suffix': self._client.endpoint_dns_suffix('apigateway',
                                                               region)
            }
            self.variables[instruction.output_var] = result
        elif instruction.function_name == 'service_principal':
            resolved_args = self._variable_resolver.resolve_variables(
                instruction.args, self.variables)
            service_name = resolved_args[0]
            region_name = self._client.region_name
            dns_suffix = self._client.endpoint_dns_suffix(service_name,
                                                          region_name)
            result = {
                'principal': self._client.service_principal(service_name,
                                                            region_name,
                                                            dns_suffix)
            }
            self.variables[instruction.output_var] = result
        else:
            raise ValueError("Unknown builtin function: %s"
                             % instruction.function_name)