-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update services based on v1.47.3 of AWS Go SDK
- Loading branch information
Showing
3 changed files
with
365 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
v1.47.2 | ||
v1.47.3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,336 @@ | ||
%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE! | ||
%% See https://github.com/aws-beam/aws-codegen for more details. | ||
|
||
%% @doc Launch Wizard offers a guided way of sizing, configuring, and | ||
%% deploying Amazon Web Services resources for third party applications, such | ||
%% as Microsoft SQL Server Always On and HANA based SAP systems, without the | ||
%% need to manually identify and provision individual Amazon Web Services | ||
%% resources. | ||
-module(aws_launch_wizard). | ||
|
||
-export([create_deployment/2, | ||
create_deployment/3, | ||
delete_deployment/2, | ||
delete_deployment/3, | ||
get_deployment/2, | ||
get_deployment/3, | ||
get_workload/2, | ||
get_workload/3, | ||
list_deployment_events/2, | ||
list_deployment_events/3, | ||
list_deployments/2, | ||
list_deployments/3, | ||
list_workload_deployment_patterns/2, | ||
list_workload_deployment_patterns/3, | ||
list_workloads/2, | ||
list_workloads/3]). | ||
|
||
-include_lib("hackney/include/hackney_lib.hrl"). | ||
|
||
%%==================================================================== | ||
%% API | ||
%%==================================================================== | ||
|
||
%% @doc Creates a deployment for the given workload. | ||
%% | ||
%% Deployments created by this operation are not available in the Launch | ||
%% Wizard console to use the `Clone deployment' action on. | ||
create_deployment(Client, Input) -> | ||
create_deployment(Client, Input, []). | ||
create_deployment(Client, Input0, Options0) -> | ||
Method = post, | ||
Path = ["/createDeployment"], | ||
SuccessStatusCode = 200, | ||
Options = [{send_body_as_binary, false}, | ||
{receive_body_as_binary, false}, | ||
{append_sha256_content_hash, false} | ||
| Options0], | ||
|
||
Headers = [], | ||
Input1 = Input0, | ||
|
||
CustomHeaders = [], | ||
Input2 = Input1, | ||
|
||
Query_ = [], | ||
Input = Input2, | ||
|
||
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode). | ||
|
||
%% @doc Deletes a deployment. | ||
delete_deployment(Client, Input) -> | ||
delete_deployment(Client, Input, []). | ||
delete_deployment(Client, Input0, Options0) -> | ||
Method = post, | ||
Path = ["/deleteDeployment"], | ||
SuccessStatusCode = 200, | ||
Options = [{send_body_as_binary, false}, | ||
{receive_body_as_binary, false}, | ||
{append_sha256_content_hash, false} | ||
| Options0], | ||
|
||
Headers = [], | ||
Input1 = Input0, | ||
|
||
CustomHeaders = [], | ||
Input2 = Input1, | ||
|
||
Query_ = [], | ||
Input = Input2, | ||
|
||
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode). | ||
|
||
%% @doc Returns information about the deployment. | ||
get_deployment(Client, Input) -> | ||
get_deployment(Client, Input, []). | ||
get_deployment(Client, Input0, Options0) -> | ||
Method = post, | ||
Path = ["/getDeployment"], | ||
SuccessStatusCode = 200, | ||
Options = [{send_body_as_binary, false}, | ||
{receive_body_as_binary, false}, | ||
{append_sha256_content_hash, false} | ||
| Options0], | ||
|
||
Headers = [], | ||
Input1 = Input0, | ||
|
||
CustomHeaders = [], | ||
Input2 = Input1, | ||
|
||
Query_ = [], | ||
Input = Input2, | ||
|
||
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode). | ||
|
||
%% @doc Returns information about a workload. | ||
get_workload(Client, Input) -> | ||
get_workload(Client, Input, []). | ||
get_workload(Client, Input0, Options0) -> | ||
Method = post, | ||
Path = ["/getWorkload"], | ||
SuccessStatusCode = 200, | ||
Options = [{send_body_as_binary, false}, | ||
{receive_body_as_binary, false}, | ||
{append_sha256_content_hash, false} | ||
| Options0], | ||
|
||
Headers = [], | ||
Input1 = Input0, | ||
|
||
CustomHeaders = [], | ||
Input2 = Input1, | ||
|
||
Query_ = [], | ||
Input = Input2, | ||
|
||
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode). | ||
|
||
%% @doc Lists the events of a deployment. | ||
list_deployment_events(Client, Input) -> | ||
list_deployment_events(Client, Input, []). | ||
list_deployment_events(Client, Input0, Options0) -> | ||
Method = post, | ||
Path = ["/listDeploymentEvents"], | ||
SuccessStatusCode = 200, | ||
Options = [{send_body_as_binary, false}, | ||
{receive_body_as_binary, false}, | ||
{append_sha256_content_hash, false} | ||
| Options0], | ||
|
||
Headers = [], | ||
Input1 = Input0, | ||
|
||
CustomHeaders = [], | ||
Input2 = Input1, | ||
|
||
Query_ = [], | ||
Input = Input2, | ||
|
||
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode). | ||
|
||
%% @doc Lists the deployments that have been created. | ||
list_deployments(Client, Input) -> | ||
list_deployments(Client, Input, []). | ||
list_deployments(Client, Input0, Options0) -> | ||
Method = post, | ||
Path = ["/listDeployments"], | ||
SuccessStatusCode = 200, | ||
Options = [{send_body_as_binary, false}, | ||
{receive_body_as_binary, false}, | ||
{append_sha256_content_hash, false} | ||
| Options0], | ||
|
||
Headers = [], | ||
Input1 = Input0, | ||
|
||
CustomHeaders = [], | ||
Input2 = Input1, | ||
|
||
Query_ = [], | ||
Input = Input2, | ||
|
||
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode). | ||
|
||
%% @doc Lists the workload deployment patterns. | ||
list_workload_deployment_patterns(Client, Input) -> | ||
list_workload_deployment_patterns(Client, Input, []). | ||
list_workload_deployment_patterns(Client, Input0, Options0) -> | ||
Method = post, | ||
Path = ["/listWorkloadDeploymentPatterns"], | ||
SuccessStatusCode = 200, | ||
Options = [{send_body_as_binary, false}, | ||
{receive_body_as_binary, false}, | ||
{append_sha256_content_hash, false} | ||
| Options0], | ||
|
||
Headers = [], | ||
Input1 = Input0, | ||
|
||
CustomHeaders = [], | ||
Input2 = Input1, | ||
|
||
Query_ = [], | ||
Input = Input2, | ||
|
||
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode). | ||
|
||
%% @doc Lists the workloads. | ||
list_workloads(Client, Input) -> | ||
list_workloads(Client, Input, []). | ||
list_workloads(Client, Input0, Options0) -> | ||
Method = post, | ||
Path = ["/listWorkloads"], | ||
SuccessStatusCode = 200, | ||
Options = [{send_body_as_binary, false}, | ||
{receive_body_as_binary, false}, | ||
{append_sha256_content_hash, false} | ||
| Options0], | ||
|
||
Headers = [], | ||
Input1 = Input0, | ||
|
||
CustomHeaders = [], | ||
Input2 = Input1, | ||
|
||
Query_ = [], | ||
Input = Input2, | ||
|
||
request(Client, Method, Path, Query_, CustomHeaders ++ Headers, Input, Options, SuccessStatusCode). | ||
|
||
%%==================================================================== | ||
%% Internal functions | ||
%%==================================================================== | ||
|
||
-spec request(aws_client:aws_client(), atom(), iolist(), list(), | ||
list(), map() | undefined, list(), pos_integer() | undefined) -> | ||
{ok, {integer(), list()}} | | ||
{ok, Result, {integer(), list(), hackney:client()}} | | ||
{error, Error, {integer(), list(), hackney:client()}} | | ||
{error, term()} when | ||
Result :: map(), | ||
Error :: map(). | ||
request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusCode) -> | ||
RequestFun = fun() -> do_request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusCode) end, | ||
aws_request:request(RequestFun, Options). | ||
|
||
do_request(Client, Method, Path, Query, Headers0, Input, Options, SuccessStatusCode) -> | ||
Client1 = Client#{service => <<"launchwizard">>}, | ||
Host = build_host(<<"launchwizard">>, Client1), | ||
URL0 = build_url(Host, Path, Client1), | ||
URL = aws_request:add_query(URL0, Query), | ||
AdditionalHeaders1 = [ {<<"Host">>, Host} | ||
, {<<"Content-Type">>, <<"application/x-amz-json-1.1">>} | ||
], | ||
Payload = | ||
case proplists:get_value(send_body_as_binary, Options) of | ||
true -> | ||
maps:get(<<"Body">>, Input, <<"">>); | ||
false -> | ||
encode_payload(Input) | ||
end, | ||
AdditionalHeaders = case proplists:get_value(append_sha256_content_hash, Options, false) of | ||
true -> | ||
add_checksum_hash_header(AdditionalHeaders1, Payload); | ||
false -> | ||
AdditionalHeaders1 | ||
end, | ||
Headers1 = aws_request:add_headers(AdditionalHeaders, Headers0), | ||
|
||
MethodBin = aws_request:method_to_binary(Method), | ||
SignedHeaders = aws_request:sign_request(Client1, MethodBin, URL, Headers1, Payload), | ||
Response = hackney:request(Method, URL, SignedHeaders, Payload, Options), | ||
DecodeBody = not proplists:get_value(receive_body_as_binary, Options), | ||
handle_response(Response, SuccessStatusCode, DecodeBody). | ||
|
||
add_checksum_hash_header(Headers, Body) -> | ||
[ {<<"X-Amz-CheckSum-SHA256">>, base64:encode(crypto:hash(sha256, Body))} | ||
| Headers | ||
]. | ||
|
||
handle_response({ok, StatusCode, ResponseHeaders}, SuccessStatusCode, _DecodeBody) | ||
when StatusCode =:= 200; | ||
StatusCode =:= 202; | ||
StatusCode =:= 204; | ||
StatusCode =:= 206; | ||
StatusCode =:= SuccessStatusCode -> | ||
{ok, {StatusCode, ResponseHeaders}}; | ||
handle_response({ok, StatusCode, ResponseHeaders}, _, _DecodeBody) -> | ||
{error, {StatusCode, ResponseHeaders}}; | ||
handle_response({ok, StatusCode, ResponseHeaders, Client}, SuccessStatusCode, DecodeBody) | ||
when StatusCode =:= 200; | ||
StatusCode =:= 202; | ||
StatusCode =:= 204; | ||
StatusCode =:= 206; | ||
StatusCode =:= SuccessStatusCode -> | ||
case hackney:body(Client) of | ||
{ok, <<>>} when StatusCode =:= 200; | ||
StatusCode =:= SuccessStatusCode -> | ||
{ok, #{}, {StatusCode, ResponseHeaders, Client}}; | ||
{ok, Body} -> | ||
Result = case DecodeBody of | ||
true -> | ||
try | ||
jsx:decode(Body) | ||
catch | ||
Error:Reason:Stack -> | ||
erlang:raise(error, {body_decode_failed, Error, Reason, StatusCode, Body}, Stack) | ||
end; | ||
false -> #{<<"Body">> => Body} | ||
end, | ||
{ok, Result, {StatusCode, ResponseHeaders, Client}} | ||
end; | ||
handle_response({ok, StatusCode, _ResponseHeaders, _Client}, _, _DecodeBody) | ||
when StatusCode =:= 503 -> | ||
%% Retriable error if retries are enabled | ||
{error, service_unavailable}; | ||
handle_response({ok, StatusCode, ResponseHeaders, Client}, _, _DecodeBody) -> | ||
{ok, Body} = hackney:body(Client), | ||
try | ||
DecodedError = jsx:decode(Body), | ||
{error, DecodedError, {StatusCode, ResponseHeaders, Client}} | ||
catch | ||
Error:Reason:Stack -> | ||
erlang:raise(error, {body_decode_failed, Error, Reason, StatusCode, Body}, Stack) | ||
end; | ||
handle_response({error, Reason}, _, _DecodeBody) -> | ||
{error, Reason}. | ||
|
||
build_host(_EndpointPrefix, #{region := <<"local">>, endpoint := Endpoint}) -> | ||
Endpoint; | ||
build_host(_EndpointPrefix, #{region := <<"local">>}) -> | ||
<<"localhost">>; | ||
build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) -> | ||
aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>). | ||
|
||
build_url(Host, Path0, Client) -> | ||
Proto = aws_client:proto(Client), | ||
Path = erlang:iolist_to_binary(Path0), | ||
Port = aws_client:port(Client), | ||
aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, Path], <<"">>). | ||
|
||
-spec encode_payload(undefined | map()) -> binary(). | ||
encode_payload(undefined) -> | ||
<<>>; | ||
encode_payload(Input) -> | ||
jsx:encode(Input). |