class Fog::OracleCloud::SOA::Instance

Public Instance Methods

admin_password=(value) click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 77
def admin_password=(value)
  if !(value[0] =~ /[[:alpha:]]/) or value.size < 8 or value.size > 30 or !(value =~ /[_#$]/) or !(value =~ /[0-9]/)
    raise ArgumentError, "Invalid admin password. Password must be between 8 and 30 characters in length; must start with a letter and can only contain letters, numbers and $, \#, _"
  else
    attributes[:admin_password] = value
  end
end
destroy(dba_name, dba_password) click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 102
def destroy(dba_name, dba_password)
  requires :service_name
  service.delete_instance(service_name, dba_name, dba_password, 
                                    :force_delete => force_delete,
                                    :skip_backup => skip_backup).body
end
job_status() click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 109
def job_status
  requires :creation_job_id
  service.get_job_status('create', creation_job_id)
end
num_nodes=(value) click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 60
def num_nodes=(value)
  if value.nil? then value = 1 end
  if [1, 2, 4].include? value.to_i then
    attributes[:num_nodes] = value.to_i
  else
    raise ArgumentError, "Invalid server count (#{value}). Valid values - 1, 2 or 4"
  end
end
ready?() click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 90
def ready?
  status == "Running"
end
save() click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 85
def save
  #identity ? update : create
  create
end
service_name=(value) click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 44
def service_name=(value)
  if value.include? '_' or !(value[0] =~ /[[:alpha:]]/) or value.size > 50 or !(value[/[a-zA-Z0-9-]+/]  == value)
    raise ArgumentError, "Invalid service name. Names must be less than 50 characters; must start with a letter and can only contain letters, numbers and hyphens (-); can not end with a hyphen"
  else
    attributes[:service_name] = value
  end
end
shape=(value) click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 69
def shape=(value)
  if %w( oc1m oc2m oc3m oc4m oc5m).include? value then
    attributes[:shape]=value
  else
    raise ArgumentError, "Invalid Shape. Valid values - oc1m, oc2m, oc3m, oc4m or oc5m"
  end
end
stopped?() click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 98
def stopped?
  status == 'Stopped'
end
stopping?() click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 94
def stopping?
  status == 'Maintenance' || status == 'Terminating'
end
topology=(value) click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 52
def topology=(value)
  if %w(osb soa soaosb b2b mft apim insight).include? value then
    attributes[:topology]=value
  else
    raise ArgumentError, "Invalid topology. Valid values - osb, soa, soaosb, b2b, mft, apim, insight"
  end
end

Private Instance Methods

create() click to toggle source
# File lib/fog/oraclecloud/models/soa/instance.rb, line 116
def create
  requires :service_name, :dba_name, :dba_password, :db_service_name, :shape, :version, :ssh_key, :admin_password, :admin_username, :topology

  stor_user = cloud_storage_user || service.username
  stor_pwd = cloud_storage_pwd || service.password

  if cloud_storage_container.nil? then
    cloud_storage_container = "#{service_name}_Backup"
    begin
      container = Fog::Storage[:oraclecloud].containers.get(cloud_storage_container)
    rescue Excon::Error::NotFound => error
      # Doesn't exist, create it first
      # The Oracle Cloud currently doesn't create a storage container for us, if it doesn't exist. Do it manually now
      container = Fog::Storage[:oraclecloud].containers.create(
        :name     => cloud_storage_container,
      )
    end
  end

  params = {            
    :serviceName => service_name,
    :cloudStorageContainer => cloud_storage_container,
    :cloudStoragePassword => stor_pwd,
    :cloudStorageUser => stor_user,
    :description => description,
    :provisionOTD => provision_otd.nil? ? false : provision_otd,
    :subscriptionType => 'MONTHLY',
    :level => 'PAAS',
    :topology => topology
  }
  options = {
    :adminPassword => admin_password,
    :adminUserName => admin_username,
    :dbaName => dba_name,
    :dbaPassword => dba_password,
    :dbServiceName => db_service_name,
    :managedServerCount => num_nodes || 1,
    :shape => shape,
    :VMsPublicKey => ssh_key,
    :version => version
  }

  data = service.create_instance(params, options)
end