Class: OracleZFS::StorageServices
- Inherits:
-
Object
- Object
- OracleZFS::StorageServices
- 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
- #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.
- #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
- #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
- #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_listall ⇒ Object
- #generate_schedule_payload(frequency:, day:, hour:, minute:, keep:) ⇒ Object
-
#initialize(client) ⇒ StorageServices
constructor
A new instance of StorageServices.
-
#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
- #pool_get(pool) ⇒ Object
- #pool_scrub(pool:) ⇒ Object
- #pool_scrub_stop(pool:) ⇒ Object
- #pools_list ⇒ Object
- #project_create(pool:, project:, props: {}) ⇒ Object
- #project_delete(pool:, project:) ⇒ Object
- #project_exists?(pool:, project:) ⇒ 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.
- #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
-
#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.
- #project_snapshot_schedule_list(pool:, project:) ⇒ Object
- #project_snapshots_list(pool:, project:) ⇒ Object
- #projects_list(pool) ⇒ Object
- #projects_listall ⇒ Object
- #snapshots_listall ⇒ Object
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
#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
#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
#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_listall ⇒ Object
#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
#pool_get(pool) ⇒ Object
#pool_scrub(pool:) ⇒ Object
#pool_scrub_stop(pool:) ⇒ Object
#pools_list ⇒ Object
#project_create(pool:, project:, props: {}) ⇒ Object
#project_delete(pool:, project:) ⇒ Object
#project_exists?(pool:, project:) ⇒ 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
#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
#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