Class: Kitchen::Driver::Oci

Inherits:
Base
  • Object
show all
Includes:
Mixin::Actions, Mixin::Models, Mixin::Volumes
Defined in:
lib/kitchen/driver/oci.rb,
lib/kitchen/driver/oci/api.rb,
lib/kitchen/driver/oci/config.rb,
lib/kitchen/driver/oci/instance.rb,
lib/kitchen/driver/oci/validations.rb,
lib/kitchen/driver/oci/blockstorage.rb,
lib/kitchen/driver/oci/mixin/models.rb,
lib/kitchen/driver/oci/models/dbaas.rb,
lib/kitchen/driver/oci/models/iscsi.rb,
lib/kitchen/driver/oci/mixin/actions.rb,
lib/kitchen/driver/oci/mixin/volumes.rb,
lib/kitchen/driver/oci/instance/dbaas.rb,
lib/kitchen/driver/oci/mixin/ssh_keys.rb,
lib/kitchen/driver/oci/models/compute.rb,
lib/kitchen/driver/oci/instance/common.rb,
lib/kitchen/driver/oci/instance/compute.rb,
lib/kitchen/driver/oci/instance/db_home.rb,
lib/kitchen/driver/oci/instance/database.rb,
lib/kitchen/driver/oci/models/paravirtual.rb

Overview

Oracle OCI driver for Kitchen.

Author:

  • Stephen Pearson <stephen.pearson@oracle.com>

Direct Known Subclasses

Blockstorage, Instance

Defined Under Namespace

Modules: Mixin, Models Classes: Api, Blockstorage, Config, Instance

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixin::Volumes

#create_and_attach_volumes, #create_volume, #detatch_and_delete_volumes, #process_volumes

Methods included from Mixin::Models

#instance_class, #volume_class

Methods included from Mixin::Actions

#are_legacy_imds_endpoints_disbled?, #auth, #execute_post_create_file, #execute_post_create_script, #execute_post_create_string, #instance_options, #instance_options?, #launch, #reboot, #terminate

Class Method Details

.validation_error(message, driver) ⇒ Object

Execute the defined config validations

Parameters:

  • message (String)

    the message to be output to explain the validation.

  • driver (Kitchen::Driver)

    the instance of the driver.

Raises:

  • (UserError)


28
29
30
# File 'lib/kitchen/driver/oci/validations.rb', line 28

def self.validation_error(message, driver)
  raise UserError, "#{driver.class}<#{driver.instance.name}>#config#{message}"
end

Instance Method Details

#create(state) ⇒ Object

Creates an instance. (see Kitchen::Driver::Base#create)

Parameters:

  • state (Hash)

    (see Kitchen::StateFile)



109
110
111
112
113
114
115
116
117
118
119
# File 'lib/kitchen/driver/oci.rb', line 109

def create(state)
  return if state[:server_id]

  validate_config!
  oci, api = auth(__method__)
  inst = instance_class(config, state, oci, api, __method__)
  launch(state, inst)
  create_and_attach_volumes(config, state, oci, api)
  execute_post_create_script(state)
  reboot(state, inst)
end

#destroy(state) ⇒ Object

Destorys an instance. (see Kitchen::Driver::Base#destroy)

Parameters:

  • state (Hash)

    (see Kitchen::StateFile)



125
126
127
128
129
130
131
132
# File 'lib/kitchen/driver/oci.rb', line 125

def destroy(state)
  return unless state[:server_id]

  oci, api = auth(__method__)
  inst = instance_class(config, state, oci, api, __method__)
  detatch_and_delete_volumes(state, oci, api)
  terminate(state, inst)
end

#finalize_config!(instance) ⇒ Object

Coerces config values to standardized formats.

Parameters:

  • instance (Kitchen::Instance)


35
36
37
38
39
40
# File 'lib/kitchen/driver/oci/validations.rb', line 35

def finalize_config!(instance)
  super
  %i{instance_type ssh_keytype}.each do |k|
    config[k] = config[k].downcase
  end
end