class Bosh::Gen::Generators::NewReleaseGenerator

Public Class Methods

source_root() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 15
def self.source_root
  File.join(File.dirname(__FILE__), "new_release_generator", "templates")
end

Public Instance Methods

blobs_yaml() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 54
def blobs_yaml
  create_file "config/blobs.yml", YAML.dump({})
end
config_dev_yml() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 58
def config_dev_yml
  config_dev = { "dev_name" => project_name }
  create_file "config/dev.yml", YAML.dump(config_dev)
end
config_final_yml() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 96
def config_final_yml
  case blobstore_type
  when :local
    say_status "warning", "config/final.yml defaulting to local blobstore /tmp/blobstore", :yellow
    config_final = { "blobstore" => {
        "provider" => "local",
        "options" => { "blobstore_path" => '/tmp/blobstore' }
      }
    }
  when :s3
    config_final = { "blobstore" => {
        "provider" => "s3",
        "options" => {
          "bucket_name" => repository_name
        }
      }
    }
  when :swift
    config_final = { "blobstore" => {
        "provider" => "swift",
        "options" => {
          "container_name" => repository_name,
          "swift_provider" => swift_provider
        }
      }
    }
  end
  config_final["final_name"] = project_name

  create_file "config/final.yml", YAML.dump(config_final)
end
config_private_yml() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 63
def config_private_yml
  case blobstore_type
  when :local
    config_private = {
      "blobstore" => {
        "simple" => {
          "user" => "USER",
          "password" => "PASSWORD"
        }
      }
    }
  when :s3
    config_private = {
      "blobstore" => {
        "s3" => {
          "access_key_id" => settings.provider.credentials.aws_access_key_id,
          "secret_access_key" => settings.provider.credentials.aws_secret_access_key
        }
      }
    }
  # https://github.com/cloudfoundry/bosh/tree/master/blobstore_client#openstack-object-storage
  when :swift
    config_private = {
      "blobstore" => {
        "swift" => {
          settings.provider.name => settings.provider.credentials.to_hash
        }
      }
    }
  end
  create_file "config/private.yml", YAML.dump(config_private)
end
create_blobstore() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 164
def create_blobstore
  say ""
  say "Finally..."
  blobstore = Cyoi::Cli::Blobstore.new([blobstore_name, settings_dir])
  blobstore.execute!
  reload_settings!
  say ""
end
create_root() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 19
def create_root
  self.destination_root = File.expand_path(repository_path, destination_root)
  empty_directory '.'
  FileUtils.cd(destination_root) unless options[:pretend]
end
directories() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 44
def directories
  %w[jobs packages src blobs templates].each do |dir|
    directory dir
  end
end
executables() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 50
def executables
  chmod "templates/make_manifest", 0755
end
git_init() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 128
      def git_init
        create_file ".gitignore", "        config/dev.yml
        config/private.yml
        config/settings.yml
        releases/**/*.tgz
        dev_releases
        blobs/*
        .blobs
        .dev_builds
        .vagrant
        .idea
        .DS_Store
        .final_builds/jobs/**/*.tgz
        .final_builds/packages/**/*.tgz
        *.swp
        *~
        *#
        #*
        tmp
        my*.yml
".gsub(/^\s{8}/, '')
      end
license() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 36
def license
  template "LICENSE.md.tt", "LICENSE.md"
end
rakefile() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 40
def rakefile
  copy_file "Rakefile"
end
readme() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 32
def readme
  template "README.md.tt", "README.md"
end
select_provider() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 25
def select_provider
  self.settings_dir = File.expand_path("config")
  provider = Cyoi::Cli::Provider.new([settings_dir])
  provider.execute!
  reload_settings!
end
setup_git() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 152
def setup_git
  git :init
  git :add => "."
  git :commit => "-m 'Initial scaffold'"
end
show_location() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 158
def show_location
  say ""
  say "Next, change to BOSH release location:"
  say "cd #{repository_path}", :yellow
end

Private Instance Methods

author() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 272
def author
  %x`git config --get user.name`.strip
end
blobstore_name() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 182
def blobstore_name
  repository_name
end
blobstore_type() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 210
def blobstore_type
  return :s3 if s3?
  return :swift if swift?
  return :local
end
git(commands={}) click to toggle source

Run a command in git.

Examples

git :init
git :add => "this.file that.rb"
git :add => "onefile.rb", :rm => "badfile.cxx"
# File lib/bosh/gen/generators/new_release_generator.rb, line 238
def git(commands={})
  if commands.is_a?(Symbol)
    run "git #{commands}"
  else
    commands.each do |cmd, options|
      run "git #{cmd} #{options}"
    end
  end
end
job_name() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 198
def job_name
  project_name_underscored
end
project_name() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 190
def project_name
  @project_name ||= File.basename(proposed_app_path).gsub(/-(?:boshrelease|release)$/, '')
end
project_name_hyphenated() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 202
def project_name_hyphenated
  project_name.gsub(/[^A-Za-z0-9]+/, '-')
end
project_name_underscored() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 206
def project_name_underscored
  project_name.gsub(/[^A-Za-z0-9]+/, '_')
end
readwrite_aws_access_key() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 248
def readwrite_aws_access_key
  s3_credentials "readwrite_access_key", "READWRITE_AWS_ACCESS_KEY"
end
readwrite_aws_secret_access_key() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 252
def readwrite_aws_secret_access_key
  s3_credentials "readwrite_secret_access_key", "READWRITE_AWS_SECRET_ACCESS_KEY"
end
repository_name() click to toggle source

converts the base name into having -boshrelease suffix

# File lib/bosh/gen/generators/new_release_generator.rb, line 178
def repository_name
  @repository_name ||= "#{project_name}-boshrelease"
end
repository_path() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 186
def repository_path
  File.join(File.dirname(proposed_app_path), repository_name)
end
s3?() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 216
def s3?
  settings.provider.name == "aws"
end
s3_credentials(key, default) click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 256
def s3_credentials(key, default)
  @s3_credentials ||= begin
    creds = File.expand_path("~/.bosh_s3_credentials")
    if File.exist?(creds)
      YAML.load_file(creds)
    else
      {}
    end
  end
  @s3_credentials[key] || default
end
swift?() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 220
def swift?
  settings.provider.name == "openstack"
end
swift_provider() click to toggle source

github.com/cloudfoundry/bosh/tree/master/blobstore_client#openstack-swift-provider TODO: supported: hp, openstack and rackspace; How to detect this from fog?

# File lib/bosh/gen/generators/new_release_generator.rb, line 226
def swift_provider
  "openstack"
end
warden_net() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 194
def warden_net
  @warden_net ||= "10.244.#{rand(255) + 1}"
end
year() click to toggle source
# File lib/bosh/gen/generators/new_release_generator.rb, line 268
def year
  Date.today.year
end