Esri / Esri/arcgis-python-api

arcgis.gis.admin.LilcenseManager fails to retrieve list of licenses on Portal

Aperta
#2,470 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug
Lingua principale
Python
Stelle
2.2k
Fork
1.1k
Merge medio
2h 40m
PR unite (30g)
2

Descrizione

**Describe the bug**
arcgis.gis.admin.LilcenseManager fails to retrieve list of licenses on Portal. This would normally retrieve a list of add-on licenses and in the future may be less useful wwith the move to user type licensing in many cases. However at this time it is either returning an empty list, errors or fails in Python. In some versions of ArcGIS API, using gis.admin.license.all() may be an acceptable solution, however this appears to fail on the most recent release also.

Assuming LicMgr = admin.LicenseManager(fr"{token_server}=/sharing/rest/portals/self/purchases", **gi**
API For Python 2.3.0
Both LicMgr.all() returns list of licenses. gis.admin.license.all() returns list of licenses.
API for Python 2.4.1.1
LicMgr.all() fails with error included below. gis.admin.license.all() returns list of licenses.
API for Python 2.4.2
LicMgr.all() returns empty list. gis.admin.license.all() returns empty list.

**To Reproduce**
Steps to reproduce the behavior:
```python
from arcgis.gis import GIS
from arcgis.gis import admin, arcgis
import sys
print("Using Python Version: " + str(sys.version))
apivernum = str(arcgis.__version__)
print("Using ArcGIS API Version: " + apivernum)
token_server = 'https://server.domain.com/portal'
# Pull Portal admin user username/password from creds file, env variables, or enter here.
username = agsusername
password = agspassword
gis = GIS(fr"{token_server}", username, password, verify_cert=True)
LicMgr = admin.LicenseManager(
fr"{token_server}=/sharing/rest/portals/self/purchases", gis)
all_licenses = LicMgr.all()
# Works with ArcGIS API 2.4.1.1, 2.3.0, NOT 2.4.2 used to work prior to 1.9.0
# all_licenses = gis.admin.license.all()
print(all_licenses)
```
error:
```python
Using ArcGIS API Version: 2.4.1.1
Traceback (most recent call last):
File "E:\Data\PythonEnv\arcgispro-clone\Lib\site-packages\requests\models.py", line 974, in json
return complexjson.loads(self.text, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Data\PythonEnv\arcgispro-clone\Lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Data\PythonEnv\arcgispro-clone\Lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Data\PythonEnv\arcgispro-clone\Lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\Data\PythonEnv\arcgispro-clone\Lib\site-packages\arcgis\gis\_impl\_con\_connection.py", line 989, in _handle_response
data = resp.json()
^^^^^^^^^^^
File "E:\Data\PythonEnv\arcgispro-clone\Lib\site-packages\requests\models.py", line 978, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\GP\testing\testing_script.py", line 15, in
LicMgr = admin.LicenseManager(
^^^^^^^^^^^^^^^^^^^^^
File "E:\Data\PythonEnv\arcgispro-clone\Lib\site-packages\arcgis\gis\admin\_license.py", line 45, in __init__
super(LicenseManager, self).__init__(url=url, gis=gis)
File "E:\Data\PythonEnv\arcgispro-clone\Lib\site-packages\arcgis\gis\admin\_base.py", line 32, in __init__
self._init(connection=self._con)
File "E:\Data\PythonEnv\arcgispro-clone\Lib\site-packages\arcgis\gis\admin\_base.py", line 40, in _init
result = connection.get(path=self._url, params=params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\Data\PythonEnv\arcgispro-clone\Lib\site-packages\arcgis\gis\_impl\_con\_connection.py", line 866, in get
return self._handle_response(
^^^^^^^^^^^^^^^^^^^^^^
File "E:\Data\PythonEnv\arcgispro-clone\Lib\site-packages\arcgis\gis\_impl\_con\_connection.py", line 992, in _handle_response
raise Exception(resp.text)
Exception:

404 - File or directory not found.

<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;}
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;}
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;}
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->

Server Error




404 - File or directory not found.


The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.



```
**Screenshots**
If applicable, add screenshots to help explain your problem.

Image

**Expected behavior**
A list of add-on licenses present on the Portal.

**Platform (please complete the following information):**
- OS: [e.g. iOS] Windows 11
- Browser [e.g. chrome, safari] n/a
- Python API Version [e.g. `1.6.2`] (you can get this by typing `print(arcgis.__version__)` 2.4.2

**Additional context**

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Iniziare con arcgis/gis/admin/_license.py e con il percorso di inizializzazione attraverso arcgis/gis/admin/_base.py mostrato nel traceback. Riprodurre la chiamata a LicenseManager.all() con le versioni API e l'endpoint Portal indicati, quindi verificare che il risultato sia l'elenco previsto delle licenze aggiuntive, senza 404 né una risposta vuota.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
api, backend
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.