From c8ceb06f6d48d302e335876837524a646140d4db Mon Sep 17 00:00:00 2001 From: Seth Vargo Date: Mon, 6 Jun 2016 18:22:34 -0400 Subject: [PATCH] guests/amazon: Initial addition Fixes GH-7254 --- plugins/guests/amazon/cap/flavor.rb | 14 +++++++++++++ plugins/guests/amazon/guest.rb | 9 +++++++++ plugins/guests/amazon/plugin.rb | 20 +++++++++++++++++++ .../plugins/guests/amazon/cap/flavor_test.rb | 19 ++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 plugins/guests/amazon/cap/flavor.rb create mode 100644 plugins/guests/amazon/guest.rb create mode 100644 plugins/guests/amazon/plugin.rb create mode 100644 test/unit/plugins/guests/amazon/cap/flavor_test.rb diff --git a/plugins/guests/amazon/cap/flavor.rb b/plugins/guests/amazon/cap/flavor.rb new file mode 100644 index 000000000..c6c3d3731 --- /dev/null +++ b/plugins/guests/amazon/cap/flavor.rb @@ -0,0 +1,14 @@ +module VagrantPlugins + module GuestAmazon + module Cap + class Flavor + def self.flavor(machine) + # Amazon AMI is a frankenstien RHEL, mainly based on 6 + # Maybe in the future if they incoporate RHEL 7 elements + # this should be extended to read /etc/os-release or similar + return :rhel + end + end + end + end +end diff --git a/plugins/guests/amazon/guest.rb b/plugins/guests/amazon/guest.rb new file mode 100644 index 000000000..5d36153c4 --- /dev/null +++ b/plugins/guests/amazon/guest.rb @@ -0,0 +1,9 @@ +module VagrantPlugins + module GuestAmazon + class Guest < Vagrant.plugin("2", :guest) + def detect?(machine) + machine.communicate.test("grep 'Amazon Linux AMI' /etc/os-release") + end + end + end +end diff --git a/plugins/guests/amazon/plugin.rb b/plugins/guests/amazon/plugin.rb new file mode 100644 index 000000000..92e090087 --- /dev/null +++ b/plugins/guests/amazon/plugin.rb @@ -0,0 +1,20 @@ +require "vagrant" + +module VagrantPlugins + module GuestAmazon + class Plugin < Vagrant.plugin("2") + name "Amazon Linux guest" + description "Amazon linux guest support." + + guest(:amazon, :redhat) do + require_relative "guest" + Guest + end + + guest_capability(:amazon, :flavor) do + require_relative "cap/flavor" + Cap::Flavor + end + end + end +end diff --git a/test/unit/plugins/guests/amazon/cap/flavor_test.rb b/test/unit/plugins/guests/amazon/cap/flavor_test.rb new file mode 100644 index 000000000..d864f79dc --- /dev/null +++ b/test/unit/plugins/guests/amazon/cap/flavor_test.rb @@ -0,0 +1,19 @@ +require_relative "../../../../base" + +describe "VagrantPlugins::GuestAmazon::Cap::Flavor" do + let(:caps) do + VagrantPlugins::GuestAmazon::Plugin + .components + .guest_capabilities[:amazon] + end + + let(:machine) { double("machine") } + + describe ".flavor" do + let(:cap) { caps.get(:flavor) } + + it "returns rhel" do + expect(cap.flavor(machine)).to be(:rhel) + end + end +end