blob: 021204ad7992bd632aee591e537e74e8bd1f5159 [file] [log] [blame]
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the License);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an AS IS BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
genrule(
name = "scratch",
outs = ["scratch.img"],
cmd = "\
fallocate -l 512M $@;\
mkfs.ext4 $@;\
tune2fs -c0 -i0 $@;\
e2label $@ SCRATCH",
)
genrule(
name = "cidata",
srcs = [
"//:src/data/startup.yaml",
"//src/cmd/provisioner:provisioner_amd64",
"//src/cmd/provisioner:provisioner_arm64",
"//src/cmd/metadata_watcher:metadata_watcher_amd64",
"//src/cmd/metadata_watcher:metadata_watcher_arm64",
],
outs = ["cidata.img"],
cmd = "\
$(location @dosfstools//:mkfs.fat) -n CIDATA -S 512 -s 8 -C $@ 131072;\
touch meta-data;\
$(location @mtools//:mcopy) -i $@ $(location //:src/data/startup.yaml) ::/user-data;\
$(location @mtools//:mcopy) -i $@ meta-data ::/meta-data;\
$(location @mtools//:mcopy) -i $@ $(location //src/cmd/provisioner:provisioner_amd64) ::/provisioner_amd64;\
$(location @mtools//:mcopy) -i $@ $(location //src/cmd/provisioner:provisioner_arm64) ::/provisioner_arm64;\
$(location @mtools//:mcopy) -i $@ $(location //src/cmd/metadata_watcher:metadata_watcher_amd64) ::/metadata_watcher_amd64;\
$(location @mtools//:mcopy) -i $@ $(location //src/cmd/metadata_watcher:metadata_watcher_arm64) ::/metadata_watcher_arm64;",
tools = [
"@dosfstools//:mkfs.fat",
"@mtools//:mcopy",
],
)
go_library(
name = "preloader",
srcs = [
"gcs.go",
"preload.go",
],
embedsrcs = [
":cidata",
":scratch"
],
importpath = "cos.googlesource.com/cos/tools.git/src/pkg/preloader",
visibility = ["//visibility:public"],
deps = [
"//src/pkg/config",
"//src/pkg/fs",
"//src/pkg/provisioner",
"//src/pkg/utils",
"@com_google_cloud_go_storage//:storage",
"@org_golang_google_api//iterator",
],
)
go_test(
name = "preloader_test",
size = "large",
srcs = [
"gcs_test.go",
"preload_test.go",
],
embed = [":preloader"],
deps = [
"//src/pkg/config",
"//src/pkg/fakes",
"//src/pkg/fs",
"//src/pkg/provisioner",
"@com_github_google_go_cmp//cmp",
"@com_github_google_go_cmp//cmp/cmpopts",
"@org_golang_google_api//compute/v1:compute",
],
)