Services fournis par l'utilisateur

Les utilisateurs peuvent exploiter les services qui ne sont pas disponibles sur la place de marché en créant des instances de service fournies par l'utilisateur. Une fois créées, les instances de service fournies par l'utilisateur se comportent comme des instances de service créées via la place de marché. Kf permet de créer, répertorier, mettre à jour, supprimer, lier et annuler la liaison des services fournis par l'utilisateur.

Créer une instance de service fournie par l'utilisateur

L'alias de kf create-user-provided-service est kf cups.

Le nom attribué à un service fourni par l'utilisateur doit être unique pour toutes les instances de service d'un espace, y compris les services créés via un agent de service.

Envoyer des identifiants de service à une application

Une instance de service fournie par l'utilisateur peut servir à fournir des identifiants à une application. Par exemple, un administrateur de base de données peut posséder un ensemble d'identifiants pour une base de données existante gérée en dehors de Kf ; ces identifiants incluent l'URL, le port, le nom d'utilisateur et le mot de passe utilisés pour se connecter à la base de données.

L'administrateur peut créer un service fourni par l'utilisateur avec les identifiants, et le développeur peut lier l'instance de service à l'application. Cela permet de partager les identifiants sans quitter la plate-forme. La liaison d'une instance de service à une application a le même effet, qu'il s'agisse d'un service fourni par l'utilisateur ou d'un service de place de marché.

L'application est configurée avec les identifiants fournis par l'utilisateur, et la variable d'environnement d'exécution d'application VCAP_SERVICES contient des informations sur tous les services liés à cette application.

Un service fourni par l'utilisateur peut être créé avec des identifiants et/ou une liste de tags.

kf cups my-db -p '{"username":"admin", "password":"test123", "some-int-val": 1, "some-bool": true}' -t "comma, separated, tags"

L'instance de service fournie par l'utilisateur my-db sera créée avec les identifiants et tags fournis. Les identifiants transmis à l'indicateur -p doivent être au format JSON valide (soit intégrés, soit chargés depuis un chemin de fichier).

Pour fournir les identifiants à une ou plusieurs applications, l'utilisateur peut exécuter kf bind-service.

Supposons que nous ayons une application avec un service lié, le service fourni par l'utilisateur my-db défini ci-dessus. La variable d'environnement VCAP_SERVICES de cette application aura le contenu suivant :

{
  "user-provided": [
    {
      "name": "my-db",
      "instance_name": "my-db",
      "label": "user-provided",
      "tags": [
        "comma",
        "separated",
        "tags"
      ],
      "credentials": {
        "username": "admin",
        "password": "test123",
        "some-int-val": 1,
        "some-bool": true
      }
    }
  ]
}

Mettre à jour une instance de service fournie par l'utilisateur

L'alias de kf update-user-provided-service est kf uups.

Un service fourni par l'utilisateur peut être mis à jour avec la commande uups. Les nouveaux identifiants et/ou les tags transmis remplacent complètement ceux existants. Par exemple, si l'utilisateur a créé le service fourni par l'utilisateur my-db ci-dessus, appelé kf bind-service pour lier le service à une application, puis exécute la commande.

kf uups my-db -p '{"username":"admin", "password":"new-pw", "new-key": "new-val"}'

Les identifiants mis à jour n'apparaîtront dans l'application qu'une fois que l'utilisateur aura annulé la liaison du service à l'application, puis effectué à nouveau la liaison. Aucun redémarrage ni aucune restauration de l'application ne sont nécessaires. La variable d'environnement VCAP_SERVICES mise à jour aura le contenu suivant :

{
  "user-provided": [
    {
      "name": "my-db",
      "instance_name": "my-db",
      "label": "user-provided",
      "tags": [
        "comma",
        "separated",
        "tags"
      ],
      "credentials": {
        "username": "admin",
        "password": "new-pw",
        "new-key": "new-val"
      }
    }
  ]
}

Les nouveaux identifiants remplacent les anciens et les tags restent inchangés, car ils n'ont pas été spécifiés dans la commande de mise à jour.