Skip to content

Commit

Permalink
Structuring the Ruby SDK for API500 development
Browse files Browse the repository at this point in the history
  • Loading branch information
aalexmonteiro committed Mar 9, 2017
1 parent 2f393c0 commit 82c7cd8
Show file tree
Hide file tree
Showing 100 changed files with 1,999 additions and 7 deletions.
2 changes: 1 addition & 1 deletion .rubocop.yml
Expand Up @@ -20,7 +20,7 @@ Metrics/ModuleLength:
- 'lib/oneview-sdk/rest.rb'

Style/GlobalVars:
AllowedVariables: [$config, $secrets, $client, $client_120, $client_300, $client_300_synergy, $config_synergy, $secrets_synergy, $config_i3s, $client_i3s_300]
AllowedVariables: [$config, $secrets, $client, $client_120, $client_300, $client_300_synergy, $config_synergy, $secrets_synergy, $config_i3s, $client_i3s_300, $client_500, $client_500_synergy]

Style/IndentationWidth:
Width: 2
Expand Down
Empty file added examples/api500/c7000/.gitkeep
Empty file.
Empty file.
2 changes: 1 addition & 1 deletion lib/oneview-sdk.rb
Expand Up @@ -24,7 +24,7 @@ module OneviewSDK
env_i3s = %w(I3S_URL I3S_SSL_ENABLED)
ENV_VARS = env_sdk.concat(env_i3s).freeze

SUPPORTED_API_VERSIONS = [200, 300].freeze
SUPPORTED_API_VERSIONS = [200, 300, 500].freeze
DEFAULT_API_VERSION = 200
@api_version = DEFAULT_API_VERSION
@api_version_updated = false # Whether or not the API version has been set by the user
Expand Down
66 changes: 66 additions & 0 deletions lib/oneview-sdk/resource/api500.rb
@@ -0,0 +1,66 @@
# (c) Copyright 2017 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.

module OneviewSDK
# Module for API v500
module API500
SUPPORTED_VARIANTS = %w(C7000 Synergy).freeze
DEFAULT_VARIANT = 'C7000'.freeze
@variant = DEFAULT_VARIANT
@variant_updated = false # Whether or not the API variant has been set by the user

# Get resource class that matches the type given
# @param [String] type Name of the desired class type
# @param [String] variant Variant (C7000 or Synergy)
# @return [Class] Resource class or nil if not found
def self.resource_named(type, variant = @variant)
raise "API500 variant '#{variant}' is not supported! Try one of #{SUPPORTED_VARIANTS}" unless SUPPORTED_VARIANTS.include?(variant.to_s)
new_type = type.to_s.downcase.gsub(/[ -_]/, '')
api_module = OneviewSDK::API500.const_get(variant)
api_module.constants.each do |c|
klass = api_module.const_get(c)
next unless klass.is_a?(Class)
name = klass.name.split('::').last.downcase.delete('_').delete('-')
return klass if new_type =~ /^#{name}[s]?$/
end
nil
end

# Get the current API500 variant
def self.variant
@variant
end

# Has the API500 variant been set by the user?
# @return [TrueClass, FalseClass]
def self.variant_updated?
@variant_updated
end

# Sets the API500 variant
def self.variant=(variant)
raise "API500 variant '#{variant}' is not supported! Try one of #{SUPPORTED_VARIANTS}" unless SUPPORTED_VARIANTS.include?(variant)
@variant_updated = true
@variant = variant
end

# Helps redirect resources to the correct API500 variant
def self.const_missing(const)
api500_module = OneviewSDK::API500.const_get(@variant.to_s)
api500_module.const_get(const)
rescue NameError
raise NameError, "The #{const} method or resource does not exist for OneView API500 variant #{@variant}."
end
end
end

# Load all API500-specific resources:
Dir[File.dirname(__FILE__) + '/api500/*.rb'].each { |file| require file }
27 changes: 27 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000.rb
@@ -0,0 +1,27 @@
# (c) Copyright 2017 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.

module OneviewSDK
module API500
# Module for API500 C7000
module C7000
# Get resource class that matches the type given
# @param [String] type Name of the desired class type
# @return [Class] Resource class or nil if not found
def self.resource_named(type)
OneviewSDK::API500.resource_named(type, 'C7000')
end
end
end
end

# Load all API-specific resources:
Dir[File.dirname(__FILE__) + '/c7000/*.rb'].each { |file| require file }
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/connection_template.rb
@@ -0,0 +1,22 @@
# (c) Copyright 2017 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/c7000/connection_template'

module OneviewSDK
module API500
module C7000
# Connection template resource implementation for API500 C7000
class ConnectionTemplate < OneviewSDK::API300::C7000::ConnectionTemplate
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/datacenter.rb
@@ -0,0 +1,22 @@
# (c) Copyright 2017 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/c7000/datacenter'

module OneviewSDK
module API500
module C7000
# Datacenter resource implementation for API500 C7000
class Datacenter < OneviewSDK::API300::C7000::Datacenter
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/enclosure.rb
@@ -0,0 +1,22 @@
# (c) Copyright 2017 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/c7000/enclosure'

module OneviewSDK
module API500
module C7000
# Enclosure resource implementation for API500 C7000
class Enclosure < OneviewSDK::API300::C7000::Enclosure
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/enclosure_group.rb
@@ -0,0 +1,22 @@
# (C) Copyright 2017 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/c7000/enclosure_group'

module OneviewSDK
module API500
module C7000
# Enclosure group resource implementation on API500 C7000
class EnclosureGroup < OneviewSDK::API300::C7000::EnclosureGroup
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/ethernet_network.rb
@@ -0,0 +1,22 @@
# (C) Copyright 2017 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/c7000/ethernet_network'

module OneviewSDK
module API500
module C7000
# Ethernet network resource implementation for API500 C7000
class EthernetNetwork < OneviewSDK::API300::C7000::EthernetNetwork
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/fabric.rb
@@ -0,0 +1,22 @@
# (C) Copyright 2017 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/c7000/fabric'

module OneviewSDK
module API500
module C7000
# Fabric resource implementation for API500 C7000
class Fabric < OneviewSDK::API300::C7000::Fabric
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/fc_network.rb
@@ -0,0 +1,22 @@
# (C) Copyright 2017 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/c7000/fc_network'

module OneviewSDK
module API500
module C7000
# FC network resource implementation for API500 C7000
class FCNetwork < OneviewSDK::API300::C7000::FCNetwork
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/fcoe_network.rb
@@ -0,0 +1,22 @@
# (C) Copyright 2017 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/c7000/fcoe_network'

module OneviewSDK
module API500
module C7000
# FCoE network resource implementation for API500 C7000
class FCoENetwork < OneviewSDK::API300::C7000::FCoENetwork
end
end
end
end
21 changes: 21 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/firmware_bundle.rb
@@ -0,0 +1,21 @@
# (C) Copyright 2017 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/c7000/firmware_bundle'

module OneviewSDK
module API500
module C7000
class FirmwareBundle < OneviewSDK::API300::C7000::FirmwareBundle
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/firmware_driver.rb
@@ -0,0 +1,22 @@
# (C) Copyright 2017 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/c7000/firmware_driver'

module OneviewSDK
module API500
module C7000
# FirmwareDriver resource implementation for API500 C7000
class FirmwareDriver < OneviewSDK::API300::C7000::FirmwareDriver
end
end
end
end
22 changes: 22 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/interconnect.rb
@@ -0,0 +1,22 @@
# (C) Copyright 2017 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/c7000/interconnect'

module OneviewSDK
module API500
module C7000
# Interconnect resource implementation on API500 C7000
class Interconnect < OneviewSDK::API300::C7000::Interconnect
end
end
end
end
21 changes: 21 additions & 0 deletions lib/oneview-sdk/resource/api500/c7000/lig_uplink_set.rb
@@ -0,0 +1,21 @@
# (C) Copyright 2017 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/c7000/lig_uplink_set'

module OneviewSDK
module API500
module C7000
class LIGUplinkSet < OneviewSDK::API300::C7000::LIGUplinkSet
end
end
end
end

0 comments on commit 82c7cd8

Please sign in to comment.