Skip to content

Instantly share code, notes, and snippets.

@mbaldessari
Created December 13, 2024 14:07
Show Gist options
  • Save mbaldessari/b34e5b6399e3b128bd71f591f59ca18c to your computer and use it in GitHub Desktop.
Save mbaldessari/b34e5b6399e3b128bd71f591f59ca18c to your computer and use it in GitHub Desktop.
cat >Makefile<<EOF
all:
ruby test.rb metadata.yaml sizing-template.adoc.erb
EOF
cat >metadata.yaml<<EOF
version: 1.0
pattern: industrial-edge
repo_url: https://github.com/validatedpatterns/industrial-edge
docs_repo_url: https://github.com/validatedpatterns/docs
# optional - This is only needed if the content/patterns folder in the docs does not use the ${pattern} folder name
# docs_folder: content/pattern/industrial-edge
issues_url: https://github.com/validatedpatterns/industrial-edge/issues
docs_url: https://validatedpatterns.io/patterns/industrial-edge/
ci_url: https://validatedpatterns.io/ci/?pattern=industrialedge
tier: tested
owners: mbaldessari, darkdoc
requirements:
compute:
platform:
gcp:
replicas: 5
type: n1-standard-16
azure:
replicas: 5
type: Standard_D16s_v5
aws:
replicas: 3
type: m5.4xlarge
controlPlane:
platform:
gcp:
replicas: 3
type: n1-standard-16
azure:
replicas: 3
type: Standard_D16s_v3
aws:
replicas: 3
type: m5.4xlarge
external_requirements:
# external quay, s3 bucket, agof tokens to access paywalled material, manifests, rag-llm hw (only selected regions)
EOF
cat >sizing-template.adoc.erb<<EOF
** Compute **
<% requirements['compute']['platform'].each do |key, value| %>
* *<%= key %>* - <%= requirements['compute']['platform'][key]['replicas'] %> - <%= requirements['compute']['platform'][key]['type'] %>
<% end %>
** Control Plane **
<% requirements['controlPlane']['platform'].each do |key, value| %>
* *<%= key %>* - <%= requirements['controlPlane']['platform'][key]['replicas'] %> - <%= requirements['controlPlane']['platform'][key]['type'] %>
<% end %>
EOF
cat >test.rb<<EOF
require 'erb'
require 'yaml'
begin
metadata = YAML.load_file(ARGV[0])
rescue Errno::ENOENT
puts "Error: #{ARGV[1]} not found"
exit(1)
rescue Psych::SyntaxError => e
puts "YAML syntax error: #{e.message}"
exit(1)
end
begin
template = File.read(ARGV[1])
rescue => e
puts "Error: #{e.message}"
exit(1)
end
requirements = metadata['requirements']
renderer = ERB.new(template)
output = renderer.result(binding)
puts output
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment