Sha256: f95eb57d511f5e5b52ca300bd818557e12c56845b509dc75315dd3e448c3ef43

Contents?: true

Size: 1.15 KB

Versions: 9

Compression:

Stored size: 1.15 KB

Contents

module Terraspace::Cloud
  class Update < Base
    def create(success, stream)
      return unless Terraspace.cloud?
      return unless record?

      build(success)
      upload = cloud_upload.create(type: "update", stream_id: stream['data']['id'])
      params = {
        upload_id: upload['data']['id'],
        stack_uid: upload['data']['attributes']['stack_id'], # use stack_uid since stack_id is friendly url name
        update: stage_attrs(success),
      }
      api.create_update(params)
    end

    def build(success)
      clean_cache2_stage
      # .terraspace-cache/dev/stacks/demo
      Dir.chdir(@mod.cache_dir) do
        cache2_path = ".terraspace-cache/.cache2/update"
        FileUtils.mkdir_p(cache2_path)

        IO.write("#{cache2_path}/update.log", Terraspace::Logger.logs)
        return unless success

        sh "#{Terraspace.terraform_bin} state pull > #{cache2_path}/state.json"
        sh "#{Terraspace.terraform_bin} output -json > #{cache2_path}/output.json"
      end
    end

    def cani?(exit_on_error: true)
      return true unless Terraspace.cloud?
      api.create_update(cani: 1, exit_on_error: exit_on_error)
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
terraspace-2.2.17 lib/terraspace/cloud/update.rb
terraspace-2.2.16 lib/terraspace/cloud/update.rb
terraspace-2.2.15 lib/terraspace/cloud/update.rb
terraspace-2.2.14 lib/terraspace/cloud/update.rb
terraspace-2.2.13 lib/terraspace/cloud/update.rb
terraspace-2.2.12 lib/terraspace/cloud/update.rb
terraspace-2.2.11 lib/terraspace/cloud/update.rb
terraspace-2.2.10 lib/terraspace/cloud/update.rb
terraspace-2.2.9 lib/terraspace/cloud/update.rb