LMIShell est un client interactif et un interprète non-interactif pouvant être utilisé pour accéder aux objets CIM fournis par le CIMOM OpenPegasus. Il est basé sur l'interprète Python, mais implémente également des fonctions et des classes supplémentaires pour interagir avec les objets CIM.
De même qu'avec l'interprète Python, il est possible d'utiliser LMIShell soit en tant que client interactif, ou en tant qu'inteprète non-interactif pour les scripts LMIShell.
Lancer le LMIShell en mode interactif
Pour lancer l'interprète LMIShell en mode interactif, veuillez exécuter la commande lmishell sans argument supplémentaire :
lmishell
lmishell
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Par défaut, lorsque LMIShell tente d'établie une connexion avec un CIMOM, il valide un certificat côté serveur avec le magasin des confiances des autorités de certification (CA). Pour désactiver cette validation, exécutez la commande lmishell avec l'option de ligne de commande --noverify ou -n :
lmishell --noverify
lmishell --noverify
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Utiliser la saisie semi-automatique avec la touche « Tab »
Lors de l'exécution en mode interactif, l'interprète LMIShell vous permet d'appuyer sur la touche Tab pour compléter des structures de programmation et d'objets CIM de base, y compris les espaces de noms, les classes, les méthodes, et les propriétés d'objets.
Historique de navigation
Par défaut, LMIShell stocke toutes les commandes saisies sur l'invite interactive dans le fichier ~/.lmishell_history. Cela vous permet de parcourir l'historique des commandes et de réutiliser les lignes déjà saisies en mode interactif sans avoir à les réécrire dans l'invite. Pour reculer dans l'historique, veuillez appuyer sur la Flèche vers le haut ou sur la combinaison de touches Ctrl+p. Pour avancer dans l'historique des commandes, veuillez appuyer sur la touche Flèche vers le bas ou sur la combinaison de touches Ctrl+n.
LMIShell prend également en charge les recherches inversées incrémentielles. Pour rechercher une ligne en particulier dans l'historique des commandes, veuillez appuyer sur Ctrl+r,puis commencez à saisir n'importe quelle partie de la commande. Exemple :
> (reverse-i-search)`connect': c = connect("server.example.com", "pegasus")
> (reverse-i-search)`connect': c = connect("server.example.com", "pegasus")
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour supprimer l'historique des commandes, veuillez utiliser la fonction clear_history() comme suit :
clear_history()
clear_history()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Vous pouvez configurer le nombre de lignes stockées dans l'historique des commandes en modifiant la valeur de l'option history_length dans le fichier de configuration ~/.lmishellrc. En outre, vous pouvez modifier l'emplacement du fichier de l'historique en changeant la valeur de l'option history_file dans ce fichier de configuration. Par exemple, pour paramétrer l'emplacement du fichier de l'historique sur ~/.lmishell_history et pour configurer LMIShell pour qu'un maximum de 1000 lignes y soient stockées, veuillez ajouter les lignes suivantes au fichier ~/.lmishellrc :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Gestion des exceptions
Par défaut, l'interprète LMIShell gère toutes les exceptions et utilise de valeurs de retour. Pour désactiver ce comportement de manière à gérer toutes les exceptions dans le code, veuillez utiliser la fonction use_exceptions() comme suit :
use_exceptions()
use_exceptions()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour réactiver la gestion d'exceptions automatique, veuillez utiliser :
use_exception(False)
use_exception(False)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Vous pouvez désactiver la gestion des exceptions de manière permanente en modifiant la valeur de l'option use_exceptions dans le fichier de configuration ~/.lmishellrc sur True :
use_exceptions = True
use_exceptions = True
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Configurer un cache temporaire
Avec la configuration par défaut, les objets de connexion LMIShell utilisent un cache temporaire pour stocker les noms de classe CIM et les classes CIM afin de réduire les communications réseaux. Pour supprimer ce cache temporaire, veuillez utiliser la méthode clear_cache() comme suit :
object_name.clear_cache()
object_name.clear_cache()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer object_name par le nom d'un objet de connexion.
Pour désactiver le cache temporaire d'un objet de connexion en particulier, veuillez utiliser la méthode use_cache() comme suit :
object_name.use_cache(False)
object_name.use_cache(False)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour le réactiver à nouveau, veuillez utiliser :
object_name.use_cache(True)
object_name.use_cache(True)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Il est possible de désactiver de manière permanente le cache temporaire pour les objets de connexion en modifiant la valeur de l'option use_cache dans le fichier de configuration ~/.lmishellrc sur False :
use_cache = False
use_cache = False
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Quitter LMIShell
Pour quitter l'interprète LMIShell et retourner à l'invite de shell, veuillez appuyer sur la combinaison de touches Ctrl+d ou passez la fonction quit() comme suit :
> quit()
~]$
> quit()
~]$
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Exécuter un script LMIShell
Pour exécuter un script LMIShell, veuillez exécuter la commande lmishell comme suit :
lmishell file_name
lmishell file_name
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer file_name par le nom du script. Pour inspecter un script LMIShell après son exécution, veuillez également spécifier l'option de ligne de commande --interact ou -i :
lmishell --interact file_name
lmishell --interact file_name
Copy to ClipboardCopied!Toggle word wrapToggle overflow
L'extension de fichier préférée des scripts LMIShell est .lmi.
LMIShell vous permet de vous connecter à un CIMOM en cours d'exécution sur le même système local, ou sur une machine distante accessible à travers le réseau.
Connexion à un CIMOM distant
Pour accéder à des objets CIM fournis par un CIMOM distant, veuillez créer un objet de connexion en utilisant la fonction connect() comme suit :
connect(host_name, user_name[, password])
connect(host_name, user_name[, password])
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer host_name par le nom d'hôte du système géré, user_name par le nom d'un utilisateur autorisé à se connecter au CIMOM OpenPegasus exécuté sur ce système, et password par le mot de passe de l'utilisateur. Si le mot de passe est oublié, LMIShell demandera à l'utilisateur de le saisir. La fonction retourne un objet LMIConnection.
Exemple 19.1. Connexion à un CIMOM distant
Pour se connecter au CIMOM OpenPegasus en cours d'exécution sur server.example.com en tant qu'utilisateur pegasus, veuillez saisir ce qui suit dans l'invite interactive :
> c = connect("server.example.com", "pegasus")
password:
>
> c = connect("server.example.com", "pegasus")
password:
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Connexion à un CIMOM local
LMIShell vous permet de vous connecter à un CIMOM local en utilisant un socket UNIX. Pour ce type de connexion, vous devrez exécuter l'interprète LMIShell en tant qu'utilisateur root et le socket /var/run/tog-pegasus/cimxml.socket doit exister.
Pour accéder à des objets CIM fournis par un CIMOM local, veuillez créer un objet de connexion en utilisant la fonction connect() comme suit :
connect(host_name)
connect(host_name)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer host_name par localhost, 127.0.0.1, ou ::1. la fonction retourne un objet LMIConnection ou None.
Exemple 19.2. Connexion à un CIMOM local
Pour se connecter au CIMOM OpenPegasus en cours d'exécution sur localhost en tant qu'utilisateur root, veuillez saisir ce qui suit dans l'invite interactive :
> c = connect("localhost")
>
> c = connect("localhost")
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Vérifier une connexion sur un CIMOM
La fonction connect() retourne soit un objet LMIConnection, ou None si la connexion n'a pas pu être établie. En outre, lorsque la fonction connect() ne parvient pas à établir une connexion, un message d'erreur est imprimé sur la sortie d'erreur standard.
Pour vérifier qu'une connexion à un CIMOM a bien été établie, veuillez utiliser la fonction isinstance() comme suit :
isinstance(object_name, LMIConnection)
isinstance(object_name, LMIConnection)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer object_name par le nom de l'objet de connexion. Cette fonction retourne True si object_name est un objet LMIConnection, sinon elle retournera False.
Les espaces de noms LMIShell offre une manière naturelle d'organiser les classes disponibles et servent de point d'accès hiérarchique à d'autres espaces de noms et classes. L'espace de noms root est le premier point d'entrée d'un objet de connexion.
Répertorier les espaces de noms disponibles
Pour répertorier tous les espaces de noms disponibles, veuillez utiliser la méthode print_namespaces(), comme suit :
object_name.print_namespaces()
object_name.print_namespaces()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer object_name par le nom de l'objet à inspecter. Cette méthode imprime les espaces de noms disponibles sur la sortie standard.
Pour obtenir une liste des espaces de noms disponibles, veuillez accéder à l'attribut d'objet namespaces :
object_name.namespaces
object_name.namespaces
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Une liste de chaînes est retournée.
Exemple 19.4. Répertorier les espaces de noms disponibles
Pour inspecter l'objet de l'espace de noms root de l'objet de connexion c créé dans l'Exemple 19.1, « Connexion à un CIMOM distant » et pour répertorier les espaces de noms disponibles, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour assigner une liste de ces espaces de noms à une variable nommée root_namespaces, veuillez saisir :
> root_namespaces = c.root.namespaces
>
> root_namespaces = c.root.namespaces
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Accéder aux objets d'espaces de noms
Pour accéder à un objet d'espace de noms particulier, veuillez utiliser la syntaxe suivante :
object_name.namespace_name
object_name.namespace_name
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer object_name par le nom de l'objet à inspecter et namespace_name par le nom de l'espace de noms à accéder. Un objet LMINamespace sera retourné.
Exemple 19.5. Accéder aux objets d'espaces de noms
Pour accéder à l'espace de noms cimv2 de l'objet de connexion c créé dans l'Exemple 19.1, « Connexion à un CIMOM distant » et l'assigner à une variable nommée ns, veuillez saisir ce qui suit dans l'invite interactive :
> ns = c.root.cimv2
>
> ns = c.root.cimv2
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Les classes LMIShell représentent des classes fournies par un CIMOM. Vous pouvez accéder et répertorier leurs propriétés, méthodes, instances, noms d'instances, et propriétés ValueMap, imprimer les chaînes de leur documentation et créer de nouvelles instances et de nouveaux noms d'instances.
Répertorier les classes disponibles
Pour répertorier toutes les classes disponibles, veuillez utiliser la méthode print_classes() comme suit :
namespace_object.print_classes()
namespace_object.print_classes()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer namespace_object par le nom de l'objet d'espace de noms à inspecter. Cette méthode imprime les classes disponibles sur la sortie standard.
Pour obtenir une liste des classes disponibles, veuillez utiliser la méthode classes() :
namespace_object.classes()
namespace_object.classes()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.6. Répertorier les classes disponibles
Pour inspecter l'objet de l'espace de noms ns de l'objet de connexion créé dans l'Exemple 19.5, « Accéder aux objets d'espaces de noms » et pour répertorier les classes disponibles, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour assigner une liste de ces classes à une variable nommée cimv2_classes, veuillez saisir :
> cimv2_classes = ns.classes()
>
> cimv2_classes = ns.classes()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Accéder aux objets de classe
Pour accéder à un objet de classe particulier qui est fourni par le CIMOM, veuillez utiliser la syntaxe suivante :
namespace_object.class_name
namespace_object.class_name
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer namespace_object par le nom de l'objet d'espace de noms à inspecter et class_name par le nom de la classe à laquelle accéder.
Exemple 19.7. Accéder aux objets de classe
Pour accéder à la classe LMI_IPNetworkConnection de l'objet de l'espace de noms ns créé dans l'Exemple 19.5, « Accéder aux objets d'espaces de noms » et l'assigner à une variable nommée cls, veuillez saisir ce qui suit dans l'invite interactive :
> cls = ns.LMI_IPNetworkConnection
>
> cls = ns.LMI_IPNetworkConnection
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Examiner les objets de classe
Tous les objets de classe stockent des informations sur leurs noms et sur l'espace de noms auquel ils appartiennent, ainsi qu'une documentation de classe détaillée. Pour obtenir le nom d'un objet de classe particulier, veuillez utiliser la syntaxe suivante :
class_object.classname
class_object.classname
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe à inspecter. Une représentation par chaîne du nom de l'objet sera retournée.
Pour obtenir des informations sur l'espace de noms auquel un objet de classe appartient, veuillez utiliser :
class_object.namespace
class_object.namespace
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Une représentation par chaîne de l'espace de noms sera retournée.
Pour afficher la documentation détaillée d'une classe, veuillez utiliser la méthode doc() comme suit :
class_object.doc()
class_object.doc()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Exemple 19.8. Examiner les objets de classe
Pour inspecter l'objet de classe cls créé dans l'Exemple 19.7, « Accéder aux objets de classe » et pour afficher son nom et son espace de noms correspondant, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Répertorier les méthodes disponibles
Pour répertorier toutes les méthodes disponibles pour un objet de classe particulier, veuillez utiliser la méthode print_methods(), comme suit :
class_object.print_methods()
class_object.print_methods()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe à inspecter. Cette méthode imprime les méthodes disponibles sur la sortie standard.
Pour obtenir une liste des méthodes disponibles, veuillez utiliser la méthode methods() :
class_object.methods()
class_object.methods()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.9. Répertorier les méthodes disponibles
Pour inspecter l'objet de classe cls créé dans l'Exemple 19.7, « Accéder aux objets de classe » et pour répertorier toutes les méthodes disponibles, veuillez saisir ce qui suit dans l'invite interactive :
> cls.print_methods()
RequestStateChange
>
> cls.print_methods()
RequestStateChange
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour assigner une liste de ces méthodes à une variable nommée service_methods, veuillez saisir :
> service_methods = cls.methods()
>
> service_methods = cls.methods()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Répertorier les propriétés disponibles
Pour répertorier toutes les propriétés disponibles pour un objet de classe particulier, veuillez utiliser la méthode print_properties() comme suit :
class_object.print_properties()
class_object.print_properties()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe à inspecter. Cette méthode imprime les propriétés disponibles dans la sortie standard.
Pour obtenir une liste des propriétés disponibles, veuillez utiliser la méthode properties() :
class_object.properties()
class_object.properties()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.10. Répertorier les propriétés disponibles
Pour inspecter l'objet de classe cls créé dans l'Exemple 19.7, « Accéder aux objets de classe » et pour répertorier toutes les propriétés disponibles, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour assigner une liste de ces classes à une variable nommée service_properties, veuillez saisir :
> service_properties = cls.properties()
>
> service_properties = cls.properties()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Répertorier et afficher les propriétés ValueMap
Les classes CIM peuvent contenir des propriétés ValueMap dans leur définition MOF (« Managed Object Format »). Les propriétés ValueMap contiennent des valeurs constantes, qui peuvent être utiles lorsque des méthodes sont appelées ou pendant la vérification des valeurs retournées.
Pour répertorier toutes les propriétés ValueMap disponibles pour un objet de classe particulier, veuillez utiliser la méthode print_valuemap_properties(), comme suit :
class_object.print_valuemap_properties()
class_object.print_valuemap_properties()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe à inspecter. Cette méthode imprime les propriétés ValueMap disponibles dans la sortie standard.
Pour obtenir une liste des propriétés ValueMap disponibles, veuillez utiliser la méthode valuemap_properties() :
class_object.valuemap_properties()
class_object.valuemap_properties()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.11. Répertorier les propriétés ValueMap
Pour inspecter l'objet de classe cls créé dans l'Exemple 19.7, « Accéder aux objets de classe » et pour répertorier toutes les propriétés ValueMap disponibles, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode imprime sur la sortie standard les valeurs constantes nommées disponibles. Vous pouvez également obtenir une liste des valeurs constantes disponibles en utilisant la méthode values() :
class_object.valuemap_propertyValues.values()
class_object.valuemap_propertyValues.values()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.12. Accéder aux propriétés ValueMap
Exemple 19.11, « Répertorier les propriétés ValueMap » mentione une propriété ValueMap nommée RequestedState. Pour inspecter cette propriété et répertorier les valeurs constantes disponibles, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une chaîne.
Exemple 19.13. Accéder à des valeurs constantes
L'Exemple 19.12, « Accéder aux propriétés ValueMap » montre que la propriété RequestedState fournit une valeur constante nommée Reset. Pour accéder à cette valeur constante nommée, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Rechercher un objet CIMClass
De nombreuses méthodes de classe ne requièrent pas d'accès à un objet CIMClass, ce qui explique pourquoi LMIShell recherche uniquement cet objet dans le CIMOM lorsqu'une méthode appelée en a besoin. Pour rechercher l'objet CIMClass manuellement, veuillez utiliser la méthode fetch(), comme suit :
class_object.fetch()
class_object.fetch()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe. Remarquez que les méthodes qui requièrent un accès à l'objet CIMClass le recherchent automatiquement.
Les instances LMIShell représentent des instances fournies par un CIMOM. Vous pouvez obtenir et définir leurs propriétés, les répertorier et appeler leurs méthodes, imprimer les chaînes de leur documentation, obtenir une liste d'objets associés ou d'objets d'association, envoyer les objets modifiés sur le CIMOM, et supprimer des instances individuelles à partir du CIMOM.
Accéder à des instances
Pour obtenir toutes les instances disponibles d'un objet de classe particulier, veuillez utiliser la méthode instances() comme suit :
class_object.instances()
class_object.instances()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe à inspecter. Cette méthode retourne une liste d'objets LMIInstance.
Pour accéder à la première instance d'un objet de classe, veuillez utiliser la méthode first_instance() :
class_object.first_instance()
class_object.first_instance()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne un objet LMIInstance.
En plus de répertorier toutes les instances ou de retourner la première, instances() et first_instance() prennent en charge un argument optionnel vous permettant de filtrer les résultats :
class_object.instances(criteria)
class_object.instances(criteria)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
class_object.first_instance(criteria)
class_object.first_instance(criteria)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer criteria par un dictionnaire consistant de paires de clés-valeurs, où les clés représentent les propriétés de l'instance et les valeurs représentent les valeurs de ces propriétés.
Exemple 19.14. Accéder à des instances
Pour trouver la première instance de l'objet de classe cls créé dans l'Exemple 19.7, « Accéder aux objets de classe » dont la propriété ElementName est égale à eth0 et pour l'assigner à une variable nommée device, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Examiner des instances
Tous les objets d'instance stockent des informations sur leur nom de classe et sur l'espace de nom auquel ils appartiennent, ainsi qu'une documentation détaillée sur leurs propriétés et valeurs. En outre, les objets d'instance vous permettent de récupérer un objet d'identification unique.
Pour obtenir le nom de classe d'un objet d'instance particulier, veuillez utiliser la syntaxe suivante :
instance_object.classname
instance_object.classname
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à inspecter. Une représentation par chaîne du nom de la classe sera retournée.
Pour obtenir des informations sur l'espace de nom auquel un objet d'instance appartient, veuillez utiliser :
instance_object.namespace
instance_object.namespace
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Une représentation par chaîne de l'espace de noms sera retournée.
Pour récupérer un objet d'identification unique pour une objet d'instance, veuillez utiliser :
instance_object.path
instance_object.path
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Ceci retourne un objet LMIInstanceName.
Finalement, pour afficher la documentation détaillée, veuillez utiliser la méthode doc() comme suit :
instance_object.doc()
instance_object.doc()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Exemple 19.15. Examiner des instances
Pour inspecter l'objet d'instance device créé dans l'Exemple 19.14, « Accéder à des instances » et pour afficher son nom de classe et son espace de nom correspondant, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Créer de nouvelles instances
Certains fournisseurs de CIM autorisent la création de nouvelles instances d'objets de classe spécifiques. Pour créer une nouvelle instance d'un objet de classe, veuillez utiliser la méthode create_instance() comme suit :
class_object.create_instance(properties)
class_object.create_instance(properties)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe et properties par un dictionnaire consistant de paires clés-valeurs, où les clés représentent les propriétés de l'instance et les valeurs représentent les valeurs de ces propriétés. Cette méthode retourne un objet LMIInstance.
Exemple 19.16. Créer de nouvelles instances
La classe LMI_Group représente les groupes de système et la classe LMI_Account représente les comptes utilisateurs sur le système géré. Pour utiliser l'objet d'espace de noms ns créé dans l'Exemple 19.5, « Accéder aux objets d'espaces de noms », veuillez créer des instances de ces deux classes pour le groupe de systèmes nommé pegasus et l'utilisateur nommé lmishell-user, et assignez-les aux variables nommées group et user, puis saisissez ce qui suit dans l'invite interactive :
> group = ns.LMI_Group.first_instance({"Name" : "pegasus"})
> user = ns.LMI_Account.first_instance({"Name" : "lmishell-user"})
>
> group = ns.LMI_Group.first_instance({"Name" : "pegasus"})
> user = ns.LMI_Account.first_instance({"Name" : "lmishell-user"})
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour obtenir une instance de la classe LMI_Identity pour l'utilisateur lmishell-user, veuillez utiliser :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
La classe LMI_MemberOfGroup représente l'adhésion au groupe de systèmes. Pour utiliser la classe LMI_MemberOfGroup pour ajouter lmishell-user au groupe pegasus, veuillez créer une nouvelle instance de cette classe comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Supprimer des instances individuelles
Pour supprimer une instance particulière du CIMOM, veuillez utiliser la méthode delete(), comme suit :
instance_object.delete()
instance_object.delete()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à supprimer. Cette méthode retourne un booléen. Remarquez qu'après la suppression d'une instance, ses propriétés et méthodes seront inaccessibles.
Exemple 19.17. Supprimer des instances individuelles
La classe LMI_Account représente les comptes utilisateurs sur le système géré. Pour utiliser l'objet d'espace de noms ns créé dans l'Exemple 19.5, « Accéder aux objets d'espaces de noms », veuillez créer une instance de la classe LMI_Account pour l'utilisateur nommé lmishell-user, et assignez-la à une variable nommée user, puis saisissez ce qui suit dans l'invite interactive :
> user = ns.LMI_Account.first_instance({"Name" : "lmishell-user"})
>
> user = ns.LMI_Account.first_instance({"Name" : "lmishell-user"})
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour supprimer cette instance et pour supprimer lmishell-user du système, veuillez saisir :
> user.delete()
True
>
> user.delete()
True
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Répertorier et accéder aux propriétés disponibles
Pour répertorier toutes les propriétés disponibles pour un objet d'instance particulier, veuillez utiliser la méthode print_properties(), comme suit :
instance_object.print_properties()
instance_object.print_properties()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à inspecter. Cette méthode imprime les propriétés disponibles dans la sortie standard.
Pour obtenir une liste des propriétés disponibles, veuillez utiliser la méthode properties() :
instance_object.properties()
instance_object.properties()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.18. Répertorier les propriétés disponibles
Pour inspecter l'objet d'instance device créé dans l'Exemple 19.14, « Accéder à des instances » et pour répertorier toutes les propriétés disponibles, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour assigner une liste de ces propriétés à une variable nommée device_properties, veuillez saisir :
> device_properties = device.properties()
>
> device_properties = device.properties()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour obtenir la valeur actuelle d'une propriété particulière, veuillez utiliser la syntaxe suivante :
instance_object.property_name
instance_object.property_name
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer property_name par le nom de la propriété à accéder.
Pour modifier la valeur d'une propriété en particulier, assignez-lui une valeur comme suit :
instance_object.property_name = value
instance_object.property_name = value
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer value par la nouvelle valeur de la propriété. Remarquez qu'afin de propager le changement sur le CIMOM, vous devrez également exécuter la méthode push() :
instance_object.push()
instance_object.push()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne un tuple de trois éléments consistant d'une valeur de retour, de paramètres de valeur de retour, et d'une chaîne d'erreur.
Exemple 19.19. Accéder aux propriétés individuelles
Pour inspecter l'objet d'instance device créé dans l'Exemple 19.14, « Accéder à des instances » et pour afficher la valeur de la propriété nommée SystemName, veuillez saisir ce qui suit dans l'invite interactive :
> device.SystemName
u'server.example.com'
>
> device.SystemName
u'server.example.com'
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Répertorier et utiliser les méthodes disponibles
Pour répertorier toutes les méthodes disponibles pour un objet d'instance particulier, veuillez utiliser la méthode print_methods(), comme suit :
instance_object.print_methods()
instance_object.print_methods()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à inspecter. Cette méthode imprime les méthodes disponibles sur la sortie standard.
Pour obtenir une liste des méthodes disponibles, veuillez utiliser la méthode methods() :
instance_object.methods()
instance_object.methods()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.20. Répertorier les méthodes disponibles
Pour inspecter l'objet d'instance device créé dans l'Exemple 19.14, « Accéder à des instances » et pour répertorier toutes les méthodes disponibles, veuillez saisir ce qui suit dans l'invite interactive :
> device.print_methods()
RequestStateChange
>
> device.print_methods()
RequestStateChange
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour assigner une liste de ces méthodes à une variable nommée network_device_methods, veuillez saisir :
> network_device_methods = device.methods()
>
> network_device_methods = device.methods()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour appeler une méthode particulière, veuillez utiliser la syntaxe suivante :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à utiliser, method_name par le nom de la méthode à appeler, parameter par le nom du paramètre à définir, et value par la valeur de ce paramètre. Les méthodes retournent un tuple à trois éléments consistant d'une valeur de retour, de paramètres de retour, et d'une chaîne d'erreur.
Important
Les objets LMIInstance ne réactualisent pas automatiquement leur contenu (propriétés, méthodes, qualificateurs, et ainsi de suite). Pour cela, veuillez utiliser la méthode refresh() comme décrit ci-dessous.
Exemple 19.21. Utiliser des méthodes
La classe PG_ComputerSystem représente le système. Pour créer une instance de cette classe en utilisant l'objet d'espace de noms ns créé dans l'Exemple 19.5, « Accéder aux objets d'espaces de noms » et pour l'assigner à une variable nommée sys, veuillez saisir ce qui suit dans l'invite interactive :
> sys = ns.PG_ComputerSystem.first_instance()
>
> sys = ns.PG_ComputerSystem.first_instance()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
La classe LMI_AccountManagementService implémente les méthodes qui vous permettent de gérer des utilisateurs et des groupes dans le système. Pour créer une instance de cette classe et l'assigner à une variable nommée acc, veuillez saisir :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
LMIShell prend en charge les appels de méthodes synchrones : lorsqu'une méthode synchrone est utilisée, LMIShell attend que l'objet de la tâche correspondante change son état sur « finished », puis qu'il retourne les paramètres de retour de cette tâche. LMIShell est capable d'effectuer un appel de méthode synchrone si la méthode donnée retourne un objet de l'une des classes suivantes :
LMI_StorageJob
LMI_SoftwareInstallationJob
LMI_NetworkJob
LMIShell tente avant tout d'utiliser des indications comme la méthode d'attente. Si cela échoue, une méthode d'interrogation est utilisée à la place.
Pour effectuer un appel de méthode synchrone, veuillez utiliser la syntaxe suivante :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à utiliser, method_name par le nom de la méthode à appeler, parameter par le nom du paramètre à définir, et value par la valeur de ce paramètre. Toutes les méthodes synchrones contiennent le préfixe Sync dans leur nom et retournent un tuple à trois éléments consistant de la valeur de retour de la tâche, des paramètres de retour de la tâche, et de la chaîne d'erreur de celle-ci.
Vous pouvez également forcer LMIShell à utiliser une méthode d'interrogation uniquement. Pour faire cela, veuillez spécifier le paramètre PreferPolling, comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Répertorier et afficher les paramètres ValueMap
Les méthodes CIM peuvent contenir des paramètres ValueMap dans leur définition MOF (« Managed Object Format »). Les paramètres ValueMap contiennent des valeurs constantes.
Pour répertorier tous les paramètres ValueMap disponibles d'une méthode particulière, veuillez utiliser la méthode print_valuemap_parameters(), comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance et method_name par le nom de la méthode à inspecter. Cette méthode imprime les paramètres ValueMap disponibles sur la sortie standard.
Pour obtenir une liste des paramètres ValueMap disponibles, veuillez utiliser la méthode valuemap_parameters() :
instance_object.method_name.valuemap_parameters()
instance_object.method_name.valuemap_parameters()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.22. Répertorier les paramètres ValueMap
Pour inspecter l'objet d'instance acc créé dans l'Exemple 19.21, « Utiliser des méthodes » et pour répertorier tous les paramètres ValueMap disponibles de la méthode CreateAccount(), veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode imprime sur la sortie standard les valeurs constantes nommées disponibles. Vous pouvez également obtenir une liste des valeurs constantes disponibles en utilisant la méthode values() :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.23. Accéder aux paramètres ValueMap
L'Exemple 19.22, « Répertorier les paramètres ValueMap » mentionne un paramètre ValueMap nommé CreateAccount. Pour inspecter ce paramètre et répertorier les valeurs constantes disponibles, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une chaîne.
Exemple 19.24. Accéder à des valeurs constantes
L'Exemple 19.23, « Accéder aux paramètres ValueMap » montre que le paramètre ValueMap CreateAccount fournit une valeur constante nommée Failed. Pour accéder à cette valeur constante nommée, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Actualiser les objets d'instances
Les objets locaux utilisés par LMIShell, qui représentent des objets CIM du côté CIMOM, peuvent devenir obsolètes, si ceux-ci changent pendant leur utilisation avec les objets de LMIShell. Pour mettre à jour les propriétés et les méthodes d'un objet d'instance en particulier, veuillez utiliser la méthode refresh(), comme suit :
instance_object.refresh()
instance_object.refresh()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet à actualiser. Cette méthode retourne un tuple de trois éléments consistant d'une valeur de retour, d'un paramètre de valeur de retour, et d'une chaîne d'erreur.
Exemple 19.25. Actualiser les objets d'instances
Pour mettre à jour les propriétés et méthodes de l'objet d'instance device créé dans l'Exemple 19.14, « Accéder à des instances », veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Afficher la représentation MOF
Pour afficher la représentation MOF (Format d'objet géré, « Managed Object Format ») d'un objet d'instance, veuillez utiliser la méthode tomof() comme suit :
instance_object.tomof()
instance_object.tomof()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à inspecter. Cette méthode imprime la représentation MOF de l'objet sur la sortie standard.
Exemple 19.26. Afficher la représentation MOF
Pour afficher la représentation MOF de l'objet d'instance device créé dans l'Exemple 19.14, « Accéder à des instances », veuillez saisir ce qui suit dans l'invite interactive :
Les noms d'instance LMIShell sont des objets contenant un ensemble de clés principales et leurs valeurs. Ce type d'objet identifie une instance de manière exacte.
Accéder aux noms d'instances
Les objets CIMInstance sont identifiés par des objets CIMInstanceName. Pour obtenir une liste de tous les objets des noms d'instances disponibles, veuillez utiliser la méthode instance_names(), comme suit :
class_object.instance_names()
class_object.instance_names()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe à inspecter. Cette méthode retourne une liste d'objets LMIInstanceName.
Pour accéder au premier objet du nom d'instance d'un objet de classe, veuillez utiliser la méthode first_instance_name() :
class_object.first_instance_name()
class_object.first_instance_name()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne un objet LMIInstanceName.
En plus de répertorier tous les objets de noms d'instances ou de retourner le premier, instances_names() et first_instance_name() prennent en charge un argument optionnel vous permettant de filtrer les résultats :
class_object.instance_names(criteria)
class_object.instance_names(criteria)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
class_object.first_instance_name(criteria)
class_object.first_instance_name(criteria)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer criteria par un dictionnaire consistant de paires de clés-valeurs, où les clés représentent les propriétés clés et les valeurs représentent les valeurs de ces propriétés clés.
Exemple 19.27. Accéder aux noms d'instances
Pour trouver le premier nom d'instance de l'objet de classe cls créé dans l'Exemple 19.7, « Accéder aux objets de classe » dont la propriété clé Name est égale à eth0 et pour l'assigner à une variable nommée device_name, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Examiner des noms d'instance
Tous les objets de noms d'instances stockent des informations sur leurs noms de classe et sur l'espace de nom auquel ils appartiennent.
Pour obtenir le nom de classe d'un objet de nom d'instance particulier, veuillez utiliser la syntaxe suivante :
instance_name_object.classname
instance_name_object.classname
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_name_object par l'objet du nom d'instance à inspecter. Une représentation par chaîne du nom de la classe sera retournée.
Pour obtenir des informations sur l'espace de noms auquel un objet de nom d'instance appartient, veuillez utiliser :
instance_name_object.namespace
instance_name_object.namespace
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Une représentation par chaîne de l'espace de noms sera retournée.
Exemple 19.28. Examiner des noms d'instance
Pour inspecter l'objet du nom d'instance device_name créé dans l'Exemple 19.27, « Accéder aux noms d'instances » et pour afficher son nom de classe et son espace de nom correspondant, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Créer de nouveaux noms d'instance
LMIShell permet de créer un nouvel objet CIMInstanceName encapsulé (« wrapped ») si vous connaissez toutes les clés principales d'un objet distant. Cet objet de nom d'instance peut ensuite être utilisé pour récupérer l'objet d'instance entier.
Pour créer un nouveau nom d'instance d'un objet de classe, veuillez utiliser la méthode new_instance_name(), comme suit :
class_object.new_instance_name(key_properties)
class_object.new_instance_name(key_properties)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer class_object par le nom de l'objet de classe et key_properties par un dictionnaire consistant de paires clés-valeurs, où les clés représentent les propriétés clés et les valeurs représentent les valeurs de ces propriétés clés. Cette méthode retourne un objet LMIInstanceName.
Exemple 19.29. Créer de nouveaux noms d'instance
La classe LMI_Account représente les comptes utilisateurs sur le système géré. Pour utiliser l'objet d'espace de noms ns créé dans l'Exemple 19.5, « Accéder aux objets d'espaces de noms », et pour créer une nouvelle instance de la classe LMI_Account représentant l'utilisateur lmishell-user sur le système géré, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Répertorier et accéder aux propriétés clés
Pour répertorier toutes les propriétés clés disponibles pour un objet de nom d'instance particulier, veuillez utiliser la méthode print_key_properties(), comme suit :
instance_name_object.print_key_properties()
instance_name_object.print_key_properties()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_name_object par le nom de l'objet du nom d'instance à inspecter. Cette méthode imprime les propriétés clés dans la sortie standard.
Pour obtenir une liste des propriétés clés disponibles, veuillez utiliser la méthode key_properties() :
instance_name_object.key_properties()
instance_name_object.key_properties()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.30. Répertorier les propriétés clés disponibles
Pour inspecter l'objet du nom d'instance device_name créé dans l'Exemple 19.27, « Accéder aux noms d'instances » et pour répertorier toutes les propriétés clés disponibles, veuillez saisir ce qui suit dans l'invite interactive :
> device_name.print_key_properties()
CreationClassName
SystemName
Name
SystemCreationClassName
>
> device_name.print_key_properties()
CreationClassName
SystemName
Name
SystemCreationClassName
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour assigner une liste de ces propriétés clés à une variable nommée device_name_properties, veuillez saisir :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour obtenir la valeur actuelle d'une propriété clé particulière, veuillez utiliser la syntaxe suivante :
instance_name_object.key_property_name
instance_name_object.key_property_name
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer key_property_name par le nom de la propriété clé à accéder.
Exemple 19.31. Accéder aux propriétés clés individuelles
Pour inspecter l'objet du nom d'instance device_name créé dans l'Exemple 19.27, « Accéder aux noms d'instances » et pour afficher la valeur de la propriété clé nommée SystemName, veuillez saisir ce qui suit dans l'invite interactive :
> device_name.SystemName
u'server.example.com'
>
> device_name.SystemName
u'server.example.com'
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Convertir des noms d'instances en instances
Chaque nom d'instance peut être converti en instance. Pour faire cela, veuillez utiliser la méthode to_instance() comme suit :
instance_name_object.to_instance()
instance_name_object.to_instance()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Remplacer instance_name_object par l'objet du nom d'instance à convertir. Cette méthode retourne un objet LMIInstance.
Exemple 19.32. Convertir des noms d'instances en instances
Pour convertir l'objet du nom d'instance device_name créé dans l'Exemple 19.27, « Accéder aux noms d'instances » en objet d'instance et pour l'assigner à une variable nommée device, veuillez saisir ce qui suit dans l'invite interactive :
> device = device_name.to_instance()
>
> device = device_name.to_instance()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à inspecter. Il est possible de filtrer les résultats en spécifiant les paramètres suivants :
AssocClass — chaque objet retourné doit être associé à l'objet source à travers une instance de cette classe ou de l'une de ses sous-classes. La valeur par défaut est None.
ResultClass — chaque objet retourné doit être une instance de cette classe ou de l'une de ses sous-classes, ou doit être cette classe ou l'une de ses sous-classes. La valeur par défaut est None.
Role — chaque objet retourné doit être associé à l'objet source à travers une association dans laquelle l'objet source joue le rôle spécifié. Le nom de la propriété dans la classe d'association faisant référence à l'objet source doit correspondre à la valeur de ce paramètre. La valeur par défaut est None.
ResultRole — chaque objet retourné doit être associé à l'objet source à travers une association pour laquelle l'objet retourné joue le rôle spécifié. Le nom de la propriété dans la classe d'association faisant référence à l'objet retourné doit correspondre à la valeur de ce paramètre. La valeur par défaut est None.
Les paramètres restants font référence à :
IncludeQualifiers — un booléen indiquant si les qualificateurs de chaque objet (y compris les qualificateurs de l'objet et de toute propriété retournée) doivent être inclus en tant qu'éléments « QUALIFIER » dans la réponse. La valeur par défaut est False.
IncludeClassOrigin — un booléen indiquant si l'attribut CLASSORIGIN doit être présent sur tous les éléments correspondants de chaque objet retourné. La valeur par défaut est False.
PropertyList — les membres de cette liste définissent un ou plusieurs noms de propriétés. Les objets retournés n'inclueront pas d'éléments pour toute propriété manquante à cette liste. Si PropertyList est une liste vide, aucune propriété ne sera incluse dans les objets retournés. Si None, aucun filtre supplémentaire ne sera défini. La valeur par défaut est None.
Exemple 19.33. Accéder à des instances associées
La classe LMI_StorageExtent représente les périphériques blocs disponibles sur le système. Pour utiliser l'objet d'espace de nom ns créé dans l'Exemple 19.5, « Accéder aux objets d'espaces de noms », veuillez créer une instance de la classe LMI_StorageExtent pour le périphérique bloc nommé /dev/vda, et assignez-la à une variable nommée vda, puis saisissez ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour obtenir une liste de toutes les partitions de disque de ce périphérique bloc et l'assigner à une variable nommée vda_partitions, veuillez utiliser la méthode associators() comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Accéder aux noms d'instances associés
Pour obtenir une liste des tous les noms d'instances associés d'un objet d'instance particulier, veuillez utiliser la méthode associator_names() comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à inspecter. Il est possible de filtrer les résultats en spécifiant les paramètres suivants :
AssocClass — chaque nom retourné identifie un objet devant être associé à l'objet source à travers une instance de cette classe ou de l'une de ses sous-classes. La valeur par défaut est None.
ResultClass — chaque nom retourné identifie un objet qui est une instance de cette classe ou l'une de ses sous-classes, ou qui doit être cette classe ou l'une de ses sous-classes. La valeur par défaut est None.
Role — chaque nom retourné identifie un objet devant être associé à l'objet source à travers une association dans laquelle l'objet source joue le rôle spécifié. Le nom de la propriété dans la classe d'association faisant référence à l'objet source doit correspondre à la valeur de ce paramètre. La valeur par défaut est None.
ResultRole — chaque nom retourné identifie un objet devant être associé à l'objet source à travers une association dans laquelle l'objet nommé retourné joue le rôle spécifié. Le nom de la propriété dans la classe d'association faisant référence à l'objet retourné doit correspondre à la valeur de ce paramètre. La valeur par défaut est None.
Exemple 19.34. Accéder aux noms d'instances associés
Pour utiliser l'objet d'instance vda créé dans l'Exemple 19.33, « Accéder à des instances associées », veuillez obtenir une liste de ses noms d'instances associés, puis assignez-la à une variable nommée vda_partitions, saisissez :
Le CIM (« Common Information Model », ou modèle d'informations communes) définit une relation d'association entre objets gérés. Les objets d'association définissent la relation entre deux objets.
Accéder à des instances d'association
Pour obtenir une liste d'objets d'association faisant référence à un objet cible particulier, veuillez utiliser la méthode references(), comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à inspecter. Il est possible de filtrer les résultats en spécifiant les paramètres suivants :
ResultClass — chaque objet retourné doit être une instance de cette classe ou de l'une de ses sous-classes, ou doit être cette classe ou l'une de ses sous-classes. La valeur par défaut est None.
Role — chaque objet retourné doit faire référence à l'objet cible à travers une propriété avec un nom correspondant à la valeur de ce paramètre. La valeur par défaut est None.
Les paramètres restants font référence à :
IncludeQualifiers — un booléen indiquant si chaque objet (y compris les qualificateurs de l'objet et de toute propriété retournée) doit être inclus en tant qu'élément « QUALIFIER » dans la réponse. La valeur par défaut est False.
IncludeClassOrigin — un booléen indiquant si l'attribut CLASSORIGIN doit être présent sur tous les éléments correspondants de chaque objet retourné. La valeur par défaut est False.
PropertyList — les membres de cette liste définissent un ou plusieurs noms de propriété. Les objets retournés n'inclueront pas d'éléments pour toute propriété manquante de cette liste. Si PropertyList est une liste vide, aucune propriété ne sera incluse dans les objets retournés. Si None, aucun filtre supplémentaire ne sera défini. La valeur par défaut est None.
Exemple 19.35. Accéder à des instances d'association
La classe LMI_LANEndpoint représente un point de terminaison de communication associé à un certain périphérique d'interface réseau. Pour utiliser l'objet d'espace de noms ns créé dans l'Exemple 19.5, « Accéder aux objets d'espaces de noms », veuillez créer une instance de la classe LMI_LANEndpoint pour le périphérique d'interface réseau nommé eth0, et assignez-la à une variable nommée lan_endpoint, puis saisissez ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour accéder au premier objet d'association faisant référence à un objet LMI_BindsToLANEndpoint et pour l'assigner à une variable nommée bind, veuillez saisir :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Vous pouvez désormais utiliser la propriété Dependent pour accéder à la classe dépendante LMI_IPProtocolEndpoint qui représente l'adresse IP du périphérique de l'interface réseau correspondant :
> ip = bind.Dependent.to_instance()
> print ip.IPv4Address
192.168.122.1
>
> ip = bind.Dependent.to_instance()
> print ip.IPv4Address
192.168.122.1
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Accéder aux noms d'instances d'associations
Pour obtenir une liste des noms d'instances d'associations d'un objet particulier, utiliser la méthode reference_names() comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer instance_object par le nom de l'objet d'instance à inspecter. Il est possible de filtrer les résultats en spécifiant les paramètres suivants :
ResultClass — chaque objet retourné doit identifier une instance de cette classe ou de l'une de ses sous-classes, ou cette classe ou l'une de ses sous-classes. La valeur par défaut est None.
Role — chaque objet retourné doit identifier un objet ui se réfère à une instance cible à travers une propriété avec un nom correspondant à la valeur de ce paramètre. La valeur par défaut est None.
Exemple 19.36. Accéder aux noms d'instances d'associations
Pour utiliser l'objet d'instance Ian_endpoint créé dans l'Exemple 19.35, « Accéder à des instances d'association », accéder au premier nom d'instance d'association faisant référence à un objet LMI_BindsToLANEndpoint, et l'assigner à une variable nommée bind, veuillez saisir :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Vous pouvez désormais utiliser la propriété Dependent pour accéder à la classe dépendante LMI_IPProtocolEndpoint qui représente l'adresse IP du périphérique de l'interface réseau correspondant :
> ip = bind.Dependent.to_instance()
> print ip.IPv4Address
192.168.122.1
>
> ip = bind.Dependent.to_instance()
> print ip.IPv4Address
192.168.122.1
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Une indication est une réaction à un événement particulier qui se produit en réponse à un changement précis parmi les données. LMIShell peut être abonné à une indication pour recevoir des réponses pour de tels événements.
S'abonner à des indications
Pour s'abonner à une indication, veuillez utiliser la méthode subscribe_indication(), comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Alternativement, vous pouvez utiliser une version plus courte de l'appel de méthode, comme suit :
connection_object.subscribe_indication(
Query='SELECT * FROM CIM_InstModification',
Name="cpu",
Destination="http://host_name:5988")
connection_object.subscribe_indication(
Query='SELECT * FROM CIM_InstModification',
Name="cpu",
Destination="http://host_name:5988")
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer connection_object par un objet de connexion et un host_name ayant le nom d'hôte du système auquel vous souhaitez fournir les indications.
Par défaut, tous les abonnements créés par l'interprète LMIShell sont automatiquement supprimés lorsque l'interprète se ferme. Pour modifier ce comportement, transmettez le paramètre permanente = True à l'appel de méthode subscribe_indication(). Cela empêchera LMIShell de supprimer l'abonnement.
Exemple 19.37. S'abonner à des indications
Pour utiliser l'objet de connection c créé dans Exemple 19.1, « Connexion à un CIMOM distant » et pour vous abonner à une indication nommée cpu, veuillez saisir ce qui suit dans l'invite interactive :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Répertorier les indications abonnées
Pour répertorier toutes les indications auxquelles vous êtes abonnées, utiliser la méthode print_subscribed_indications(), comme suit :
connection_object.print_subscribed_indications()
connection_object.print_subscribed_indications()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer connection_object par le nom de l'objet de connexion à inspecter. Cette méthode affichera les indications auquelles vous êtes abonnées sur la sortie standard.
Pour obtenir une liste de toutes les indications auxquelles vous êtes abonnées, veuillez utiliser la méthode subscribed_indications() comme suit :
connection_object.subscribed_indications()
connection_object.subscribed_indications()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette méthode retourne une liste de chaînes.
Exemple 19.38. Répertorier les indications abonnées
Pour inspecter l'objet de connexion c créé dans l'Exemple 19.1, « Connexion à un CIMOM distant » et pour répertorier les indications abonnées, veuillez saisir ce qui suit dans l'invite interactive :
> c.print_subscribed_indications()
>
> c.print_subscribed_indications()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour assigner une liste de ces indications à une variable nommée indications, veuillez saisir :
> indications = c.subscribed_indications()
>
> indications = c.subscribed_indications()
>
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Se désabonner des indications
Par défaut, tous les abonnements créés par l'interprète LMIShell sont automatiquement supprimés lorsque l'interprète se ferme. Pour supprimer un abonnement individuel plus tôt, utilisez la méthode unsubscribe_indication() comme suit :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Implémenter un gestionnaire d'indications (« Indication Handler »)
La méthode subscribe_indication() vous permet de spécifier le nom d'hôte du système sur lequel vous souhaitez remettre les indications. L'exemple ci-dessous montre comment implémenter un gestionnaire d'indications :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Le premier argument du gestionnaire est un objet LmiIndication, qui contient une liste de méthodes et d'objets exportés par l'indication. D'autres paramètres sont spécifiques à l'utilisateur : ces arguments devront être spécifiés lors de l'ajout d'un gestionnaire au listener.
Dans l'exemple ci-dessus, l'appel de la méthode add_handler() utilise une chaîne spéciale avec huit caractères « X ». Ces caractères sont remplacés par une chaîne aléatoire générée par des listeners afin d'éviter une collision possible de noms de gestionnaire. Pour utiliser la chaîne aléatoire, commencez par lancer le listener d'indications, puis abonnez-vous à une indication afin que la propriété Destination de l'objet du gestionnaire contienne la valeur suivante : schema://host_name/random_string.
Exemple 19.40. Implémenter un gestionnaire d'indications (« Indication Handler »)
Le script suivant illustre comment écrire un gestionnaire qui surveille un système géré se trouvant sur 192.168.122.1 et qui appelle la fonction indication_callback() lorsqu'un nouveau compte utilisateur est créé :
#!/usr/bin/lmishell
import sys
from time import sleep
from lmi.shell.LMIUtil import LMIPassByRef
from lmi.shell.LMIIndicationListener import LMIIndicationListener
# These are passed by reference to indication_callback
var1 = LMIPassByRef("some_value")
var2 = LMIPassByRef("some_other_value")
def indication_callback(ind, var1, var2):
# Do something with ind, var1 and var2
print ind.exported_objects()
print var1.value
print var2.value
c = connect("hostname", "username", "password")
listener = LMIIndicationListener("0.0.0.0", 65500)
unique_name = listener.add_handler(
"demo-XXXXXXXX", # Creates a unique name for me
indication_callback, # Callback to be called
var1, # Variable passed by ref
var2 # Variable passed by ref
)
listener.start()
print c.subscribe_indication(
Name=unique_name,
Query="SELECT * FROM LMI_AccountInstanceCreationIndication WHERE SOURCEINSTANCE ISA LMI_Account",
Destination="192.168.122.1:65500"
)
try:
while True:
sleep(60)
except KeyboardInterrupt:
sys.exit(0)
#!/usr/bin/lmishell
import sys
from time import sleep
from lmi.shell.LMIUtil import LMIPassByRef
from lmi.shell.LMIIndicationListener import LMIIndicationListener
# These are passed by reference to indication_callback
var1 = LMIPassByRef("some_value")
var2 = LMIPassByRef("some_other_value")
def indication_callback(ind, var1, var2):
# Do something with ind, var1 and var2
print ind.exported_objects()
print var1.value
print var2.value
c = connect("hostname", "username", "password")
listener = LMIIndicationListener("0.0.0.0", 65500)
unique_name = listener.add_handler(
"demo-XXXXXXXX", # Creates a unique name for me
indication_callback, # Callback to be called
var1, # Variable passed by ref
var2 # Variable passed by ref
)
listener.start()
print c.subscribe_indication(
Name=unique_name,
Query="SELECT * FROM LMI_AccountInstanceCreationIndication WHERE SOURCEINSTANCE ISA LMI_Account",
Destination="192.168.122.1:65500"
)
try:
while True:
sleep(60)
except KeyboardInterrupt:
sys.exit(0)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cette section fournit un certain nombre d'exemples de divers fournisseurs CIM distribués avec les paquets OpenLMI. Tous les exemples de cette section utilisent les deux définitions de variables suivantes :
c = connect("host_name", "user_name", "password")
ns = c.root.cimv2
c = connect("host_name", "user_name", "password")
ns = c.root.cimv2
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Veuillez remplacer host_name par le nom d'hôte du système géré, user_name par le nom d'un utilisateur autorisé à se connecter au CIMOM OpenPegasus exécuté sur ce système, et password avec le mot de passe de l'utilisateur.
Utiliser le fournisseur du service OpenLMI
Le paquet openlmi-service installe un fournisseur CIM pour gérer les services système. Les exemples ci-dessous illustrent comment utiliser ce fournisseur CIM pour répertorier les services système disponibles et comment les lancer, les arrêter, les activer, et les désactiver.
Exemple 19.41. Répertorier les services disponibles
Pour répertorier tous les services disponibles sur la machine gérée, ainsi que pour des informations indiquant si le service a été lancé (TRUE) ou est arrêté (FALSE), et la chaîne de statut, veuillez utiliser l'extrait de code suivant :
for service in ns.LMI_Service.instances():
print "%s:\t%s" % (service.Name, service.Status)
for service in ns.LMI_Service.instances():
print "%s:\t%s" % (service.Name, service.Status)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Pour uniquement répertorier les services activés par défaut, veuillez utiliser l'extrait de code suivant :
cls = ns.LMI_Service
for service in cls.instances():
if service.EnabledDefault == cls.EnabledDefaultValues.Enabled:
print service.Name
cls = ns.LMI_Service
for service in cls.instances():
if service.EnabledDefault == cls.EnabledDefaultValues.Enabled:
print service.Name
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Remarquez que la valeur de la propriété EnabledDefault est égale à 2 pour les services activés et à 3 pour les services désactivés.
Pour afficher les informations concernant le service cups, veuillez utiliser :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Utiliser le fournisseur réseau OpenLMI
Le paquet openlmi-networking installe un fournisseur CIM pour la mise en réseau. Les exemples ci-dessous illustrent comment utiliser ce fournisseur CIM pour répertorier les adresses IP associées à un certain numéro de port, créer une nouvelle connexion, configurer une adresse IP statique, et activer une connexion.
Exemple 19.44. Répertorier les adresses IP associées à un numéro de port donné
Pour répertorier toutes les adresses associées à l'interface réseau eth0, veuillez utiliser l'extrait de code suivant :
device = ns.LMI_IPNetworkConnection.first_instance({'ElementName': 'eth0'})
for endpoint in device.associators(AssocClass="LMI_NetworkSAPSAPDependency", ResultClass="LMI_IPProtocolEndpoint"):
if endpoint.ProtocolIFType == ns.LMI_IPProtocolEndpoint.ProtocolIFTypeValues.IPv4:
print "IPv4: %s/%s" % (endpoint.IPv4Address, endpoint.SubnetMask)
elif endpoint.ProtocolIFType == ns.LMI_IPProtocolEndpoint.ProtocolIFTypeValues.IPv6:
print "IPv6: %s/%d" % (endpoint.IPv6Address, endpoint.IPv6SubnetPrefixLength)
device = ns.LMI_IPNetworkConnection.first_instance({'ElementName': 'eth0'})
for endpoint in device.associators(AssocClass="LMI_NetworkSAPSAPDependency", ResultClass="LMI_IPProtocolEndpoint"):
if endpoint.ProtocolIFType == ns.LMI_IPProtocolEndpoint.ProtocolIFTypeValues.IPv4:
print "IPv4: %s/%s" % (endpoint.IPv4Address, endpoint.SubnetMask)
elif endpoint.ProtocolIFType == ns.LMI_IPProtocolEndpoint.ProtocolIFTypeValues.IPv6:
print "IPv6: %s/%d" % (endpoint.IPv6Address, endpoint.IPv6SubnetPrefixLength)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cet extrait de code utilise la classe LMI_IPProtocolEndpoint associée à une classe LMI_IPNetworkConnection donnée.
Pour afficher la passerelle par défaut, veuillez utiliser l'extrait de code suivant :
for rsap in device.associators(AssocClass="LMI_NetworkRemoteAccessAvailableToElement", ResultClass="LMI_NetworkRemoteServiceAccessPoint"):
if rsap.AccessContext == ns.LMI_NetworkRemoteServiceAccessPoint.AccessContextValues.DefaultGateway:
print "Default Gateway: %s" % rsap.AccessInfo
for rsap in device.associators(AssocClass="LMI_NetworkRemoteAccessAvailableToElement", ResultClass="LMI_NetworkRemoteServiceAccessPoint"):
if rsap.AccessContext == ns.LMI_NetworkRemoteServiceAccessPoint.AccessContextValues.DefaultGateway:
print "Default Gateway: %s" % rsap.AccessInfo
Copy to ClipboardCopied!Toggle word wrapToggle overflow
La passerelle par défaut est représentée par une instance LMI_NetworkRemoteServiceAccessPoint dont la propriété AccessContext est égale à DefaultGateway.
Pour obtenir une liste de serveurs DNS, le modèle de l'objet doit être traversé comme suit :
Obtenez les instances LMI_IPProtocolEndpoint associées avec LMI_IPNetworkConnection en utilisant LMI_NetworkSAPSAPDependency.
Utilisez la même association pour les instances LMI_DNSProtocolEndpoint.
Les instances LMI_NetworkRemoteServiceAccessPoint dont la propriété AccessContext est égale au serveur DNS associé à travers LMI_NetworkRemoteAccessAvailableToElement possèdent l'adresse du serveur DNS dans la propriété AccessInfo.
Il peut y avoir davantage de chemins possibles vers RemoteServiceAccessPath et les entrées peuvent être dupliquées. L'extrait de code suivant utilise la fonction set() pour supprimer les entrées dupliquées de la liste des serveurs DNS :
dnsservers = set()
for ipendpoint in device.associators(AssocClass="LMI_NetworkSAPSAPDependency", ResultClass="LMI_IPProtocolEndpoint"):
for dnsedpoint in ipendpoint.associators(AssocClass="LMI_NetworkSAPSAPDependency", ResultClass="LMI_DNSProtocolEndpoint"):
for rsap in dnsedpoint.associators(AssocClass="LMI_NetworkRemoteAccessAvailableToElement", ResultClass="LMI_NetworkRemoteServiceAccessPoint"):
if rsap.AccessContext == ns.LMI_NetworkRemoteServiceAccessPoint.AccessContextValues.DNSServer:
dnsservers.add(rsap.AccessInfo)
print "DNS:", ", ".join(dnsservers)
dnsservers = set()
for ipendpoint in device.associators(AssocClass="LMI_NetworkSAPSAPDependency", ResultClass="LMI_IPProtocolEndpoint"):
for dnsedpoint in ipendpoint.associators(AssocClass="LMI_NetworkSAPSAPDependency", ResultClass="LMI_DNSProtocolEndpoint"):
for rsap in dnsedpoint.associators(AssocClass="LMI_NetworkRemoteAccessAvailableToElement", ResultClass="LMI_NetworkRemoteServiceAccessPoint"):
if rsap.AccessContext == ns.LMI_NetworkRemoteServiceAccessPoint.AccessContextValues.DNSServer:
dnsservers.add(rsap.AccessInfo)
print "DNS:", ", ".join(dnsservers)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Exemple 19.45. Créer une nouvelle connexion et configurer une adresse IP statique
Pour créer un nouveau paramètre avec une configuration IPv4 statique et IPv6 stateless pour l'interface réseau eth0, veuillez utiliser l'extrait de code suivant :
capability = ns.LMI_IPNetworkConnectionCapabilities.first_instance({ 'ElementName': 'eth0' })
result = capability.LMI_CreateIPSetting(Caption='eth0 Static',
IPv4Type=capability.LMI_CreateIPSetting.IPv4TypeValues.Static,
IPv6Type=capability.LMI_CreateIPSetting.IPv6TypeValues.Stateless)
setting = result.rparams["SettingData"].to_instance()
for settingData in setting.associators(AssocClass="LMI_OrderedIPAssignmentComponent"):
if setting.ProtocolIFType == ns.LMI_IPAssignmentSettingData.ProtocolIFTypeValues.IPv4:
# Set static IPv4 address
settingData.IPAddresses = ["192.168.1.100"]
settingData.SubnetMasks = ["255.255.0.0"]
settingData.GatewayAddresses = ["192.168.1.1"]
settingData.push()
capability = ns.LMI_IPNetworkConnectionCapabilities.first_instance({ 'ElementName': 'eth0' })
result = capability.LMI_CreateIPSetting(Caption='eth0 Static',
IPv4Type=capability.LMI_CreateIPSetting.IPv4TypeValues.Static,
IPv6Type=capability.LMI_CreateIPSetting.IPv6TypeValues.Stateless)
setting = result.rparams["SettingData"].to_instance()
for settingData in setting.associators(AssocClass="LMI_OrderedIPAssignmentComponent"):
if setting.ProtocolIFType == ns.LMI_IPAssignmentSettingData.ProtocolIFTypeValues.IPv4:
# Set static IPv4 address
settingData.IPAddresses = ["192.168.1.100"]
settingData.SubnetMasks = ["255.255.0.0"]
settingData.GatewayAddresses = ["192.168.1.1"]
settingData.push()
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Cet extrait de code crée un nouveau paramètre en appelant la méthode LMI_CreateIPSetting() sur l'instance de LMI_IPNetworkConnectionCapabilities, qui est associée avec LMI_IPNetworkConnection à travers LMI_IPNetworkConnectionElementCapabilities. Il utilise également la méthode push() pour modifier le paramètre.
Exemple 19.46. Activer une connexion
Pour appliquer un paramètre à l'interface réseau, veuillez appeler la méthode ApplySettingToIPNetworkConnection() de la classe LMI_IPConfigurationService. Cette méthode est asynchrone et retourne une tâche. Les extraits de code suivants illustrent comment appeler cette méthode de manière synchrone :
setting = ns.LMI_IPAssignmentSettingData.first_instance({ "Caption": "eth0 Static" })
port = ns.LMI_IPNetworkConnection.first_instance({ 'ElementName': 'ens8' })
service = ns.LMI_IPConfigurationService.first_instance()
service.SyncApplySettingToIPNetworkConnection(SettingData=setting, IPNetworkConnection=port, Mode=32768)
setting = ns.LMI_IPAssignmentSettingData.first_instance({ "Caption": "eth0 Static" })
port = ns.LMI_IPNetworkConnection.first_instance({ 'ElementName': 'ens8' })
service = ns.LMI_IPConfigurationService.first_instance()
service.SyncApplySettingToIPNetworkConnection(SettingData=setting, IPNetworkConnection=port, Mode=32768)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Le paramètre Mode affecte la manière dont le paramètre est appliqué. Les valeurs les plus couramment utilisées de ce paramètre sont comme suit :
1 — applique le paramètre immédiatement et le rend automatiquement actif.
2 — rend le paramètre automatiquement actif mais ne l'applique pas immédiatement.
4 — déconnecte et désactive l'activation automatique.
5 — ne modifie pas l'état du paramètre, désactive uniquement l'activation automatique.
32768 — applique le paramètre.
32769 — déconnexion.
Utiliser le fournisseur de stockage OpenLMI
Le paquet openlmi-storage installe un fournisseur CIM pour la gestion du stockage. Les exemples ci-dessous illustrent comment utiliser ce fournisseur CIM pour créer un groupe de volumes, un volume logique, un système de fichiers, pour monter un système de fichiers, et pour répertorier les périphériques blocs connus par le système.
En plus des variables c et ns, ces exemples utilisent les définitions de variables suivantes :
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Exemple 19.47. Créer un groupe de volumes
Pour créer un nouveau groupe de volumes se trouvant dans /dev/myGroup/ qui possède trois membres et une taille d'extension par défaut de 4 Mo, veuillez utiliser l'extrait de code suivant :
# Find the devices to add to the volume group
(filtering the CIM_StorageExtent.instances()
call would be faster, but this is easier to read):
sda1 = ns.CIM_StorageExtent.first_instance({"Name": "/dev/sda1"})
sdb1 = ns.CIM_StorageExtent.first_instance({"Name": "/dev/sdb1"})
sdc1 = ns.CIM_StorageExtent.first_instance({"Name": "/dev/sdc1"})
# Create a new volume group:
(ret, outparams, err) = storage_service.SyncCreateOrModifyVG(
ElementName="myGroup",
InExtents=[sda1, sdb1, sdc1])
vg = outparams['Pool'].to_instance()
print "VG", vg.PoolID, \
"with extent size", vg.ExtentSize, \
"and", vg.RemainingExtents, "free extents created."
# Find the devices to add to the volume group
# (filtering the CIM_StorageExtent.instances()
# call would be faster, but this is easier to read):
sda1 = ns.CIM_StorageExtent.first_instance({"Name": "/dev/sda1"})
sdb1 = ns.CIM_StorageExtent.first_instance({"Name": "/dev/sdb1"})
sdc1 = ns.CIM_StorageExtent.first_instance({"Name": "/dev/sdc1"})
# Create a new volume group:
(ret, outparams, err) = storage_service.SyncCreateOrModifyVG(
ElementName="myGroup",
InExtents=[sda1, sdb1, sdc1])
vg = outparams['Pool'].to_instance()
print "VG", vg.PoolID, \
"with extent size", vg.ExtentSize, \
"and", vg.RemainingExtents, "free extents created."
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Exemple 19.48. Créer un volume logique
Pour créer deux volumes logiques avec une taille de 100 Mo, veuillez utiliser cet extrait de code :
# Find the file system on the logical volume:
fs = lv.first_associator(ResultClass="LMI_LocalFileSystem")
mount_service = ns.LMI_MountConfigurationService.first_instance()
(rc, out, err) = mount_service.SyncCreateMount(
FileSystemType='ext3',
Mode=32768, # just mount
FileSystem=fs,
MountPoint='/mnt/test',
FileSystemSpec=lv.Name)
# Find the file system on the logical volume:
fs = lv.first_associator(ResultClass="LMI_LocalFileSystem")
mount_service = ns.LMI_MountConfigurationService.first_instance()
(rc, out, err) = mount_service.SyncCreateMount(
FileSystemType='ext3',
Mode=32768, # just mount
FileSystem=fs,
MountPoint='/mnt/test',
FileSystemSpec=lv.Name)
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Exemple 19.51. Répertorier les périphériques blocs
Pour répertorier tous les périphériques blocs connus par le système, veuillez utiliser l'extrait de code suivant :
devices = ns.CIM_StorageExtent.instances()
for device in devices:
if lmi_isinstance(device, ns.CIM_Memory):
# Memory and CPU caches are StorageExtents too, do not print them
continue
print device.classname,
print device.DeviceID,
print device.Name,
print device.BlockSize*device.NumberOfBlocks
devices = ns.CIM_StorageExtent.instances()
for device in devices:
if lmi_isinstance(device, ns.CIM_Memory):
# Memory and CPU caches are StorageExtents too, do not print them
continue
print device.classname,
print device.DeviceID,
print device.Name,
print device.BlockSize*device.NumberOfBlocks
Copy to ClipboardCopied!Toggle word wrapToggle overflow
Utiliser le fournisseur de matériel OpenLMI
Le paquet openlmi-hardware installe un fournisseur CIM pour surveiller le matériel. Les exemples ci-dessous illustrent comment utiliser ce fournisseur CIM pour récupérer des informations sur le CPU, les modules de mémoire, les périphériques PCI, et sur le constructeur et le modèle de la machine.
Exemple 19.52. Afficher les informations du CPU
Pour afficher les informations de base du CPU, comme le nom du CPU, le nombre de cœurs du processeur, et le nombre de threads de matériel, veuillez utiliser l'extrait de code suivant :
Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.
Rendre l’open source plus inclusif
Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.
À propos de Red Hat
Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.