wip
This commit is contained in:
parent
684e4507fc
commit
ccd1fd1095
44
zx
44
zx
@ -308,23 +308,37 @@ ensure_installed(PackageID = {Realm, Name, Version}) ->
|
|||||||
|
|
||||||
ensure_installed(Realm, Name, Version) ->
|
ensure_installed(Realm, Name, Version) ->
|
||||||
Socket = connect_user(Realm),
|
Socket = connect_user(Realm),
|
||||||
{ok, LatestVersion} = query_latest(Socket, {Realm, Name, Version}),
|
case query_latest(Socket, {Realm, Name, Version}) of
|
||||||
LatestID = {Realm, Name, LatestVersion},
|
{ok, LatestVersion} ->
|
||||||
ok = ensure_dep(Socket, LatestID),
|
LatestID = {Realm, Name, LatestVersion},
|
||||||
ok = disconnect(Socket),
|
ok = ensure_dep(Socket, LatestID),
|
||||||
{ok, LatestID}.
|
ok = disconnect(Socket),
|
||||||
|
{ok, LatestID};
|
||||||
|
{error, bad_realm} ->
|
||||||
|
PackageString = package_string({Realm, Name, Version}),
|
||||||
|
ok = log(warning, "Bad realm: ~ts.", [PackageString]),
|
||||||
|
halt(1);
|
||||||
|
{error, bad_package} ->
|
||||||
|
PackageString = package_string({Realm, Name, Version}),
|
||||||
|
ok = log(warning, "Bad package: ~ts.", [PackageString]),
|
||||||
|
halt(1);
|
||||||
|
{error, bad_version} ->
|
||||||
|
PackageString = package_string({Realm, Name, Version}),
|
||||||
|
ok = log(warning, "Bad version: ~s.", [PackageString]),
|
||||||
|
halt(1)
|
||||||
|
end.
|
||||||
|
|
||||||
|
|
||||||
query_latest(Socket, {Realm, Name}) ->
|
query_latest(Socket, {Realm, Name}) ->
|
||||||
ok = send(Socket, {latest, Realm, Name}),
|
ok = send(Socket, {latest, Realm, Name}),
|
||||||
receive
|
receive
|
||||||
{tcp, Socket, Bin} -> binary_to_term(Bin, [safe])
|
{tcp, Socket, Bin} -> binary_to_term(Bin)
|
||||||
after 5000 -> {error, timeout}
|
after 5000 -> {error, timeout}
|
||||||
end;
|
end;
|
||||||
query_latest(Socket, {Realm, Name, Version}) ->
|
query_latest(Socket, {Realm, Name, Version}) ->
|
||||||
ok = send(Socket, {latest, Realm, Name, Version}),
|
ok = send(Socket, {latest, Realm, Name, Version}),
|
||||||
receive
|
receive
|
||||||
{tcp, Socket, Bin} -> binary_to_term(Bin, [safe])
|
{tcp, Socket, Bin} -> binary_to_term(Bin)
|
||||||
after 5000 -> {error, timeout}
|
after 5000 -> {error, timeout}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
@ -779,7 +793,7 @@ submit(PackageFile) ->
|
|||||||
ok =
|
ok =
|
||||||
receive
|
receive
|
||||||
{tcp, Socket, Response1} ->
|
{tcp, Socket, Response1} ->
|
||||||
case binary_to_term(Response1, [safe]) of
|
case binary_to_term(Response1) of
|
||||||
ready ->
|
ready ->
|
||||||
ok;
|
ok;
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
@ -834,7 +848,7 @@ connect_user(Realm) ->
|
|||||||
|
|
||||||
connect_user(Realm, []) ->
|
connect_user(Realm, []) ->
|
||||||
{Host, Port} = get_prime(Realm),
|
{Host, Port} = get_prime(Realm),
|
||||||
ok = log(info, "Realm host at ~tp:~tp", [Host, Port]),
|
ok = log(info, "Realm host at ~ts:~tp", [inet:ntoa(Host), Port]),
|
||||||
case gen_tcp:connect(Host, Port, connect_options(), 5000) of
|
case gen_tcp:connect(Host, Port, connect_options(), 5000) of
|
||||||
{ok, Socket} ->
|
{ok, Socket} ->
|
||||||
confirm_user(Realm, Socket, []);
|
confirm_user(Realm, Socket, []);
|
||||||
@ -865,9 +879,9 @@ confirm_user(Realm, Socket, Hosts) ->
|
|||||||
ok = gen_tcp:send(Socket, <<"OTPR USER 1">>),
|
ok = gen_tcp:send(Socket, <<"OTPR USER 1">>),
|
||||||
receive
|
receive
|
||||||
{tcp, Socket, Bin} ->
|
{tcp, Socket, Bin} ->
|
||||||
case binary_to_term(Bin, [safe]) of
|
case binary_to_term(Bin) of
|
||||||
ok ->
|
ok ->
|
||||||
ok = log(info, "Connected to ~s:~p", [Host, Port]),
|
ok = log(info, "Connected to ~ts:~p", [Host, Port]),
|
||||||
confirm_serial(Realm, Socket, Hosts);
|
confirm_serial(Realm, Socket, Hosts);
|
||||||
{redirect, Next} ->
|
{redirect, Next} ->
|
||||||
ok = log(info, "Redirected..."),
|
ok = log(info, "Redirected..."),
|
||||||
@ -875,7 +889,7 @@ confirm_user(Realm, Socket, Hosts) ->
|
|||||||
connect_user(Realm, Next ++ Hosts)
|
connect_user(Realm, Next ++ Hosts)
|
||||||
end
|
end
|
||||||
after 5000 ->
|
after 5000 ->
|
||||||
ok = log(warning, "Host ~s:~p timed out.", [Host, Port]),
|
ok = log(warning, "Host ~ts:~p timed out.", [Host, Port]),
|
||||||
ok = disconnect(Socket),
|
ok = disconnect(Socket),
|
||||||
connect_user(Realm, Hosts)
|
connect_user(Realm, Hosts)
|
||||||
end.
|
end.
|
||||||
@ -898,13 +912,13 @@ confirm_serial(Realm, Socket, Hosts) ->
|
|||||||
end,
|
end,
|
||||||
Serial =
|
Serial =
|
||||||
case lists:keyfind(Realm, 1, Serials) of
|
case lists:keyfind(Realm, 1, Serials) of
|
||||||
false -> 1;
|
false -> 0;
|
||||||
{Realm, S} -> S
|
{Realm, S} -> S
|
||||||
end,
|
end,
|
||||||
ok = send(Socket, {latest, Realm}),
|
ok = send(Socket, {latest, Realm}),
|
||||||
receive
|
receive
|
||||||
{tcp, Socket, Bin} ->
|
{tcp, Socket, Bin} ->
|
||||||
case binary_to_term(Bin, [safe]) of
|
case binary_to_term(Bin) of
|
||||||
{ok, Serial} ->
|
{ok, Serial} ->
|
||||||
ok = log(info, "Node's serial same as ours."),
|
ok = log(info, "Node's serial same as ours."),
|
||||||
Socket;
|
Socket;
|
||||||
@ -1442,7 +1456,7 @@ request_zrp(Socket, PackageID) ->
|
|||||||
ok = send(Socket, {fetch, PackageID}),
|
ok = send(Socket, {fetch, PackageID}),
|
||||||
receive
|
receive
|
||||||
{tcp, Socket, Bin} ->
|
{tcp, Socket, Bin} ->
|
||||||
case binary_to_term(Bin, [safe]) of
|
case binary_to_term(Bin) of
|
||||||
{sending, LatestID} ->
|
{sending, LatestID} ->
|
||||||
{ok, LatestID};
|
{ok, LatestID};
|
||||||
Error = {error, Reason} ->
|
Error = {error, Reason} ->
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user