aws-sdk-perl icon indicating copy to clipboard operation
aws-sdk-perl copied to clipboard

Rest XML not working

Open byterock opened this issue 5 years ago • 7 comments

I just did what will be the Beta checking for all of the RestXML APIs

On my usual branch

https://github.com/byterock/aws-sdk-perl/tree/s3ObjectTagging

I have confirmed with real world tests that all the actions of

  1. S3 are working
  2. S3Control are working (not all actions are exposed) and
  3. CloudFront are working

There is a Full Tests suite both 'request' and 'response' for the above

For Route53 I have checke each of the requests and they at least submit with Valid XML. I can't really go much furter than that as I have no domains or hosts to play with

I will do one final check of the tests suite as I still have a few fails <1% most of which I think are bad test confg but still each has to be looked at.

I am very confidant we can put this into the next release as it would be good to get others to play with it adn sniff out any other bugs that might be lurking deep down.

Any Idea when we will see a release.

Cheers John

byterock avatar Jan 12 '20 20:01 byterock

Ok it is a wrap got 100% pass on the test suite.

I got all the tests fixed S3 and CloudFront I still have to develop a test set for S3Control and Route53 but I have yet to find any problems with any of the actions in those.

S3Contol has some Boto issues that I am waiting on a response from AWS

I think we can remove that

is not stable / supported / entirely developed

warnin

byterock avatar Jan 14 '20 22:01 byterock

Route53 XML creation tests for #204 and #128 exist in the tests/stabilisation PR, in t/route53 .. as well as some fixes for the issues.

castaway avatar Jan 28 '20 12:01 castaway

Great. Thanks for having a look. I could create a request and response tests for this but as I stated above I cannot confirm that they work in the real world like I have been able to do for S3 for example.

byterock avatar Jan 28 '20 14:01 byterock

I tried route53 but with this call:


my $result = $route53service->ChangeResourceRecordSets(
	ChangeBatch => {
		Changes => [
			{
				Action => 'UPSERT',
				ResourceRecordSet => {
					Name => 'host53.remijn.org.',
					Type => 'A',
					ResourceRecords => [
						{
							Value => '1.2.3.4',
						}
					],
				},
			},
		],
		Comment => 'Test upsert vanuit perl',
	},
	HostedZoneId => $hostedZoneId,
);

I got this stacktrace:

Paws::Route53 is not stable / supported / entirely developed at /usr/local/share/perl/5.28.1/Paws/Route53.pm line 2.
Bad Request

Trace begun at /usr/local/share/perl/5.28.1/Paws/Net/RestXMLResponse.pm line 25
Paws::Net::RestXMLResponse::process('Paws::Net::RestXMLResponse=HASH(0x55800ab90fe8)', 'Paws::Route53::ChangeResourceRecordSets=HASH(0x55800abf6798)', 'Paws::Net::APIResponse=HASH(0x55800a7cb230)') called at /usr/local/share/perl/5.28.1/Paws/Net/Caller.pm line 46
Paws::Net::Caller::caller_to_response('Paws::Net::Caller=HASH(0x558008e173e0)', 'Paws::Route53=HASH(0x55800a2cc4b8)', 'Paws::Route53::ChangeResourceRecordSets=HASH(0x55800abf6798)', 'Paws::Net::APIResponse=HASH(0x55800a7cb230)') called at /usr/local/share/perl/5.28.1/Paws/Net/RetryCallerRole.pm line 19
Paws::Net::RetryCallerRole::do_call('Paws::Net::Caller=HASH(0x558008e173e0)', 'Paws::Route53=HASH(0x55800a2cc4b8)', 'Paws::Route53::ChangeResourceRecordSets=HASH(0x55800abf6798)') called at /usr/local/share/perl/5.28.1/Paws/Route53.pm line 51
Paws::Route53::ChangeResourceRecordSets('Paws::Route53=HASH(0x55800a2cc4b8)', 'ChangeBatch', 'HASH(0x55800a4e00e0)', 'HostedZoneId', '******') called at changeRecord.pl line 19

Is there a way to debug (see the request / response)?

Marc

marrem avatar Feb 01 '20 21:02 marrem

@marrem could you try it with the code in PR #265 please?

sadly there isnt an easy way to debug the call/response internals easily, you'd need to edit Paws::Net::RestXMLResponse / Paws::Net::RestXMLCaller (sp?) and add dumps

Maybe thats a thing we should add, as an ENV param or similar?

castaway avatar Feb 02 '20 11:02 castaway

I did add that in for a new test maker

https://github.com/byterock/aws-sdk-perl/blob/s3ObjectTagging/t/lib/FullTestMakerLWPCaller.pm

To use it download my s3ObjectTagging branch

https://github.com/byterock/aws-sdk-perl/blob/s3ObjectTagging/t/lib/FullTestMakerLWPCaller.pm

then add this to the top of your script.

my $route53service = Paws->service( 'Route53', region => 'us-east-1', debug => 1, caller => FullTestMakerLWPCaller->new( warn_response => 1, warn_request => 1, ) );

Most likely will work

If I get some time I will if I can get it to work later today or tomorrow

byterock avatar Feb 02 '20 18:02 byterock

Neat, I will have a look at that.

I was thinking that we could add an ENV variable, that causes the code to dump the request/response contents. I'm guessing yours is similar.

From a quick look, we could do with adding some documentation to some of the TestMaker stuff (and maybe move one intended for user use into the main lib, with proper POD)

castaway avatar Feb 10 '20 10:02 castaway