27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)



Documents pareils
TP1. Outils Java Eléments de correction

Systeme d'exploitation

Traitement de données

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Installation et prise en main

Architecture Orientée Service, JSON et API REST

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Java et les bases de données

4. SERVICES WEB REST 46

Utiliser Java sans BlueJ

Architecture de la plateforme SBC

Votre premier projet Android

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

OpenPaaS Le réseau social d'entreprise

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Bases Java - Eclipse / Netbeans

CompatibleOne energy monitoring

L accès aux Clouds (Académiques)

Projet Administration Réseaux

Java Licence professionnelle CISII,

TUTORIEL: INSTALLATION D'UN SERVEUR LOCAL SOUS WINDOWS 7 POUR APPINVENTOR version du 06/04/2013

APIs de table pour SQL Server

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Installation d OpenVPN

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

as Architecture des Systèmes d Information

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Client windows Nagios Event Log

A. Architecture du serveur Tomcat 6

Plan du cours. Historique du langage Nouveautés de Java 7

RMI le langage Java XII-1 JMF

M2-RADIS Rezo TP13 : VPN

VoD ( Video on Demand ) avec VLC

Mise en œuvre des serveurs d application

MySQL. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

vcloud Director Comment créer et gérer son «Cloud» Jean-Claude DAUNOIS Senior Systems Engineer VMware

Architectures Web Services RESTful

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Création d une application JEE

INFO-F-404 : Techniques avancées de systèmes d exploitation

Installation et utilisation d'un certificat

JOnAS Day 5.1. Outils de développements

Dans l'article précédent, vous avez appris

PROXY SQUID-SQARD. procédure

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Remote Method Invocation (RMI)

Mercredi 15 Janvier 2014

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

TP1 : Initiation à Java et Eclipse

Introduction aux «Services Web»

Rapport de Mini-Projet en ArcGIS Engine

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Construire une base de donnée pour bibliothèque

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

PFE Télécommunications. Pré-rapport à l'issue des 6 premières semaines de stage. Page 1 sur 5 1 %

TP1 : Initiation à Java et Eclipse

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

DOCUMENTATION - FRANCAIS... 2

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Android et le Cloud Computing

4D WebStar. WebStar, leader des serveurs internet sur Macintosh. Olivier Deschanels Simil Guetta Doug Finley. 4D WebStar. Histoire de WebStar

Java DataBaseConnectivity

Initiation à JAVA et à la programmation objet.

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

Généralités sur le Langage Java et éléments syntaxiques.

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Application de lecture de carte SESAM-Vitale Jeebop

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Installation software

Annexe : La Programmation Informatique

Derrière toi Une machine virtuelle!

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Intégration de Cisco CallManager IVR et Active Directory

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

WDpStats Procédure d installation

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

IFIPS 5 / Nouvelles Architectures Logicielles Projet : Bus de web services avec «moteur» BPEL

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

Gestion des utilisateurs dans un environnement hétérogène

REMBO Version 2.0. Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION.

Vulgarisation Java EE Java EE, c est quoi?

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

Télécom Nancy Année

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Transcription:

Propriétés du Document Source du Document SDK_accords.odt Titre du Document SDK Python et Java pour le développement de services ACCORD Module(s) PyaccordsSDK, JaccordsSDK Responsable Prologue Auteur(s) / contributeur(s) Elyès ZEKRI & Hamid MEDJAHED du Document Annexe de Livrable V2.0 Validé par Date de la validation Résumé Ce document présente la procédure d'ajout d'un composant (fournisseur de service) à la plateforme ACCORDS. Mots Clefs Fournisseur de service, composant, OCCI, ACCORDS, python, java COMPATIBLE ONE 12/06/2012 1(9)

Table des Matières 1. Introduction...3 2. Pré-requis...3 3. Procédure d'ajout d'un composant ACCORDS... 3 a) Principe... 3 b) Installation... 4 c) Gestion des catégories OCCI... 4 d) Création d'un composant ACCORDS... 6 4. Références...9 COMPATIBLE ONE 12/06/2012 2(9)

1.Introduction Ce document s'adresse aux développeurs souhaitant mettre en œuvre un composant (fournisseur de services) ACCORDS [1][2] en python ou en java. D'un point de vue technique, un composant ACCORDS est susceptible d'être implémenté dans n'importe quel langage de programmation du moment que les deux conditions suivantes sont vérifiées: 1)Le composant doit être en mesure de gérer les messages du standard OCCI/REST [4][5] [6] 2)Une connaissance à priori de l'architecture et des fonctionnalités ACCORDS est nécessaire (Resolver, Publisher...) Afin d'aider le développeur dans sa démarche de création d'un composant en python ou en java, nous proposons une procédure générique et paramétrable dont l'objectif est de générer un programme java ou un script python décrivant le comportement du module. 2.Pré-requis Afin d'ajouter un nouveau composant CompatibleOne, il est nécessaire de disposer du noyau de la plateforme ACCORDS organisé autour des interfaces OCCI et CORDS, des outils de manipulation de données (xml,...), ainsi que des composants de base de la plateforme ACCORDS (publisher, coss...). Ces éléments sont décrits dans les livrables [1] et [1]. Les sources de la plateforme ACCORDS et la procédure d'installation sont accessibles par l'intermédiaire du lien donné par [3]. 3.Procédure d'ajout d'un composant ACCORDS Dans ce qui suit, seront décrites les étapes qui mèneront à la génération d'un composant ACCORDS sur la base de la définition d'un ensemble de catégories OCCI qui lui seront associées. a)principe Le principe de cette procédure consiste à faire appel à des fonctions génériques compilées sous forme de bibliothèques partagées pour le paramétrage d'un module ainsi que pour sa création. Les bibliothèque «pycompmanager.so» et «libjcompmgr.so» contiennent les fonctions de gestion des composants ACCORDS respectivement en langage python et java. Les bibliothèque «pycompdev.so» et «libjcompdev.so» contiennent les fonctions et les types respectivement python et java permettant le développement d'un module : structures de données représentant les catégories, fonction de lancement d'un module. Ces bibliothèques résultent d'un interfaçage avec des fonctions de gestion des composants codées en C. Cet interfaçage est réalisé par l'intermédiaire de l'api Python/C pour python et JNI pour Java. COMPATIBLE ONE 12/06/2012 3(9)

b)installation Pour pyaccordssdk : Pour générer les bibliothèques «pycompmanager.so» et «pycompdev.so» il faut lancer le script «pyaccords_config.sh». $./pyaccords_config.sh Pour jaccordssdk : Il faut préparer l environnement java en renseignant la variable JAVA_HOME avec le chemin du JDK. Pour générer la bibliothèque «libjcompmgr.so» et «libjompdev.so»il faut taper les commandes suivantes. $ cd jaccordssdk/jcompmgr $ make $ cd jaccordssdk/jcompdev $ make c)gestion des catégories OCCI Une catégorie est une entité OCCI permettant d'organiser sémantiquement les ressources. Elle est caractérisée principalement par un ensemble d'attributs et par une liste d'actions [4]. Dans pyaccordssdk et jaccordssdk, nous proposons deux fonctions permettant de générer une nouvelle catégorie ou de supprimer une catégorie existante : generatecategory : Cette fonction permet de générer les fichiers sources liés à la catégorie et de les placer au niveau des sous-répertoires du projet ACCORDS. Ces fichiers sont : Les fichiers C placés dans les sous répertoires «occi/src» et «cords/src» contenant : les fonctions d'accès OCCI de base : POST, GET, PUT et les fonctions de gestion de la mémoire spécifiques à la catégorie créée. Les fichiers Python ou java permettant l'interfaçage avec les fichiers C précédents. Parmi ces fichiers, ceux qui nous intéressent le plus sont les fichiers «categoryinterface.py» et «categoryaction.py» se trouvant dans le sousrépertoire «pyaccords» pour pyaccordssdk et «categoryinterface.java» et «categoryaction.java» se trouvant dans le sous-répertoire «jaccords» pour jaccordssdk. Ces fichiers contiennent respectivement la définition des méthodes d'accès CRUD (Create, Retrieve, Update, Delete) et les définition des actions (méthodes) qui auront été associées à la catégorie lors de sa génération. Ce sont ces fichiers qui sont censés être modifiés par le développeur. generatecategory(catname, catatr, catact, occiflag) Takes five parameters : - catname: Category name - catatr: Attributes of the category (exp: "atr1 atr2 atr2") - catact: Actions of the category (exp: "act1 act2 act3") COMPATIBLE ONE 12/06/2012 4(9)

- occiflag : Takes one of the foolowing value - "" nothing to specify - "_OCCI_PRIORITY" the service is to be offered first - "_OCCI_PRIVATE" the service is not to be published - "_OCCI_SECRET" the will not appear in categories - "_OCCI_AUTO_PUBLISH" the service will be auto publish - "_OCCI_SECURE" each access must be secure - "_OCCI_NO_PRICING" inhibit category pricing - "_OCCI_NO_AUTHORIZE" inhibit category authorize failure - "_OCCI_CONSUMER" publish monitoring consumer - "_OCCI_PROVIDER" publish resources provider - "_OCCI_CONTRACT" publish resources under contract removecategory : cette fonction permet de supprimer une catégorie existante en supprimant ses fichiers sources générés au niveau du répertoire du projet ACCORDS. removecategory(catname) Takes one parameters - catname: Category name à l'issue des opérations de génération/suppression de catégorie et afin que : 1) les bibliothèques ACCORDS soient mises à jour et 2) la bibliothèque «pycompdev.so» soit compilée, Pour pyaccordssdk il faut faire appel à la fonction «commit()» qui va procéder à la recompilation. En ce qui concerne jaccordssdk il faut recompiler la manuellement plateforme Accords : $ cd accords-platform $ make clean $ make $ make install Exemple : Voici l'exemple d'un script Pyhton permettant de créer une catégorie «mycategory» contenant deux attributs «atr1» et «atr2» et les actions «act1» et «act2»: >>>import pycompmanager >>>pycompmanager.generatecategory ( mycategory, attrbute1 attribute2, act1 act2, "_OCCI_PROVIDER") >>>pycompmanager.commit() Voici l'exemple d'un programme java permettant de créer une catégorie «mycategory» contenant deux attributs «atr1» et «atr2» et les actions «act1» et «act2» COMPATIBLE ONE 12/06/2012 5(9)

public class Testjcompmgr{ static{ System.loadLibrary("JcompMgr"); catch( UnsatisfiedLinkError e){ System.out.println("Could not load library, add it to LD_LIBRARY_PATH?"); System.exit(1); public static void main(string[] argv){ JcompMgr gen = new JcompMgr(); gen.generatecategory("mycategory","atr1 atr2","act1 act2", "_OCCI_PROVIDER"); Pour compiler et lancer cet exemple on utilise les commandes suivantes : $ export LD_LIBRARY_PATH=/path/to/jaccordsSDK/jcompmgr/ $ export CLASSPATH=.:/path/to/jaccordsSDK/jcompmgr/ $ javac Testjcompmgr.java $ java Testjcompmgr d)création d'un composant ACCORDS Les composants, tels qu'il sont implémentés dans ACCORDS, ont tous le même comportement de base, à savoir: 1) Parser les paramètres passés en argument (fichier de configuration, nom de l'agent associé au composant,...) 2) Charger les données de configuration (adresse du composant, adresse du publisher,...) 3) Publier les catégories au niveau du publisher Afin de générer un composant Python ou Java mettant en œuvre ce comportement de base, il faut faire appel à la fonction «generatecomponent» : generatecomponent(mname, catname) Takes two parameters - mname: module name - catname: List of category (exp "cat1 cat2 cat3") Le résultat de l'appel de cette fonction est un fichier généré dans un sous-répertoire portant le même nom que le composant. Exemple: Voici l'exemple d'un script python permettant de générer un module qui gère les catégories «mycategory» et «mycategory1» COMPATIBLE ONE 12/06/2012 6(9)

>>>import pycompmanager >>>pycompmanager.generatecomponent( mymodule, mycategory mycategory1 ) À l'issu de cette manipulation un fichier Python mymodule.py généré dans le sousrépertoire mymodule L'équivalent java est : public class Testjcompmgr{ static{ try{ System.loadLibrary("JcompMgr"); catch( UnsatisfiedLinkError e){ System.out.println("Could not load library, add it to LD_LIBRARY_PATH?"); System.exit(1); public static void main(string[] argv){ JcompMgr gen = new JcompMgr(); gen.generatecomponent("mymodule","mycategory mycategory1"); Le résultat de ce programme est la génération d'un fichier java mymodule.java dans le sous-répertoire mymodule. Pour utiliser le nouveaux composant créé qu'il soit généré par pyaccordssdk ou pyaccordssdk Il faut ajouter les configurations appropriées au niveau des fichier accords.xml et cords_user.xml [1]. Si le mode sécurisé est activé il faut générer les certificats de sécurité pour ce nouveau module avec le script suivant (où $1 représente le nom de module) : module=$1 export bits=2048 export days=365 export sslconfig=./openssl.cnf echo "<tls key='security/"${module"privatekey.pem'" > security/${moduletls.xml echo " certificate='security/"${module"certificate.pem'" >> security/${moduletls.xml COMPATIBLE ONE 12/06/2012 7(9)

echo " passphrase='"accords"'" >> security/${moduletls.xml echo " authority='"certificates.crt"'" >> security/${moduletls.xml echo " authenticate='"1"'" >> security/${moduletls.xml echo " option='"13"' />" >> security/${moduletls.xml chmod 0640 security/${moduletls.xml echo "Creating certificate for module $1" if test! -e $sslconfig; then echo "Can not find openssl config file: $sslconfig" exit 1 fi if [ -z "$nethsm" ]; then openssl req -config $sslconfig \ -newkey $bits -x509 -days $days -sha1 \ -keyout security/${moduleprivatekey.pem -out security/$ {modulecertificate.pem 2> /dev/null else openssl req -engine pkcs11 -keyform e -config $sslconfig \ -newkey $bits -x509 -days $days -sha1 \ -keyout security/${moduleprivatekey.pem -out security/$ {modulecertificate.pem fi chmod 0400 security/${moduleprivatekey.pem chmod 0444 security/${modulecertificate.pem e)lancement d'un composant ACCORDS Pour pyaccordssdk : Pour lancer le module python généré par pyaccordssdk, taper la commande suivante : $ python mymodule.py --config accords.xml CO-MY-AGENT/1.0 Pour JaccordsSDK : Afin d'utiliser le nouveau module il faut compiler la librairie «libjcompdev.so» $ cd jaccordssdk/jcompdev $ make et enfin compiler le module généré avec les commandes suivantes : $ export LD_LIBRARY_PATH=/path/to/jaccordsSDK/jcompdev/ $ export CLASSPATH=.:/path/to/jaccordsSDK/jcompdev/ $ javac mymodule.java Pour lancer le module on utilise le script suivant : COMPATIBLE ONE 12/06/2012 8(9)

CURRDIR=`dirname $0` export LD_LIBRARY_PATH=$CURRDIR/../jaccordsSDK/jcompdev/;pwd :/usr/local/lib/ export CLASSPATH=$CURRDIR/../<moduleName>/:$CURRDIR/../jaccordsSDK/: $CURRDIR/../jaccordsSDK/jcompdev/:$CURRDIR/../jaccords/:$CURRDIR/../jaccords/jsrc/ java -Djava.library.path="$LD_LIBRARY_PATH" -cp $CLASSPATH JmyModule mymodule --config accords.xml CO-EXPMODULE/1.0 4.Références [1] L01.3 (ACCORDS) Spécifications finales Distribution des ressources (Architecture, API, protocoles) [2] L17.2 (CORDS) - Modèle de description des ressources (CORDS),Spécifications et Documentation XSD. [3] Accords Platform at OW2 : http://gitorious.ow2.org/ow2-compatibleone/accords-platform [4] Open Cloud Computing Interface - Core http://www.ogf.org/documents/gfd.183.pdf [5] Open Cloud Computing Interface - Infrastructure http://www.ogf.org/documents/gfd.183.pdf [6] Open Cloud Computing Interface Http Binding http://www.ogf.org/documents/gfd.183.pdf COMPATIBLE ONE 12/06/2012 9(9)