Hello community, here is the log from the commit of package velum for openSUSE:Factory checked in at 2018-04-22 14:40:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/velum (Old) and /work/SRC/openSUSE:Factory/.velum.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "velum" Sun Apr 22 14:40:37 2018 rev:23 rq:599484 version:3.0.0+dev+git_r734_f7dc070fb3c2fa61475e52ed2fb91ca204727921 Changes: -------- --- /work/SRC/openSUSE:Factory/velum/velum.changes 2018-04-20 17:32:57.578946218 +0200 +++ /work/SRC/openSUSE:Factory/.velum.new/velum.changes 2018-04-22 14:40:40.882705992 +0200 @@ -1,0 +2,67 @@ +Fri Apr 20 11:32:20 UTC 2018 - [email protected] + +- Commit 310d614 by Vítor Avelino [email protected] + node removal: improved way of showing removal links + + 'Remove' and 'Force remove' links were being shown at the same time so far. + But 'Force remove' only makes sense to be shown when a previous removal has + failed. + + With this we are showing only one link at a time. When the highstate of a + minion is fine, we show 'Remove'. Whenever it comes 'removal_failed', we show + 'Force remove'. + + enhancemente#node-removal + + Signed-off-by: Vítor Avelino <[email protected]> + + +------------------------------------------------------------------- +Fri Apr 20 10:33:06 UTC 2018 - [email protected] + +- Commit 514916c by Flavio Castelli [email protected] + Rename pillar used to choose the CRI + + The pillar name has been changed by latest commits to the salt repository. + + feature#crio + + Signed-off-by: Flavio Castelli <[email protected]> + + Commit 3864cce by Flavio Castelli [email protected] + Bootstrap settings: cri-o support + + Allow the user to choose between different container runtimes. + + This enables users to create clusters backed by cri-o instead of docker. + + feature#crio + + Signed-off-by: Flavio Castelli <[email protected]> Co-authored-by: Vítor + Avelino <[email protected]> + + +------------------------------------------------------------------- +Thu Apr 19 14:05:47 UTC 2018 - [email protected] + +- Commit 3ce16bd by Rafael Fernández López [email protected] + Fix rubocop offenses + + Feature#clean-code + + +------------------------------------------------------------------- +Thu Apr 19 13:48:38 UTC 2018 - [email protected] + +- Commit 569db72 by Flavio Castelli [email protected] + Support the kubernetes feature gates pillar + + Allow users to override the kubernetes:feature_gates pillar via our external + pillar source. + + feature#feature-gates + + Signed-off-by: Flavio Castelli <[email protected]> + + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ velum.spec ++++++ --- /var/tmp/diff_new_pack.8PK4H4/_old 2018-04-22 14:40:41.694676611 +0200 +++ /var/tmp/diff_new_pack.8PK4H4/_new 2018-04-22 14:40:41.698676467 +0200 @@ -23,7 +23,7 @@ # Version: 1.0.0 # %%define branch 1.0.0 -Version: 3.0.0+dev+git_r725_0f32ab90393bfb78110ac53bc9cb3a914a97433c +Version: 3.0.0+dev+git_r734_f7dc070fb3c2fa61475e52ed2fb91ca204727921 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 0f32ab90393bfb78110ac53bc9cb3a914a97433c from branch master on date Thu, 19 Apr 2018 09:19:29 +0000 +This package has been built with commit f7dc070fb3c2fa61475e52ed2fb91ca204727921 from branch master on date Fri, 20 Apr 2018 11:31:38 +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/dashboard/dashboard.js new/velum-master/app/assets/javascripts/dashboard/dashboard.js --- old/velum-master/app/assets/javascripts/dashboard/dashboard.js 2018-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/assets/javascripts/dashboard/dashboard.js 2018-04-20 13:31:45.000000000 +0200 @@ -303,6 +303,7 @@ var checked; var masterHtml; var actionsHtml; + var removalFailedClass = ''; switch(minion.highstate) { case "not_applied": @@ -321,6 +322,7 @@ MinionPoller.alertFailedBootstrap(); break; case "removal_failed": + removalFailedClass = 'removal-failed'; statusHtml = '<i class="fa fa-minus-circle text-danger fa-2x" aria-hidden="true"></i> Removal Failed'; break; case "applied": @@ -355,9 +357,9 @@ } if (State.pendingRemovalMinionId || State.hasPendingStateNode) { - actionsHtml = '<a href="#" class="disabled remove-node-link">Remove</a> | <a href="#" class="disabled force-remove-node-link">Force remove</a>'; + actionsHtml = '<a href="#" class="disabled remove-node-link">Remove</a><a href="#" class="disabled force-remove-node-link">Force remove</a>'; } else { - actionsHtml = '<a href="#" class="remove-node-link">Remove</a> | <a href="#" class="force-remove-node-link">Force remove</a>'; + actionsHtml = '<a href="#" class="remove-node-link">Remove</a><a href="#" class="force-remove-node-link">Force remove</a>'; } if (minion.minion_id === State.pendingRemovalMinionId) { @@ -375,7 +377,7 @@ <td><strong>' + minion.minion_id + '</strong></td>\ <td class="minion-hostname">' + minion.fqdn + '</td>\ <td>' + masterHtml + minion.role + '</td>\ - <td class="actions-column" data-id="' + minion.minion_id + '" data-hostname="' + minion.fqdn + '">' + actionsHtml + '</td>\ + <td class="actions-column ' + removalFailedClass + '" data-id="' + minion.minion_id + '" data-hostname="' + minion.fqdn + '">' + actionsHtml + '</td>\ </tr>'; }, @@ -911,7 +913,7 @@ }; function enableOrchTriggers() { - $('.actions-column[data-id=' + State.pendingRemovalMinionId + ']').html('<a href="#" class="remove-node-link">Remove</a> | <a href="#" class="remove-node-link">Force remove</a>'); + $('.actions-column[data-id=' + State.pendingRemovalMinionId + ']').html('<a href="#" class="remove-node-link">Remove</a><a href="#" class="remove-node-link">Force remove</a>'); $('.remove-node-link').removeClass('disabled'); $('.force-remove-node-link').removeClass('disabled'); $('.assign-nodes-link').removeClass('disabled'); 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-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/assets/javascripts/setup/setup.js 2018-04-20 13:31:45.000000000 +0200 @@ -21,5 +21,10 @@ } }); + $(document).on('click', '.runtime-btn-group .btn', function() { + $('.docker-desc, .crio-desc').collapse('hide'); + $($(this).data('element')).collapse('show'); + }); + 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/assets/stylesheets/components/panels.scss new/velum-master/app/assets/stylesheets/components/panels.scss --- old/velum-master/app/assets/stylesheets/components/panels.scss 2018-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/assets/stylesheets/components/panels.scss 2018-04-20 13:31:45.000000000 +0200 @@ -7,7 +7,7 @@ .fa, .glyphicon { - vertical-align: middle; + vertical-align: bottom; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/assets/stylesheets/pages/nodes_list.scss new/velum-master/app/assets/stylesheets/pages/nodes_list.scss --- old/velum-master/app/assets/stylesheets/pages/nodes_list.scss 2018-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/assets/stylesheets/pages/nodes_list.scss 2018-04-20 13:31:45.000000000 +0200 @@ -155,3 +155,19 @@ #retry-cluster-bootstrap, #retry-cluster-upgrade { margin-right: 10px; } + +.actions-column { + &.removal-failed { + .force-remove-node-link { + display: block; + } + + .remove-node-link { + display: none; + } + } + + .force-remove-node-link { + display: none; + } +} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/assets/stylesheets/pages/setup.scss new/velum-master/app/assets/stylesheets/pages/setup.scss --- old/velum-master/app/assets/stylesheets/pages/setup.scss 2018-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/assets/stylesheets/pages/setup.scss 2018-04-20 13:31:45.000000000 +0200 @@ -4,4 +4,8 @@ .invalid-insecure { color: $state-danger-text; +} + +.runtime-btn-group { + margin-bottom: 10px; } \ No newline at end of file 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-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/controllers/setup_controller.rb 2018-04-20 13:31:45.000000000 +0200 @@ -48,6 +48,9 @@ @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" + + # container runtime setting + @cri = Pillar.value(pillar: :container_runtime) || "docker" end # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/AbcSize @@ -64,7 +67,7 @@ end end - # rubocop:disable Metrics/CyclomaticComplexity + # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity def worker_bootstrap @controller_node = Pillar.value pillar: :dashboard @@ -87,7 +90,7 @@ end render "worker_bootstrap_#{cloud}".to_sym end - # rubocop:enable Metrics/CyclomaticComplexity + # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity def build_cloud_cluster @cloud_cluster = CloudCluster.new(cloud_cluster_params) @@ -104,9 +107,9 @@ end def set_roles - # rubocop:disable Rails/SkipsModelValidations: + # rubocop:disable Rails/SkipsModelValidations Minion.cluster_role.update_all role: nil - # rubocop:enable Rails/SkipsModelValidations: + # rubocop:enable Rails/SkipsModelValidations assigned = Minion.assign_roles roles: update_nodes_params, remote: false if assigned.values.include?(false) redirect_to setup_discovery_path, 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-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/models/pillar.rb 2018-04-20 13:31:45.000000000 +0200 @@ -49,7 +49,9 @@ dex_client_secrets_kubernetes: "dex:client_secrets:kubernetes", dex_client_secrets_velum: "dex:client_secrets:velum", cloud_framework: "cloud:framework", - cloud_provider: "cloud:provider" + cloud_provider: "cloud:provider", + kubernetes_feature_gates: "kubernetes:feature_gates", + container_runtime: "cri:chosen" } end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/views/dashboard/index.html.slim new/velum-master/app/views/dashboard/index.html.slim --- old/velum-master/app/views/dashboard/index.html.slim 2018-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/views/dashboard/index.html.slim 2018-04-20 13:31:45.000000000 +0200 @@ -81,7 +81,7 @@ | Hostname th | Role - th width="170" + th width="130" | Actions tbody diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/app/views/setup/settings/_container_runtime.html.slim new/velum-master/app/views/setup/settings/_container_runtime.html.slim --- old/velum-master/app/views/setup/settings/_container_runtime.html.slim 1970-01-01 01:00:00.000000000 +0100 +++ new/velum-master/app/views/setup/settings/_container_runtime.html.slim 2018-04-20 13:31:45.000000000 +0200 @@ -0,0 +1,36 @@ +.panel.panel-default + .panel-heading + h3.panel-title + | Container runtime + | + i class='glyphicon glyphicon-info-sign' title="Software that Kubernetes uses to manage the containers." + .panel-body + p The choice of container runtime is completely transparent to end-users of the + cluster. Neither Kubernetes manifests nor container images need to be changed. + + .form-group + = f.label :cri, "Choose the runtime" + br + .btn-group.btn-group-toggle.runtime-btn-group data-toggle="buttons" + = label_tag :container_runtime, nil, class: "docker btn btn-default #{'btn-primary active' if @cri == "docker"}", data: { element: '.docker-desc' } + = f.radio_button :container_runtime, "docker", checked: @cri == "docker" + | Docker open source engine + = label_tag :container_runtime, nil, class: "crio btn btn-default #{'btn-primary active' if @cri == "crio"}", data: { element: '.crio-desc' } + = f.radio_button :container_runtime, "crio", checked: @cri == "crio" + | cri-o + + .docker-desc.collapse class="#{'in' if @cri == "docker"}" + | <em>Docker open source engine</em> (<strong>default</strong>) is a production-ready runtime, fully supported by SUSE. + + .crio-desc.collapse class="#{'in' if @cri == "crio"}" + p <em>cri-o</em> is a lightweight container runtime designed and optimised for + Kubernetes. Based on Open Container Initiative standards, it can pull from any + compliant registry and can run any OCI-compliant container. + + .alert.alert-warning role="alert" + span NOTE: cri-o is a <em>technology feature preview</em>. SUSE welcomes your + feedback on cri-o. As a preview, cri-o is <strong>not supported</strong>. + Previews may be functionally incomplete, unstable or in other ways not suitable + for production use. They are mainly included to give customers a chance to test + new technologies within an enterprise environment. + 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-04-19 11:19:24.000000000 +0200 +++ new/velum-master/app/views/setup/welcome.html.slim 2018-04-20 13:31:45.000000000 +0200 @@ -136,6 +136,7 @@ = render partial: 'setup/settings/mirror', locals: { form: f } = render partial: 'setup/cloud/settings', locals: { f: f } + = render partial: 'setup/settings/container_runtime', 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/features/node_force_removal_feature_spec.rb new/velum-master/spec/features/node_force_removal_feature_spec.rb --- old/velum-master/spec/features/node_force_removal_feature_spec.rb 2018-04-19 11:19:24.000000000 +0200 +++ new/velum-master/spec/features/node_force_removal_feature_spec.rb 2018-04-20 13:31:45.000000000 +0200 @@ -4,11 +4,13 @@ describe "feature: node force removal", js: true do let!(:user) { create(:user) } let!(:minions) do - Minion.create! [{ minion_id: SecureRandom.hex, fqdn: "minion0.k8s.local", role: "master" }, + Minion.create! [{ minion_id: SecureRandom.hex, fqdn: "minion0.k8s.local", role: "master", + highstate: Minion.highstates[:removal_failed] }, { minion_id: SecureRandom.hex, fqdn: "minion1.k8s.local", role: "master" }, { minion_id: SecureRandom.hex, fqdn: "minion2.k8s.local", role: "master", tx_update_reboot_needed: true }, - { minion_id: SecureRandom.hex, fqdn: "minion3.k8s.local", role: "worker" }, + { minion_id: SecureRandom.hex, fqdn: "minion3.k8s.local", role: "worker", + highstate: Minion.highstates[:removal_failed] }, { minion_id: SecureRandom.hex, fqdn: "minion4.k8s.local", role: "worker" }, { minion_id: SecureRandom.hex, fqdn: "minion5.k8s.local" }] end @@ -23,8 +25,8 @@ visit authenticated_root_path end - it "shows 'Force remove' link for each node" do - expect(page).to have_link("Force remove", count: Minion.cluster_role.count) + it "shows 'Force remove' link for each removal failed node" do + expect(page).to have_link("Force remove", count: 2) end it "hides 'Force remove' link if only 1 master and 1 worker" do @@ -79,10 +81,12 @@ # remove other nodes expect(page).to have_css(".force-remove-node-link.disabled", - count: Minion.cluster_role.count - 1) + count: 2) + expect(page).to have_css(".remove-node-link.disabled", + count: 2) # assign nodes - expect(page).to have_css(".assign-nodes-link.disabled") + expect(page).not_to have_link("(new)") # update all nodes expect(page).to have_css("#update-all-nodes.hidden", visible: false) @@ -108,7 +112,7 @@ expect(page).not_to have_css(".force-remove-node-link.disabled") # assign nodes - expect(page).not_to have_css(".assign-nodes-link.disabled") + expect(page).to have_link("(new)") # update all nodes expect(page).not_to have_css("#update-all-nodes.hidden", visible: false) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/velum-master/spec/features/node_removal_feature_spec.rb new/velum-master/spec/features/node_removal_feature_spec.rb --- old/velum-master/spec/features/node_removal_feature_spec.rb 2018-04-19 11:19:24.000000000 +0200 +++ new/velum-master/spec/features/node_removal_feature_spec.rb 2018-04-20 13:31:45.000000000 +0200 @@ -88,7 +88,7 @@ expect(page).to have_css(".remove-node-link.disabled", count: Minion.cluster_role.count - 1) # assign nodes - expect(page).to have_css(".assign-nodes-link.disabled") + expect(page).not_to have_link("(new)") # update all nodes expect(page).to have_css("#update-all-nodes.hidden", visible: false) @@ -113,7 +113,7 @@ expect(page).not_to have_css(".remove-node-link.disabled") # assign nodes - expect(page).not_to have_css(".assign-nodes-link.disabled") + expect(page).to have_link("(new)") # update all nodes expect(page).not_to have_css("#update-all-nodes.hidden", visible: false) @@ -172,6 +172,7 @@ find(worker_link).click minions[1].update!(highstate: "removal_failed") expect(page).to have_content("Removal Failed") + expect(page).to have_link("Force remove") end it "shows that attempt failed if en exception happens during request" do
