Module: CemAcpt::Platform::Mixin::Gcp
- Defined in:
- lib/cem_acpt/platform/gcp.rb
Instance Method Summary collapse
- #gcp_credentials_file ⇒ Object
- #gcp_disk_size ⇒ Object
- #gcp_machine_type ⇒ Object
- #gcp_max_run_duration ⇒ Object
- #gcp_private_key ⇒ Object
- #gcp_project ⇒ Object
- #gcp_public_key ⇒ Object
- #gcp_region ⇒ Object
- #gcp_subnetwork ⇒ Object
- #gcp_username ⇒ Object
- #gcp_zone ⇒ Object
- #node_data ⇒ Object
- #platform_data ⇒ Object
Instance Method Details
#gcp_credentials_file ⇒ Object
52 53 54 |
# File 'lib/cem_acpt/platform/gcp.rb', line 52 def gcp_credentials_file @gcp_credentials_file ||= (@config.get('platform.credentials_file') || File.join(Dir.home, '.config', 'gcloud', 'application_default_credentials.json')) end |
#gcp_disk_size ⇒ Object
108 109 110 |
# File 'lib/cem_acpt/platform/gcp.rb', line 108 def gcp_disk_size @gcp_disk_size ||= (@config.get('node_data.disk_size') || 40) end |
#gcp_machine_type ⇒ Object
104 105 106 |
# File 'lib/cem_acpt/platform/gcp.rb', line 104 def gcp_machine_type @gcp_machine_type ||= (@config.get('node_data.machine_type') || 'e2-medium') end |
#gcp_max_run_duration ⇒ Object
112 113 114 |
# File 'lib/cem_acpt/platform/gcp.rb', line 112 def gcp_max_run_duration @gcp_max_run_duration ||= (@config.get('node_data.max_run_duration') || 3600) end |
#gcp_private_key ⇒ Object
96 97 98 |
# File 'lib/cem_acpt/platform/gcp.rb', line 96 def gcp_private_key @gcp_private_key ||= (@run_data[:private_key] || File.join(Dir.home, '.ssh', 'google_compute_engine')) end |
#gcp_project ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/cem_acpt/platform/gcp.rb', line 56 def gcp_project return @gcp_project if @gcp_project configured = @config.get('platform.project') return @gcp_project = configured if configured stdout, stderr, status = Open3.capture3('gcloud config get-value project') raise "gcloud config get-value project failed (exit #{status.exitstatus}): #{stderr.chomp}" unless status.success? @gcp_project = stdout.chomp end |
#gcp_public_key ⇒ Object
100 101 102 |
# File 'lib/cem_acpt/platform/gcp.rb', line 100 def gcp_public_key @gcp_public_key ||= (@run_data[:public_key] || File.join(Dir.home, '.ssh', 'google_compute_engine.pub')) end |
#gcp_region ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/cem_acpt/platform/gcp.rb', line 68 def gcp_region return @gcp_region if @gcp_region configured = @config.get('platform.region') return @gcp_region = configured if configured stdout, stderr, status = Open3.capture3('gcloud config get-value compute/region') raise "gcloud config get-value compute/region failed (exit #{status.exitstatus}): #{stderr.chomp}" unless status.success? @gcp_region = stdout.chomp end |
#gcp_subnetwork ⇒ Object
92 93 94 |
# File 'lib/cem_acpt/platform/gcp.rb', line 92 def gcp_subnetwork @gcp_subnetwork ||= (@config.get('platform.subnetwork') || 'default') end |
#gcp_username ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/cem_acpt/platform/gcp.rb', line 34 def gcp_username return @gcp_username if @gcp_username @gcp_username = @config.get('platform.username') return @gcp_username if @gcp_username stdout, stderr, status = Open3.capture3('gcloud auth list --format json') raise "gcloud auth list failed (exit #{status.exitstatus}): #{stderr.chomp}" unless status.success? parsed = JSON.parse(stdout) active_account = parsed.find { |account| account['status'] == 'ACTIVE' } raise 'No active account found in gcloud auth list output' unless active_account @gcp_username = active_account['account'].split('@').first rescue JSON::ParserError => e raise "Failed to parse gcloud auth output: #{e.}. stdout: #{stdout.chomp}" end |
#gcp_zone ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/cem_acpt/platform/gcp.rb', line 80 def gcp_zone return @gcp_zone if @gcp_zone configured = @config.get('platform.zone') return @gcp_zone = configured if configured stdout, stderr, status = Open3.capture3('gcloud config get-value compute/zone') raise "gcloud config get-value compute/zone failed (exit #{status.exitstatus}): #{stderr.chomp}" unless status.success? @gcp_zone = stdout.chomp end |
#node_data ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/cem_acpt/platform/gcp.rb', line 24 def node_data nd = {} nd[:machine_type] = gcp_machine_type nd[:disk_size] = gcp_disk_size nd[:max_run_duration] = gcp_max_run_duration nd[:image] = image_name if image_name nd[:test_name] = @test_data[:test_name] if @test_data&.key?(:test_name) nd end |
#platform_data ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/cem_acpt/platform/gcp.rb', line 11 def platform_data { username: gcp_username, credentials_file: gcp_credentials_file, project: gcp_project, region: gcp_region, zone: gcp_zone, subnetwork: gcp_subnetwork, private_key: gcp_private_key, public_key: gcp_public_key, } end |