Exemple : création d'un site
Cet exemple crée un site ArcGIS Server sur la base de valeurs fournies par l'utilisateur pour le compte d’administrateur de site principal, l'emplacement du magasin de configuration et l'emplacement racine des répertoires de serveur. Ces valeurs sont les mêmes que celles qu'un utilisateur est invité à saisir lors de la création manuelle d'un site dans le gestionnaire ArcGIS Server.
L'opération createNewSite de l'API Administrateur d'ArcGIS Server peut être appelée avec moins de code en transmettant simplement le nom d'utilisateur et le mot de passe de votre choix pour l’administrateur de site principal, ainsi que le nom du serveur et le numéro de port. L'exemple ci-dessous vous permet, en outre, de définir l'emplacement du magasin de configuration et du répertoire du serveur racine. Le code est, en grande partie, lié à la création des répertoires.
Lorsque vous définissez les répertoires de serveur par programmation, une grande partie de la notation JSON (JavaScript Object Notation) qui détaille les propriétés de répertoire doit être transmise à l'opération createNewSite. Dans l'exemple ci-dessous, les propriétés du répertoire sont configurées à l'aide de dictionnaires Python. Ces dictionnaires sont ensuite sérialisés dans JSON à l'aide de la fonction json.dumps() de Python. Cela permet de préserver la lisibilité de l'exemple.
Les propriétés de répertoire utilisées ci-dessous sont les mêmes que celles appliquées, par défaut, par le gestionnaire lors de la création d'un site. Vous pouvez les modifier selon vos besoins.
# Demonstrates how to create a new site
# For Http calls
import httplib, urllib, json
# For system tools
import sys, os
# For reading passwords without echoing
import getpass
# Defines the entry point into the script
def main(argv=None):
# Ask for admin/publisher user name and password
username = raw_input("Enter desired primary site administrator name: ")
password = getpass.getpass("Enter desired primary site administrator password: ")
# Ask for server name
serverName = raw_input("Enter server name: ")
serverPort = 6080
# Ask for config store and root server directory paths
configStorePath = raw_input("Enter config store path: ")
rootDirPath = raw_input("Enter root server directory path: ")
# Set up required properties for config store
configStoreConnection={"connectionString": configStorePath, "type": "FILESYSTEM"}
# Set up paths for server directories
cacheDirPath = os.path.join(rootDirPath, "arcgiscache")
jobsDirPath = os.path.join(rootDirPath, "arcgisjobs")
outputDirPath = os.path.join(rootDirPath, "arcgisoutput")
systemDirPath = os.path.join(rootDirPath, "arcgissystem")
# Create Python dictionaries representing server directories
cacheDir = dict(name = "arcgiscache",physicalPath = cacheDirPath,directoryType = "CACHE",cleanupMode = "NONE",maxFileAge = 0,description = "Stores tile caches used by map, globe, and image services for rapid performance.", virtualPath = "")
jobsDir = dict(name = "arcgisjobs",physicalPath = jobsDirPath, directoryType = "JOBS",cleanupMode = "TIME_ELAPSED_SINCE_LAST_MODIFIED",maxFileAge = 360,description = "Stores results and other information from geoprocessing services.", virtualPath = "")
outputDir = dict(name = "arcgisoutput",physicalPath = outputDirPath,directoryType = "OUTPUT",cleanupMode = "TIME_ELAPSED_SINCE_LAST_MODIFIED",maxFileAge = 10,description = "Stores various information generated by services, such as map images.", virtualPath = "")
systemDir = dict(name = "arcgissystem",physicalPath = systemDirPath,directoryType = "SYSTEM",cleanupMode = "NONE",maxFileAge = 0,description = "Stores files that are used internally by the GIS server.", virtualPath = "")
# Serialize directory information to JSON
directoriesJSON = json.dumps(dict(directories = [cacheDir, jobsDir, outputDir, systemDir]))
# Construct URL to create a new site
createNewSiteURL = "/arcgis/admin/createNewSite"
# Set up parameters for the request
params = urllib.urlencode({'username': username, 'password': password, 'configStoreConnection':
configStoreConnection, 'directories':directoriesJSON, 'f': 'json'})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
# Connect to URL and post parameters
httpConn = httplib.HTTPConnection(serverName, serverPort)
httpConn.request("POST", createNewSiteURL, params, headers)
# Read response
response = httpConn.getresponse()
if (response.status != 200):
httpConn.close()
print "Error while creating the site."
return
else:
data = response.read()
httpConn.close()
# Check that data returned is not an error object
if not assertJsonSuccess(data):
print "Error returned by operation. " + str(data)
else:
print "Site created successfully"
return
# A function that checks that the input JSON object
# is not an error object.
def assertJsonSuccess(data):
obj = json.loads(data)
if 'status' in obj and obj['status'] == "error":
print "Error: JSON object returns an error. " + str(obj)
return False
else:
return True
# Script start
if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))