@grucloud/provider-google
Version:
The GruCloud Google Cloud Platform provider
55 lines (49 loc) • 1.48 kB
JavaScript
const assert = require("assert");
const { get, pipe, eq, map, tap } = require("rubico");
const { defaultsDeep, find } = require("rubico/x");
const GoogleClient = require("../../GoogleClient");
const { GCP_COMPUTE_BASE_URL } = require("./GcpComputeCommon");
const { getField } = require("@grucloud/core/ProviderCommon");
// https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps
exports.GcpUrlMap = ({ spec, config }) => {
assert(spec);
assert(config);
const { projectId, managedByDescription, providerName } = config;
const configDefault = ({ name, properties, dependencies }) => {
const { service } = dependencies;
return defaultsDeep({
name,
description: managedByDescription,
defaultService: getField(service, "selfLink"),
})(properties);
};
const findDependencies = ({ live, lives }) => [
{
type: "BackendBucket",
group: "compute",
ids: pipe([
() => live,
get("defaultService"),
(defaultService) => [
pipe([
lives.getByType({
type: "BackendBucket",
group: "compute",
providerName,
}),
find(eq(get("live.selfLink"), defaultService)),
get("id"),
])(),
],
])(),
},
];
return GoogleClient({
spec,
baseURL: GCP_COMPUTE_BASE_URL,
url: `/projects/${projectId}/global/urlMaps`,
config,
configDefault,
findDependencies,
});
};