2017-12-18 6 views
0

Ich verwende:libcloud: fehlend 1 erforderlich Positions Argument Fehler beim Fahrer init

  • libcloud 2.2.1
  • Python 3.5.2
  • virtualenv
  • GCE-Dienstkonto mit einem json Credential

Python-Code-Datei sieht wie folgt aus:

from libcloud.compute.types import Provider 
from libcloud.compute.providers import get_driver 


def run(): 
    """ Run this script 
    """ 
    ComputeEngine = get_driver(Provider.GCE) 
    driver = ComputeEngine(user_id='****@****.com', 
          credential_file='serviceaccount.json', 
          project='****') 

run() 

Wenn ich meinen Code ausführen, erhalte ich:

Traceback (most recent call last): 
    File "./myscript.py", line 47, in <module> 
    run() 
    File "./myscript.py", line 21, in run 
    project='ebs-it', secure=True) 
    File "/***/virtualenv/lib/python3.5/site-packages/libcloud/compute/drivers/gce.py", line 1795, in __init__ 
    super(GCENodeDriver, self).__init__(user_id, key, **kwargs) 
    File "/***/virtualenv/lib/python3.5/site-packages/libcloud/common/base.py", line 975, in __init__ 
    self.connection = self.connectionCls(*args, **conn_kwargs) 
TypeError: __init__() missing 1 required positional argument: 'secure' 

Das sieht perfectly textbook mir. Irgendeine Idee, was könnte schief gehen?

Antwort

0

Das Problem war zweifach: Nicht vertraut mit den Dienstkonten von Google, was zu einem Fehler beim Codieren führte.

  1. Jedem Dienstkonto ist eine E-Mail/ID zugeordnet, die ich erst nach dem Klicken auf "Dienstkonten verwalten" auf dem Bildschirm Anmeldeinformationen gefunden habe. Ich habe fälschlicherweise mein Google-Konto als Benutzer-ID verwendet, da ich nicht herausfinden konnte, was ich sonst noch ins Feld legen sollte (obwohl das keinen Sinn ergab, aber ich konnte keine Alternative sehen).
  2. Nachdem ich den libcloud-Code untersucht hatte, entdeckte ich den credential_file-Parameter, der besser zu passen schien als der key-Parameter, der für die Dienstkontodatei verwendet werden sollte. Das hat zu dem tatsächlichen Fehler geführt, den ich gesehen habe.
Verwandte Themen