我尝试使用以下代码将对HTTP的响应保存到模板变量中:< p>
template '/etc/new.conf' do
owner "root"
group "root"
mode "0644"
source "TestTemp.txt.erb"
variables(
my_id: Chef::HTTP.new('https://myIP/').post('/api/sessions/', {'user-
principal' => '{"userName":"myusername","password":"mypass"}', 'Accept'
=>'application/*+xml;version=5.6', 'Content-type' => 'application/json'
}) )
end
我在配方文件中遇到语法错误:
undefined method `bytesize' for #<Hash:0000>` on chef-client convergence on my node.
任何帮助都将不胜感激。
答案 0 :(得分:0)
问题在于:
之间的换行符'Accept'
和
=>'application/*+xml;version=5.6'
您不能在哈希键和=>
之间设置换行符。
答案 1 :(得分:0)
看起来你希望哈希是请求头,这个sqoop import -D mapreduce.map.memory.mb=2048 \
--connect "jdbc:sqlserver://some.server\SQL2012;database=SomeDB;username=someUser;passwor =somePass" \
--e "SELECT SOMETHING" where \$CONDITIONS"\
--fields-terminated-by \\002 \
--escaped-by \\ \
--check-column Message_Audit_Log_Id \
--incremental append \
--last-value 1 \
--split-by Message_Audit_Log_Id \
--target-dir /target/path/
中间位是POST主体。另外值得注意的是,如果您期待JSON回来,您可能希望使用.post('/api/sessions/', '', {...})
,因为它会为您处理解码。