Re: [Puppet Users] uploading files via REST?
Thank you, and one more q: can I specify a folder/share for the uploaded file, assuming there are several available? On Tue, May 31, 2011 at 7:41 PM, Daniel Pittman dan...@puppetlabs.comwrote: On Tue, May 31, 2011 at 07:21, RCosma razvan.co...@gmail.com wrote: Hello, I am a bit confused by the REST syntax - how can I PUT an arbitrary file in the bucket? Downloading works fine (Perl+LWP), see below, but for PUT I only see this line in the docs ( http://docs.puppetlabs.com/guides/rest_api.html): PUT /{environment}/file_bucket_file/md5/{checksum} Should I compute the MD5 of the file and port its contents at the url ? Yeah, you would need to: the indirector, which this is an instance of, requires that you uniquely identify where you are writing to. So, in the case of the filebucket the key is that MD5 checksum; you would need to calculate it for the file and supply it. There is no support in the indirector for uploading the data with the server calculating the checksum. (As a side note, I don't think we actually *check* you were honest about that, other than when the target checksum already exists, so please try not to lie about it. ;) Daniel -- ⎋ Puppet Labs Developer – http://puppetlabs.com ✉ Daniel Pittman dan...@puppetlabs.com ✆ Contact me via gtalk, email, or phone: +1 (877) 575-9775 ♲ Made with 100 percent post-consumer electrons -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] uploading files via REST?
Still, this doesn't seem to work in my test setup, i.e. apache as proxy in front of puppet. I get a ..timeout specified has expired: proxy: prefetch request body failed to 127.0.0.1:18140 in apache's log. GETs do work, just PUTs fail. Config is Listen 8140 Proxy balancer://puppetmaster BalancerMember http://127.0.0.1:18140 BalancerMember http://127.0.0.1:18141 /Proxy VirtualHost *:8140 SSLEngine On SSLCipherSuite SSLv2:-LOW:-EXPORT:RC4+RSA SSLCertificateFile /var/lib/puppet/ssl/certs/server.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/server.pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient require SSLVerifyDepth 1 SSLOptions +StdEnvVars RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e Location / SetHandler balancer-manager Order allow,deny Allow from all /Location ProxyPass / balancer://puppetmaster/ ProxyPassReverse / balancer://puppetmaster/ ProxyPreserveHost On ErrorLog /mirror/log/balancer_error_log CustomLog /mirror/log/balancer_access_log %h %l %u %t \%r\ %s %b \%{SSL_CLIENT_S_DN}x\ \%{User-Agent}i\ /VirtualHost and the perl code is { open my $up, , $_[0] or die Something went wrong: .$!; binmode $up; my $ck = Digest::MD5-new; $ck-addfile($up); close $up; my $req = HTTP::Request::StreamingUpload-new( PUT = https:// .$server./file_bucket_file/tftp/md5/.$ck-hexdigest, path = $_[0], headers = HTTP::Headers-new( 'Content-Type' = 'application/binary', 'Content-Length' = -s $_[0], 'Accept' = 's', ), ); my $res = $ua-request($req); die Something went wrong: .$res-status_line unless $res-is_success; return $res-content; } SSL handshake does work, but the puppet process doesn't seem to receive any data (I'm tailing its debug log). Not sure if I am doing something wrong, or it is a problem in mod_proxy.. On Thu, Jun 2, 2011 at 4:47 PM, Razvan Cosma razvan.co...@gmail.com wrote: On Tue, May 31, 2011 at 7:41 PM, Daniel Pittman dan...@puppetlabs.comwrote: On Tue, May 31, 2011 at 07:21, RCosma razvan.co...@gmail.com wrote: Should I compute the MD5 of the file and port its contents at the url ? Yeah, you would need to: the indirector, which this is an instance of, requires that you uniquely identify where you are writing to. So, in the case of the filebucket the key is that MD5 checksum; you would need to calculate it for the file and supply it. -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
[Puppet Users] uploading files via REST?
Hello, I am a bit confused by the REST syntax - how can I PUT an arbitrary file in the bucket? Downloading works fine (Perl+LWP), see below, but for PUT I only see this line in the docs (http://docs.puppetlabs.com/guides/rest_api.html): PUT /{environment}/file_bucket_file/md5/{checksum} Should I compute the MD5 of the file and port its contents at the url ? my code: my $ua = LWP::UserAgent-new(); my $ay = HTTP::Headers-new; $ay-header('Accept' = 'YAML'); my $as = HTTP::Headers-new; $as-header('Accept' = 's'); sub get_string { my $req = HTTP::Request-new('GET', https://$server/production/file_metadata/.$_[0], $ay); my $res = $ua-request($req); die Something went wrong: .$res-status_line unless $res-is_success; my @ini = YAML::Load($res-content.\n); my $md5 = $ini[0]-{checksum}; $md5 =~ s/^{md5}//; $req = HTTP::Request-new('GET', https://$server/production/file_bucket_file/md5/$md5;, $as); $res = $ua-request($req); die Something went wrong: .$res-status_line unless $res-is_success; return $res-content; } sub get_yaml { my $req = HTTP::Request-new('GET', https://$server/production/file_metadata/.$_[0], $ay); my $res = $ua-request($req); die Something went wrong: .$res-status_line unless $res-is_success; my @ini = YAML::Load($res-content.\n); my $md5 = $ini[0]-{checksum}; $md5 =~ s/^{md5}//; $req = HTTP::Request-new('GET', https://$server/production/file_bucket_file/md5/$md5;, $ay); $res = $ua-request($req); die Something went wrong: .$res-status_line unless $res-is_success; @ini = YAML::Load($res-content.\n); return $ini[0]; } -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Re: [Puppet Users] uploading files via REST?
On Tue, May 31, 2011 at 07:21, RCosma razvan.co...@gmail.com wrote: Hello, I am a bit confused by the REST syntax - how can I PUT an arbitrary file in the bucket? Downloading works fine (Perl+LWP), see below, but for PUT I only see this line in the docs (http://docs.puppetlabs.com/guides/rest_api.html): PUT /{environment}/file_bucket_file/md5/{checksum} Should I compute the MD5 of the file and port its contents at the url ? Yeah, you would need to: the indirector, which this is an instance of, requires that you uniquely identify where you are writing to. So, in the case of the filebucket the key is that MD5 checksum; you would need to calculate it for the file and supply it. There is no support in the indirector for uploading the data with the server calculating the checksum. (As a side note, I don't think we actually *check* you were honest about that, other than when the target checksum already exists, so please try not to lie about it. ;) Daniel -- ⎋ Puppet Labs Developer – http://puppetlabs.com ✉ Daniel Pittman dan...@puppetlabs.com ✆ Contact me via gtalk, email, or phone: +1 (877) 575-9775 ♲ Made with 100 percent post-consumer electrons -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.