﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tag Instance - Constellation</title>
	<atom:link href="https://developer.myconstellation.io/tag/instance/feed/" rel="self" type="application/rss+xml" />
	<link>https://developer.myconstellation.io/tag/instance/</link>
	<description>Votre plateforme d&#039;interconnexion</description>
	<lastBuildDate>Mon, 04 Feb 2019 16:24:36 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.11</generator>

<image>
	<url>https://developer.myconstellation.io/wp-content/uploads/2016/02/256x256-e1457476015859.png</url>
	<title>Tag Instance - Constellation</title>
	<link>https://developer.myconstellation.io/tag/instance/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Instance de package, package, versioning, multi-instances et résolution des packages</title>
		<link>https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/</link>
					<comments>https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Thu, 11 Aug 2016 12:27:29 +0000</pubDate>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Manifest]]></category>
		<category><![CDATA[PackageInfo.xml]]></category>
		<category><![CDATA[Sentinel]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Instance]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2246</guid>

					<description><![CDATA[<p>Un package est une application avec ou sans une interface graphique qu’on déploie et exécute sur une sentinelle de votre Constellation (plus d’information ici). Concrètement un package est un fichier ZIP qui contient un exécutable (exe) qui sera exécuté et</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/">Instance de package, package, versioning, multi-instances et résolution des packages</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Un package est une application avec ou sans une interface graphique qu’on déploie et exécute sur une sentinelle de votre Constellation (<a href="/concepts/architecture-constellation-sentinel-package/#Les_packages">plus d’information ici</a>).</p>
<p>Concrètement un package est un fichier ZIP qui contient un exécutable (exe) qui sera exécuté et supervisé par une sentinelle.</p>
<h3>Sentinel + Package = Instance de package</h3>
<p>Par défaut, Constellation va utiliser le package dont le nom est celui de l’instance que vous déclarez dans la <a href="/constellation-platform/constellation-server/fichier-de-configuration/">configuration</a>.</p>
<p>Par exemple, pour déployer le package “HWMonitor” sur la sentinelle nommée “SENTINEL-DEMO”, on écrira dans le <a href="/constellation-platform/constellation-server/fichier-de-configuration/">fichier de configuration</a> :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="SENTINEL-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor"&gt;&lt;/package&gt;
    &lt;/packages&gt;
&lt;/sentinel&gt;</pre><p></p>
<p>L’attribut “name” du package est le <strong>nom de l’instance</strong> du package. On parlera alors de l’instance “SENTINEL-DEMO/HWMonitor” pour identifier de manière unique l’instance de ce package dans une Constellation.</p>
<p>Lors du déploiement, <strong>Constellation va analyser chaque package dans son repository pour récupérer celui dont le nom déclaré son </strong><a href="/concepts/package-manifest/"><strong>manifeste</strong></a><strong> correspond</strong> au nom de notre instance.</p>
<p>Dans le cas où il ne trouve aucun package dont le <a href="/concepts/package-manifest/">manifeste</a> déclare le nom de package recherché, il va tenter de sélectionner le package à partir du fichier “&lt;nom d’instance&gt;.zip”. Si ce fichier n’existe pas alors une erreur sera levée dans les logs de la Constellation.</p>
<p>Dans notre cas, Constellation va analyser chaque package de son repository (c’est à dire chaque fichier .ZIP) pour récupérer celui qui a dans son <a href="/concepts/package-manifest/">manifeste</a> (<em>PackageInfo.xml</em>) déclaré la propriété “Name” à “HWMonitor”. Si il ne le trouve pas, il va tenter de récupérer le package par le nom de fichier “HWMonitor.zip”.</p>
<h3>Versioning des packages</h3>
<p>En plus du nom du package, le <a href="/concepts/package-manifest/">manifeste</a> (<em>PackageInfo.xml</em>) déclare également d’autre information comme la version du package.</p>
<p>Le “Package Repository” d’un serveur Constellation peut donc contenir plusieurs versions d’un même package.</p>
<p>Par exemple, imaginez les packages suivants stockés dans le “Package Repository” de votre serveur Constellation :</p>
<ul>
<li>HWMonitor.zip (avec dans le manifeste: Name=”HWMonitor” et Version=”1.0”)</li>
<li>HWMonitor-1.1.zip (avec dans le manifeste: Name=”HWMonitor” et Version=”1.1”)</li>
<li>HWMonitor-1.2.zip (avec dans le manifeste: Name=”HWMonitor” et Version=”1.2”)</li>
</ul>
<p><u>Note</u> : la nomenclature des noms des fichiers dans le repository n’a aucune importance.</p>
<p>Si dans votre <a href="/constellation-platform/constellation-server/fichier-de-configuration/">fichier de configuration</a> vous déclarez simplement la ligne suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="HWMonitor"&gt;&lt;/package&gt;</pre><p></p>
<p>Constellation trouvera donc 3 packages qui correspondent (car l&rsquo;attribut name=”HWMonitor” dans les trois packages). Dans ce cas, le serveur <strong>Constellation va sélectionner le package dont la version est la plus haute</strong>.</p>
<p>Ainsi dans cet exemple, c’est le package “HWMonitor-1.2.zip” qui sera déployé sur la sentinelle pour l’instance “HWMonitor”.</p>
<h3>Résolution explicite du fichier d’un package</h3>
<p>Jusqu’à présent la règle est donc d’utiliser le fichier dont le nom du package (d&rsquo;après son manifeste) correspond au nom de l’instance déclarée (package “HWMonitor &lt;&gt; instance “HWMonitor”) et si plusieurs fichiers correspondent on sélectionne la version la plus haute. A contrario, si aucun fichier n’est trouvé, on tente d’utiliser le fichier “&lt;nom d’instance&gt;.zip”.</p>
<p>C’est donc une résolution “implicite” du fichier du package qui est réalisée par le serveur Constellation.</p>
<p>Toutefois il est possible de contourner ce comportement et de<strong> définir explicitement le fichier d’un package à utiliser grâce à l’attribut “filename”</strong>.</p>
<p>Si dans votre <a href="/constellation-platform/constellation-server/fichier-de-configuration/">fichier de configuration</a> vous déclarez la ligne suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="HWMonitor" filename="HWMonitor-1.1.zip"&gt;&lt;/package&gt;</pre><p></p>
<p>Vous définissez explicitement que cette instance nommée “HWMonitor” utilisera le package contenu dans le fichier “HWMonitor-1.1.zip”. On peut donc forcer l’utilisation d’une version spécifique en déclarant explicitement le fichier à utiliser pour une instance d’un package.</p>
<p>On aurait aussi pu écrire :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="HWMonitor" filename="DemoPackage.zip"&gt;&lt;/package&gt;</pre><p></p>
<p>C’est à dire qu’on déclare une instance d’un package nommée “HWMonitor” utilisant le package contenu dans le fichier “DemoPackage.zip”, ce qui n’a pas de sens mais est tout à fait possible !</p>
<p>Ainsi pour résumer, <strong>Constellation utilise donc en priorité le fichier défini par l’attribut “filename”</strong>. Dans le cas contraire on applique la règle implicite définie précédement.</p>
<h3>Instances multiples d’un même package</h3>
<p>Avec cet attribut “filename” il devient possible de déployer plusieurs instances d’un même package sur une même sentinelle tant que le nom d&rsquo;instance est différent.</p>
<p>Prenez la configuration suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="SENTINEL-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor1" filename="HWMonitor.zip"&gt;&lt;/package&gt;
      &lt;package name="HWMonitor2" filename="HWMonitor.zip"&gt;&lt;/package&gt;
   &lt;/packages&gt;
&lt;/sentinel&gt;</pre><p></p>
<p>Dans cet exemple, on a deux instances du package “HWMonitor.zip” qui seront déployées sur “SENTINEL-DEMO”.</p>
<p>Ces instances “SENTINEL-DEMO/HWMonitor1” et “SENTINEL-DEMO/HWMonitor2” sont deux instances différentes dans votre Constellation et peuvent avoir des configuration (settings) différentes mais elles sont basées sur le même code, car elles partagent la même source (le package “HWMonitor.zip”).</p>
<p><strong>Vous pouvez donc déployer le même package plusieurs fois sur une même sentinelle en déclarant plusieurs instances (name) du même package (filename)</strong>.</p>
<h3>Résolution semi-implicite / semi-explicite d’un package</h3>
<p>Le problème des instances multiples est que vous déclarez explicitement le fichier (filename) à utiliser.</p>
<p>Dans l’exemple précèdent “SENTINEL-DEMO/HWMonitor1” et “SENTINEL-DEMO/HWMonitor2” sont des instances du même package “HWMonitor.zip” qui d’après les exemples précédents correspond à la version “1.0” du package “HWMonitor”.</p>
<p>Toujours d’après les exemples précédents, on dispose également de la version 1.1 et 1.2 de ce package dans le « Package Repository »  (fichiers HWMonitor-1.1.zip et HWMonitor-1.2.zip).</p>
<p>Pour mettre à jour ces deux instances (“SENTINEL-DEMO/HWMonitor1” et “SENTINEL-DEMO/HWMonitor2”) vers une version plus récente, disons la version 1.2, il faudra modifier à la fois l’attribut “filename” de l’instance “HWMonitor1” mais également celui de l&rsquo;instance de “HWMonitor2”.</p>
<p>Ce qui revient à écrire :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="SENTINEL-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor1" filename="HWMonitor-1.2.zip"&gt;&lt;/package&gt;
      &lt;package name="HWMonitor2" filename="HWMonitor-1.2.zip"&gt;&lt;/package&gt;
   &lt;/packages&gt;
&lt;/sentinel&gt;</pre><p></p>
<p>Pour éviter cela, il y a un “mode intermédiaire” qu’on pourrait nommer résolution “semi-implicite” ou “semi-explicite” car il s’agit d’un mixte de ces deux modes !</p>
<p>Pour l’utiliser, <strong>il suffit d’omettre l’extension “.zip” dans l’attribut “filename”</strong>.</p>
<p>Dans notre exemple, déclarez simplement :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="SENTINEL-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor1" filename="HWMonitor"&gt;&lt;/package&gt;
      &lt;package name="HWMonitor2" filename="HWMonitor"&gt;&lt;/package&gt;
   &lt;/packages&gt;
&lt;/sentinel&gt;</pre><p></p>
<p>On a toujours deux instances “HWMonitor1” et “HWMonitor2” et ces deux instances déclarent le “filename” à “HWMonitor”.</p>
<p>Sans l’extension “.zip”, “HWMonitor” ne correspond à aucun <u>fichier</u> de notre repository et c’est donc là que<strong> Constellation réalise une résolution partielle : semi-explicite / semi-implicite</strong>.</p>
<p><strong>Cette résolution partielle sélectionne la dernière version du package qui porte le nom déclaré dans attribut “filename”</strong> (ici nommé “HWMonitor”).</p>
<p>Ainsi en ajoutant la version 1.3 du package “HWMonitor” dans notre repository, les deux instances seront mises à jour avec la version 1.3 de ce package sans avoir besoin de modifier la configuration de notre Constellation.</p>
<h3>Pour résumer</h3>
<ul>
<li>Un package déployé sur une sentinelle est une instance de package (couple Sentinelle/Package)</li>
<li>Chaque instance a son propre cycle de vie, sa propre configuration et sa propre identité dans la Constellation</li>
<li>Il n’y a pas de lien entre le nom du package et le nom de l’instance du package, vous pouvez nommer vos instances sans restriction à partir du moment où elles sont uniques pour une même sentinelle</li>
<li>Vous pouvez avoir plusieurs instances d’un même package sur une même sentinelle</li>
<li>Vous pouvez également avoir plusieurs instances de versions différentes d’un même package sur une même sentinelle</li>
<li>Les packages (fichiers ZIP) sont tous stockés dans le “Package Repository” du serveur</li>
<li>Pour résoudre le package à utiliser pour une instance :
<ol>
<li>Si l’attribut “filename” est défini :
<ol>
<li>Et qu’il correspond à un fichier du “Package Repository”, c’est ce package qui sera utilisé pour l’instance du package</li>
<li>Sinon, sans extension .ZIP, on utilise la version la plus haute du package dont le nom (déclaré dans le manifeste) est celui déclaré dans l’attribut “filename”</li>
</ol>
</li>
<li>Sinon, sans l’attribut “filename” :
<ol>
<li>On utilise la version la plus haute du package dont le nom (déclaré dans le manifeste) est celui déclaré dans l’attribut “name” (c’est à dire le nom de l’instance du package)</li>
<li>Sinon on utilise le package qui se nomme &lt;name&gt;.zip si ce fichier existe dans le “Package Repository”</li>
<li>Sinon une erreur est levée</li>
</ol>
</li>
</ol>
</li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/">Instance de package, package, versioning, multi-instances et résolution des packages</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Mise en cache de page à l’aide de Disk: Enhanced 

Served from: developer.myconstellation.io @ 2026-01-21 14:07:05 by W3 Total Cache
-->