diff --git a/releasenotes/notes/containerized-ceph-role-1e02fd11551e92ac.yaml b/releasenotes/notes/containerized-ceph-role-1e02fd11551e92ac.yaml new file mode 100644 index 0000000000..8309399e42 --- /dev/null +++ b/releasenotes/notes/containerized-ceph-role-1e02fd11551e92ac.yaml @@ -0,0 +1,17 @@ +--- +features: + - | + With the move to containers, Ceph OSDs may be combined with other + Ceph services and dedicated Ceph monitors on controllers may be + used less. Popular Ceph roles which include OSDs are Ceph file, + object and nodes which run all Ceph services. This pattern also + applies to Hyper Converged (HCI) roles. The following pre-composed + roles have been added to make it easier to deploy in this pattern. + - CephAll: Standalone Storage Full Role + - CephFile: Standalone Scale-out File Role + - CephObject: Standalone Scale-out Object Role + - HciCephAll: HCI Full Stack Role + - HciCephFile: HCI Scale-out File Role + - HciCephObject: HCI Scale-out Object Role + - HciCephMon: HCI Scale-out Block Full Role + - ControllerNoCeph: OpenStack Controller without any Ceph Services diff --git a/roles/CephAll.yaml b/roles/CephAll.yaml new file mode 100644 index 0000000000..91a8a93ce2 --- /dev/null +++ b/roles/CephAll.yaml @@ -0,0 +1,39 @@ +############################################################################### +# Role: CephAll # +############################################################################### +- name: CephAll + description: | + Standalone Storage Full Role (OSD + MON + RGW + MDS + MGR + RBD Mirroring) + networks: + - Storage + - StorageMgmt + HostnameFormatDefault: '%stackname%-ceph-all-%index%' + ServicesDefault: + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CephClient + - OS::TripleO::Services::CephMds + - OS::TripleO::Services::CephMgr + - OS::TripleO::Services::CephMon + - OS::TripleO::Services::CephRbdMirror + - OS::TripleO::Services::CephRgw + - OS::TripleO::Services::CephOSD + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Tuned diff --git a/roles/CephFile.yaml b/roles/CephFile.yaml new file mode 100644 index 0000000000..533cd39c0d --- /dev/null +++ b/roles/CephFile.yaml @@ -0,0 +1,35 @@ +############################################################################### +# Role: CephFile # +############################################################################### +- name: CephFile + description: | + Standalone Scale-out File Role (OSD + MDS) + networks: + - Storage + - StorageMgmt + HostnameFormatDefault: '%stackname%-ceph-file-%index%' + ServicesDefault: + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CephClient + - OS::TripleO::Services::CephMds + - OS::TripleO::Services::CephOSD + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Tuned diff --git a/roles/CephObject.yaml b/roles/CephObject.yaml new file mode 100644 index 0000000000..fd0fbdd7ef --- /dev/null +++ b/roles/CephObject.yaml @@ -0,0 +1,35 @@ +############################################################################### +# Role: CephObject # +############################################################################### +- name: CephObject + description: | + Standalone Scale-out Object Role (OSD + RGW) + networks: + - Storage + - StorageMgmt + HostnameFormatDefault: '%stackname%-ceph-object-%index%' + ServicesDefault: + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CephClient + - OS::TripleO::Services::CephRgw + - OS::TripleO::Services::CephOSD + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Tuned diff --git a/roles/ControllerNoCeph.yaml b/roles/ControllerNoCeph.yaml new file mode 100644 index 0000000000..2d25e803ec --- /dev/null +++ b/roles/ControllerNoCeph.yaml @@ -0,0 +1,148 @@ +############################################################################### +# Role: ControllerNoCeph # +############################################################################### +- name: ControllerNoCeph + description: | + Controller role that has all the controller services loaded and handles + Database, Messaging and Network functions but not any Ceph server functions. + CountDefault: 0 + tags: + - primary + - controller + networks: + - External + - InternalApi + - Storage + - StorageMgmt + - Tenant + HostnameFormatDefault: '%stackname%-controller-no-ceph-%index%' + # Deprecated & backward-compatible values (FIXME: Make parameters consistent) + # Set uses_deprecated_params to True if any deprecated params are used. + uses_deprecated_params: True + deprecated_param_extraconfig: 'controllerExtraConfig' + deprecated_param_flavor: 'OvercloudControlFlavor' + deprecated_param_image: 'controllerImage' + ServicesDefault: + - OS::TripleO::Services::AodhApi + - OS::TripleO::Services::AodhEvaluator + - OS::TripleO::Services::AodhListener + - OS::TripleO::Services::AodhNotifier + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::BarbicanApi + - OS::TripleO::Services::BarbicanBackendSimpleCrypto + - OS::TripleO::Services::BarbicanBackendDogtag + - OS::TripleO::Services::BarbicanBackendKmip + - OS::TripleO::Services::BarbicanBackendPkcs11Crypto + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CeilometerAgentCentral + - OS::TripleO::Services::CeilometerAgentNotification + - OS::TripleO::Services::CephExternal + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::CinderApi + - OS::TripleO::Services::CinderBackendDellPs + - OS::TripleO::Services::CinderBackendDellSc + - OS::TripleO::Services::CinderBackendDellEMCUnity + - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI + - OS::TripleO::Services::CinderBackendNetApp + - OS::TripleO::Services::CinderBackendScaleIO + - OS::TripleO::Services::CinderBackendVRTSHyperScale + - OS::TripleO::Services::CinderBackup + - OS::TripleO::Services::CinderHPELeftHandISCSI + - OS::TripleO::Services::CinderScheduler + - OS::TripleO::Services::CinderVolume + - OS::TripleO::Services::Clustercheck + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::Congress + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Ec2Api + - OS::TripleO::Services::Etcd + - OS::TripleO::Services::ExternalSwiftProxy + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::GlanceApi + - OS::TripleO::Services::GnocchiApi + - OS::TripleO::Services::GnocchiMetricd + - OS::TripleO::Services::GnocchiStatsd + - OS::TripleO::Services::HAproxy + - OS::TripleO::Services::HeatApi + - OS::TripleO::Services::HeatApiCfn + - OS::TripleO::Services::HeatEngine + - OS::TripleO::Services::Horizon + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::IronicApi + - OS::TripleO::Services::IronicConductor + - OS::TripleO::Services::IronicPxe + - OS::TripleO::Services::Iscsid + - OS::TripleO::Services::Keepalived + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::Keystone + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::ManilaApi + - OS::TripleO::Services::ManilaBackendCephFs + - OS::TripleO::Services::ManilaBackendIsilon + - OS::TripleO::Services::ManilaBackendNetapp + - OS::TripleO::Services::ManilaBackendUnity + - OS::TripleO::Services::ManilaBackendVNX + - OS::TripleO::Services::ManilaBackendVMAX + - OS::TripleO::Services::ManilaScheduler + - OS::TripleO::Services::ManilaShare + - OS::TripleO::Services::Memcached + - OS::TripleO::Services::MongoDb + - OS::TripleO::Services::MySQL + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::NeutronApi + - OS::TripleO::Services::NeutronBgpVpnApi + - OS::TripleO::Services::NeutronSfcApi + - OS::TripleO::Services::NeutronCorePlugin + - OS::TripleO::Services::NeutronDhcpAgent + - OS::TripleO::Services::NeutronL2gwAgent + - OS::TripleO::Services::NeutronL2gwApi + - OS::TripleO::Services::NeutronL3Agent + - OS::TripleO::Services::NeutronLbaasv2Agent + - OS::TripleO::Services::NeutronLinuxbridgeAgent + - OS::TripleO::Services::NeutronMetadataAgent + - OS::TripleO::Services::NeutronML2FujitsuCfab + - OS::TripleO::Services::NeutronML2FujitsuFossw + - OS::TripleO::Services::NeutronOvsAgent + - OS::TripleO::Services::NeutronVppAgent + - OS::TripleO::Services::NovaApi + - OS::TripleO::Services::NovaConductor + - OS::TripleO::Services::NovaConsoleauth + - OS::TripleO::Services::NovaIronic + - OS::TripleO::Services::NovaMetadata + - OS::TripleO::Services::NovaPlacement + - OS::TripleO::Services::NovaScheduler + - OS::TripleO::Services::NovaVncProxy + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::OctaviaApi + - OS::TripleO::Services::OctaviaHealthManager + - OS::TripleO::Services::OctaviaHousekeeping + - OS::TripleO::Services::OctaviaWorker + - OS::TripleO::Services::OpenDaylightApi + - OS::TripleO::Services::OpenDaylightOvs + - OS::TripleO::Services::OVNDBs + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::Pacemaker + - OS::TripleO::Services::PankoApi + - OS::TripleO::Services::RabbitMQ + - OS::TripleO::Services::Redis + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::SaharaApi + - OS::TripleO::Services::SaharaEngine + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::SkydiveAgent + - OS::TripleO::Services::SkydiveAnalyzer + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::SwiftProxy + - OS::TripleO::Services::SwiftDispersion + - OS::TripleO::Services::SwiftRingBuilder + - OS::TripleO::Services::SwiftStorage + - OS::TripleO::Services::Tacker + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Vpp + - OS::TripleO::Services::Zaqar diff --git a/roles/HciCephAll.yaml b/roles/HciCephAll.yaml new file mode 100644 index 0000000000..ebcbd94834 --- /dev/null +++ b/roles/HciCephAll.yaml @@ -0,0 +1,59 @@ +############################################################################### +# Role: HciCephAll # +############################################################################### +- name: HciCephAll + description: | + HCI Full Stack Role (OSD + MON + Nova + RGW + MDS + MGR + RBD Mirroring) + networks: + - InternalApi + - Tenant + - Storage + - StorageMgmt + disable_upgrade_deployment: True + HostnameFormatDefault: '%stackname%-hci-ceph-all-%index%' + ServicesDefault: + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CephClient + - OS::TripleO::Services::CephExternal + - OS::TripleO::Services::CephMds + - OS::TripleO::Services::CephMgr + - OS::TripleO::Services::CephMon + - OS::TripleO::Services::CephRbdMirror + - OS::TripleO::Services::CephRgw + - OS::TripleO::Services::CephOSD + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::ComputeCeilometerAgent + - OS::TripleO::Services::ComputeNeutronCorePlugin + - OS::TripleO::Services::ComputeNeutronL3Agent + - OS::TripleO::Services::ComputeNeutronMetadataAgent + - OS::TripleO::Services::ComputeNeutronOvsAgent + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::Iscsid + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::NeutronBgpVpnBagpipe + - OS::TripleO::Services::NeutronLinuxbridgeAgent + - OS::TripleO::Services::NeutronVppAgent + - OS::TripleO::Services::NovaCompute + - OS::TripleO::Services::NovaLibvirt + - OS::TripleO::Services::NovaMigrationTarget + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::OpenDaylightOvs + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::SkydiveAgent + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Vpp + - OS::TripleO::Services::OVNController diff --git a/roles/HciCephFile.yaml b/roles/HciCephFile.yaml new file mode 100644 index 0000000000..b0113341e2 --- /dev/null +++ b/roles/HciCephFile.yaml @@ -0,0 +1,55 @@ +############################################################################### +# Role: HciCephFile # +############################################################################### +- name: HciCephFile + description: | + HCI Scale-out File Role (OSD + Nova + MDS) + networks: + - InternalApi + - Tenant + - Storage + - StorageMgmt + disable_upgrade_deployment: True + HostnameFormatDefault: '%stackname%-hci-ceph-file-%index%' + ServicesDefault: + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CephClient + - OS::TripleO::Services::CephExternal + - OS::TripleO::Services::CephMds + - OS::TripleO::Services::CephOSD + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::ComputeCeilometerAgent + - OS::TripleO::Services::ComputeNeutronCorePlugin + - OS::TripleO::Services::ComputeNeutronL3Agent + - OS::TripleO::Services::ComputeNeutronMetadataAgent + - OS::TripleO::Services::ComputeNeutronOvsAgent + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::Iscsid + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::NeutronBgpVpnBagpipe + - OS::TripleO::Services::NeutronLinuxbridgeAgent + - OS::TripleO::Services::NeutronVppAgent + - OS::TripleO::Services::NovaCompute + - OS::TripleO::Services::NovaLibvirt + - OS::TripleO::Services::NovaMigrationTarget + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::OpenDaylightOvs + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::SkydiveAgent + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Vpp + - OS::TripleO::Services::OVNController diff --git a/roles/HciCephMon.yaml b/roles/HciCephMon.yaml new file mode 100644 index 0000000000..806783ba56 --- /dev/null +++ b/roles/HciCephMon.yaml @@ -0,0 +1,56 @@ +############################################################################### +# Role: HciCephMon # +############################################################################### +- name: HciCephMon + description: | + HCI Scale-out Block Full Role (OSD + MON + MGR + Nova) + networks: + - InternalApi + - Tenant + - Storage + - StorageMgmt + disable_upgrade_deployment: True + HostnameFormatDefault: '%stackname%-hci-ceph-mon-%index%' + ServicesDefault: + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CephClient + - OS::TripleO::Services::CephExternal + - OS::TripleO::Services::CephMgr + - OS::TripleO::Services::CephMon + - OS::TripleO::Services::CephOSD + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::ComputeCeilometerAgent + - OS::TripleO::Services::ComputeNeutronCorePlugin + - OS::TripleO::Services::ComputeNeutronL3Agent + - OS::TripleO::Services::ComputeNeutronMetadataAgent + - OS::TripleO::Services::ComputeNeutronOvsAgent + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::Iscsid + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::NeutronBgpVpnBagpipe + - OS::TripleO::Services::NeutronLinuxbridgeAgent + - OS::TripleO::Services::NeutronVppAgent + - OS::TripleO::Services::NovaCompute + - OS::TripleO::Services::NovaLibvirt + - OS::TripleO::Services::NovaMigrationTarget + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::OpenDaylightOvs + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::SkydiveAgent + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Vpp + - OS::TripleO::Services::OVNController diff --git a/roles/HciCephObject.yaml b/roles/HciCephObject.yaml new file mode 100644 index 0000000000..3795cf0393 --- /dev/null +++ b/roles/HciCephObject.yaml @@ -0,0 +1,55 @@ +############################################################################### +# Role: HciCephObject # +############################################################################### +- name: HciCephObject + description: | + HCI Scale-out Object Role (OSD + Nova + RGW) + networks: + - InternalApi + - Tenant + - Storage + - StorageMgmt + disable_upgrade_deployment: True + HostnameFormatDefault: '%stackname%-hci-ceph-object-%index%' + ServicesDefault: + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CephClient + - OS::TripleO::Services::CephExternal + - OS::TripleO::Services::CephRgw + - OS::TripleO::Services::CephOSD + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::ComputeCeilometerAgent + - OS::TripleO::Services::ComputeNeutronCorePlugin + - OS::TripleO::Services::ComputeNeutronL3Agent + - OS::TripleO::Services::ComputeNeutronMetadataAgent + - OS::TripleO::Services::ComputeNeutronOvsAgent + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::Iscsid + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::NeutronBgpVpnBagpipe + - OS::TripleO::Services::NeutronLinuxbridgeAgent + - OS::TripleO::Services::NeutronVppAgent + - OS::TripleO::Services::NovaCompute + - OS::TripleO::Services::NovaLibvirt + - OS::TripleO::Services::NovaMigrationTarget + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::OpenDaylightOvs + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::SkydiveAgent + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Vpp + - OS::TripleO::Services::OVNController diff --git a/tools/yaml-validate.py b/tools/yaml-validate.py index d08ea6f316..b6968c4d17 100755 --- a/tools/yaml-validate.py +++ b/tools/yaml-validate.py @@ -222,11 +222,94 @@ def validate_hci_computehci_role(hci_role_filename, hci_role_tpl): hci_role_services = role['ServicesDefault'] hci_role_services.remove('OS::TripleO::Services::CephOSD') if sorted(hci_role_services) != sorted(compute_role_services): - print('ERROR: ServicesDefault in %s is different from' + print('ERROR: ServicesDefault in %s is different from ' 'ServicesDefault in roles/Compute.yaml' % hci_role_filename) return 1 return 0 +def validate_hci_role(hci_role_filename, hci_role_tpl): + role_files = ['HciCephAll', 'HciCephFile', 'HciCephMon', 'HciCephObject'] + if hci_role_filename in ['./roles/'+ x +'.yaml' for x in role_files]: + compute_role_filename = os.path.join(os.path.dirname(hci_role_filename), + './Compute.yaml') + compute_role_tpl = yaml.load(open(compute_role_filename).read()) + compute_role_services = compute_role_tpl[0]['ServicesDefault'] + for role in hci_role_tpl: + if role['name'] == 'HciCephAll': + hci_role_services = role['ServicesDefault'] + hci_role_services.remove('OS::TripleO::Services::CephMds') + hci_role_services.remove('OS::TripleO::Services::CephMgr') + hci_role_services.remove('OS::TripleO::Services::CephMon') + hci_role_services.remove('OS::TripleO::Services::CephRbdMirror') + hci_role_services.remove('OS::TripleO::Services::CephRgw') + hci_role_services.remove('OS::TripleO::Services::CephOSD') + if role['name'] == 'HciCephFile': + hci_role_services = role['ServicesDefault'] + hci_role_services.remove('OS::TripleO::Services::CephMds') + hci_role_services.remove('OS::TripleO::Services::CephOSD') + if role['name'] == 'HciCephMon': + hci_role_services = role['ServicesDefault'] + hci_role_services.remove('OS::TripleO::Services::CephMgr') + hci_role_services.remove('OS::TripleO::Services::CephMon') + hci_role_services.remove('OS::TripleO::Services::CephOSD') + if role['name'] == 'HciCephObject': + hci_role_services = role['ServicesDefault'] + hci_role_services.remove('OS::TripleO::Services::CephRgw') + hci_role_services.remove('OS::TripleO::Services::CephOSD') + if sorted(hci_role_services) != sorted(compute_role_services): + print('ERROR: ServicesDefault in %s is different from ' + 'ServicesDefault in roles/Compute.yaml' % hci_role_filename) + return 1 + return 0 + +def validate_ceph_role(ceph_role_filename, ceph_role_tpl): + role_files = ['CephAll', 'CephFile', 'CephMon', 'CephObject'] + if ceph_role_filename in ['./roles/'+ x +'.yaml' for x in role_files]: + ceph_storage_role_filename = os.path.join(os.path.dirname(ceph_role_filename), + './CephStorage.yaml') + ceph_storage_role_tpl = yaml.load(open(ceph_storage_role_filename).read()) + ceph_storage_role_services = ceph_storage_role_tpl[0]['ServicesDefault'] + for role in ceph_role_tpl: + if role['name'] == 'CephAll': + ceph_role_services = role['ServicesDefault'] + ceph_role_services.remove('OS::TripleO::Services::CephClient') + ceph_role_services.remove('OS::TripleO::Services::CephMds') + ceph_role_services.remove('OS::TripleO::Services::CephMgr') + ceph_role_services.remove('OS::TripleO::Services::CephMon') + ceph_role_services.remove('OS::TripleO::Services::CephRbdMirror') + ceph_role_services.remove('OS::TripleO::Services::CephRgw') + if role['name'] == 'CephFile': + ceph_role_services = role['ServicesDefault'] + ceph_role_services.remove('OS::TripleO::Services::CephClient') + ceph_role_services.remove('OS::TripleO::Services::CephMds') + if role['name'] == 'CephObject': + ceph_role_services = role['ServicesDefault'] + ceph_role_services.remove('OS::TripleO::Services::CephClient') + ceph_role_services.remove('OS::TripleO::Services::CephRgw') + if sorted(ceph_role_services) != sorted(ceph_storage_role_services): + print('ERROR: ServicesDefault in %s is different from ' + 'ServicesDefault in roles/Ceph_storage.yaml' % ceph_role_filename) + return 1 + return 0 + +def validate_controller_no_ceph_role(filename, tpl): + control_role_filename = os.path.join(os.path.dirname(filename), + './Controller.yaml') + control_role_tpl = yaml.load(open(control_role_filename).read()) + control_role_services = control_role_tpl[0]['ServicesDefault'] + for role in tpl: + if role['name'] == 'ControllerNoCeph': + services = role['ServicesDefault'] + services.append('OS::TripleO::Services::CephMds') + services.append('OS::TripleO::Services::CephMgr') + services.append('OS::TripleO::Services::CephMon') + services.append('OS::TripleO::Services::CephRbdMirror') + services.append('OS::TripleO::Services::CephRgw') + if sorted(services) != sorted(control_role_services): + print('ERROR: ServicesDefault in %s is different from ' + 'ServicesDefault in roles/Controller.yaml' % filename) + return 1 + return 0 def validate_with_compute_role_services(role_filename, role_tpl, exclude_service): cmpt_filename = os.path.join(os.path.dirname(role_filename), @@ -569,6 +652,15 @@ def validate(filename, param_map): 'OS::TripleO::Services::NeutronLinuxbridgeAgent'] retval = validate_with_compute_role_services(filename, tpl, exclude) + if filename.startswith('./roles/Hci'): + retval = validate_hci_role(filename, tpl) + + if filename.startswith('./roles/Ceph'): + retval = validate_ceph_role(filename, tpl) + + if filename.startswith('./roles/ControllerNoCeph.yaml'): + retval = validate_controller_no_ceph_role(filename, tpl) + except Exception: print(traceback.format_exc()) return 1