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-bugow...@suse.de
+
+- Commit 943655d by Vítor Avelino vavel...@suse.com
+ Added CPI configuration
+ 
+ During the boostrap configuration it's now possible to enable cloud provider
+ integration.
+ 
+ Co-authored-by: Maximilian Meister <mmeis...@suse.de> Signed-off-by: Vítor
+ Avelino <vavel...@suse.com>
+
+
+-------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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


Reply via email to