class OneviewSDK::ImageStreamer::API300::ArtifactBundle

Artifacts Bundle resource implementation for Image Streamer

Constants

ACCEPTED_FORMATS
BACKUPS_ARCHIVE_URI
BACKUPS_URI
BASE_URI

Public Class Methods

create_backup(client, deployment_group) click to toggle source

Creates a backup bundle with all the artifacts present on the appliance. @param [OneviewSDK::ImageStreamer::Client] client The client object for the Image Streamer appliance @param [DeploymentGroup] deployment_group The DeploymentGroup with name or uri @return [Hash] The result hash with DeploymentGroup data

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 68
def self.create_backup(client, deployment_group)
  ensure_resource!(deployment_group)
  response = client.rest_post(BACKUPS_URI, 'body' => { 'deploymentGroupURI' => deployment_group['uri'] })
  client.response_handler(response)
end
create_backup_from_file!(client, deployment_group, file_path, artifact_name = nil, timeout = OneviewSDK::Rest::READ_TIMEOUT) click to toggle source

Creates a backup bundle from the zip file and extract all the artifacts present in the uploaded file

If there are any artifacts existing, they will be removed before the extract operation.

@param [OneviewSDK::ImageStreamer::Client] client The client object for the Image Streamer appliance @param [String] file_path The file path with file extension @param [String] artifact_name The name for the artifact that will be created. Default is the file name. @param [Integer] timeout The number of seconds to wait for completing the request. Default is 300. @return [Hash] The result hash with DeploymentGroup data

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 81
def self.create_backup_from_file!(client, deployment_group, file_path, artifact_name = nil, timeout = OneviewSDK::Rest::READ_TIMEOUT)
  ensure_resource!(deployment_group)
  ensure_file_path_extension!(file_path)

  file_name = if artifact_name && !artifact_name.empty?
                artifact_name + File.extname(file_path)
              else
                File.basename(file_path)
              end

  params = { 'deploymentGrpUri' => deployment_group['uri'] }
  client.upload_file(file_path, BACKUPS_ARCHIVE_URI, { 'file_name' => file_name, 'body' => params }, timeout)
end
create_from_file(client, file_path, artifact_name, timeout = OneviewSDK::Rest::READ_TIMEOUT) click to toggle source

Creates an artifact bundle resource from the file that is uploaded from admin's local drive @param [OneviewSDK::ImageStreamer::Client] client The client object for the Image Streamer appliance @param [String] file_path The file path with file extension @param [String] artifact_name The name for the artifact that will be created @param [Integer] timeout The number of seconds to wait for completing the request. Default is 300. @return [OneviewSDK::ImageStreamer::API300::ArtifactBundle] if the upload was successful, return a ArtifactBundle object

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 43
def self.create_from_file(client, file_path, artifact_name, timeout = OneviewSDK::Rest::READ_TIMEOUT)
  ensure_file_path_extension!(file_path)

  file_name = artifact_name.dup
  if file_name && !file_name.empty?
    file_name += File.extname(file_path)
  else
    file_name = File.basename(file_path)
  end

  body = client.upload_file(file_path, BASE_URI, { 'file_name' => file_name }, timeout)
  ArtifactBundle.new(client, body)
end
download_backup(client, local_drive_path, bundle_backup) click to toggle source

Download the backup bundle @param [OneviewSDK::ImageStreamer::Client] client The client object for the Image Streamer appliance @param [String] local_drive_path The path where file will be saved @param [ArtifactBundle] bundle_backup The backup ArtifactBundle with 'downloadURI' @return [Boolean] true if backup was downloaded

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 100
def self.download_backup(client, local_drive_path, bundle_backup)
  raise IncompleteResource, "Missing required attribute 'downloadURI'" unless bundle_backup['downloadURI']
  client.download_file(bundle_backup['downloadURI'], local_drive_path)
end
ensure_file_path_extension!(file_path) click to toggle source

Fail unless file extension of file_path is in ACCEPTED_FORMATS array

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 196
def self.ensure_file_path_extension!(file_path)
  raise InvalidFormat, "File extension should be #{ACCEPTED_FORMATS}" unless ACCEPTED_FORMATS.include?(File.extname(file_path))
end
ensure_resource!(resource) click to toggle source

Fail unless resource can be retrieved

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 191
def self.ensure_resource!(resource)
  raise IncompleteResource, "The resource #{resource.class} can not be retrieved. Ensure it can be retrieved." unless resource.retrieve!
end
extract_backup(client, deployment_group, bundle_backup) click to toggle source

Extracts the existing backup bundle on the appliance and creates all the artifacts.

If there are any artifacts existing, they will be removed before the extract operation.

@param [DeploymentGroup] deployment_group The DeploymentGroup with 'name' or 'uri' @param [ArtifactBundle] bundle_backup The backup ArtifactBundle with 'uri' @return [Boolean] true if backup bundle was extracted @raise [OneviewSDK::IncompleteResource] if the client or uri is not set

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 111
def self.extract_backup(client, deployment_group, bundle_backup)
  ensure_resource!(deployment_group)
  raise IncompleteResource, "Missing required attribute 'uri' of backup bundle" unless bundle_backup['uri']
  id = bundle_backup['uri'].split('/').last
  response = client.rest_put("#{BACKUPS_URI}/#{id}", 'body' => { 'deploymentGroupURI' => deployment_group['uri'] })
  client.response_handler(response)
  true
end
get_backups(client) click to toggle source

Gets the backup bundles created @param [OneviewSDK::ImageStreamer::Client] client The client object for the Image Streamer appliance @return [Array<ArtifactBundle>] Array of ArtifactBundle

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 60
def self.get_backups(client)
  find_by(client, {}, BACKUPS_URI)
end
new(client, params = {}, api_ver = nil) click to toggle source

Create a resource object, associate it with a client, and set its properties. @param [OneviewSDK::ImageStreamer::Client] client The client object for the Image Streamer appliance @param [Hash] params The options for this resource (key-value pairs) @param [Integer] api_ver The api version to use when interracting with this resource.

Calls superclass method
# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 29
def initialize(client, params = {}, api_ver = nil)
  super
  @data['buildPlans']      ||= []
  @data['planScripts']     ||= []
  @data['deploymentPlans'] ||= []
  @data['goldenImages']    ||= []
end

Public Instance Methods

add_build_plan(resource, read_only = true) click to toggle source

Add a Build Plan to this ArtifactBundle @param [OneviewSDK::ImageStreamer::API300::BuildPlan] resource The BuildPlan resource with uri @param [TrueClass, FalseClass] read_only Indicates whether the BuildPlan will be readonly in artifact bundle package @raise [RuntimeError] if the BuildPlan uri is not set or it is not valid

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 162
def add_build_plan(resource, read_only = true)
  add_resource(resource, 'buildPlans', read_only)
end
add_deployment_plan(resource, read_only = true) click to toggle source

Add a Deployment Plan to this ArtifactBundle @param [OneviewSDK::ImageStreamer::API300::DeploymentPlans] resource The DeploymentPlans resource with uri @param [TrueClass, FalseClass] read_only Indicates whether the DeploymentPlans will be readonly in artifact bundle package @raise [RuntimeError] if the DeploymentPlans uri is not set or it is not valid

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 178
def add_deployment_plan(resource, read_only = true)
  add_resource(resource, 'deploymentPlans', read_only)
end
add_golden_image(resource, read_only = true) click to toggle source

Add a Golden Image to this ArtifactBundle @param [OneviewSDK::ImageStreamer::API300::GoldenImage] resource The GoldenImage resource with uri @param [TrueClass, FalseClass] read_only Indicates whether the GoldenImage will be readonly in artifact bundle package @raise [RuntimeError] if the GoldenImage uri is not set or it is not valid

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 186
def add_golden_image(resource, read_only = true)
  add_resource(resource, 'goldenImages', read_only)
end
add_plan_script(resource, read_only = true) click to toggle source

Add a Plan Script to this ArtifactBundle @param [OneviewSDK::ImageStreamer::API300::PlanScript] resource The PlanScripts resource with uri @param [TrueClass, FalseClass] read_only Indicates whether the PlanScripts will be readonly in artifact bundle package @raise [RuntimeError] if the PlanScripts uri is not set or it is not valid

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 170
def add_plan_script(resource, read_only = true)
  add_resource(resource, 'planScripts', read_only)
end
download(local_drive_path) click to toggle source

Downloads the content of the selected artifact bundle to the admin's local drive. @param [String] local_drive_path Path to save file downloaded @return [Boolean] true if the file was downloaded

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 153
def download(local_drive_path)
  raise IncompleteResource, "Missing required attribute 'downloadURI'" unless @data['downloadURI']
  client.download_file(@data['downloadURI'], local_drive_path)
end
extract(force = true) click to toggle source

Extracts the artifact bundle and creates the artifacts on the appliance @param [Boolean] force Forces the extract operation even when there are any conflicts @return [Boolean] true if artifact bundle was extracted @raise [OneviewSDK::IncompleteResource] if the client or uri is not set

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 142
def extract(force = true)
  ensure_uri
  options = { 'Content-Type' => 'text/plain' }
  response = @client.rest_put(@data['uri'] + "?extract=true&forceImport=#{force}", options)
  @client.response_handler(response)
  true
end
update(*) click to toggle source

Method is not available @raise [OneviewSDK::MethodUnavailable] method is not available

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 122
def update(*)
  unavailable_method
end
update_name(new_name) click to toggle source

Update the name of Artifact Bundle @param [String] new_name Name to update the Artifact Bundle @return [Boolean] true if name was updated @raise [OneviewSDK::IncompleteResource] if the client or uri is not set

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 130
def update_name(new_name)
  ensure_uri
  response = @client.rest_put(@data['uri'], 'body' => { 'name' => new_name, 'type' => 'ArtifactsBundle' })
  @client.response_handler(response)
  @data['name'] = new_name
  true
end

Private Instance Methods

add_resource(resource, key_name, read_only) click to toggle source

Add resource data to data hash @param [OneviewSDK::Resource] resource The resource with uri @param [String] key_name The hash key of data hash @param [TrueClass, FalseClass] read_only The value of readOnly attribute

# File lib/oneview-sdk/image-streamer/resource/api300/artifact_bundle.rb, line 206
def add_resource(resource, key_name, read_only)
  self.class.ensure_resource!(resource)
  @data[key_name] << { 'resourceUri' => resource['uri'], 'readOnly' => read_only }
end