Andrew Schoen [Thu, 26 Jul 2018 15:09:17 +0000 (10:09 -0500)]
ceph-volume: update version of ansible to 2.6.x for simple tests
ceph-ansible now requires a 2.5.x or 2.6.x version of ansible if you're
using the master branch. This updates our functional tests for the
simple subcommand to use a 2.6.x version of ansible.
Sage Weil [Wed, 25 Jul 2018 21:23:42 +0000 (16:23 -0500)]
Merge PR #23247 into master
* refs/pull/23247/head:
Revert "rpm,deb: chown bluestore block* links to ceph.ceph on install/upgrade"
Revert "rpm,deb: fix chown to use -h"
rpm,deb: fix chown to use -h
rpm,deb: chown bluestore block* links to ceph.ceph on install/upgrade
This was only needed for luminous and mimic. We are keeping these commits in master (and reverting them) only so that the cherry-pick -x references work.
Andrew Schoen [Wed, 25 Jul 2018 16:47:27 +0000 (11:47 -0500)]
ceph-volume: PVolumes.get() should return one PV when using name or uuid
It is possible to get duplicated pv entires from the 'pvs' lvm command.
If we're using PVolumes.get() with either pv_name or pv_uuid we can
safely return a single PVolume object. However, if we use pv_tags with
PVolumes.get() we must still raise a MultiplePVsError if many pvs
are found that have the tags, because they are not guaranteed to be the
same pv, as would be the case with pv_name or pv_uuid.
Fixes: http://tracker.ceph.com/issues/24784 Signed-off-by: Andrew Schoen <aschoen@redhat.com>
mgr/dashboard: Improve SummaryService and TaskWrapperService
When you create a new task, and it stays running, it will be added automatically
to the summary data.
This will allows for us to deal with it more quickly, by subscribing
to the summaryService, and removes the need to pass a runningTasks array
between services.
mgr/dashboard: Color variables for color codes
Assign variables to colors present in css files
Changed navigation icons padding because the notification dropdown was going out of window. Fixes: http://tracker.ceph.com/issues/24575 Signed-off-by: Kanika Murarka <kmurarka@redhat.com>
c-ares is a C library for asynchronous DNS requests, seastar requires
c-ares 1.13.0 or up. but xenial and EPEL offer 1.10.0, so we need to
build and ship it as part of Ceph.
common/config: change md_config_obs_impl's template param to ConfigProxy
we were using LockPolicy as this tempalte class's template parameter,
but turns out ConfigProxy is a better parameter for it. as ConfigProxy is
"closer" to md_config_obs_impl than LockPolicy is.
common/config: change md_config_impl<> back to plain class
now that all of the variables that change depending on seastar/alien
have been extracted out of md_config_impl<>, there is no need to make it
a template anymore.
* ceph.spec.in: c-ares-devel and fmt-devel are installed as
dependencies fo seastar.
* install-deps.sh: libfmt-dev is missing in xenial, so we only
install libc-ares-dev for ubuntu in install-deps.sh .
* cmake: build libfmt if it's not found.
libfmt is a library for fast printf() support in C++, it is used by
seastar. but it's missing in xenial. so we need to ship it in our dist
tarball and build if if it's not found in system.
common/config: extract ObserverMgr from md_config_impl<>
crimson will have sharded<PGShard> (name may vary in future), and
underlying ObjectStore instances. they will be consumers of crimson
ConfigProxy, and will register them as an observer of config changes.
but as always, in crimson osd, world is sharded, each ConfigProxy will
only take care of the sharded services living on the shard which it is
in charge of. in other words, unlike alien's ConfigProxy, the
"observers" data structure is not shared, they are sharded as well. so
we need to extract the observers out of md_config_impl<>, and move it
into ConfigProxy.
This, in turn, means that when jewel tunables are set we do not actually
encode the jewel tunables. At least, luminous doesn't; jewel uses a
different code path to decode how to encode the OSDMap.
This, in turn, leads to crc errors:
- luminous mons running
- require_osd_release is jewel
- jewel tunables are set. mon in-memory crushmap gets chooseleaf_stable=1
- osds are luminous, but don't see the new field in the crushmap
- upgrade finishes, and require_osd_Release becomes luminous
- the full osdmap encodes the chooseleaf_stable field, finally, and it
is 1
- the osds try to encode the same thing, but their crushmap has 0.
-> crc mismatch
Jason Dillaman [Mon, 25 Jun 2018 20:42:04 +0000 (16:42 -0400)]
pybind/rbd: improved handling for snapshot namespaces
The snap iterator now includes the namespace type and group/trash
sub-dictionaries (if applicable). It's also possible to remove a
non-user snapshot by its id.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
common/config: extract "changed" from md_config_impl<> to ConfigValues
for the same reason why we moved ObserverMgr out of md_config_impl<>,
"changed" cannot be shared among shards, we should move "changed" out of
md_config_impl. we can put "changed" into ConfigValues or
ConfigProxy, IMHO, it would be simpler if "changed" resides in
ConfigValues: less fragmented this way.
common/config: move _apply_changes() calls up into ConfigProxy
see also the previous the commit, to reuse injectargs() and
set_mon_vals() in seastar's ConfigProxy, we need to move apply_changes()
call out of them, as this call is implemented differently in seastar's
ConfigProxy.
finalize_reexpand_meta() is not used by OSD at this moment, so we leave
it as it is for now.
* move _apply_changes() calls up into ConfigProxy
* move update_legacy_vals() out of _apply_changes() into the
callers of the latter. as it changes "values", in seastar's ConfigProxy,
it belongs to the first step of changing a config value
common/config: promote lock from md_config_t to ConfigProxy
seastar's ConfigProxy and alien's ConfigProxy follow different threading
models and expose different methods. the former updates a setting with 3
steps:
1. create a local copy of current setting, and apply the proposed change
to the copy
2. populate the updated change with a foreign_ptr<> to all shards
(including itself)
3. on each shards, call apply_changes() to get the interested observers
updated, please note, apply_changes() should only update the local
observers on current shard.
while the alien's ConfigProxy do all the job in a single synchronized
call,
but we can split it into a finer-grained steps:
1. apply the proposed change in-place
2. apply_changes() to get the interested observers updated.
so, to reuse the code across these two implementations, for instance,
set_mon_vals() will be implemented in ConfigProxy instead, so we can
have different behavior in different ConfigProxy classes. if we keep
using the existing single-piece md_config_t::set_mon_vals(), we have no
chance to differentiate the apply_changes() for seastar port. but the
alien implementation requires a grand lock protecting set_val() and
apply_changes(), so we have to move the lock from md_config_t up to
ConfigProxy. it's also simpler this way, as we don't need an extra layer
to have a dummy Mutex for seastar's ConfigProxy. as only the alien's
ConfigProxy requires the lock.