Select to view content in your preferred language

Start/Stop services in different folder directories

2946
6
Jump to solution
04-01-2022 09:15 AM
JeremiahJones
Occasional Contributor

I have looked at and replicated the example here ->How To: Stop GIS services using ArcGIS API for Python (esri.com) however, this code only seems to return the services that are living in the root folder of my ArcGIS server. I want to stop a different service inside of another folder directory and I am not sure how to do that. I think it may be something simple that I am missing.

Thanks for any help.

Cheers,

Jay

0 Kudos
1 Solution

Accepted Solutions
tigerwoulds
Frequent Contributor

Actually, once you get the gis server object (gis_servers), you can try something like: 

serverFolder = 'My test folder'
serviceList = gis_servers.services.list(folder=serverFolder)

 Then loop through that list and execute .start or .stop

for service in serviceList:
    service.start()
    # service.stop()

 

View solution in original post

6 Replies
tigerwoulds
Frequent Contributor
0 Kudos
tigerwoulds
Frequent Contributor

Actually, once you get the gis server object (gis_servers), you can try something like: 

serverFolder = 'My test folder'
serviceList = gis_servers.services.list(folder=serverFolder)

 Then loop through that list and execute .start or .stop

for service in serviceList:
    service.start()
    # service.stop()

 

ZacharyHart
Honored Contributor

@tigerwoulds 

when i try what you suggest using the sample code from the tutorial I get:

AttributeError: 'list' object has no attribute 'services'
0 Kudos
Jen_Zumbado-Hannibal
Frequent Contributor

Thanks! This really worked for me even though I'm a very novice code writer. 

I'm using ArcGIS API for Python with Notebook in ArcPro and follow these steps. 

1 -Create profile

2-Connect as admin

3- Write following code:

#Connect to production server federated to Portal
gis_servers = gis.admin.servers.list()[1]
#List all services in Folder1
hosted_services = gis_servers.services.list(folder='Folder1')
#Stop all services in the Folder1
for service in hosted_services:
        service.stop()
#List the status of services in Folder1
service.status

 

So, I have four more folders and each one has services in them. How would you write this code to include not only stopping services at the root level but also in the various folders?

Thanks. 

 

 

Jen Zumbado-Hannibal, GISP
GIS Coordinator
City of Forest Grove
Forest Grove, OR 97116

0 Kudos
AndreaB_
Frequent Contributor

Hi all,

I'm trying to use this code but I am also getting 

serviceList = gis_servers.services.list(folder=serverFolder) 

AttributeError: 'list' object has no attribute 'services'

I'm not sure how to fix this as my python knowledge is limited. What am I missing? 

0 Kudos
AndreaB_
Frequent Contributor

Hi!

You all have helped me a quite a bit. Through this post and many other posts along with documentation, I was able to piece together full code to stop all of my services. I am posting here to help others in the future.  Is there a better way to do it? Well, I was hoping so! But at least this works.

from arcgis.gis import GIS
import arcgis.gis.admin
gis = GIS("portalurl", "username") #GIS Server details
admin = gis.admin
server1 = gis.admin.servers.get(role="HOSTING_SERVER")[0] #get federated ArcGIS Server
#stop root folder services
for service in server1.services.list():
    service.stop()
#stop all services in this folder
for service in server1.services.list(folder="folder1"):
    service.stop()
#stop all services in this folder
for service in server1.services.list(folder="folder2"):
    service.stop()
#stop all services in this folder
for service in server1.services.list(folder="folder3"):
    service.stop()

 

0 Kudos