Skip to content

Instantly share code, notes, and snippets.

@arekinath
Created October 9, 2013 04:41
Show Gist options
  • Save arekinath/6896305 to your computer and use it in GitHub Desktop.
Save arekinath/6896305 to your computer and use it in GitHub Desktop.
internal_metadata for *_pw things
diff --git a/apps/chunter/src/chunter_spec.erl b/apps/chunter/src/chunter_spec.erl
index f0463fa..2d243d1 100644
--- a/apps/chunter/src/chunter_spec.erl
+++ b/apps/chunter/src/chunter_spec.erl
@@ -52,7 +52,15 @@ generate_sniffle(In, _Type) ->
<<"hostname">>, <<"autoboot">>, <<"created_at">>, <<"dns_domain">>,
<<"resolvers">>, <<"ram">>, <<"uuid">>, <<"cpu_shares">>],
jsxd:fold(fun (<<"internal_metadata">>, Int, Obj) ->
- jsxd:merge(Int, Obj);
+ jsxd:fold(fun(K = <<"package">>, V1, Obj1) ->
+ jsxd:set(K, V1, Obj1);
+ (K = <<"admin_pw">>, V1, Obj1) ->
+ jsxd:set(K, V1, Obj1);
+ (K = <<"root_pw">>, V1, Obj1) ->
+ jsxd:set(K, V1, Obj1);
+ (K, V1, Obj1) ->
+ jsxd:set([<<"metadata">>, K], V1, Obj1)
+ end, Obj, Int);
(<<"dataset_uuid">>, V, Obj) ->
jsxd:set(<<"dataset">>, V, Obj);
(<<"image_uuid">>, V, Obj) ->
@@ -72,10 +80,6 @@ generate_sniffle(In, _Type) ->
(<<"customer_metadata">>, V, Obj) ->
jsxd:fold(fun (<<"root_authorized_keys">>, V1, Obj1) ->
jsxd:set(<<"ssh_keys">>, V1, Obj1);
- (<<"root_pw">>, V1, Obj1) ->
- jsxd:set(<<"root_pw">>, V1, Obj1);
- (<<"admin_pw">>, V1, Obj1) ->
- jsxd:set(<<"admin_pw">>, V1, Obj1);
(K, V1, Obj1) ->
jsxd:set([<<"metadata">>, K], V1, Obj1)
end, Obj, V);
@@ -170,18 +174,22 @@ generate_spec(Package, Dataset, OwnerData) ->
Base2 = jsxd:fold(fun (<<"ssh_keys">>, V, Obj) ->
jsxd:set([<<"customer_metadata">>, <<"root_authorized_keys">>], V, Obj);
(<<"root_pw">>, V, Obj) ->
- jsxd:set([<<"customer_metadata">>, <<"root_pw">>], V, Obj);
+ jsxd:set([<<"internal_metadata">>, <<"root_pw">>], V, Obj);
(<<"resolvers">>, V, Obj) ->
jsxd:set(<<"resolvers">>, V, Obj);
(<<"hostname">>, V, Obj) ->
jsxd:set(<<"hostname">>, V, Obj);
(<<"admin_pw">>, V, Obj) ->
- jsxd:set([<<"customer_metadata">>, <<"admin_pw">>], V, Obj);
+ jsxd:set([<<"internal_metadata">>, <<"admin_pw">>], V, Obj);
(<<"metadata">>, V, Obj) ->
- jsxd:update(<<"customer_metadata">>,
- fun(M) ->
- jsxd:merge(M, V)
- end, V, Obj);
+ jsxd:fold(fun(Ki, Vi, Obji) ->
+ case binary:part(Ki, {byte_size(Ki), -3}) of
+ <<"_pw">> ->
+ jsxd:set([<<"internal_metadata">>, Ki], Vi, Obji);
+ _ ->
+ jsxd:set([<<"customer_metadata">>, Ki], Vi, Obji)
+ end
+ end, Obj, V);
(<<"note">>, V, Obj) ->
jsxd:set([<<"internal_metadata">>, <<"note">>], V, Obj);
(<<"network_map">>, V, Obj) ->
@@ -211,14 +219,18 @@ create_update(_, [], Config) ->
Result = jsxd:fold(fun (<<"ssh_keys">>, V, Obj) ->
jsxd:set([<<"set_customer_metadata">>, <<"root_authorized_keys">>], V, Obj);
(<<"root_pw">>, V, Obj) ->
- jsxd:set([<<"set_customer_metadata">>, <<"root_pw">>], V, Obj);
+ jsxd:set([<<"set_internal_metadata">>, <<"root_pw">>], V, Obj);
(<<"admin_pw">>, V, Obj) ->
- jsxd:set([<<"set_customer_metadata">>, <<"admin_pw">>], V, Obj);
+ jsxd:set([<<"set_internal_metadata">>, <<"admin_pw">>], V, Obj);
(<<"metadata">>, V, Obj) ->
- jsxd:update(<<"set_customer_metadata">>,
- fun(M) ->
- jsxd:merge(M, V)
- end, V, Obj);
+ jsxd:fold(fun(Ki, Vi, Obji) ->
+ case binary:part(Ki, {byte_size(Ki), -3}) of
+ <<"_pw">> ->
+ jsxd:set([<<"set_internal_metadata">>, Ki], Vi, Obji);
+ _ ->
+ jsxd:set([<<"set_customer_metadata">>, Ki], Vi, Obji)
+ end
+ end, Obj, V);
(<<"note">>, V, Obj) ->
jsxd:set([<<"set_internal_metadata">>, <<"note">>], V, Obj);
(_, _, Obj) ->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment