Skip to content

Commit

Permalink
Add support for iRODS 4.3
Browse files Browse the repository at this point in the history
  • Loading branch information
stsnel committed Nov 29, 2023
1 parent fc36de9 commit 64b729b
Show file tree
Hide file tree
Showing 12 changed files with 608 additions and 76 deletions.
17 changes: 12 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,19 @@ This repository contains Vagrant configurations for local iRODS VMs.

# Included configurations

- irods-single-server: a basic plain vanilla iRODS server for local testing. It can run on either a CentOS 7 image or a Ubuntu 18.04 LTS image.
- irods-provider-consumer: an iRODS zone consisting of a provider and a single consumer. It can run on either a CentOS 7 image or a Ubuntu 18.04 LTS image. The VMs are meant for local testing, and run with default key values.
- irods-icommands: a VM which contains the icommands tools for remote administration of iRODS. It can run on either a CentOS 7 image or a Ubuntu 18.04 LTS image.
- irods-single-server: a basic plain vanilla iRODS server for local testing.
- irods-provider-consumer: an iRODS zone consisting of a provider and a single consumer. The VMs are meant for local testing, and run with default key values.
- irods-icommands: a VM which contains the icommands tools for remote administration of iRODS.

These scripts should support the 4.2.x iRODS versions that are available through the package repositories. As of 20 May 2023, versions 4.2.2 through 4.2.12 are available in the repositories.
Version 4.3.0 is available in the repository, but not yet supported.
These scripts should support the 4.2.x and 4.3.x iRODS versions that are available through the package repositories. As of 29 November 2023, versions 4.2.2 through 4.2.12, as well as 4.3.0 through 4.3.1, are available in the repositories.

The following distributions are supported:
- iRODS 4.2.x: CentOS7 and Ubuntu 18.04 LTS (bionic)
- iRODS 4.3.x: Ubuntu 20.04 LTS (focal)

# Known issues

- Logging is not yet configured for iRODS 4.3

# Usage

Expand Down
140 changes: 140 additions & 0 deletions _common/common_functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,156 @@ function get_package_version()
then package_version="4.2.11.1"
elif [ "$IRODS_VERSION" == "4.2.12" ] && [ "$distro" == "centos" ]
then package_version="4.2.12.0"
elif [ "$IRODS_VERSION" == "4.3.0" ] && [ "$distro" == "ubuntu" ]
then package_version="4.3.0.0-1~focal"
elif [ "$IRODS_VERSION" == "4.3.0" ] && [ "$distro" == "centos" ]
then package_version="4.3.0.0"
elif [ "$IRODS_VERSION" == "4.3.1" ] && [ "$distro" == "ubuntu" ]
then package_version="4.3.1.0-0~focal"
elif [ "$IRODS_VERSION" == "4.3.1" ] && [ "$distro" == "centos" ]
then package_version="4.3.1.0"
else package_version="$IRODS_VERSION"
fi
else
if [ "$IRODS_VERSION" == "4.2.11" ] && [ "$distro" == "ubuntu" ]
then package_version="4.2.11-1~xenial"
elif [ "$IRODS_VERSION" == "4.2.12" ] && [ "$distro" == "ubuntu" ]
then package_version="4.2.12-1~bionic"
elif [ "$IRODS_VERSION" == "4.3.0" ] && [ "$distro" == "ubuntu" ]
then package_version="4.3.0-1~focal"
elif [ "$IRODS_VERSION" == "4.3.1" ] && [ "$distro" == "ubuntu" ]
then package_version="4.3.1-0~focal"
else # shellcheck disable=SC2034
package_version="$IRODS_VERSION"
fi
fi
}

function write_irods_config()
{

cat > /etc/irods/setup_irods.json << IRODS_CONFIG_END
{
"admin_password": "$ADMIN_PASSWORD",
"service_account_environment": {
"irods_host": "provider.local",
"irods_port": 1247,
"irods_user_name": "rods",
"irods_zone_name": "$ZONE_NAME",
"irods_client_server_negotiation": "request_server_negotiation",
"irods_client_server_policy": "CS_NEG_REFUSE",
"irods_cwd": "/$ZONE_NAME/home/rods",
"irods_default_hash_scheme": "SHA256",
"irods_default_resource": "demoResc",
"irods_encryption_algorithm": "AES-256-CBC",
"irods_encryption_key_size": 32,
"irods_encryption_salt_size": 8,
"irods_encryption_num_hash_rounds": 16,
"irods_home": "/$ZONE_NAME/home/rods",
"irods_match_hash_policy": "compatible"
},
"host_access_control_config": {
"access_entries": []
},
"hosts_config": {
"host_entries": []
},
"host_system_information": {
"service_account_user_name": "vagrant",
"service_account_group_name": "vagrant"
},
"server_config": {
"advanced_settings": {
"default_log_rotation_in_days": 5,
"default_number_of_transfer_threads": 4,
"default_temporary_password_lifetime_in_seconds": 120,
"maximum_number_of_concurrent_rule_engine_server_processes": 4,
"maximum_size_for_single_buffer_in_megabytes": 32,
"maximum_temporary_password_lifetime_in_seconds": 1000,
"rule_engine_server_execution_time_in_seconds": 120,
"rule_engine_server_sleep_time_in_seconds": 10,
"transfer_buffer_size_for_parallel_transfer_in_megabytes": 4,
"transfer_chunk_size_for_parallel_transfer_in_megabytes": 40
},
"catalog_provider_hosts": [
"provider.local"
],
"catalog_service_role": "provider",
"default_dir_mode": "0750",
"default_file_mode": "0600",
"default_hash_scheme": "SHA256",
"default_resource_name": "demoResc",
"environment_variables": {},
"federation": [],
"host_resolution": {
"host_entries": []
},
"match_hash_policy": "compatible",
"negotiation_key": "$NEG_KEY",
"plugin_configuration": {
"authentication": {},
"database": {
"postgres": {
"db_host": "localhost",
"db_name": "ICAT",
"db_odbc_driver": "PostgreSQL",
"db_password": "$DB_PASSWORD",
"db_port": 5432,
"db_username": "irods"
}
},
"network": {},
"resource": {},
"rule_engines": [{
"instance_name": "irods_rule_engine_plugin-irods_rule_language-instance",
"plugin_name": "irods_rule_engine_plugin-irods_rule_language",
"plugin_specific_configuration": {
"re_data_variable_mapping_set": [
"core"
],
"re_function_name_mapping_set": [
"core"
],
"re_rulebase_set": [
"core"
],
"regexes_for_supported_peps": [
"ac[^ ]*",
"msi[^ ]*",
"[^ ]*pep_[^ ]*_(pre|post)"
]
},
"shared_memory_instance": "irods_rule_language_rule_engine"
},
{
"instance_name": "irods_rule_engine_plugin-cpp_default_policy-instance",
"plugin_name": "irods_rule_engine_plugin-cpp_default_policy",
"plugin_specific_configuration": {}
}
]
},
"rule_engine_namespaces": [
""
],
"schema_name": "server_config",
"schema_validation_base_uri": "https://schemas.irods.org/configuration",
"schema_version": "v3",
"server_control_plane_encryption_algorithm": "AES-256-CBC",
"server_control_plane_encryption_num_hash_rounds": 16,
"server_control_plane_key": "$CP_KEY",
"server_control_plane_port": 1248,
"server_control_plane_timeout_milliseconds": 10000,
"server_port_range_end": 20000,
"server_port_range_start": 20199,
"xmsg_port": 1279,
"zone_auth_scheme": "native",
"zone_key": "$ZONE_KEY",
"zone_name": "$ZONE_NAME",
"zone_port": 1247,
"zone_user": "rods"
},
"default_resource_name": "demoResc"
}
IRODS_CONFIG_END

}
149 changes: 149 additions & 0 deletions _common/consumer-unattended-install.irods-4.3.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
{
"admin_password": "$ADMIN_PASSWORD",
"default_resource_directory": "/var/lib/irods/Vault",
"default_resource_name": "otherResc",
"host_system_information": {
"service_account_user_name": "vagrant",
"service_account_group_name": "vagrant"
},
"service_account_environment": {
"irods_client_server_negotiation": "request_server_negotiation",
"irods_client_server_policy": "CS_NEG_REFUSE",
"irods_connection_pool_refresh_time_in_seconds": 300,
"irods_cwd": "/$ZONE_NAME/home/rods",
"irods_default_hash_scheme": "SHA256",
"irods_default_number_of_transfer_threads": 4,
"irods_default_resource": "otherResc",
"irods_encryption_algorithm": "AES-256-CBC",
"irods_encryption_key_size": 32,
"irods_encryption_num_hash_rounds": 16,
"irods_encryption_salt_size": 8,
"irods_home": "/$ZONE_NAME/home/rods",
"irods_host": "$CONSUMER_HOSTNAME",
"irods_match_hash_policy": "compatible",
"irods_maximum_size_for_single_buffer_in_megabytes": 32,
"irods_port": 1247,
"irods_server_control_plane_encryption_algorithm": "AES-256-CBC",
"irods_server_control_plane_encryption_num_hash_rounds": 16,
"irods_server_control_plane_key": "$CP_KEY",
"irods_server_control_plane_port": 1248,
"irods_transfer_buffer_size_for_parallel_transfer_in_megabytes": 4,
"irods_user_name": "rods",
"irods_zone_name": "$ZONE_NAME",
"schema_name": "service_account_environment",
"schema_version": "v4"
},
"server_config": {
"advanced_settings": {
"default_log_rotation_in_days": 5,
"default_number_of_transfer_threads": 4,
"default_temporary_password_lifetime_in_seconds": 120,
"delay_rule_executors": [],
"delay_server_sleep_time_in_seconds": 30,
"dns_cache": {
"eviction_age_in_seconds": 3600,
"shared_memory_size_in_bytes": 5000000
},
"hostname_cache": {
"eviction_age_in_seconds": 3600,
"shared_memory_size_in_bytes": 2500000
},
"maximum_size_for_single_buffer_in_megabytes": 32,
"maximum_size_of_delay_queue_in_bytes": 0,
"maximum_temporary_password_lifetime_in_seconds": 1000,
"number_of_concurrent_delay_rule_executors": 4,
"stacktrace_file_processor_sleep_time_in_seconds": 10,
"transfer_buffer_size_for_parallel_transfer_in_megabytes": 4,
"transfer_chunk_size_for_parallel_transfer_in_megabytes": 40
},
"catalog_provider_hosts": [
"irods-provider"
],
"catalog_service_role": "consumer",
"client_api_allowlist_policy": "enforce",
"controlled_user_connection_list": {
"control_type": "denylist",
"users": []
},
"default_dir_mode": "0750",
"default_file_mode": "0600",
"default_hash_scheme": "SHA256",
"default_resource_name": "otherResc",
"environment_variables": {},
"federation": [],
"host_access_control": {
"access_entries": []
},
"host_resolution": {
"host_entries": []
},
"log_level": {
"agent": "info",
"agent_factory": "info",
"api": "info",
"authentication": "info",
"database": "info",
"delay_server": "info",
"legacy": "info",
"microservice": "info",
"network": "info",
"resource": "info",
"rule_engine": "info",
"server": "info"
},
"match_hash_policy": "compatible",
"negotiation_key": "$NEG_KEY",
"plugin_configuration": {
"authentication": {},
"network": {},
"resource": {},
"rule_engines": [
{
"instance_name": "irods_rule_engine_plugin-irods_rule_language-instance",
"plugin_name": "irods_rule_engine_plugin-irods_rule_language",
"plugin_specific_configuration": {
"re_data_variable_mapping_set": [
"core"
],
"re_function_name_mapping_set": [
"core"
],
"re_rulebase_set": [
"core"
],
"regexes_for_supported_peps": [
"ac[^ ]*",
"msi[^ ]*",
"[^ ]*pep_[^ ]*_(pre|post|except|finally)"
]
},
"shared_memory_instance": "irods_rule_language_rule_engine"
},
{
"instance_name": "irods_rule_engine_plugin-cpp_default_policy-instance",
"plugin_name": "irods_rule_engine_plugin-cpp_default_policy",
"plugin_specific_configuration": {}
}
]
},
"rule_engine_namespaces": [
""
],
"schema_name": "server_config",
"schema_validation_base_uri": "file:///var/lib/irods/configuration_schemas",
"schema_version": "v4",
"server_control_plane_encryption_algorithm": "AES-256-CBC",
"server_control_plane_encryption_num_hash_rounds": 16,
"server_control_plane_key": "$CP_KEY",
"server_control_plane_port": 1248,
"server_control_plane_timeout_milliseconds": 10000,
"server_port_range_end": 20199,
"server_port_range_start": 20000,
"xmsg_port": 1279,
"zone_auth_scheme": "native",
"zone_key": "$ZONE_KEY",
"zone_name": "$ZONE_NAME",
"zone_port": 1247,
"zone_user": "rods"
}
}
Loading

0 comments on commit 64b729b

Please sign in to comment.