base.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:openshift-restclient-python 作者: openshift 项目源码 文件源码
def create_object(self, namespace=None, k8s_obj=None, body=None):
        """
        Send a POST request to the API. Pass either k8s_obj or body.
        :param namespace: namespace value or None
        :param k8s_obj: optional k8s object model
        :param body: optional JSON dict
        :return: new object returned from the API
        """
        self.logger.debug('Starting create object')
        w, stream = self._create_stream(namespace)
        return_obj = None
        name = None
        if k8s_obj:
            name = k8s_obj.metadata.name
        elif body:
            name = body.get('metadata', {}).get('name', None)
        try:
            create_method = self.lookup_method('create', namespace)
            if namespace:
                if k8s_obj:
                    create_method(namespace, k8s_obj)
                else:
                    create_method(namespace, body=body)
            else:
                if k8s_obj:
                    create_method(k8s_obj)
                else:
                    create_method(body=body)
        except ApiException as exc:
            msg = json.loads(exc.body).get('message', exc.reason) if exc.body.startswith('{') else exc.body
            raise self.get_exception_class()(msg, status=exc.status)
        except MaxRetryError as ex:
            raise self.get_exception_class()(str(ex.reason))

        if stream is not None:
            return_obj = self._read_stream(w, stream, name)

        if not return_obj or self.kind in ('project', 'namespace'):
            return_obj = self._wait_for_response(name, namespace, 'create')

        return self.fix_serialization(return_obj)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号