6.3. IHM Recette serveur

6.3.1. IhmRecette

L’application web IHM Recette est utilisée pour lancer le serveur.

    VitamStarter.createVitamStarterForIHM(WebApplicationConfig.class, configurationFile,
BusinessApplication.class, AdminApplication.class, Lists.newArrayList());

6.3.2. Classe BusinessApplication

La classe BusinessApplication possède les singletons qui contiennent les ressources de l’application web IHM recette(WebApplicationResource) pour:

  • Supprimer des collections vitam (WebApplicationResourceDelete)
  • Gérer les tests système(ApplicativeTestResource)
  • Définir les performances(PerformanceResource)
commonBusinessApplication = new CommonBusinessApplication();
    singletons = new HashSet<>();
    singletons.addAll(commonBusinessApplication.getResources());

    final WebApplicationResourceDelete deleteResource = new WebApplicationResourceDelete(configuration);
    final WebApplicationResource resource = new WebApplicationResource(configuration.getTenants(), configuration.getSecureMode());
    singletons.add(deleteResource);
    singletons.add(resource);

    Path sipDirectory = Paths.get(configuration.getSipDirectory());
    Path reportDirectory = Paths.get(configuration.getPerformanceReportDirectory());

    if (!Files.exists(sipDirectory)) {
        Exception sipNotFound =
            new FileNotFoundException(String.format("directory %s does not exist", sipDirectory));
        throw Throwables.propagate(sipNotFound);
    }

    if (!Files.exists(reportDirectory)) {
        Exception reportNotFound =
            new FileNotFoundException(format("directory %s does not exist", reportDirectory));
        throw Throwables.propagate(reportNotFound);
    }

    PerformanceService performanceService = new PerformanceService(sipDirectory, reportDirectory);
    singletons.add(new PerformanceResource(performanceService));

    String testSystemSipDirectory = configuration.getTestSystemSipDirectory();
    String testSystemReportDirectory = configuration.getTestSystemReportDirectory();
    ApplicativeTestService applicativeTestService =
        new ApplicativeTestService(Paths.get(testSystemReportDirectory));

    singletons.add(new ApplicativeTestResource(applicativeTestService,
        testSystemSipDirectory));

6.3.3. Configuration

Le fichier de configuration se nomme ihm-recette.conf:

6.3.3.1. Fichier ihm-recette.conf

#jinja2: lstrip_blocks: True
serverHost: {{ ip_service }}
port: {{ vitam_struct.port_service }}

baseUrl: "/{{ vitam_struct.baseuri }}"
baseUri: "/{{ vitam_struct.baseuri }}"

jettyConfig: jetty-config.xml
authentication: true
enableXsrFilter: true
enableSession: true

secureMode:
{% for securemode in vitam_struct.secure_mode %}
- {{ securemode }}
{% endfor %}
sipDirectory: {{ vitam_folder_data }}/test-data
performanceReportDirectory: {{ vitam_folder_data }}/report/performance

testSystemSipDirectory: {{ vitam_folder_data }}/test-data/system
testSystemReportDirectory: {{ vitam_folder_data }}/report/system
ingestMaxThread: {{ ansible_processor_cores * ansible_processor_threads_per_core + 1 }}

#
workspaceUrl: {{vitam.workspace | client_url}}

# Configuration MongoDB
mongoDbNodes:
{% for server in groups['hosts_mongos_data'] %}
- dbHost: {{ hostvars[server]['ip_service'] }}
  dbPort: {{ mongodb.mongos_port }}
{% endfor %}
# Actually need this field for compatibility
dbName: admin
# @integ: parametrize it !
masterdataDbName: masterdata
logbookDbName: logbook
metadataDbName: metadata
dbAuthentication: {{ mongodb.mongo_authentication }}
dbUserName: {{ mongodb['mongo-data']['admin']['user'] }}
dbPassword: {{ mongodb['mongo-data']['admin']['password'] }}

# ElasticSearch
clusterName: {{ vitam_struct.cluster_name }}
elasticsearchNodes:
{% for server in groups['hosts_elasticsearch_data'] %}
- hostName: {{ hostvars[server]['ip_service'] }}
  httpPort: {{ elasticsearch.data.port_http }}
{% endfor %}

# ElasticSearch External Metadata Mapping
elasticsearchExternalMetadataMappings:
- collection: Unit
  mappingFile: {{ vitam.ihm_recette.elasticsearch_mapping_dir }}/unit-es-mapping.json
- collection: ObjectGroup
  mappingFile: {{ vitam.ihm_recette.elasticsearch_mapping_dir }}/og-es-mapping.json

# Functional Admin Configuration
functionalAdminAdmin:
   functionalAdminServerHost: {{ vitam.functional_administration.host }}
   functionalAdminServerPort: {{ vitam.functional_administration.port_admin }}
   adminBasicAuth:
      userName: {{ admin_basic_auth_user }}
      password: {{ admin_basic_auth_password }}

# ES index configuration
functionalAdminIndexationSettings:
  default_config:
    number_of_shards: {{ vitam_elasticsearch_tenant_indexation.default_config.masterdata.number_of_shards | default('1') }}
    number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.default_config.masterdata.number_of_replicas | default('2') }}

{% for collection in ["accesscontract", "accessionregisterdetail", "accessionregistersummary", "accessionregistersymbolic", "agencies", "archiveunitprofile", "context", "fileformat", "filerules", "griffin", "ingestcontract", "managementcontract", "ontology", "preservationscenario", "profile", "securityprofile"] %}
  {% if vitam_elasticsearch_tenant_indexation.masterdata[collection] is defined %}
  {{ collection }}:
    {% if vitam_elasticsearch_tenant_indexation.masterdata[collection].number_of_shards is defined %}
    number_of_shards: {{ vitam_elasticsearch_tenant_indexation.masterdata[collection].number_of_shards }}
    {% endif %}
    {% if vitam_elasticsearch_tenant_indexation.masterdata[collection].number_of_replicas is defined %}
    number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.masterdata[collection].number_of_replicas }}
    {% endif %}
  {% endif %}
{% endfor %}

metadataIndexationSettings:
  default_config:
    unit:
      number_of_shards: {{ vitam_elasticsearch_tenant_indexation.default_config.unit.number_of_shards | default('1') }}
      number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.default_config.unit.number_of_replicas | default('2') }}
    objectgroup:
      number_of_shards: {{ vitam_elasticsearch_tenant_indexation.default_config.objectgroup.number_of_shards | default('1') }}
      number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.default_config.objectgroup.number_of_replicas | default('2') }}

{% if vitam_elasticsearch_tenant_indexation.dedicated_tenants is defined and vitam_elasticsearch_tenant_indexation.dedicated_tenants is not none %}
  dedicated_tenants:
  {% for entry in vitam_elasticsearch_tenant_indexation.dedicated_tenants %}
  - tenants: '{{ entry.tenants }}'
    {% if entry.unit is defined %}
    unit:
      {% if entry.unit.number_of_shards is defined %}
      number_of_shards: {{ entry.unit.number_of_shards }}
      {% endif %}
      {% if entry.unit.number_of_replicas is defined %}
      number_of_replicas: {{ entry.unit.number_of_replicas }}
      {% endif %}
    {% endif %}
    {% if entry.objectgroup is defined %}
    objectgroup:
      {% if entry.objectgroup.number_of_shards is defined %}
      number_of_shards: {{ entry.objectgroup.number_of_shards }}
      {% endif %}
      {% if entry.objectgroup.number_of_replicas is defined %}
      number_of_replicas: {{ entry.objectgroup.number_of_replicas }}
      {% endif %}
    {% endif %}
  {% endfor %}
{% endif %}

{% if vitam_elasticsearch_tenant_indexation.grouped_tenants is defined and vitam_elasticsearch_tenant_indexation.grouped_tenants is not none %}
  grouped_tenants:
  {% for entry in vitam_elasticsearch_tenant_indexation.grouped_tenants %}
  - name: '{{ entry.name }}'
    tenants: '{{ entry.tenants }}'
    {% if entry.unit is defined %}
    unit:
      {% if entry.unit.number_of_shards is defined %}
      number_of_shards: {{ entry.unit.number_of_shards }}
      {% endif %}
      {% if entry.unit.number_of_replicas is defined %}
      number_of_replicas: {{ entry.unit.number_of_replicas }}
      {% endif %}
    {% endif %}
    {% if entry.objectgroup is defined %}
    objectgroup:
      {% if entry.objectgroup.number_of_shards is defined %}
      number_of_shards: {{ entry.objectgroup.number_of_shards }}
      {% endif %}
      {% if entry.objectgroup.number_of_replicas is defined %}
      number_of_replicas: {{ entry.objectgroup.number_of_replicas }}
      {% endif %}
    {% endif %}
  {% endfor %}
{% endif %}

logbookIndexationSettings:
  default_config:
    logbookoperation:
      number_of_shards: {{ vitam_elasticsearch_tenant_indexation.default_config.logbookoperation.number_of_shards | default('1') }}
      number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.default_config.logbookoperation.number_of_replicas | default('2') }}

{% if vitam_elasticsearch_tenant_indexation.dedicated_tenants is defined and vitam_elasticsearch_tenant_indexation.dedicated_tenants is not none %}
  dedicated_tenants:
  {% for entry in vitam_elasticsearch_tenant_indexation.dedicated_tenants %}
  - tenants: '{{ entry.tenants }}'
    {% if entry.logbookoperation is defined %}
    logbookoperation:
      {% if entry.logbookoperation.number_of_shards is defined %}
      number_of_shards: {{ entry.logbookoperation.number_of_shards }}
      {% endif %}
      {% if entry.logbookoperation.number_of_replicas is defined %}
      number_of_replicas: {{ entry.logbookoperation.number_of_replicas }}
      {% endif %}
    {% endif %}
  {% endfor %}
{% endif %}

{% if vitam_elasticsearch_tenant_indexation.grouped_tenants is defined and vitam_elasticsearch_tenant_indexation.grouped_tenants is not none %}
  grouped_tenants:
  {% for entry in vitam_elasticsearch_tenant_indexation.grouped_tenants %}
  - name: '{{ entry.name }}'
    tenants: '{{ entry.tenants }}'
    {% if entry.logbookoperation is defined %}
    logbookoperation:
      {% if entry.logbookoperation.number_of_shards is defined %}
      number_of_shards: {{ entry.logbookoperation.number_of_shards }}
      {% endif %}
      {% if entry.logbookoperation.number_of_replicas is defined %}
      number_of_replicas: {{ entry.logbookoperation.number_of_replicas }}
      {% endif %}
    {% endif %}
  {% endfor %}
{% endif %}
  • port, serverHost, jettyConfig, tenants, secureMode
  • baseUrl, baseUri (qui configure jetty)
  • authentication (ajoute le filtre shiro si le booléen est à « true »)
  • dbName, masterdataDbName, logbookDbName, metadataDbName, mongoDbNodes, clusterName, elasticsearchNodes
  • testSystemSipDirectory, testSystemReportDirectory
  • sipDirectory, performanceReportDirectory
  • elasticsearchExternalMetadataMappings (liste des collections respectivement Unit et ObjectGroup et les fichiers de mappings associés d’elasticsearch)