class Serverspec::Type::OctopusDeployAccount

Constants

ACCOUNT_TYPES
AWS
AZURE

constants for account types

SSH
TOKEN
USERNAME

Public Class Methods

new(*url_and_api_key, account_name) click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 24
def initialize(*url_and_api_key, account_name)
  server_url, api_key = get_octopus_creds(url_and_api_key)

  @serverSupportsSpaces = check_supports_spaces(server_url)

  @name = "Octopus Deploy Account #{account_name}"
  @runner = Specinfra::Runner
  @accountName = account_name
  @serverUrl = server_url
  @apiKey = api_key

  if account_name.nil? or account_name == ""
    raise "'account_name' was not provided. Unable to connect to Octopus server to validate configuration."
  end
end

Public Instance Methods

account_type?(account_type_name) click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 51
def account_type?(account_type_name)
  load_resource_if_nil()
  if !ACCOUNT_TYPES.include? account_type_name
    raise("'#{account_type_name}' is not a valid account type")
  end
  return false if @account.nil?

  @account["AccountType"] == account_type_name
end
aws_account?() click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 67
def aws_account?
  return false if @account.nil?
  account_type?(AWS)
end
azure_account?() click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 61
def azure_account?
  return false if @account.nil?
  account_type?(AZURE)
  # should also have a subscription number, but Octopus manages validation on this
end
exists?() click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 40
def exists?
  load_resource_if_nil()
  (!@account.nil?) && (@account != [])
end
has_description?(account_description) click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 45
def has_description?(account_description)
  load_resource_if_nil()
  return false if @account.nil?
  @account["Description"] == account_description
end
has_property?(property_name, expected_value) click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 103
def has_property?(property_name, expected_value)
  load_resource_if_nil()
  return false if @account.nil?
  @account[property_name] == expected_value
end
has_tenanted_deployment_participation?(mode) click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 97
def has_tenanted_deployment_participation?(mode)
  load_resource_if_nil()
  return false if @machine.nil?
  @machine["TenantedDeploymentParticipation"] == mode # copied directly from tentacle
end
in_environment?(environment_name) click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 87
def in_environment?(environment_name)
  load_resource_if_nil()
  return false if @account.nil?
  url = "#{@serverUrl}/api/#{@spaceFragment}environments/all?api-key=#{@apiKey}"
  resp = Net::HTTP.get_response(URI.parse(url))
  environments = JSON.parse(resp.body)
  environment_id = environments.select {|e| e["Name"] == environment_name}.first["Id"]
  !@account["EnvironmentIds"].select {|e| e == environment_id}.empty?
end
in_space(space_name) click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 109
def in_space(space_name)
  # allows us to tag .in_space() onto the end of the resource. as in
  # describe octopus_account("account name").in_space("MyNewSpace") do
  @spaceId = get_space_id?(space_name)
  if @accountName.nil?
    raise "'account_name' was not provided. Please provide an account name and try again."
  end
  self
end
ssh_key_pair?() click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 72
def ssh_key_pair?
  return false if @account.nil?
  account_type?(SSH)
end
token?() click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 82
def token?
  return false if @account.nil?
  account_type?(TOKEN)
end
username_password?() click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 77
def username_password?
  return false if @account.nil?
  account_type?(USERNAME)
end

Private Instance Methods

get_space_id?(space_name) click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 127
def get_space_id?(space_name)
  return false if @serverSupportsSpaces.nil?
  url = "#{@serverUrl}/api/Spaces/all?api-key=#{@apiKey}"
  resp = Net::HTTP.get_response(URI.parse(url))
  spaces = JSON.parse(resp.body)
  space_id = spaces.select {|e| e["Name"] == space_name}.first["Id"]
  space_id
end
load_resource_if_nil() click to toggle source
# File lib/octopus_serverspec_extensions/type/octopus_deploy_account.rb, line 121
def load_resource_if_nil
  if @account.nil?
    @account = get_account_via_api(@serverUrl, @apiKey, @accountName)
  end
end