AttributeError:类型对象“ManagerWithFind”没有属性“client”

2024-04-30 03:12:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python和openstack新手,请不要失去冷静:)

在这里,我尝试实例化BareMetalNodeManager类对象(来自np_编排.py). 在

np公司_编排.py

from baremetal import BareMetalNodeManager
from novaclient import base

class np_orchestration:
    def provisionNodes(self):
        obj = BareMetalNodeManager(base.ManagerWithFind);
        var =        obj.create(self,"192.168.XXX.XXX",1,514,1,"00:0C:29:XX:XX:XX","192.168.XXX.XXX","XXXX","XXXX")
        print var

obj = np_orchestration()
obj.provisionNodes()

这个班级(位于裸金属.py)需要base.ManagerWithFind作为参数(它是一个抽象类)

裸金属.py

^{pr2}$

尝试执行此操作时出现以下错误:

farooqui@ubuntu:/projects/kenobi$ python np_orchestration.py
Traceback (most recent call last):
File "np_orchestration.py", line 15, in <module>
obj.provisionNodes()
File "np_orchestration.py", line 11, in provisionNodes
var = obj.create(self,"192.168.42.134",1,514,1,"00:0C:29:CF:E6:D9","192.168.42.225","admin","abc")
File "/projects/kenobi/baremetal.py", line 82, in create
return self._create('/os-baremetal-nodes', body, 'node')
File "/opt/stack/python-novaclient/novaclient/base.py", line 100, in _create
_resp, body = self.api.client.post(url, body=body)
AttributeError: type object 'ManagerWithFind' has no attribute 'client'
farooqui@ubuntu:/projects/kenobi$ 

的完整版本裸金属.py可以在这里找到: https://github.com/openstack/python-novaclient/blob/master/novaclient/v1_1/contrib/baremetal.py


Tags: inpyselfobjbasecreatenpline
1条回答
网友
1楼 · 发布于 2024-04-30 03:12:18
import json
from baremetal import BareMetalNodeManager
from novaclient import base, client
import os

config_file = open('config.json')
config_data = json.load(config_file)

class np_orchestration:

    def __init__(self):
        self.os_auth_url = config_data["config"]["OS_AUTH_URL"]
        self.os_username = config_data["config"]["OS_USER"]
        self.os_password = config_data["config"]["OS_PASSWORD"]
        self.os_tenant_name = config_data["config"]["OS_TENANT_NAME"]
        self.os_tenant_id = config_data["config"]["OS_TENANT_ID"]
        self.client = client._construct_http_client(self.os_username, self.os_password, project_id=None,
                           auth_url= self.os_auth_url, endpoint_type='publicURL',
                           service_type='compute',
                           auth_system='keystone', auth_plugin=None,
                           auth_token=None, cacert=None, tenant_id= self.os_tenant_id)

     def provisionNodes(self):
        obj = BareMetalNodeManager(self);
        var = obj.create(self,"192.168.XXX.XXX",1,514,1,"00:0C:29:XX:XX:XX","192.168.XXX.XXX","XXXX","XXXX")
        print var

obj = np_orchestration()
obj.provisionNodes()

相关问题 更多 >