WMS Factory Design
Factory - Frontend Protocol
This document describes the v3+ protocol between the GlideinWMS
Factory and the supported Frontend services.
The protocol defines how the Frontend describes "what" needs to be done and the Factory knows "how" to do it. The VO Frontend, OSG, TeraGrid, and the Cloud all have special requirements where the frontends and users have some information on the "how" that is needed by the Factory. This means that the Frontend cannot pass information that will affect glidein submission; instead, they pick entry configurations that best suits their needs. The only exception is the ability to pass VM Id and Type for cloud entries or the Project Id. The Frontends maintain the ability to affect glidein behavior with glidein attributes.
The Factory and Frontends communicate through the WMS Pool collector using HTCondor ClassAds. The ClassAds have an internal HTCondor type of "Master" except for the monitoring ClassAd which has the "License" internal type. These ClassAds contain information generated by both GlideinWMS and HTCondor.
The Factory creates a ClassAd for each entry point to advertise that
- GlideinMyType = glidefactory
The Frontend creates a request ClassAd for a specific entry at a
Factory from which the Frontend wants glideins. This ClassAd
contains information needed to submit and start the glideins per the
- GlideinMyType = glideclient
The Factory creates a ClassAd for each Frontend that it handles a
request from with monitoring values.
- GlideinMyType = glidefactoryclient
The Factory creates a global ClassAd that describes the global
Factory parameters to be used by the Frontends.
- GlideinMyType = glidefactoryglobal
The Frontend creates a global ClassAd that contains the credential
information for a Frontend for a specific Factory.
- GlideinMyType = glideclientglobal
Two of the generated values are used in maintaining unique ClassAds in the Collector. GlideinWMS services provide Name and an internal ClassAd type (Master or License). The Name is published in the ClassAd and can be queried in the Collector. The internal ClassAd type is only used by HTCondor and is not published. The HTCondor Collector may also add other values to the request ClassAd that are used in determining uniqueness, such as MyAddress.
If encryption is used, the encrypted identity in the Frontend request must match the AuthenticatedIdentity attribute inserted by the HTCondor Collector. This is fundamental for the security of the GlideinWMS protocol and is added to all ClassAds.
- AuthenticatedIdentity = "email@example.com"
Each ClassAd will contain additional HTCondor attributes automatically added by HTCondor. These are reserved names and cannot be overridden. The list below may be slightly different depending on what version of HTCondor is used, please see the HTCondor documentation for more information.
- MyAddress = "<111.222.333.44:0>"
- LastHeardFrom = 1292273491
- UpdatesTotal = 5418
- UpdatesSequenced = 5380
- UpdateSequenceNumber = 1405
- UpdatesLost = 1
- UpdatesHistory = "0x00000000000000000000000000000000"
- TargetType = ""
- CurrentTime = time()