Class: Bosh::Cli::Release
Overview
This class encapsulates the details of handling dev and final releases: also it partitions release metadata between final config (which is under version control) and user dev config.
Instance Attribute Summary collapse
-
#dir ⇒ Object
readonly
Returns the value of attribute dir.
Instance Method Summary collapse
-
#blobstore ⇒ Bosh::Blobstore::Client
Picks blobstore client to use with current release.
- #has_blobstore_secret? ⇒ Boolean
-
#has_legacy_secret? ⇒ Boolean
Check if the deprecated blobstore secret is provided in the private config file.
-
#initialize(dir) ⇒ Release
constructor
A new instance of Release.
- #save_config ⇒ Object
Constructor Details
#initialize(dir) ⇒ Release
Returns a new instance of Release.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/cli/release.rb', line 10 def initialize(dir) @dir = dir config_dir = File.join(dir, "config") @final_config_file = File.join(config_dir, "final.yml") @dev_config_file = File.join(config_dir, "dev.yml") @private_config_file = File.join(config_dir, "private.yml") unless File.directory?(dir) err("Cannot find release directory `#{dir}'") end unless File.directory?(config_dir) err("Cannot find release config directory `#{config_dir}'") end @final_config = load_config(@final_config_file) @dev_config = load_config(@dev_config_file) @private_config = load_config(@private_config_file) migrate_legacy_configs end |
Instance Attribute Details
#dir ⇒ Object (readonly)
Returns the value of attribute dir.
8 9 10 |
# File 'lib/cli/release.rb', line 8 def dir @dir end |
Instance Method Details
#blobstore ⇒ Bosh::Blobstore::Client
Picks blobstore client to use with current release.
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/cli/release.rb', line 97 def blobstore return @blobstore if @blobstore blobstore_config = Marshal.load(Marshal.dump(@final_config["blobstore"])) if blobstore_config.nil? err("Missing blobstore configuration, please update your release") end provider = blobstore_config["provider"] = blobstore_config["options"] || {} deprecate_blobstore_secret if has_legacy_secret? = merge_private_data(provider, ) opts = Bosh::Common.symbolize_keys() @blobstore = Bosh::Blobstore::Client.safe_create(provider, opts) rescue Bosh::Blobstore::BlobstoreError => e err("Cannot initialize blobstore: #{e}") end |
#has_blobstore_secret? ⇒ Boolean
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/cli/release.rb', line 62 def has_blobstore_secret? bs = @private_config["blobstore"] # Add special handling for local blobstore which should not need need credentials provider = @final_config['blobstore']['provider'] return true if provider == 'local' has_legacy_secret? || has_blobstore_secrets?(bs, "atmos", "secret") || has_blobstore_secrets?(bs, "simple", "user", "password") || has_blobstore_secrets?(bs, "swift", "rackspace") || has_blobstore_secrets?(bs, "swift", "hp") || has_blobstore_secrets?(bs, "swift", "openstack") || has_blobstore_secrets?(bs, "s3", "access_key_id", "secret_access_key") end |
#has_legacy_secret? ⇒ Boolean
Check if the deprecated blobstore secret is provided in the private config file
58 59 60 |
# File 'lib/cli/release.rb', line 58 def has_legacy_secret? @private_config.has_key?("blobstore_secret") end |
#save_config ⇒ Object
119 120 121 122 |
# File 'lib/cli/release.rb', line 119 def save_config write_yaml(@dev_config_file, @dev_config) write_yaml(@final_config_file, @final_config) end |