Hello community,
here is the log from the commit of package velum for openSUSE:Factory checked in at 2018-03-14 19:40:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/velum (Old)
and /work/SRC/openSUSE:Factory/.velum.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "velum"
Wed Mar 14 19:40:41 2018 rev:13 rq:586793 version:3.0.0+dev+git_r672_9f7ffab6f82eadc94ec36a8a32e1e70e5aa94bcc
Changes:
--------
--- /work/SRC/openSUSE:Factory/velum/velum.changes 2018-03-13 10:24:15.741289282 +0100
+++ /work/SRC/openSUSE:Factory/.velum.new/velum.changes 2018-03-14 19:41:02.760922163 +0100
@@ -1,0 +2,13 @@
+Wed Mar 14 13:56:37 UTC 2018 - containers-bugowner@suse.de
+
+- Commit 943655d by Vítor Avelino vavelino@suse.com
+ Added CPI configuration
+
+ During the boostrap configuration it's now possible to enable cloud provider
+ integration.
+
+ Co-authored-by: Maximilian Meister Signed-off-by: Vítor
+ Avelino
+
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ velum.spec ++++++
--- /var/tmp/diff_new_pack.kXNm2X/_old 2018-03-14 19:41:03.784885789 +0100
+++ /var/tmp/diff_new_pack.kXNm2X/_new 2018-03-14 19:41:03.788885647 +0100
@@ -23,7 +23,7 @@
# Version: 1.0.0
# %%define branch 1.0.0
-Version: 3.0.0+dev+git_r670_a808a80f6484c097cb87f9e380fdf0b646981986
+Version: 3.0.0+dev+git_r672_9f7ffab6f82eadc94ec36a8a32e1e70e5aa94bcc
Release: 0
%define branch master
Summary: Dashboard for CaasP
@@ -96,7 +96,7 @@
%description
velum is the dashboard for CaasP to manage and deploy kubernetes clusters on top of MicroOS
-This package has been built with commit a808a80f6484c097cb87f9e380fdf0b646981986 from branch master on date Mon, 12 Mar 2018 12:43:27 +0000
+This package has been built with commit 9f7ffab6f82eadc94ec36a8a32e1e70e5aa94bcc from branch master on date Wed, 14 Mar 2018 13:55:57 +0000
%prep
%setup -q -n velum-%{branch}
++++++ master.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/assets/javascripts/setup/setup.js new/velum-master/app/assets/javascripts/setup/setup.js
--- old/velum-master/app/assets/javascripts/setup/setup.js 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/app/assets/javascripts/setup/setup.js 2018-03-14 14:55:30.000000000 +0100
@@ -21,5 +21,21 @@
}
});
+ $(document).on('change', '.cloud-provider-select', function () {
+ var isOpenStack = $(this).val() === 'openstack';
+
+ $('.openstack-settings').toggleClass('hidden', !isOpenStack);
+ });
+
+ $(document).on('change', '.enable-cloud', function () {
+ var isOpenStack = $('.cloud-provider-select').val() === 'openstack';
+
+ $('.openstack-settings').toggleClass('hidden', !isOpenStack);
+ });
+
+ $(document).on('change', '.disable-cloud', function () {
+ $('.openstack-settings').addClass('hidden');
+ });
+
new SUSERegistryMirrorPanel('.suse-mirror-panel-body');
});
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/controllers/internal_api/v1/pillars_controller.rb new/velum-master/app/controllers/internal_api/v1/pillars_controller.rb
--- old/velum-master/app/controllers/internal_api/v1/pillars_controller.rb 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/app/controllers/internal_api/v1/pillars_controller.rb 2018-03-14 14:55:30.000000000 +0100
@@ -1,10 +1,13 @@
# Serve the pillar information
+# rubocop:disable Metrics/ClassLength
class InternalApi::V1::PillarsController < InternalApiController
def show
ok content: pillar_contents.merge(
registry_contents
).merge(
cloud_framework_contents
+ ).merge(
+ cloud_provider_contents
)
end
@@ -51,6 +54,15 @@
end
end
+ def cloud_provider_contents
+ case Pillar.value(pillar: :cloud_provider)
+ when "openstack"
+ openstack_cloud_contents
+ else
+ {}
+ end
+ end
+
def ec2_cloud_contents
{
cloud: {
@@ -96,4 +108,24 @@
}
}
end
+
+ def openstack_cloud_contents
+ {
+ cloud: {
+ openstack: {
+ auth_url: Pillar.value(pillar: :cloud_openstack_auth_url),
+ username: Pillar.value(pillar: :cloud_openstack_username),
+ password: Pillar.value(pillar: :cloud_openstack_password),
+ domain: Pillar.value(pillar: :cloud_openstack_domain),
+ project: Pillar.value(pillar: :cloud_openstack_project),
+ region: Pillar.value(pillar: :cloud_openstack_region),
+ floating: Pillar.value(pillar: :cloud_openstack_floating),
+ subnet: Pillar.value(pillar: :cloud_openstack_subnet),
+ bs_version: Pillar.value(pillar: :cloud_openstack_bs_version),
+ lb_mon_retries: Pillar.value(pillar: :cloud_openstack_lb_mon_retries)
+ }
+ }
+ }
+ end
end
+# rubocop:enable Metrics/ClassLength
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/controllers/setup_controller.rb new/velum-master/app/controllers/setup_controller.rb
--- old/velum-master/app/controllers/setup_controller.rb 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/app/controllers/setup_controller.rb 2018-03-14 14:55:30.000000000 +0100
@@ -35,6 +35,20 @@
)
@suse_registry_mirror_enabled = @suse_registry_mirror.persisted?
@suse_registry_mirror_certificate_enabled = @suse_registry_mirror.certificate.present?
+
+ # cloud settings
+ @cloud_provider = Pillar.value(pillar: :cloud_provider)
+ @cloud_openstack_auth_url = Pillar.value(pillar: :cloud_openstack_auth_url)
+ @cloud_openstack_domain = Pillar.value(pillar: :cloud_openstack_domain)
+ @cloud_openstack_project = Pillar.value(pillar: :cloud_openstack_project)
+ @cloud_openstack_region = Pillar.value(pillar: :cloud_openstack_region)
+ @cloud_openstack_username = Pillar.value(pillar: :cloud_openstack_username)
+ @cloud_openstack_password = Pillar.value(pillar: :cloud_openstack_password)
+ @cloud_openstack_subnet = Pillar.value(pillar: :cloud_openstack_subnet)
+ @cloud_openstack_floating = Pillar.value(pillar: :cloud_openstack_floating)
+ @cloud_openstack_lb_mon_retries = Pillar.value(pillar: :cloud_openstack_lb_mon_retries) || "3"
+ @cloud_openstack_bs_version = Pillar.value(pillar: :cloud_openstack_bs_version) || "v2"
+ @cloud_enabled = @cloud_provider.present?
end
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/AbcSize
@@ -146,6 +160,14 @@
settings["dex_client_secrets_velum"] = Pillar.value(pillar: :dex_client_secrets_velum) \
|| SecureRandom.uuid
+ if params["settings"]["cloud_enabled"] == "disable"
+ settings["cloud_provider"] = nil
+
+ Pillar.cloud_pillars.each_key do |k|
+ settings[k.to_s] = nil if k.to_s.starts_with?("cloud_openstack")
+ end
+ end
+
Velum::LDAP.ldap_pillar_settings!(settings)
end
@@ -225,7 +247,8 @@
:proxy_systemwide,
:http_proxy,
:https_proxy,
- :no_proxy
+ :no_proxy,
+ :cloud_provider
]
when "do_bootstrap"
[]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/helpers/setup_helper.rb new/velum-master/app/helpers/setup_helper.rb
--- old/velum-master/app/helpers/setup_helper.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/velum-master/app/helpers/setup_helper.rb 2018-03-14 14:55:30.000000000 +0100
@@ -0,0 +1,12 @@
+# SetupHelper contains all the view helpers for the setup process.
+module SetupHelper
+ def cloud_provider_options
+ [
+ ["OpenStack", :openstack]
+ ]
+ end
+
+ def cloud_providers_options_for_select
+ options_for_select(cloud_provider_options, selected: @cloud_provider)
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/models/pillar.rb new/velum-master/app/models/pillar.rb
--- old/velum-master/app/models/pillar.rb 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/app/models/pillar.rb 2018-03-14 14:55:30.000000000 +0100
@@ -1,4 +1,5 @@
# Pillar represents a pillar value on Salt.
+# rubocop:disable Metrics/ClassLength
class Pillar < ApplicationRecord
validates :pillar, presence: true
validates :value, presence: true
@@ -45,7 +46,6 @@
ldap_admin_group_name: "ldap:admin_group_name",
ldap_tls_method: "ldap:tls_method",
ldap_mail_attribute: "ldap:mail_attribute",
- cloud_framework: "cloud:framework",
dex_client_secrets_kubernetes: "dex:client_secrets:kubernetes",
dex_client_secrets_velum: "dex:client_secrets:velum"
}
@@ -62,6 +62,8 @@
"cloud:providers:azure:client_id",
azure_secret:
"cloud:providers:azure:secret",
+ cloud_framework:
+ "cloud:framework",
cloud_worker_type:
"cloud:profiles:cluster_node:size",
cloud_worker_subnet:
@@ -71,7 +73,30 @@
cloud_worker_net:
"cloud:profiles:cluster_node:network",
cloud_worker_resourcegroup:
- "cloud:profiles:cluster_node:resourcegroup"
+ "cloud:profiles:cluster_node:resourcegroup",
+ # CPI
+ cloud_provider:
+ "cloud:provider",
+ cloud_openstack_auth_url:
+ "cloud:openstack:auth_url",
+ cloud_openstack_domain:
+ "cloud:openstack:domain",
+ cloud_openstack_project:
+ "cloud:openstack:project",
+ cloud_openstack_region:
+ "cloud:openstack:region",
+ cloud_openstack_username:
+ "cloud:openstack:username",
+ cloud_openstack_password:
+ "cloud:openstack:password",
+ cloud_openstack_subnet:
+ "cloud:openstack:subnet",
+ cloud_openstack_floating:
+ "cloud:openstack:floating",
+ cloud_openstack_lb_mon_retries:
+ "cloud:openstack:lb_mon_retries",
+ cloud_openstack_bs_version:
+ "cloud:openstack:bs_version"
}
end
# rubocop:enable Layout/AlignHash
@@ -109,3 +134,4 @@
end
end
end
+# rubocop:enable Metrics/ClassLength
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/views/setup/cloud/_openstack_configuration.html.slim new/velum-master/app/views/setup/cloud/_openstack_configuration.html.slim
--- old/velum-master/app/views/setup/cloud/_openstack_configuration.html.slim 1970-01-01 01:00:00.000000000 +0100
+++ new/velum-master/app/views/setup/cloud/_openstack_configuration.html.slim 2018-03-14 14:55:30.000000000 +0100
@@ -0,0 +1,31 @@
+.openstack-settings class="#{'hidden' if @cloud_provider != 'openstack'}"
+ .form-group
+ = f.label :cloud_openstack_auth_url, "Keystone API URL"
+ = f.text_field :cloud_openstack_auth_url, value: @cloud_openstack_auth_url, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_domain, "Domain name"
+ = f.text_field :cloud_openstack_domain, value: @cloud_openstack_domain, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_project, "Project name"
+ = f.text_field :cloud_openstack_project, value: @cloud_openstack_project, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_region, "Region name"
+ = f.text_field :cloud_openstack_region, value: @cloud_openstack_region, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_username, "Username"
+ = f.text_field :cloud_openstack_username, value: @cloud_openstack_username, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_password, "Password"
+ = f.password_field :cloud_openstack_password, value: @cloud_openstack_password, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_subnet, "Subnet UUID for the CaaS Platform private network"
+ = f.text_field :cloud_openstack_subnet, value: @cloud_openstack_subnet, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_floating, "Floating network UUID"
+ = f.text_field :cloud_openstack_floating, value: @cloud_openstack_floating, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_lb_mon_retries, "Load balancer monitor max retries"
+ = f.text_field :cloud_openstack_lb_mon_retries, value: @cloud_openstack_lb_mon_retries, class: "form-control"
+ .form-group
+ = f.label :cloud_openstack_bs_version, "Cinder Block Storage API version"
+ = f.text_field :cloud_openstack_bs_version, value: @cloud_openstack_bs_version, class: "form-control"
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/views/setup/cloud/_settings.html.slim new/velum-master/app/views/setup/cloud/_settings.html.slim
--- old/velum-master/app/views/setup/cloud/_settings.html.slim 1970-01-01 01:00:00.000000000 +0100
+++ new/velum-master/app/views/setup/cloud/_settings.html.slim 2018-03-14 14:55:30.000000000 +0100
@@ -0,0 +1,19 @@
+.cloud-settings-wrapper
+ .cloud-settings-panel.panel.panel-default
+ .panel-heading.clearfix
+ h3.panel-title Cloud provider integration
+ .btn-group.btn-group-sm.btn-group-toggle.pull-right data-toggle="buttons"
+ = label_tag :cloud_toggle, nil, class: "enable-cloud btn btn-default #{'btn-primary active' if @cloud_enabled}", data: {toggle: "collapse", target: ".cloud-settings-panel-body"}
+ = f.radio_button :cloud_enabled, "enable", checked: @cloud_enabled
+ | Enable
+ = label_tag :cloud_toggle, nil, class: "disable-cloud btn btn-default #{'btn-primary active' unless @cloud_enabled}", data: {toggle: "collapse", target: ".cloud-settings-panel-body"}
+ = f.radio_button :cloud_enabled, "disable", checked: !@cloud_enabled
+ | Disable
+
+ .cloud-settings-panel-body.panel-collapse.collapse class="#{'in' if @cloud_enabled}"
+ .panel-body
+ .form-group.mirror-url-group
+ = f.label :url, "Choose the driver"
+ = f.select :cloud_provider, cloud_providers_options_for_select, { include_blank: true }, class: "form-control cloud-provider-select"
+
+ = render partial: 'setup/cloud/openstack_configuration', locals: { f: f }
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/views/setup/welcome.html.slim new/velum-master/app/views/setup/welcome.html.slim
--- old/velum-master/app/views/setup/welcome.html.slim 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/app/views/setup/welcome.html.slim 2018-03-14 14:55:30.000000000 +0100
@@ -135,6 +135,7 @@
| Entire node
= render partial: 'setup/settings/mirror', locals: { form: f }
+ = render partial: 'setup/cloud/settings', locals: { f: f }
.clearfix.steps-container
= submit_tag "Next", class: "btn btn-primary pull-right"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/spec/controllers/internal_api/v1/pillars_controller_spec.rb new/velum-master/spec/controllers/internal_api/v1/pillars_controller_spec.rb
--- old/velum-master/spec/controllers/internal_api/v1/pillars_controller_spec.rb 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/spec/controllers/internal_api/v1/pillars_controller_spec.rb 2018-03-14 14:55:30.000000000 +0100
@@ -231,4 +231,42 @@
expect(json).to eq(expected_response)
end
end
+
+ context "with Openstack provider" do
+ let(:expected_response) do
+ {
+ registries: [],
+ cloud: {
+ openstack: {
+ auth_url: "http://keystone-test-host:5000/v3",
+ username: "testuser",
+ password: "pass",
+ domain: "test",
+ project: "prj",
+ region: "rspec",
+ floating: "9bc3e819-a6ca-648b-b5e3-c26c9e6c5e57",
+ subnet: "4b64b38d-0b38-40d0-a69f-ade7299ef4ab",
+ bs_version: "v2",
+ lb_mon_retries: "3"
+ }
+ }
+ }
+ end
+
+ before do
+ create(:openstack_pillar)
+ expected_response[:cloud][:openstack].each do |k, v|
+ create(
+ :pillar,
+ pillar: "cloud:openstack:#{k}",
+ value: v
+ )
+ end
+ end
+
+ it "has cloud configuration" do
+ get :show
+ expect(json).to eq(expected_response)
+ end
+ end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/spec/controllers/setup_controller_spec.rb new/velum-master/spec/controllers/setup_controller_spec.rb
--- old/velum-master/spec/controllers/setup_controller_spec.rb 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/spec/controllers/setup_controller_spec.rb 2018-03-14 14:55:30.000000000 +0100
@@ -108,6 +108,17 @@
end
end
+ context "when in OpenStack framework" do
+ before do
+ create(:openstack_pillar)
+ get :worker_bootstrap
+ end
+
+ it "renders normal view" do
+ expect(response).to render_template(:worker_bootstrap)
+ end
+ end
+
context "when in Azure framework" do
before do
create(:azure_pillar)
@@ -598,6 +609,54 @@
expect(response.redirect_url).to eq setup_url
end
end
+
+ context "when cloud settings is enabled" do
+ let(:cloud_settings) do
+ settings_params.dup.tap do |s|
+ s["cloud_enabled"] = "enable"
+ s["cloud_provider"] = "openstack"
+ s["cloud_openstack_domain"] = "local.lan"
+ end
+ end
+
+ before do
+ sign_in user
+ put :configure, settings: cloud_settings
+ end
+
+ it "saves cloud provider pillar" do
+ expect(Pillar.value(pillar: :cloud_provider)).to eq("openstack")
+ expect(Pillar.value(pillar: :cloud_openstack_domain)).to eq("local.lan")
+ end
+
+ it "redirects to worker bootstrap page" do
+ expect(response.redirect_url).to eq setup_worker_bootstrap_url
+ end
+ end
+
+ context "when cloud settings is disabled" do
+ let(:cloud_settings) do
+ settings_params.dup.tap do |s|
+ s["cloud_enabled"] = "disable"
+ s["cloud_provider"] = "openstack"
+ s["cloud_openstack_domain"] = "local.lan"
+ end
+ end
+
+ before do
+ sign_in user
+ put :configure, settings: cloud_settings
+ end
+
+ it "redirects to worker bootstrap page" do
+ expect(response.redirect_url).to eq setup_worker_bootstrap_url
+ end
+
+ it "erases fields left by the user" do
+ expect(Pillar.value(pillar: :cloud_provider)).to be_nil
+ expect(Pillar.value(pillar: :cloud_openstack_domain)).to be_nil
+ end
+ end
end
describe "GET /setup/discovery" do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/spec/factories/pillar_factory.rb new/velum-master/spec/factories/pillar_factory.rb
--- old/velum-master/spec/factories/pillar_factory.rb 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/spec/factories/pillar_factory.rb 2018-03-14 14:55:30.000000000 +0100
@@ -11,6 +11,10 @@
pillar { Pillar.all_pillars[:cloud_framework] }
value "ec2"
end
+ factory :openstack_pillar, parent: :pillar do
+ pillar { Pillar.all_pillars[:cloud_provider] }
+ value "openstack"
+ end
factory :azure_pillar, parent: :pillar do
pillar { Pillar.all_pillars[:cloud_framework] }
value "azure"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/spec/features/bootstrap_settings_feature_spec.rb new/velum-master/spec/features/bootstrap_settings_feature_spec.rb
--- old/velum-master/spec/features/bootstrap_settings_feature_spec.rb 2018-03-12 13:43:41.000000000 +0100
+++ new/velum-master/spec/features/bootstrap_settings_feature_spec.rb 2018-03-14 14:55:30.000000000 +0100
@@ -48,4 +48,27 @@
expect(page).to have_css("#settings_suse_registry_mirror_certificate", visible: false)
end
end
+
+ context "CPI configuration", js: true do
+ it "shows panel settings" do
+ expect(page).to have_content("Cloud provider integration")
+ end
+
+ it "toggles settings when enabling/disabling it" do
+ find(".enable-cloud").click
+ expect(page).to have_css(".cloud-settings-panel-body.in")
+ expect(page).to have_content("Choose the driver")
+
+ find(".disable-cloud").click
+ expect(page).not_to have_content("Choose the driver")
+ end
+
+ it "shows custom settings for openstack" do
+ find(".enable-cloud").click
+ expect(page).to have_css(".cloud-settings-panel-body.in")
+
+ select "OpenStack", from: "settings_cloud_provider"
+ expect(page).to have_content("Keystone API URL")
+ end
+ end
end