lib/ohai/mixin/alibaba_metadata.rb in ohai-18.1.18 vs lib/ohai/mixin/alibaba_metadata.rb in ohai-19.0.3
- old
+ new
@@ -1,83 +1,83 @@
-# frozen_string_literal: true
-#
-# Author:: Tim Smith (<tsmith@chef.io>)
-# Copyright:: Copyright (c) Chef Software Inc.
-# License:: Apache License, Version 2.0
-#
-# 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 "net/http" unless defined?(Net::HTTP)
-
-require_relative "../mixin/json_helper"
-include Ohai::Mixin::JsonHelper
-
-module Ohai
- module Mixin
- #
- # This code parses the Alibaba Instance Metadata API to provide details
- # of the running instance.
- #
- # Note: As of 2021-02-07 there is only one API release so we're not implementing
- # logic like the ec2 or azure mixins where we have to find the latest supported
- # release
- module AlibabaMetadata
-
- ALI_METADATA_ADDR ||= "100.100.100.200"
-
- def http_get(uri)
- conn = Net::HTTP.start(ALI_METADATA_ADDR)
- conn.read_timeout = 6
- conn.keep_alive_timeout = 6
- conn.get("/2016-01-01/#{uri}", { "User-Agent" => "chef-ohai/#{Ohai::VERSION}" })
- end
-
- def fetch_metadata(id = "", is_directory = true)
- response = http_get(id)
- if response.code == "200"
-
- if !is_directory
- json_data = parse_json(response.body)
- if json_data.nil?
- response.body
- else
- json_data
- end
- elsif is_directory
- temp = {}
- response.body.split("\n").each do |sub_attr|
- if "#{id}/#{sub_attr}" != "/user-data"
- uri = id == "" ? "#{id}#{sub_attr}/" : "#{id}#{sub_attr}"
- temp[sanitize_key(sub_attr).gsub(/_$/, "")] = fetch_metadata(uri, has_trailing_slash?(uri))
- end
- end
- temp
- end
- else
- logger.warn("Mixin AlibabaMetadata: Received response code #{response.code} requesting metadata for id='#{id}'")
- nil
- end
- end
-
- # @param data [String]
- #
- # @return [Boolean] is there a trailing /?
- def has_trailing_slash?(data)
- !!(data =~ %r{/$})
- end
-
- def sanitize_key(key)
- key.gsub(%r{\-|/}, "_")
- end
- end
- end
-end
+# frozen_string_literal: true
+#
+# Author:: Tim Smith (<tsmith@chef.io>)
+# Copyright:: Copyright (c) Chef Software Inc.
+# License:: Apache License, Version 2.0
+#
+# 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 "net/http" unless defined?(Net::HTTP)
+
+require_relative "../mixin/json_helper"
+include Ohai::Mixin::JsonHelper
+
+module Ohai
+ module Mixin
+ #
+ # This code parses the Alibaba Instance Metadata API to provide details
+ # of the running instance.
+ #
+ # Note: As of 2021-02-07 there is only one API release so we're not implementing
+ # logic like the ec2 or azure mixins where we have to find the latest supported
+ # release
+ module AlibabaMetadata
+
+ ALI_METADATA_ADDR ||= "100.100.100.200"
+
+ def http_get(uri)
+ conn = Net::HTTP.start(ALI_METADATA_ADDR)
+ conn.read_timeout = 6
+ conn.keep_alive_timeout = 6
+ conn.get("/2016-01-01/#{uri}", { "User-Agent" => "chef-ohai/#{Ohai::VERSION}" })
+ end
+
+ def fetch_metadata(id = "", is_directory = true)
+ response = http_get(id)
+ if response.code == "200"
+
+ if !is_directory
+ json_data = parse_json(response.body)
+ if json_data.nil?
+ response.body
+ else
+ json_data
+ end
+ elsif is_directory
+ temp = {}
+ response.body.split("\n").each do |sub_attr|
+ if "#{id}/#{sub_attr}" != "/user-data"
+ uri = id == "" ? "#{id}#{sub_attr}/" : "#{id}#{sub_attr}"
+ temp[sanitize_key(sub_attr).gsub(/_$/, "")] = fetch_metadata(uri, has_trailing_slash?(uri))
+ end
+ end
+ temp
+ end
+ else
+ logger.warn("Mixin AlibabaMetadata: Received response code #{response.code} requesting metadata for id='#{id}'")
+ nil
+ end
+ end
+
+ # @param data [String]
+ #
+ # @return [Boolean] is there a trailing /?
+ def has_trailing_slash?(data)
+ !!(data =~ %r{/$})
+ end
+
+ def sanitize_key(key)
+ key.gsub(%r{\-|/}, "_")
+ end
+ end
+ end
+end