Class: OracleZFS::StorageServices

Inherits:
Object
  • Object
show all
Includes:
MintLogger
Defined in:
src/oracle-zfs-client/lib/oracle-zfs/storage.rb

Properties (Read/Write)

Properties (Read Only)

Constant Summary

Constants included from MintLogger

MintLogger::DEBUG, MintLogger::ERROR, MintLogger::FATAL, MintLogger::INFO, MintLogger::UNKNOWN, MintLogger::VERBOSE, MintLogger::WARN

Instance Method Summary collapse

Methods included from MintLogger::Utils::Common

#boolean_val, #has_value?, #no_value?, #nvl, #path_as_symbol, #ruby_level_to_send

Constructor Details

#initialize(client) ⇒ StorageServices

Returns a new instance of StorageServices.

Instance Method Details

#filesystem_create(pool:, project:, filesystem:, props: {}) ⇒ Object

#filesystem_delete(pool:, project:, filesystem:) ⇒ Object

#filesystem_exists?(pool:, project:, filesystem:) ⇒ Boolean

def project_exists?(pool, project) project_exists = false response = projects_list(pool) response['projects'].each do | project | if project['name'] == project project_exists = true end end return project_exists end

Returns:

  • (Boolean)

#filesystem_get(pool:, project:, filesystem:) ⇒ Object

#filesystem_modify(pool:, project:, filesystem:, props: {}) ⇒ Object

#filesystem_snapshot_create(pool:, project:, filesystem:, snapshot:) ⇒ Object

#filesystem_snapshot_delete(pool:, project:, filesystem:, snapshot:) ⇒ Object

#filesystem_snapshot_exists?(pool:, project:, filesystem:, snapshot:) ⇒ Boolean

Returns:

  • (Boolean)

#filesystem_snapshot_get(pool:, project:, filesystem:, snapshot:) ⇒ Object

#filesystem_snapshot_rollback(pool:, project:, filesystem:, snapshot:) ⇒ Object

#filesystem_snapshot_schedule_create(pool:, project:, filesystem:, frequency: nil, day: nil, hour: nil, minute: nil, keep: 1) ⇒ Object

#filesystem_snapshot_schedule_delete(pool:, project:, filesystem:, frequency: nil, day: nil, hour: nil, minute: nil, keep: 1) ⇒ Object

#filesystem_snapshot_schedule_exists?(pool:, project:, filesystem:, frequency: nil, day: nil, hour: nil, minute: nil, keep: 1) ⇒ Boolean

Returns:

  • (Boolean)

#filesystem_snapshot_schedule_get(pool:, project:, filesystem:, frequency: nil, day: nil, hour: nil, minute: nil, keep: 1) ⇒ Object

#filesystem_snapshot_schedule_list(pool:, project:, filesystem:) ⇒ Object

#filesystem_snapshots_list(pool:, project:, filesystem:) ⇒ Object

#filesystems_list(pool:, project:) ⇒ Object

#filesystems_listallObject

#generate_schedule_payload(frequency:, day:, hour:, minute:, keep:) ⇒ Object

#pool_create(pool:, profile:, props: {}) ⇒ Object

Data Profiles mirror - Mirrored mirror3 - Tripple mirrored raidz1 - Single parity, narrow stripes raidz2 - Double parity raidz3_max - Triple parity, wide stripes stripe - Striped

#pool_delete(pool:) ⇒ Object

#pool_exists?(pool) ⇒ Boolean

Returns:

  • (Boolean)

#pool_get(pool) ⇒ Object

#pool_scrub(pool:) ⇒ Object

#pool_scrub_stop(pool:) ⇒ Object

#pools_listObject

#project_create(pool:, project:, props: {}) ⇒ Object

#project_delete(pool:, project:) ⇒ Object

#project_exists?(pool:, project:) ⇒ Boolean

Returns:

  • (Boolean)

#project_get(pool:, project:) ⇒ Object

#project_modify(pool:, project:, props: {}) ⇒ Object

#project_properties(pool:, project:) ⇒ Object

#project_snapshot_create(pool:, project:, snapshot:) ⇒ Object

#project_snapshot_delete(pool:, project:, snapshot:) ⇒ Object

#project_snapshot_exists?(pool:, project:, snapshot:) ⇒ Boolean

Snapshots

Returns:

  • (Boolean)

#project_snapshot_get(pool:, project:, snapshot:) ⇒ Object

#project_snapshot_schedule_create(pool:, project:, snapshot_schedule:, frequency:, day:, hour:, minute:, keep:) ⇒ Object

#project_snapshot_schedule_exists?(pool:, project:, frequency: nil, day: nil, hour: nil, minute: nil, keep: 1) ⇒ Boolean

Returns:

  • (Boolean)

#project_snapshot_schedule_get(pool:, project:, frequency: nil, day: nil, hour: nil, minute: nil, keep: 1) ⇒ Object

## REST API is BROKEN!!!! Payload format to be sent to API is unknown. def project_snapshot_schedule_modify(pool:, project:, snapshot_schedule:, frequency:, day:, hour:, minute:, keep:) puts "Modifying Project Snapshot Schedule [ #snapshot_schedule ] for Project [ #project ] in Pool [ #pool ] ..." if project_exists?(pool: pool, project: project) if project_snapshot_schedule_exists?(pool: pool, project: project, snapshot_schedule: snapshot_schedule, frequency: frequency, day: day, hour: hour, minute: minute, keep: keep) payload = { "automatic" => { "frequency" => "hour", "day" => "", "hour" => "", "minute" => "33", "keep" => 10 }} puts payload.to_json response = @client.http_put('/api/storage/v1/pools/' + pool + '/projects/' + project + '/automatic/automatic-001', payload.to_json) return response else puts "Project Snapshot Schedule [ #snapshot_schedule ] already exists for Project [ #project ] in Pool [ #pool ]. No Action." end else raise "Project [ #project ] in Pool [ #pool ] does not exist." end end

#project_snapshot_schedule_list(pool:, project:) ⇒ Object

#project_snapshots_list(pool:, project:) ⇒ Object

#projects_list(pool) ⇒ Object

#projects_listallObject

#snapshots_listallObject