
Move sysctl configure to the sunbeam-machine charms, this allows configuring the same set of values indepently from the machine provider. Added tests constraints to limits resource usage and ues virtual machines, as sysctl config modification in the container is usually banned by LXD. Change-Id: Ia0c66f14227f0d4c38735bb0d8e99f3868616305
495 lines
12 KiB
Bash
495 lines
12 KiB
Bash
#!/bin/bash
|
|
|
|
# All libraries required by sunbeam charms are centrally
|
|
# maintained in libs folder. The libraries created by
|
|
# sunbeam charms are placed in libs/internal and the
|
|
# libraries provided by external charms are maintained
|
|
# in libs/external.
|
|
# All generic template parts are maintained in
|
|
# templates/parts folder.
|
|
#
|
|
# This script provides functions for each sunbeam charms
|
|
# all the common files that should be copied to charm
|
|
# for building the charm and function testing.
|
|
|
|
|
|
NULL_ARRAY=()
|
|
|
|
# Internal libs for component. If libs are repeated, reuse the existing component
|
|
INTERNAL_CEILOMETER_LIBS=(
|
|
"keystone_k8s"
|
|
"ceilometer_k8s"
|
|
"gnocchi_k8s"
|
|
)
|
|
|
|
INTERNAL_CINDER_LIBS=(
|
|
"keystone_k8s"
|
|
"cinder_k8s"
|
|
)
|
|
|
|
INTERNAL_CINDER_CEPH_LIBS=(
|
|
"keystone_k8s"
|
|
"cinder_k8s"
|
|
"cinder_ceph_k8s"
|
|
)
|
|
|
|
INTERNAL_DESIGNATE_LIBS=(
|
|
"keystone_k8s"
|
|
"designate_bind_k8s"
|
|
)
|
|
|
|
INTERNAL_DESIGNATE_BIND_LIBS=(
|
|
"designate_bind_k8s"
|
|
)
|
|
|
|
INTERNAL_GNOCCHI_LIBS=(
|
|
"keystone_k8s"
|
|
"gnocchi_k8s"
|
|
)
|
|
|
|
INTERNAL_KEYSTONE_LIBS=(
|
|
"keystone_k8s"
|
|
)
|
|
|
|
INTERNAL_NEUTRON_LIBS=(
|
|
"keystone_k8s"
|
|
"ovn_central_k8s"
|
|
)
|
|
|
|
INTERNAL_NOVA_LIBS=(
|
|
"keystone_k8s"
|
|
"sunbeam_nova_compute_operator"
|
|
)
|
|
|
|
INTERNAL_OPENSTACK_HYPERVISOR_LIBS=(
|
|
"keystone_k8s"
|
|
"ovn_central_k8s"
|
|
"cinder_ceph_k8s"
|
|
"ceilometer_k8s"
|
|
)
|
|
|
|
INTERNAL_OVN_CENTRAL_LIBS=(
|
|
"ovn_central_k8s"
|
|
)
|
|
|
|
# External libs for component. If libs are repeated, reuse the existing component
|
|
EXTERNAL_AODH_LIBS=(
|
|
"data_platform_libs"
|
|
"rabbitmq_k8s"
|
|
"traefik_k8s"
|
|
"certificate_transfer_interface"
|
|
)
|
|
|
|
EXTERNAL_BARBICAN_LIBS=(
|
|
"data_platform_libs"
|
|
"rabbitmq_k8s"
|
|
"traefik_k8s"
|
|
"vault_k8s"
|
|
"certificate_transfer_interface"
|
|
)
|
|
|
|
EXTERNAL_CEILOMETER_LIBS=(
|
|
"rabbitmq_k8s"
|
|
"certificate_transfer_interface"
|
|
)
|
|
|
|
EXTERNAL_CINDER_CEPH_LIBS=(
|
|
"data_platform_libs"
|
|
"rabbitmq_k8s"
|
|
"traefik_k8s"
|
|
)
|
|
|
|
EXTERNAL_DESIGNATE_BIND_LIBS=(
|
|
"observability_libs"
|
|
)
|
|
|
|
EXTERNAL_HEAT_LIBS=(
|
|
"data_platform_libs"
|
|
"rabbitmq_k8s"
|
|
"traefik_route_k8s"
|
|
"certificate_transfer_interface"
|
|
)
|
|
|
|
EXTERNAL_NEUTRON_LIBS=(
|
|
"data_platform_libs"
|
|
"rabbitmq_k8s"
|
|
"traefik_k8s"
|
|
"tls_certificates_interface"
|
|
"certificate_transfer_interface"
|
|
)
|
|
|
|
EXTERNAL_OCTAVIA_LIBS=(
|
|
"data_platform_libs"
|
|
"traefik_k8s"
|
|
"tls_certificates_interface"
|
|
"certificate_transfer_interface"
|
|
)
|
|
|
|
EXTERNAL_OPENSTACK_EXPORTER_LIBS=(
|
|
"grafana_k8s"
|
|
"prometheus_k8s"
|
|
"tls_certificates_interface"
|
|
"certificate_transfer_interface"
|
|
)
|
|
|
|
EXTERNAL_OPENSTACK_HYPERVISOR_LIBS=(
|
|
"data_platform_libs"
|
|
"grafana_agent"
|
|
"observability_libs"
|
|
"operator_libs_linux"
|
|
"rabbitmq_k8s"
|
|
"traefik_k8s"
|
|
"tls_certificates_interface"
|
|
"certificate_transfer_interface"
|
|
)
|
|
|
|
EXTERNAL_SUNBEAM_CLUSTERD_LIBS=(
|
|
"operator_libs_linux"
|
|
)
|
|
|
|
EXTERNAL_SUNBEAM_MACHINE_LIBS=(
|
|
"operator_libs_linux"
|
|
)
|
|
|
|
EXTERNAL_OVN_CENTRAL_LIBS=(
|
|
"tls_certificates_interface"
|
|
)
|
|
|
|
EXTERNAL_OVN_RELAY_LIBS=(
|
|
"tls_certificates_interface"
|
|
"observability_libs"
|
|
)
|
|
|
|
EXTERNAL_TEMPEST_LIBS=(
|
|
"observability_libs"
|
|
"grafana_k8s"
|
|
"loki_k8s"
|
|
)
|
|
|
|
# Config template parts for each component.
|
|
CONFIG_TEMPLATES_AODH=(
|
|
"parts/section-database"
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-service-credentials"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_BARBICAN=(
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-service-user"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_CEILOMETER=(
|
|
"parts/identity-data-id-creds"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-service-credentials-from-identity-service"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_CINDER=(
|
|
"parts/section-database"
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-service-user"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_CINDER_CEPH=(
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-oslo-notifications"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_DESIGNATE=(
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-service-user"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_GLANCE=(
|
|
"parts/section-database"
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-oslo-notifications"
|
|
"parts/section-service-user"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_GNOCCHI=(
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_HEAT=(
|
|
"parts/section-database"
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-trustee"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_HORIZON=(
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_KEYSTONE=(
|
|
"parts/section-database"
|
|
"parts/database-connection"
|
|
"parts/section-federation"
|
|
"parts/section-middleware"
|
|
"parts/section-oslo-cache"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-oslo-middleware"
|
|
"parts/section-oslo-notifications"
|
|
"parts/section-signing"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_MAGNUM=(
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-service-user"
|
|
"parts/section-trust"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_NEUTRON=(
|
|
"parts/section-database"
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-oslo-messaging-rabbit"
|
|
"parts/section-service-user"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_NOVA=${CONFIG_TEMPLATES_NEUTRON[@]}
|
|
|
|
CONFIG_TEMPLATES_OCTAVIA=(
|
|
"parts/section-database"
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
CONFIG_TEMPLATES_PLACEMENT=(
|
|
"parts/database-connection"
|
|
"parts/section-identity"
|
|
"parts/identity-data"
|
|
"parts/section-service-user"
|
|
"ca-bundle.pem.j2"
|
|
)
|
|
|
|
declare -A INTERNAL_LIBS=(
|
|
[aodh-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[barbican-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[ceilometer-k8s]=${INTERNAL_CEILOMETER_LIBS[@]}
|
|
[cinder-k8s]=${INTERNAL_CINDER_LIBS[@]}
|
|
[cinder-ceph-k8s]=${INTERNAL_CINDER_CEPH_LIBS[@]}
|
|
[designate-k8s]=${INTERNAL_DESIGNATE_LIBS[@]}
|
|
[designate-bind-k8s]=${INTERNAL_DESIGNATE_BIND_LIBS[@]}
|
|
[glance-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[gnocchi-k8s]=${INTERNAL_GNOCCHI_LIBS[@]}
|
|
[heat-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[horizon-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[keystone-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[keystone-ldap-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[magnum-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[neutron-k8s]=${INTERNAL_NEUTRON_LIBS[@]}
|
|
[nova-k8s]=${INTERNAL_NOVA_LIBS[@]}
|
|
[octavia-k8s]=${INTERNAL_NEUTRON_LIBS[@]}
|
|
[openstack-exporter-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[openstack-hypervisor]=${INTERNAL_OPENSTACK_HYPERVISOR_LIBS[@]}
|
|
[sunbeam-clusterd]=${NULL_ARRAY[@]}
|
|
[sunbeam-machine]=${NULL_ARRAY[@]}
|
|
[ovn-central-k8s]=${INTERNAL_OVN_CENTRAL_LIBS[@]}
|
|
[ovn-relay-k8s]=${INTERNAL_OVN_CENTRAL_LIBS[@]}
|
|
[placement-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
[tempest-k8s]=${INTERNAL_KEYSTONE_LIBS[@]}
|
|
)
|
|
|
|
declare -A EXTERNAL_LIBS=(
|
|
[aodh-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[barbican-k8s]=${EXTERNAL_BARBICAN_LIBS[@]}
|
|
[ceilometer-k8s]=${EXTERNAL_CEILOMETER_LIBS[@]}
|
|
[cinder-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[cinder-ceph-k8s]=${EXTERNAL_CINDER_CEPH_LIBS[@]}
|
|
[designate-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[designate-bind-k8s]=${EXTERNAL_DESIGNATE_BIND_LIBS[@]}
|
|
[glance-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[gnocchi-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[heat-k8s]=${EXTERNAL_HEAT_LIBS[@]}
|
|
[horizon-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[keystone-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[keystone-ldap-k8s]=${NULL_ARRAY[@]}
|
|
[magnum-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[neutron-k8s]=${EXTERNAL_NEUTRON_LIBS[@]}
|
|
[nova-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[octavia-k8s]=${EXTERNAL_OCTAVIA_LIBS[@]}
|
|
[openstack-exporter-k8s]=${EXTERNAL_OPENSTACK_EXPORTER_LIBS[@]}
|
|
[openstack-hypervisor]=${EXTERNAL_OPENSTACK_HYPERVISOR_LIBS[@]}
|
|
[sunbeam-clusterd]=${EXTERNAL_SUNBEAM_CLUSTERD_LIBS[@]}
|
|
[sunbeam-machine]=${EXTERNAL_SUNBEAM_MACHINE_LIBS[@]}
|
|
[ovn-central-k8s]=${EXTERNAL_OVN_CENTRAL_LIBS[@]}
|
|
[ovn-relay-k8s]=${EXTERNAL_OVN_RELAY_LIBS[@]}
|
|
[placement-k8s]=${EXTERNAL_AODH_LIBS[@]}
|
|
[tempest-k8s]=${EXTERNAL_TEMPEST_LIBS[@]}
|
|
)
|
|
|
|
declare -A CONFIG_TEMPLATES=(
|
|
[aodh-k8s]=${CONFIG_TEMPLATES_AODH[@]}
|
|
[barbican-k8s]=${CONFIG_TEMPLATES_BARBICAN[@]}
|
|
[ceilometer-k8s]=${CONFIG_TEMPLATES_CEILOMETER[@]}
|
|
[cinder-k8s]=${CONFIG_TEMPLATES_CINDER[@]}
|
|
[cinder-ceph-k8s]=${CONFIG_TEMPLATES_CINDER_CEPH[@]}
|
|
[designate-k8s]=${CONFIG_TEMPLATES_DESIGNATE[@]}
|
|
[designate-bind-k8s]=${NULL_ARRAY[@]}
|
|
[glance-k8s]=${CONFIG_TEMPLATES_GLANCE[@]}
|
|
[gnocchi-k8s]=${CONFIG_TEMPLATES_GNOCCHI[@]}
|
|
[heat-k8s]=${CONFIG_TEMPLATES_HEAT[@]}
|
|
[horizon-k8s]=${CONFIG_TEMPLATES_HORIZON[@]}
|
|
[keystone-k8s]=${CONFIG_TEMPLATES_KEYSTONE[@]}
|
|
[keystone-ldap-k8s]=${NULL_ARRAY[@]}
|
|
[magnum-k8s]=${CONFIG_TEMPLATES_MAGNUM[@]}
|
|
[neutron-k8s]=${CONFIG_TEMPLATES_NEUTRON[@]}
|
|
[nova-k8s]=${CONFIG_TEMPLATES_NOVA[@]}
|
|
[octavia-k8s]=${CONFIG_TEMPLATES_OCTAVIA[@]}
|
|
[openstack-exporter-k8s]=${CONFIG_TEMPLATES_HORIZON[@]}
|
|
[openstack-hypervisor]=${NULL_ARRAY[@]}
|
|
[sunbeam-clusterd]=${NULL_ARRAY[@]}
|
|
[sunbeam-machine]=${NULL_ARRAY[@]}
|
|
[ovn-central-k8s]=${NULL_ARRAY[@]}
|
|
[ovn-relay-k8s]=${NULL_ARRAY[@]}
|
|
[placement-k8s]=${CONFIG_TEMPLATES_PLACEMENT[@]}
|
|
[tempest-k8s]=${NULL_ARRAY[@]}
|
|
)
|
|
|
|
|
|
function copy_ops_sunbeam {
|
|
cp -rf ../../ops-sunbeam/ops_sunbeam lib/
|
|
}
|
|
|
|
function copy_internal_libs {
|
|
internal_libs_=${INTERNAL_LIBS[$1]}
|
|
echo "copy_internal_libs for $1:"
|
|
for lib in ${internal_libs_[@]}; do
|
|
echo "Copying $lib"
|
|
cp -rf ../../libs/internal/lib/charms/$lib lib/charms/
|
|
done
|
|
}
|
|
|
|
function copy_external_libs {
|
|
echo "copy_external_libs for $1:"
|
|
external_libs_=${EXTERNAL_LIBS[$1]}
|
|
for lib in ${external_libs_[@]}; do
|
|
echo "Copying $lib"
|
|
cp -rf ../../libs/external/lib/charms/$lib lib/charms/
|
|
done
|
|
}
|
|
|
|
function copy_config_templates {
|
|
echo "copy_config_templates for $1:"
|
|
config_templates_=${CONFIG_TEMPLATES[$1]}
|
|
for part in ${config_templates_[@]}; do
|
|
echo "Copying $part"
|
|
cp -rf ../../templates/$part src/templates/$part
|
|
done
|
|
}
|
|
|
|
function copy_juju_ignore {
|
|
cp ../../.jujuignore .
|
|
}
|
|
|
|
function copy_stestr_conf {
|
|
cp ../../.stestr.conf .
|
|
}
|
|
|
|
function remove_libs {
|
|
rm -rf lib
|
|
}
|
|
|
|
function remove_config_templates {
|
|
echo "remove_config_templates for $1:"
|
|
config_templates_=${CONFIG_TEMPLATES[$1]}
|
|
for part in ${config_templates_[@]}; do
|
|
echo "Removing $part"
|
|
rm src/templates/$part
|
|
done
|
|
|
|
if (test -d src/templates/parts) && (test -n "$(find src/templates/parts -maxdepth 0 -empty)")
|
|
then
|
|
remove_templates_parts_dir
|
|
fi
|
|
}
|
|
|
|
function remove_templates_parts_dir {
|
|
rm -rf src/templates/parts
|
|
}
|
|
|
|
function remove_juju_ignore {
|
|
rm .jujuignore
|
|
}
|
|
|
|
function remove_stestr_conf {
|
|
rm .stestr.conf
|
|
}
|
|
|
|
function push_common_files {
|
|
if [[ $# != 1 ]];
|
|
then
|
|
echo "push_common_files: Expected one argument"
|
|
exit 1
|
|
fi
|
|
|
|
pushd charms/$1
|
|
|
|
mkdir -p lib/charms
|
|
mkdir -p src/templates/parts
|
|
|
|
copy_ops_sunbeam
|
|
copy_internal_libs $1
|
|
copy_external_libs $1
|
|
copy_config_templates $1
|
|
copy_stestr_conf
|
|
copy_juju_ignore
|
|
|
|
popd
|
|
}
|
|
|
|
function pop_common_files {
|
|
pushd charms/$1
|
|
|
|
remove_libs
|
|
remove_config_templates $1
|
|
remove_stestr_conf
|
|
remove_juju_ignore
|
|
|
|
popd
|
|
}
|
|
|
|
function copy_libs_for_ops_sunbeam {
|
|
mkdir -p tests/lib
|
|
cp -rf ../libs/external/lib ../libs/internal/lib tests/
|
|
}
|
|
|
|
function remove_libs_for_ops_sunbeam {
|
|
rm -rf tests/lib
|
|
}
|