Skip to content

Commit

Permalink
Merge pull request #411 from HewlettPackard/API1600ImageStreamer_Depl…
Browse files Browse the repository at this point in the history
…oymentPlan

API1600 support for Image Streamer Deployment plan
  • Loading branch information
nabhajit-ray committed May 21, 2020
2 parents a85b823 + 86fb3fb commit 5c3b41b
Show file tree
Hide file tree
Showing 18 changed files with 244 additions and 13 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
This release extends support of the SDK to OneView REST API version 1600 (OneView v5.20).

#### Features supported
- Deployment Plan
- Enclosure
- Enclosure Group
- Ethernet Network
- FC Network
- FCOE Network
- Logical Enclosure
- OS Deployment Plan
- Server Hardware
- Server Hardware Type
- Server Profile Template
Expand Down
18 changes: 9 additions & 9 deletions endpoints-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -486,8 +486,8 @@ OneviewSDK::Datacenter.find_by(@client, width: 11000).map(&:remove)

## HPE Synergy Image Streamer

| Endpoints | Verb | V300 | V500 | V600 | V800 | V1000 | V1020 |
| --------------------------------------------------------------------------------- | ------- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: |
| Endpoints | Verb | V300 | V500 | V600 | V800 | V1000 | V1020 | V1600 |
| --------------------------------------------------------------------------------- | ------- | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: | :----------------: |
| **Artifacts Bundle** |
|<sub> /rest/artifact-bundles </sub> | GET | :white_check_mark: |
|<sub> /rest/artifact-bundles </sub> | POST(create) | :white_check_mark: |
Expand All @@ -508,13 +508,13 @@ OneviewSDK::Datacenter.find_by(@client, width: 11000).map(&:remove)
|<sub> /rest/deployment-groups</sub> | GET | :white_check_mark: |
|<sub> /rest/deployment-groups/{id}</sub> | GET | :white_check_mark: |
| **Deployment Plans** |
|<sub> /rest/deployment-plans </sub> | POST | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|<sub> /rest/deployment-plans </sub> | GET | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|<sub> /rest/deployment-plans/{id} </sub> | GET | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|<sub> /rest/deployment-plans/{id} </sub> | PUT | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|<sub> /rest/deployment-plans/{id} </sub> | DELETE | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|<sub> /rest/deployment-plans/{id}/osdp </sub> | GET | :heavy_minus_sign: | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|<sub> /rest/deployment-plans/{id}/usedby </sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|<sub> /rest/deployment-plans </sub> | POST | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |:white_check_mark: |
|<sub> /rest/deployment-plans </sub> | GET | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |:white_check_mark: |
|<sub> /rest/deployment-plans/{id} </sub> | GET | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |:white_check_mark: |
|<sub> /rest/deployment-plans/{id} </sub> | PUT | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |:white_check_mark: |
|<sub> /rest/deployment-plans/{id} </sub> | DELETE | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |:white_check_mark: |
|<sub> /rest/deployment-plans/{id}/osdp </sub> | GET | :heavy_minus_sign: | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |:white_check_mark: |
|<sub> /rest/deployment-plans/{id}/usedby </sub> | GET | :heavy_minus_sign: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |:white_check_mark: |
| **Golden Images** |
|<sub> /rest/golden-images</sub> | POST(create) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|<sub> /rest/golden-images</sub> | POST(upload) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Expand Down
39 changes: 39 additions & 0 deletions lib/oneview-sdk/image-streamer/resource/api1600.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# (c) Copyright 2020 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

require_relative '../../resource'

module OneviewSDK
# Module Image Streamer
module ImageStreamer
# Module API 1600
module API1600
# Get resource class that matches the type given
# @param [String] type Name of the desired class type
# @param [String] variant There is only 1 variant for this module, so this is not used.
# It exists only so that the parameters match API modules that do have multiple variants.
# @return [Class] Resource class or nil if not found
def self.resource_named(type, _variant = nil)
new_type = type.to_s.downcase.gsub(/[ -_]/, '')
constants.each do |c|
klass = const_get(c)
next unless klass.is_a?(Class) && klass < OneviewSDK::Resource
name = klass.name.split('::').last.downcase.delete('_').delete('-')
return klass if new_type =~ /^#{name}[s]?$/
end
nil
end
end
end
end

# Load all API-specific resources:
Dir[File.dirname(__FILE__) + '/api1600/*.rb'].each { |file| require file }
22 changes: 22 additions & 0 deletions lib/oneview-sdk/image-streamer/resource/api1600/build_plan.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

require_relative '../api1020/build_plan'

module OneviewSDK
module ImageStreamer
module API1600
# Build Plan resource implementation for Image Streamer
class BuildPlan < OneviewSDK::ImageStreamer::API1020::BuildPlan
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/image-streamer/resource/api1600/deployment_plan.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

require_relative '../api1020/deployment_plan'

module OneviewSDK
module ImageStreamer
module API1600
# Deployment Plan resource implementation for Image Streamer
class DeploymentPlan < OneviewSDK::ImageStreamer::API1020::DeploymentPlan
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/image-streamer/resource/api1600/golden_image.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

require_relative '../api1020/golden_image'

module OneviewSDK
module ImageStreamer
module API1600
# Golden Image resource implementation for Image Streamer
class GoldenImage < OneviewSDK::ImageStreamer::API1020::GoldenImage
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/image-streamer/resource/api1600/os_volume.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

require_relative '../api1020/os_volume'

module OneviewSDK
module ImageStreamer
module API1600
# OS Volume resource implementation for Image Streamer
class OSVolume < OneviewSDK::ImageStreamer::API1020::OSVolume
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/image-streamer/resource/api1600/plan_script.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

require_relative '../api1020/plan_script'

module OneviewSDK
module ImageStreamer
module API1600
# Plan Script resource implementation for Image Streamer
class PlanScript < OneviewSDK::ImageStreamer::API1020::PlanScript
end
end
end
end
2 changes: 1 addition & 1 deletion lib/oneview-sdk/image_streamer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
module OneviewSDK
# Module for interacting with the Image Streamer
module ImageStreamer
SUPPORTED_API_VERSIONS = [300, 500, 600, 800, 1000, 1020].freeze
SUPPORTED_API_VERSIONS = [300, 500, 600, 800, 1000, 1020, 1600].freeze
DEFAULT_API_VERSION = 300
@api_version = DEFAULT_API_VERSION
@api_version_updated = false # Whether or not the API version has been set by the user
Expand Down
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api1600/synergy/os_deployment_plan.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
#
# Licensed under the Apache License, Version 2.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.

require_relative '../../api300/synergy/os_deployment_plan'

module OneviewSDK
module API1600
module Synergy
# Network set resource implementation for API1600 Synergy
class OSDeploymentPlan < OneviewSDK::API300::Synergy::OSDeploymentPlan
end
end
end
end
2 changes: 1 addition & 1 deletion spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@
# Mock appliance version and login api requests, as well as loading trusted certs
allow_any_instance_of(OneviewSDK::Client).to receive(:appliance_api_version).and_return(1600)
allow_any_instance_of(OneviewSDK::Client).to receive(:login).and_return('secretToken')
allow_any_instance_of(OneviewSDK::ImageStreamer::Client).to receive(:appliance_i3s_api_version).and_return(1020)
allow_any_instance_of(OneviewSDK::ImageStreamer::Client).to receive(:appliance_i3s_api_version).and_return(1600)
allow(OneviewSDK::SSLHelper).to receive(:load_trusted_certs).and_return(nil)
end

Expand Down
4 changes: 2 additions & 2 deletions spec/unit/image-streamer/client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,11 @@
end

it 'warns if the api level is greater than the appliance api version' do
options = { url: 'https://oneview.example.com', token: 'token123', api_version: 1400 }
options = { url: 'https://oneview.example.com', token: 'token123', api_version: 1800 }
client = nil
expect { client = OneviewSDK::ImageStreamer::Client.new(options) }
.to output(/is greater than the Image Streamer API version/).to_stdout_from_any_process
expect(client.api_version).to eq(1400)
expect(client.api_version).to eq(1800)
end

it 'sets @print_wait_dots to false by default' do
Expand Down
9 changes: 9 additions & 0 deletions spec/unit/image-streamer/resource/api1600/build_plan_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
require 'spec_helper'

klass = OneviewSDK::ImageStreamer::API1600::BuildPlan
RSpec.describe klass do
include_context 'shared context'
it 'inherits from API1020' do
expect(described_class).to be < OneviewSDK::ImageStreamer::API1020::BuildPlan
end
end
10 changes: 10 additions & 0 deletions spec/unit/image-streamer/resource/api1600/deployment_plan_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require 'spec_helper'

klass = OneviewSDK::ImageStreamer::API1600::DeploymentPlan
RSpec.describe klass do
include_context 'shared context'

it 'inherits from API1020' do
expect(described_class).to be < OneviewSDK::ImageStreamer::API1020::DeploymentPlan
end
end
10 changes: 10 additions & 0 deletions spec/unit/image-streamer/resource/api1600/golden_image_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require 'spec_helper'

klass = OneviewSDK::ImageStreamer::API1600::GoldenImage
RSpec.describe klass do
include_context 'shared context'

it 'inherits from API1020' do
expect(described_class).to be < OneviewSDK::ImageStreamer::API1020::GoldenImage
end
end
10 changes: 10 additions & 0 deletions spec/unit/image-streamer/resource/api1600/os_volume_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require 'spec_helper'

klass = OneviewSDK::ImageStreamer::API1600::OSVolume
RSpec.describe klass do
include_context 'shared context'

it 'inherits from API1020' do
expect(described_class).to be < OneviewSDK::ImageStreamer::API1020::OSVolume
end
end
10 changes: 10 additions & 0 deletions spec/unit/image-streamer/resource/api1600/plan_script_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
require 'spec_helper'

klass = OneviewSDK::ImageStreamer::API1600::PlanScript
RSpec.describe klass do
include_context 'shared context'

it 'inherits from AP1020' do
expect(described_class).to be < OneviewSDK::ImageStreamer::API1020::PlanScript
end
end
9 changes: 9 additions & 0 deletions spec/unit/image-streamer/resource/api1600_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
require 'spec_helper'

RSpec.describe OneviewSDK::ImageStreamer::API1600 do
describe '#resource_named' do
it 'gets the correct resource class' do
expect(described_class.resource_named('PlanScript')).to eq(described_class::PlanScript)
end
end
end

0 comments on commit 5c3b41b

Please sign in to comment.