# Couverture Day-2 : lb v1 Contrat : `lb.v1.yml` Opérations découvertes : **54** ## Classification | classe | opérations | |---|---:| | INFO | 20 | | ACTION | 1 | | MANAGE | 8 | | WORKFLOW | 0 | | LIFECYCLE | 16 | | IGNORE | 9 | | UNKNOWN | 0 | ## Couverture | mesure | valeur | |---|---:| | candidates Day-2 | 29 | | AUTO | 29 | | OVERRIDE | 0 | | MANUAL | 0 | | couverture Day-2 | 100,0 % | La couverture rapporte `(AUTO + OVERRIDE)` aux seules opérations Day-2. Les classes LIFECYCLE et IGNORE ne sont pas au dénominateur : elles ne sont pas du travail à automatiser, elles sont du travail écarté, et le tableau ci-dessus les compte à part pour que l'écart reste visible. ## Modules cibles | module | opérations | |---|---| | `lb_acl` | UpdateAcl | | `lb_acl_info` | GetAcl | | `lb_backend` | UpdateBackend | | `lb_backend_info` | GetBackend, ListBackends | | `lb_backend_stat_info` | ListBackendStats | | `lb_certificate` | UpdateCertificate | | `lb_certificate_info` | GetCertificate, ListCertificates | | `lb_frontend` | UpdateFrontend | | `lb_frontend_acl_info` | ListAcls | | `lb_frontend_info` | GetFrontend, ListFrontends | | `lb_ip` | UpdateIp | | `lb_ip_info` | GetIp, ListIPs | | `lb_load_balancer` | UpdateLb | | `lb_load_balancer_action` | MigrateLb | | `lb_load_balancer_info` | GetLb, ListLbs | | `lb_load_balancer_private_network_info` | ListLbPrivateNetworks | | `lb_load_balancer_stat_info` | GetLbStats | | `lb_load_balancer_type_info` | ListLbTypes | | `lb_route` | UpdateRoute | | `lb_route_info` | GetRoute, ListRoutes | | `lb_subscriber` | UpdateSubscriber | | `lb_subscriber_info` | GetSubscriber, ListSubscriber | ## Opérations | opération | méthode | classe | mode | module | raison | |---|---|---|---|---|---| | `AddBackendServers` | POST | IGNORE | OVERRIDE | - | Ajoute des serveurs à la liste qu'un backend équilibre. Relier deux ressources relève de Terraform, qui déclare cette liste ; un module qui l'étend produirait un écart entre l'état déclaré et l'état réel, invisible jusqu'au prochain `terraform apply`. | | `AttachPrivateNetwork` | POST | IGNORE | OVERRIDE | - | Relie un load balancer à un réseau privé. Terraform déclare ce rattachement ; un module qui l'ajoute produirait un écart entre l'état déclaré et l'état réel. | | `CreateAcl` | POST | LIFECYCLE | AUTO | - | création de ressource, périmètre Terraform | | `CreateBackend` | POST | LIFECYCLE | AUTO | - | création de ressource, périmètre Terraform | | `CreateCertificate` | POST | LIFECYCLE | AUTO | - | création de ressource, périmètre Terraform | | `CreateFrontend` | POST | LIFECYCLE | AUTO | - | création de ressource, périmètre Terraform | | `CreateIp` | POST | LIFECYCLE | AUTO | - | création de ressource, périmètre Terraform | | `CreateLb` | POST | LIFECYCLE | AUTO | - | création de ressource, périmètre Terraform | | `CreateRoute` | POST | LIFECYCLE | AUTO | - | création de ressource, périmètre Terraform | | `CreateSubscriber` | POST | LIFECYCLE | AUTO | - | création de ressource, périmètre Terraform | | `DeleteAcl` | DELETE | LIFECYCLE | AUTO | - | suppression de ressource, périmètre Terraform | | `DeleteBackend` | DELETE | LIFECYCLE | AUTO | - | suppression de ressource, périmètre Terraform | | `DeleteCertificate` | DELETE | LIFECYCLE | AUTO | - | suppression de ressource, périmètre Terraform | | `DeleteFrontend` | DELETE | LIFECYCLE | AUTO | - | suppression de ressource, périmètre Terraform | | `DeleteLb` | DELETE | LIFECYCLE | AUTO | - | suppression de ressource, périmètre Terraform | | `DeleteRoute` | DELETE | LIFECYCLE | AUTO | - | suppression de ressource, périmètre Terraform | | `DeleteSubscriber` | DELETE | LIFECYCLE | AUTO | - | suppression de ressource, périmètre Terraform | | `DetachPrivateNetwork` | POST | IGNORE | OVERRIDE | - | Le symétrique d'AttachPrivateNetwork, écarté pour la même raison. | | `GetAcl` | GET | INFO | AUTO | `lb_acl_info` | verbe de lecture sur GET | | `GetBackend` | GET | INFO | AUTO | `lb_backend_info` | verbe de lecture sur GET | | `GetCertificate` | GET | INFO | AUTO | `lb_certificate_info` | verbe de lecture sur GET | | `GetFrontend` | GET | INFO | AUTO | `lb_frontend_info` | verbe de lecture sur GET | | `GetIp` | GET | INFO | AUTO | `lb_ip_info` | verbe de lecture sur GET | | `GetLb` | GET | INFO | AUTO | `lb_load_balancer_info` | verbe de lecture sur GET | | `GetLbStats` | GET | INFO | AUTO | `lb_load_balancer_stat_info` | verbe de lecture sur GET | | `GetRoute` | GET | INFO | AUTO | `lb_route_info` | verbe de lecture sur GET | | `GetSubscriber` | GET | INFO | AUTO | `lb_subscriber_info` | verbe de lecture sur GET | | `ListAcls` | GET | INFO | AUTO | `lb_frontend_acl_info` | verbe de lecture sur GET | | `ListBackendStats` | GET | INFO | AUTO | `lb_backend_stat_info` | verbe de lecture sur GET | | `ListBackends` | GET | INFO | AUTO | `lb_backend_info` | verbe de lecture sur GET | | `ListCertificates` | GET | INFO | AUTO | `lb_certificate_info` | verbe de lecture sur GET | | `ListFrontends` | GET | INFO | AUTO | `lb_frontend_info` | verbe de lecture sur GET | | `ListIPs` | GET | INFO | AUTO | `lb_ip_info` | verbe de lecture sur GET | | `ListLbPrivateNetworks` | GET | INFO | AUTO | `lb_load_balancer_private_network_info` | verbe de lecture sur GET | | `ListLbTypes` | GET | INFO | AUTO | `lb_load_balancer_type_info` | verbe de lecture sur GET | | `ListLbs` | GET | INFO | AUTO | `lb_load_balancer_info` | verbe de lecture sur GET | | `ListRoutes` | GET | INFO | AUTO | `lb_route_info` | verbe de lecture sur GET | | `ListSubscriber` | GET | INFO | AUTO | `lb_subscriber_info` | verbe de lecture sur GET | | `MigrateLb` | POST | ACTION | AUTO | `lb_load_balancer_action` | POST hors création : opération ponctuelle | | `ReleaseIp` | DELETE | LIFECYCLE | OVERRIDE | - | Libère une adresse IP réservée, c'est-à-dire la détruit. Le verbe diffère de `Delete`, donc aucune règle ne la tranchait et elle sortait en UNKNOWN ; l'effet est celui d'une suppression, et `CreateIp` son symétrique est déjà LIFECYCLE. | | `RemoveBackendServers` | DELETE | IGNORE | OVERRIDE | - | Le symétrique d'AddBackendServers, et écarté pour la même raison. Aucune des six règles ne tranche un DELETE sur une sous-collection, donc elle sortait en UNKNOWN : c'est le rapport strict qui l'a montrée, et la décision est prise sur la famille entière. | | `SetAcls` | PUT | IGNORE | OVERRIDE | - | PUT de remplacement complet de la liste des ACL d'un frontend. Terraform déclare ces règles ; les réécrire depuis un playbook effacerait celles qu'il ne connaît pas. Même raison que SetBackendServers. | | `SetBackendServers` | PUT | IGNORE | OVERRIDE | - | PUT de remplacement complet de la liste des serveurs d'un backend. C'est la forme la plus dangereuse des trois, et la même frontière la range du côté de Terraform. | | `SubscribeToLb` | POST | IGNORE | OVERRIDE | - | Relie un load balancer à un abonné aux alertes. Le lien est de l'infrastructure déclarée, et le chemin porte un verbe plutôt qu'une ressource, ce qui produit la ressource fantôme LbSubscribe. | | `UnsubscribeFromLb` | DELETE | IGNORE | OVERRIDE | - | Le symétrique de SubscribeToLb, arrivé en UNKNOWN pour la même raison que RemoveBackendServers : un DELETE sur un chemin-verbe qu'aucune règle ne tranche. Écarté avec sa famille. | | `UpdateAcl` | PUT | MANAGE | AUTO | `lb_acl` | écriture d'un état durable | | `UpdateBackend` | PUT | MANAGE | AUTO | `lb_backend` | écriture d'un état durable | | `UpdateCertificate` | PUT | MANAGE | AUTO | `lb_certificate` | écriture d'un état durable | | `UpdateFrontend` | PUT | MANAGE | AUTO | `lb_frontend` | écriture d'un état durable | | `UpdateHealthCheck` | PUT | IGNORE | OVERRIDE | - | PUT de remplacement complet de la sonde de santé d'un backend, que le fichier Terraform déclare dans le même bloc que le backend lui-même. Le modèle l'écartait faute de lecture unitaire, ce qui est vrai et n'est pas la raison : si le contrat en gagnait une demain, l'opération serait générée par accident. | | `UpdateIp` | PATCH | MANAGE | AUTO | `lb_ip` | écriture d'un état durable | | `UpdateLb` | PUT | MANAGE | AUTO | `lb_load_balancer` | écriture d'un état durable | | `UpdateRoute` | PUT | MANAGE | AUTO | `lb_route` | écriture d'un état durable | | `UpdateSubscriber` | PUT | MANAGE | AUTO | `lb_subscriber` | écriture d'un état durable | ## Limites relevées à la lecture du contrat - CreateFrontend.certificate_ids : tableau sans `items`, type des éléments inconnu - UpdateFrontend.certificate_ids : tableau sans `items`, type des éléments inconnu - UpdateIp.tags : tableau sans `items`, type des éléments inconnu