Merge pull request #237802 from SuperSandro2000/ceph-package-options

nixos/ceph: add options to configure package used by each component

Sandro eae22520 6788909b

Changed files
+17 -14
nixos
modules
services
network-filesystems
+17 -14
nixos/modules/services/network-filesystems/ceph.nix
···
with lib;
let
-
cfg = config.services.ceph;
+
cfg = config.services.ceph;
# function that translates "camelCaseOptions" to "camel case options", credits to tilpner in #nixos@freenode
expandCamelCase = replaceStrings upperChars (map (s: " ${s}") lowerChars);
expandCamelCaseAttrs = mapAttrs' (name: value: nameValuePair (expandCamelCase name) value);
-
makeServices = (daemonType: daemonIds:
+
makeServices = daemonType: daemonIds:
mkMerge (map (daemonId:
-
{ "ceph-${daemonType}-${daemonId}" = makeService daemonType daemonId cfg.global.clusterName pkgs.ceph; })
-
daemonIds));
+
{ "ceph-${daemonType}-${daemonId}" = makeService daemonType daemonId cfg.global.clusterName cfg.${daemonType}.package; })
+
daemonIds);
-
makeService = (daemonType: daemonId: clusterName: ceph:
+
makeService = daemonType: daemonId: clusterName: ceph:
let
stateDirectory = "ceph/${if daemonType == "rgw" then "radosgw" else daemonType}/${clusterName}-${daemonId}"; in {
enable = true;
···
} // optionalAttrs ( daemonType == "mon") {
RestartSec = "10";
};
-
});
+
};
-
makeTarget = (daemonType:
+
makeTarget = daemonType:
{
"ceph-${daemonType}" = {
description = "Ceph target allowing to start/stop all ceph-${daemonType} services at once";
···
before = [ "ceph.target" ];
unitConfig.StopWhenUnneeded = true;
};
-
}
-
);
+
};
in
{
options.services.ceph = {
···
to the id part in ceph i.e. [ "name1" ] would result in mgr.name1
'';
};
+
package = mkPackageOptionMD pkgs "ceph" { };
extraConfig = mkOption {
type = with types; attrsOf str;
default = {};
···
to the id part in ceph i.e. [ "name1" ] would result in mon.name1
'';
};
+
package = mkPackageOptionMD pkgs "ceph" { };
extraConfig = mkOption {
type = with types; attrsOf str;
default = {};
···
to the id part in ceph i.e. [ "name1" ] would result in osd.name1
'';
};
-
+
package = mkPackageOptionMD pkgs "ceph" { };
extraConfig = mkOption {
type = with types; attrsOf str;
default = {
···
to the id part in ceph i.e. [ "name1" ] would result in mds.name1
'';
};
+
package = mkPackageOptionMD pkgs "ceph" { };
extraConfig = mkOption {
type = with types; attrsOf str;
default = {};
···
rgw = {
enable = mkEnableOption (lib.mdDoc "Ceph RadosGW daemon");
+
package = mkPackageOptionMD pkgs "ceph" { };
daemons = mkOption {
type = with types; listOf str;
default = [];
···
{ assertion = cfg.global.fsid != "";
message = "fsid has to be set to a valid uuid for the cluster to function";
}
-
{ assertion = cfg.mon.enable == true -> cfg.mon.daemons != [];
+
{ assertion = cfg.mon.enable -> cfg.mon.daemons != [];
message = "have to set id of atleast one MON if you're going to enable Monitor";
}
-
{ assertion = cfg.mds.enable == true -> cfg.mds.daemons != [];
+
{ assertion = cfg.mds.enable -> cfg.mds.daemons != [];
message = "have to set id of atleast one MDS if you're going to enable Metadata Service";
}
-
{ assertion = cfg.osd.enable == true -> cfg.osd.daemons != [];
+
{ assertion = cfg.osd.enable -> cfg.osd.daemons != [];
message = "have to set id of atleast one OSD if you're going to enable OSD";
}
-
{ assertion = cfg.mgr.enable == true -> cfg.mgr.daemons != [];
+
{ assertion = cfg.mgr.enable -> cfg.mgr.daemons != [];
message = "have to set id of atleast one MGR if you're going to enable MGR";
}
];