Openstack Compute API 更新服务器标签

问题描述

我在开放堆栈版本 2.1 上使用 Django Rest API 无法更新服务器标签,它给出了响应文本:'{"itemNotFound": {"code": 404,"message": "The resource Could not be found. "}}' 代码解释是有一个对象数组包含多个服务器对象,循环中带有更新的标签,它将请求并将响应附加到一个数组中以供前端


@classmethod
    def update_tags(self,params):
        check(self,params)
        responses = []
        try:

            headers = {
                "X-Auth-Token": params.headers['x-auth-token'],"Content-type": 'application/json'
            }

            for server in params.data['payload']:
                replace_tags = {"tags": server["tags"]}
                response=requests.put(os.environ.get('PROTOCOL')+'://'+os.environ.get('OPENSTACK_HOST')+':'+os.environ.get('COmpuTE_PORT')+'/v2.1/servers/' +server['id']+'/tags',data=json.dumps(replace_tags),headers=headers,verify=False)
                responses.append(response)
            return responses
        except Exception as e:
            raise e

从下面写的检查方法传递的参数

def check(self,params):

    self.connection = get_openstack_conn(params)

get_openstack_conn 方法

def get_openstack_conn(params):
    token = params.Meta.get("HTTP_X_AUTH_TOKEN")
    scope = params.Meta.get("HTTP_X_ScopE")
    organization = params.Meta.get("HTTP_X_ORG")
    print("environment variables")
    print("PROTOCOL = ",os.environ.get('PROTOCOL'))
    print("OPENSTACK_HOST = ",os.environ.get('OPENSTACK_HOST'))
    print("KEY_STONE_PORT = ",os.environ.get('KEY_STONE_PORT'))
    if(scope == 'projectScope'):
        connector = openstack.connect(auth_url=os.environ.get('PROTOCOL')+'://'+os.environ.get('OPENSTACK_HOST') +
                                      ':'+os.environ.get('KEY_STONE_PORT')+'/v3',verify=False,auth_type="token",token=token,project_id=organization)
    elif(scope == 'domainScope'):
        connector = openstack.connect(auth_url=os.environ.get('PROTOCOL')+'://'+os.environ.get('OPENSTACK_HOST') +
                                      ':'+os.environ.get('KEY_STONE_PORT')+'/v3',domain_id=organization)

    return connector

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...