Como converter uma string para inteiro no Puppet?

8

Quero verificar se o conteúdo de uma variável é um número ímpar. Mas preciso de um número inteiro para isso.

$ip_array = split($ipaddress, '.')
$odd_ip = $ip_array[3] % 2

if $odd_ip == 1 {
  notice("is odd")
}

Existe uma maneira fácil de converter uma string em número inteiro?

MMore
fonte

Respostas:

5

Você consegue fazer isso:

$ n_timeout = 0 + $ tempo limite

Barry
fonte
Isto quebra com picadas com zeros, por exemplo, "04"
Gary van der Merwe
Com fantoche 4 isso irá causar um aviso: Aviso: A string '1' foi automaticamente convertido para o valor numérico 1 na ...
Slaven Rezic
A documentação do Puppet sugere isso e oferece um método scanf para lidar com extração versus coerção entre pares. puppet.com/docs/puppet/latest/...
cgseller
3

Eu comecei a usar a função scanf no stdlib.

Um exemplo disso:

$ ram = scanf ("$ {:: memorysize_mb}", "% i")

Isso requer fantoches> = 3.7.5

Andrew
fonte
1
Observe que isso retornará uma matriz, onde o primeiro elemento é o valor desejado. No fantoche 4, é possível escrever algo como scanf (...) [0], no fantoche 3 parece ser necessário dividir isso em duas instruções: primeiro atribua a uma variável de matriz e depois obtenha o primeiro elemento.
Slaven Rezic
Isso também é aceitável com base na documentação do fantoche puppet.com/docs/puppet/latest/… . Tanto o @barry acima como as respostas aqui são permitidos pelos puppetlabs.
cgseller
1

Seu código funcionará exatamente como definido; Puppet converte implicitamente seqüências de caracteres e números inteiros, conforme apropriado para o operador de comparação que está sendo usado.

Daniel Pittman
fonte
Eu recebi o seguinte erro: Não foi possível corresponder ao% em /etc/puppet/modules/my/manifests/target.pp:23 no nó mynode.domain.de
MMore
Se eu substituir '%' com '*' (testar) -> operando à esquerda de * não é um número no /etc/puppet/modules/my/manifests/target.pp:25 no nó mynode.domain.de
mmore
1
Ah Você encontrou um bug genuíno no Puppet. Você deve registrar um ticket em projects.puppetlabs.com/projects/puppet/issues/new para que possamos corrigi-lo.
Daniel Pittman
2
Puppet não faz isso quando o valor vem da hiera. Você recebe um erro "Erro 400 no servidor: comparação de Fixnum com String falhou".
Rob