A way / tool to count the number of allocated max\min instances for all published services

3981
33
Jump to solution
04-07-2017 10:12 AM
rawansaleh1
Occasional Contributor III

I couldn’t figure out if there are a tool or a way to count the number of allocated max\min instances for all published services. See below

 

Best Regards,

Rawan

0 Kudos
33 Replies
rawansaleh1
Occasional Contributor III

Dear Avinash,

 

Tanks a lot for your effort, sorry I have no idea about coding.

 

But this python is amazing, thanks again for your effort.

 

Best,

Rawan

0 Kudos
rawansaleh1
Occasional Contributor III

Dear Aviniesh,

The py file doesn’t catch the services published in the system folder (attached), what might be issue here?

 

Best,

Rawan

0 Kudos
by Anonymous User
Not applicable

Hi Rawan Saleh,

Need to check 

But in my new project don't get enough time to do testing and rectifying.

update you soon.

Thanks

0 Kudos
rawansaleh1
Occasional Contributor III

 

 Dear Avinash,

 

I could manage to do this, kindly find the below it works fine with me.

# Reads the following properties from services and writes them to a comma-delimited file:
# ServiceName, Folder, Type, Status, Min Instances, Max Instances, KML,
# WMS, Max Records, Cluster, Cache Directory, Jobs Directory, Output Directory
# For HTTP calls
import httplib, urllib, json
# For system tools
import sys
# For reading passwords without echoing
import getpass
def main(argv=None):
# Ask for admin/publisher user name and password
 username = raw_input("Enter user name: ")
 password = getpass.getpass("Enter password: ")
# Ask for server name & port
 serverName = raw_input("Enter server name: ")
 serverPort = 6080
# Get the location and the name of the file to be created
 resultFile = raw_input("Output File: ")
# Get a token
 token = getToken(username, password, serverName, serverPort)
# Get the root info
 serverURL = "/arcgis/admin/services/"
# This request only needs the token and the response formatting parameter 
 params = urllib.urlencode({'token': token, '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", serverURL, params, headers)
# Read response
 response = httpConn.getresponse()
 if (response.status != 200):
 httpConn.close()
 print "Could not read folder information."
 return
 else:
 data = response.read()
 
 # Check that data returned is not an error object
 if not assertJsonSuccess(data): 
 print "Error when reading server information. " + str(data)
 return
 else:
 print "Processed server information successfully. Now processing folders..."
# Deserialize response into Python object
 dataObj = json.loads(data)
 httpConn.close()
#Store the Folders in a list to loop on
 folders = dataObj["folders"]
#Remove the System and Utilities folders
 folders.remove("System")
 # folders.remove("Utilities")
#Add an entry for the root folder
 folders.append("")
 folders.append("System")
 
#Create the summary file of services
 serviceResultFile = open(resultFile,'w')
 serviceResultFile.write("ServiceName,Folder,Type,Status,Min Instances,Max Instances,FeatureService,kml,wms,Max Records,Cluster,Cache Directory,Jobs Directory,Output Directory" + "\n")
#Loop on the found folders and discover the services and write the service information
 for folder in folders:
 
 # Determine if the loop is working on the root folder or not
 if folder != "":
 folder += "/"
# Build the URL for the current folder
 folderURL = "/arcgis/admin/services/" + folder
 params = urllib.urlencode({'token': token, '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", folderURL, params, headers)
# Read response
 response = httpConn.getresponse()
 if (response.status != 200):
 httpConn.close()
 print "Could not read folder information."
 return
 else:
 data = response.read()
 
 # Check that data returned is not an error object
 if not assertJsonSuccess(data): 
 print "Error when reading folder information. " + str(data)
 else:
 print "Processed folder information successfully. Now processing services..."
# Deserialize response into Python object
 dataObj = json.loads(data)
 httpConn.close()
# Loop through each service in the folder 
 for item in dataObj['services']:
if item["type"] == "GeometryServer":# and folder == "":
 # Build the Service URL
 if folder:
 sUrl = "/arcgis/admin/services/%s%s.%s" %(folder,item["serviceName"], item["type"])
 statusUrl = "/arcgis/admin/services/%s%s.%s/status" %(folder,item["serviceName"], item["type"])
 else:
 sUrl = "/arcgis/admin/services/%s.%s" %(item["serviceName"], item["type"])
 statusUrl = "/arcgis/admin/services/%s.%s/status" %(item["serviceName"], item["type"])
 
 
 
 httpConn.request("POST", sUrl, params, headers)
 
 # Get the response
 servResponse = httpConn.getresponse()
 readData = servResponse.read()
 jsonOBJ = json.loads(readData)
# Build the Service URL to test the running status
# Submit the request to the server
 httpConn.request("POST", statusUrl, params, headers)
 servStatusResponse = httpConn.getresponse()
# Obtain the data from the response
 readData = servStatusResponse.read()
 jsonOBJStatus = json.loads(readData)
# Build the line to write to the output file
 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + "NA" + "," + "NA" + "," + "NA" + "," + "NA" + "," + str(jsonOBJ["clusterName"]) + "," + "NA" + "," + "NA" + "," + "NA" +"\n"
# Write the results to the file
 serviceResultFile.write(ln)
httpConn.close()
 
 elif item["type"] == "SearchServer":# and folder == "":
 if folder:
 sUrl = "/arcgis/admin/services/%s%s.%s" %(folder,item["serviceName"], item["type"])
 statusUrl = "/arcgis/admin/services/%s%s.%s/status" %(folder,item["serviceName"], item["type"])
 else:
 sUrl = "/arcgis/admin/services/%s.%s" %(item["serviceName"], item["type"])
 statusUrl = "/arcgis/admin/services/%s.%s/status" %(item["serviceName"], item["type"])
 
 
 httpConn.request("POST", sUrl, params, headers)
# Get the response
 servResponse = httpConn.getresponse()
 readData = servResponse.read()
 jsonOBJ = json.loads(readData)

 # Submit the request to the server
 httpConn.request("POST", statusUrl, params, headers)
# Get the response
 servStatusResponse = httpConn.getresponse()
 readData = servStatusResponse.read()
 jsonOBJStatus = json.loads(readData)
 
 # Build the line to write to the output file
 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + "NA" + "," + "NA" + "," + "NA" + "," + "NA" + "," + str(jsonOBJ["clusterName"]) + "," + "NA" + "," + str(jsonOBJ["properties"]["jobsDirectory"]) + "," + str(jsonOBJ["properties"]["outputDir"]) +"\n"
# Write the results to the file
 serviceResultFile.write(ln)
 
 httpConn.close()
 
 elif item["type"] == "ImageServer":
 
 # Build the Service URL
 if folder:
 sUrl = "/arcgis/admin/services/%s%s.%s" %(folder,item["serviceName"], item["type"])
 else:
 sUrl = "/arcgis/admin/services/%s.%s" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", sUrl, params, headers)
# Get the response
 servResponse = httpConn.getresponse()
 readData = servResponse.read()
 jsonOBJ = json.loads(readData)
# Build the Service URL to test the running status
 if folder:
 statusUrl = "/arcgis/admin/services/%s%s.%s/status" %(folder,item["serviceName"], item["type"])
 else:
 statusUrl = "/arcgis/admin/services/%s.%s/status" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", statusUrl, params, headers)
# Get the response
 servStatusResponse = httpConn.getresponse()
 readData = servStatusResponse.read()
 jsonOBJStatus = json.loads(readData)
# Extract the WMS properties from the response
 wmsProps = [imageWMS for imageWMS in jsonOBJ["extensions"] if imageWMS["typeName"] == 'WMSServer']#.items()[0][1] == 'WMSServer']
if len(wmsProps) > 0:
 wmsStatus = str(wmsProps[0]["enabled"])
 else:
 wmsStatus = "NA"
# Build the line to write to the output file
 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + "NA" + "," + "NA" + "," + wmsStatus +"," + "NA" + "," + str(jsonOBJ["clusterName"]) + "," + str(jsonOBJ["properties"]["cacheDir"]) + "," + "NA," + str(jsonOBJ["properties"]["outputDir"]) +"\n"
# Write the results to the file 
 serviceResultFile.write(ln)
 
 httpConn.close()
 
 elif item["type"] == "GlobeServer":
 
 # Build the Service URL
 if folder:
 sUrl = "/arcgis/admin/services/%s%s.%s" %(folder,item["serviceName"], item["type"])
 else:
 sUrl = "/arcgis/admin/services/%s.%s" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", sUrl, params, headers)
# Get the response
 servResponse = httpConn.getresponse()
 readData = servResponse.read()
 jsonOBJ = json.loads(readData)
#Build the Service URL to test the running status
 if folder:
 statusUrl = "/arcgis/admin/services/%s%s.%s/status" %(folder,item["serviceName"], item["type"])
 else:
 statusUrl = "/arcgis/admin/services/%s.%s/status" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", statusUrl, params, headers)
# Get the response
 servStatusResponse = httpConn.getresponse()
 readData = servStatusResponse.read()
 jsonOBJStatus = json.loads(readData)
# Build the line to write to the output file
 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + "NA" + "," + "NA" + "," + "NA" + "," + str(jsonOBJ["properties"]["maxRecordCount"]) + "," + str(jsonOBJ["clusterName"]) + "," + str(jsonOBJ["properties"]["cacheDir"]) + "," + "NA" + "," + str(jsonOBJ["properties"]["outputDir"]) +"\n"
# Write the results to the file
 serviceResultFile.write(ln)
httpConn.close()
 
 elif item["type"] == "GPServer":
 
 # Build the Service URL
 if folder:
 sUrl = "/arcgis/admin/services/%s%s.%s" %(folder,item["serviceName"], item["type"])
 else:
 sUrl = "/arcgis/admin/services/%s.%s" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", sUrl, params, headers)
# Get the response
 servResponse = httpConn.getresponse()
 readData = servResponse.read()
 jsonOBJ = json.loads(readData)
# Build the Service URL to test the running status
 if folder:
 statusUrl = "/arcgis/admin/services/%s%s.%s/status" %(folder,item["serviceName"], item["type"])
 else:
 statusUrl = "/arcgis/admin/services/%s.%s/status" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", statusUrl, params, headers)
# Get the response
 servStatusResponse = httpConn.getresponse()
 readData = servStatusResponse.read()
 jsonOBJStatus = json.loads(readData)
# Build the line to write to the output file
 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + "NA" + "," + "NA" + "," + "NA" + "," + "NA" + "," + str(jsonOBJ["clusterName"]) + "," + "NA" + "," + str(jsonOBJ["properties"]["jobsDirectory"]) + "," + str(jsonOBJ["properties"]["outputDir"]) +"\n"
# Write the results to the file
 serviceResultFile.write(ln)
 
 httpConn.close()
 
 elif item["type"] == "GeocodeServer":
# Build the Service URL
 if folder:
 sUrl = "/arcgis/admin/services/%s%s.%s" %(folder,item["serviceName"], item["type"])
 else:
 sUrl = "/arcgis/admin/services/%s.%s" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", sUrl, params, headers)
# Get the response
 servResponse = httpConn.getresponse()
 readData = servResponse.read()
 jsonOBJ = json.loads(readData)
if folder:
 statusUrl = "/arcgis/admin/services/%s%s.%s/status" %(folder,item["serviceName"], item["type"])
 else:
 statusUrl = "/arcgis/admin/services/%s.%s/status" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", statusUrl, params, headers)
# Get the response
 servStatusResponse = httpConn.getresponse()
 readData = servStatusResponse.read()
 jsonOBJStatus = json.loads(readData)
# Build the line to write to the output file
 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + "NA" + "," + "NA" + "," + "NA" + "," + "NA" + "," + str(jsonOBJ["clusterName"]) + "," + "NA" + "," + "NA" + "," + str(jsonOBJ["properties"]["outputDir"]) +"\n"
# Write the results to the file
 serviceResultFile.write(ln)
 
 httpConn.close()
 
 elif item["type"] == "GeoDataServer":
 
 # Build the Service URL
 if folder:
 sUrl = "/arcgis/admin/services/%s%s.%s" %(folder,item["serviceName"], item["type"])
 else:
 sUrl = "/arcgis/admin/services/%s.%s" %(item["serviceName"], item["type"])
 
 # Submit the request to the server
 httpConn.request("POST", sUrl, params, headers)
# Get the response
 servResponse = httpConn.getresponse()
 readData = servResponse.read()
 jsonOBJ = json.loads(readData)
if folder:
 statusUrl = "/arcgis/admin/services/%s%s.%s/status" %(folder,item["serviceName"], item["type"])
 else:
 statusUrl = "/arcgis/admin/services/%s.%s/status" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", statusUrl, params, headers)
# Get the response
 servStatusResponse = httpConn.getresponse()
 readData = servStatusResponse.read()
 jsonOBJStatus = json.loads(readData)
# Build the line to write to the output file
 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + "NA" + "," + "NA" + "," + "NA" + "," + str(jsonOBJ["properties"]["maxRecordCount"]) + "," + str(jsonOBJ["clusterName"]) + "," + "NA" + "," + "NA" + "," + str(jsonOBJ["properties"]["outputDir"]) +"\n"
# Write the results to the file
 serviceResultFile.write(ln)
 
 httpConn.close()
 
 elif item["type"] == "MapServer":
 
 # Build the Service URL
 if folder:
 sUrl = "/arcgis/admin/services/%s%s.%s" %(folder,item["serviceName"], item["type"])
 else:
 sUrl = "/arcgis/admin/services/%s.%s" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", sUrl, params, headers)
# Get the response
 servResponse = httpConn.getresponse()
 readData = servResponse.read()
 jsonOBJ = json.loads(readData)
# Build the Service URL to test the running status
 if folder:
 statusUrl = "/arcgis/admin/services/%s%s.%s/status" %(folder,item["serviceName"], item["type"])
 else:
 statusUrl = "/arcgis/admin/services/%s.%s/status" %(item["serviceName"], item["type"])
# Submit the request to the server
 httpConn.request("POST", statusUrl, params, headers)
# Get the response
 servStatusResponse = httpConn.getresponse()
 readData = servStatusResponse.read()
 jsonOBJStatus = json.loads(readData)
# Check for Map Cache
 isCached = jsonOBJ["properties"]["isCached"]
 if isCached == "true":
 cacheDir = str(jsonOBJ["properties"]["cacheDir"])
 else:
 cacheDir = jsonOBJ["properties"]["isCached"]
if len(jsonOBJ["extensions"]) == 0:
 # Build the line to write to the output file
 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + "FeatServHolder" + "," + "Disabled" + "," + "Disabled" +"," + str(jsonOBJ["properties"]["maxRecordCount"]) + "," + str(jsonOBJ["clusterName"]) + "," + cacheDir + "," + "NA" + "," + str(jsonOBJ["properties"]["outputDir"]) +"\n"
 else:
 # Extract the KML properties from the response
 kmlProps = [mapKML for mapKML in jsonOBJ["extensions"] if mapKML["typeName"] == 'KmlServer']#.items()[0][1] == 'KmlServer']
# Extract the WMS properties from the response
 wmsProps = [mapWMS for mapWMS in jsonOBJ["extensions"] if mapWMS["typeName"] == 'WMSServer']#.items()[0][1] == 'WMSServer']
# Extract the FeatureService properties from the response
 featServProps = [featServ for featServ in jsonOBJ["extensions"] if featServ["typeName"] == 'FeatureServer']#.items()[0][1] == 'FeatureServer']
if len(featServProps) > 0:
 featureStatus = str(featServProps[0]["enabled"])
 else:
 featureStatus = "NA"
if len(kmlProps) > 0:
 kmlStatus = str(kmlProps[0]["enabled"])
 else:
 kmlStatus = "NA"
if len(wmsProps) > 0:
 wmsStatus = str(wmsProps[0]["enabled"])
 else:
 wmsStatus = "NA"

 ln = str(jsonOBJ["serviceName"]) + "," + folder + "," + str(item["type"]) + "," + jsonOBJStatus['realTimeState'] + "," + str(jsonOBJ["minInstancesPerNode"]) + "," + str(jsonOBJ["maxInstancesPerNode"]) + "," + featureStatus + "," + kmlStatus + "," + wmsStatus +"," + str(jsonOBJ["properties"]["maxRecordCount"]) + "," + str(jsonOBJ["clusterName"]) + "," + cacheDir + "," + "NA" + "," + str(jsonOBJ["properties"]["outputDir"]) +"\n"
# Write the results to the file
 serviceResultFile.write(ln)
 
 else:
 # Close the connection to the current service
 httpConn.close()
 
 # Close the file
 serviceResultFile.close()
def getToken(username, password, serverName, serverPort):
 # Token URL is typically http://server[:port]/arcgis/admin/generateToken
 tokenURL = "/arcgis/admin/generateToken"
 
 params = urllib.urlencode({'username': username, 'password': password, 'client': 'requestip', '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", tokenURL, params, headers)
 
 # Read response
 response = httpConn.getresponse()
 if (response.status != 200):
 httpConn.close()
 print "Error while fetching tokens from admin URL. Please check the URL and try again."
 return
 else:
 data = response.read()
 httpConn.close()
 
 # Check that data returned is not an error object
 if not assertJsonSuccess(data): 
 return
 
 # Extract the token from it
 token = json.loads(data) 
 return token['token'] 
# 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
if __name__ == "__main__":
 sys.exit(main(sys.argv[1:]))

Best,

Rawan

JonathanQuinn
Esri Notable Contributor

It's possible by creating a token, getting the list of services, looping through each service, grabbing the min/max instances, adding them to a counter, and getting the list of folders, getting the list of services in each folder, looping through each service, and grabbing the min/max instances, and adding them to a counter as well:

import urllib2, urllib, json, ssl

#Avoids self signed certificate errors
ssl._create_default_https_context = ssl._create_unverified_context

baseURL = 'https://<machine>.<domain>.com:6443/arcgis'
psaUsername = '<username>'
psaPassword = '<password>'

#Function to open URLS
def openURL(url,params):
    encodedParams = urllib.urlencode(params)
    response = urllib2.urlopen(url,encodedParams).read()
    jsonResponse = json.loads(response)
    return jsonResponse

serverAdminURL = "{0}/admin".format(baseURL)
tokenURL = '{0}/tokens/generateToken'.format(baseURL)

#Generates an admin token
tokenParams = dict(username=psaUsername,password=psaPassword,client='requestip',f='json')
token = openURL(tokenURL,tokenParams)['token']
rootServicesURL = "{0}/services".format(serverAdminURL)
adminParams = dict(token=token,f='json')

#Starts the min/max counters
totalMinInstances = 0
totalMaxInstances = 0

#Gets services in the root directory
rootServices = openURL(rootServicesURL,adminParams)['services']

#Loops through services
for service in rootServices:
    serviceName = service['serviceName']
    serviceType = service['type']
    serviceURL = "{0}/{1}.{2}".format(rootServicesURL,serviceName,serviceType)

    #Gets service information
    serviceInfo = openURL(serviceURL,adminParams)
    minInstances = serviceInfo['minInstancesPerNode']
    maxInstances = serviceInfo['maxInstancesPerNode']
    
    #Adds min/max instances to counters
    totalMinInstances += minInstances
    totalMaxInstances += maxInstances
    print("Service {0} is configured with {1} min instances and {2} max instances.".format(serviceName,minInstances, maxInstances))

#Gets folders
rootFolders = openURL(rootServicesURL,adminParams)['folders']
for folder in rootFolders:
    
    #Optionally go through System and Utilities folders, (you'll need to uncomment the line and fix the indentation)
    #if not folder in ['System','Utilities']:
    folderURL = "{0}/{1}".format(rootServicesURL,folder)

    #Gets services in folders
    servicesInFolders = openURL(folderURL,adminParams)['services']

    #Loops through services in folders
    for service in servicesInFolders:
        serviceName = service['serviceName']
        serviceType = service['type']
        serviceURL = "{0}/{1}/{2}.{3}".format(rootServicesURL,folder,serviceName,serviceType)

        #Gets service information
        serviceInfo = openURL(serviceURL,adminParams)
        minInstances = serviceInfo['minInstancesPerNode']
        maxInstances = serviceInfo['maxInstancesPerNode']

        #Adds min/max instances to counters
        totalMinInstances += minInstances
        totalMaxInstances += maxInstances
        print("Service {0}/{1} is configured with {2} min instances and {3} max instances.".format(folder, serviceName,minInstances, maxInstances))

#Returns min/max instances.
print("Total minimum instances: {0}".format(totalMinInstances))
print("Total maximum instances: {0}".format(totalMaxInstances))‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
rawansaleh1
Occasional Contributor III

Dear Jonathan,

 

Thanks for your answer,

 I tried to add the previous code in a python, but when I tried to open it it fails to work.

 

I couldn’t figure out what is the reason for that.

 

What do you think?

 

Best,

Rawan

0 Kudos
JonathanQuinn
Esri Notable Contributor

Without any information about the error, it's impossible to provide assistance.

0 Kudos
rawansaleh1
Occasional Contributor III

Dear Jonathan,

Many thanks for your answer.

Kindly find the following screenshots.

 

Best,

Rawan

0 Kudos
JonathanQuinn
Esri Notable Contributor

The variables on line 6, 7, and 8 are simply place holders.  Replace them with the appropriate information for your Server.

0 Kudos
rawansaleh1
Occasional Contributor III

Dear Jonathan,

I got the same error even though I entered the specific variable

 

Best,

Rawan

0 Kudos