コード例 #1
0
    def cinder_volume_update(self, id, **kwargs):
        """Update an cinder_volume

        TODO(bcwaldon): document accepted params
        """
        hdrs = {}
        fields = {}
        for field in kwargs:
            if field in CREATE_CINDER_BACKEND_INTER_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            else:
                msg = 'update() got an unexpected keyword argument \'%s\''
                raise TypeError(msg % field)
 
        hdrs.update(self._cinder_volume_meta_to_headers(fields))

        url = '/v1/cinder_volume/%s' % base.getid(id)
        resp, body = self.client.put(url, headers=None, data=hdrs)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Disk_array(self, self._format_service_disk_meta_for_user(body['disk_meta']))
コード例 #2
0
ファイル: hosts.py プロジェクト: SunJing22/daisycloud-core
 def delete_discover_host(self, host, **kwargs):
     """Delete a discover host."""
     url = "/v1/discover/nodes/%s" % base.getid(host)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #3
0
 def delete(self, version_patch, **kwargs):
     """Delete an version."""
     url = "/v1/version_patchs/%s" % base.getid(version_patch)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #4
0
 def delete(self, network, **kwargs):
     """Delete an network."""
     url = "/v1/networks/%s" % base.getid(network)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #5
0
 def delete(self, version, **kwargs):
     """Delete an version."""
     url = "/v1/versions/%s" % base.getid(version)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #6
0
 def cinder_volume_delete(self, id, **kwargs):
     """Delete an cinder_volume."""
     url = "/v1/cinder_volume/%s" % base.getid(id)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #7
0
 def get(self, image, member_id):
     image_id = base.getid(image)
     url = '/v1/images/%s/members/%s' % (image_id, member_id)
     resp, body = self.client.get(url)
     member = body['member']
     member['image_id'] = image_id
     return ImageMember(self, member, loaded=True)
コード例 #8
0
 def delete(self, component, **kwargs):
     """Delete an component."""
     url = "/v1/components/%s" % base.getid(component)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #9
0
 def cinder_volume_delete(self, id, **kwargs):
     """Delete an cinder_volume."""
     url = "/v1/cinder_volume/%s" % base.getid(id)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #10
0
ファイル: hosts.py プロジェクト: SunJing22/daisycloud-core
    def update_discover_host(self, host, **kwargs):
        """Add a discover host

        TODO(bcwaldon): document accepted params
        """
        hdrs = {}
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            #else:
            #    msg = 'update() got an unexpected keyword argument \'%s\''
            #    raise TypeError(msg % field)

        hdrs.update(self._host_meta_to_headers(fields))

        url = '/v1/discover/nodes/%s' % base.getid(host)
        resp, body = self.client.put(url, headers=None, data=hdrs)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Host(self, self._format_host_meta_for_user(body['host']))
コード例 #11
0
ファイル: hosts.py プロジェクト: zhouronghua/daisycloud-core
 def delete_discover_host(self, host, **kwargs):
     """Delete a discover host."""
     url = "/v1/discover/nodes/%s" % base.getid(host)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #12
0
 def get(self, image, member_id):
     image_id = base.getid(image)
     url = '/v1/images/%s/members/%s' % (image_id, member_id)
     resp, body = self.client.get(url)
     member = body['member']
     member['image_id'] = image_id
     return ImageMember(self, member, loaded=True)
コード例 #13
0
ファイル: roles.py プロジェクト: SunJing22/daisycloud-core
    def update(self, role, **kwargs):
        """Update an role

        TODO(bcwaldon): document accepted params
        """
        hdrs = {}
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            else:
                msg = 'update() got an unexpected keyword argument \'%s\''
                raise TypeError(msg % field)

        hdrs.update(self._role_meta_to_headers(fields))

        url = '/v1/roles/%s' % base.getid(role)
        resp, body = self.client.put(url, headers=None, data=hdrs)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Role(self, self._format_role_meta_for_user(body['role_meta']))
コード例 #14
0
 def delete(self, config_set, **kwargs):
     """Delete an config_set."""
     url = "/v1/config_sets/%s" % base.getid(config_set)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #15
0
ファイル: networks.py プロジェクト: openstack/daisycloud-core
 def delete(self, network, **kwargs):
     """Delete an network."""
     url = "/v1/networks/%s" % base.getid(network)
     resp, body = self.client.delete(url)
     return_request_id = kwargs.get('return_req_id', None)
     if return_request_id is not None:
         return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
コード例 #16
0
 def _list_by_member(self, member):
     member_id = base.getid(member)
     url = '/v1/shared-images/%s' % member_id
     resp, body = self.client.get(url)
     out = []
     for member in body['shared_images']:
         member['member_id'] = member_id
         out.append(ImageMember(self, member, loaded=True))
     return out
コード例 #17
0
 def _list_by_image(self, image):
     image_id = base.getid(image)
     url = '/v1/images/%s/members' % image_id
     resp, body = self.client.get(url)
     out = []
     for member in body['members']:
         member['image_id'] = image_id
         out.append(ImageMember(self, member, loaded=True))
     return out
コード例 #18
0
 def _list_by_member(self, member):
     member_id = base.getid(member)
     url = '/v1/shared-images/%s' % member_id
     resp, body = self.client.get(url)
     out = []
     for member in body['shared_images']:
         member['member_id'] = member_id
         out.append(ImageMember(self, member, loaded=True))
     return out
コード例 #19
0
 def _list_by_image(self, image):
     image_id = base.getid(image)
     url = '/v1/images/%s/members' % image_id
     resp, body = self.client.get(url)
     out = []
     for member in body['members']:
         member['image_id'] = image_id
         out.append(ImageMember(self, member, loaded=True))
     return out
コード例 #20
0
ファイル: networks.py プロジェクト: SunJing22/daisycloud-core
    def get(self, network, **kwargs):
        """Get the metadata for a specific network.

        :param network: host object or id to look up
        :rtype: :class:`Network`
        """
        network_id = base.getid(network)
        resp, body = self.client.get('/v1/networks/%s'
                                      % urlparse.quote(str(network_id)))
        #meta = self._network_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        return Network(self, self._format_network_meta_for_user(body['network']))
コード例 #21
0
ファイル: install.py プロジェクト: openstack/daisycloud-core
    def disk_array_update(self, cluster, **kwargs):
        UPDATE_DISK_ARRAY_PARAMS = []
        fields = {}
        for field in kwargs:
            if field in UPDATE_DISK_ARRAY_PARAMS:
                fields[field] = kwargs[field]
            else:
                msg = 'disk_array_update() \
                      got an unexpected keyword argument \'%s\''
                raise TypeError(msg % field)

        url = '/v1/disk_array/%s' % base.getid(cluster)
        resp, body = self.client.post(url, headers=None, data=fields)
        return Install(self, self._format_install_meta_for_user(body))
コード例 #22
0
    def get(self, service_disk, **kwargs):
        """Get the metadata for a specific service_disk.

        :param service_disk: host object or id to look up
        :rtype: :class:`service_disk`
        """
        service_disk_id = base.getid(service_disk)
        resp, body = self.client.get('/v1/service_disk/%s'
                                      % urlparse.quote(str(service_disk_id)))
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        #return Host(self, meta)
        return Disk_array(self, self._format_service_disk_meta_for_user(body['disk_meta']))
コード例 #23
0
ファイル: images.py プロジェクト: zhouronghua/daisycloud-core
    def get(self, image, **kwargs):
        """Get the metadata for a specific image.

        :param image: image object or id to look up
        :rtype: :class:`Image`
        """
        image_id = base.getid(image)
        resp, body = self.client.head('/v1/images/%s' %
                                      urlparse.quote(str(image_id)))
        meta = self._image_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        return Image(self, meta)
コード例 #24
0
ファイル: images.py プロジェクト: openstack/daisycloud-core
    def get(self, image, **kwargs):
        """Get the metadata for a specific image.

        :param image: image object or id to look up
        :rtype: :class:`Image`
        """
        image_id = base.getid(image)
        resp, body = self.client.head('/v1/images/%s'
                                      % urlparse.quote(str(image_id)))
        meta = self._image_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        return Image(self, meta)
コード例 #25
0
 def replace(self, image, members):
     memberships = []
     for member in members:
         try:
             obj = {
                 'member_id': member.member_id,
                 'can_share': member.can_share,
             }
         except AttributeError:
             obj = {'member_id': member['member_id']}
             if 'can_share' in member:
                 obj['can_share'] = member['can_share']
         memberships.append(obj)
     url = '/v1/images/%s/members' % base.getid(image)
     self.client.put(url, data={'memberships': memberships})
コード例 #26
0
    def get(self, network, **kwargs):
        """Get the metadata for a specific network.

        :param network: host object or id to look up
        :rtype: :class:`Network`
        """
        network_id = base.getid(network)
        resp, body = self.client.get('/v1/networks/%s' %
                                     urlparse.quote(str(network_id)))
        # meta = self._network_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        return Network(self,
                       self._format_network_meta_for_user(body['network']))
コード例 #27
0
    def get(self, service_disk, **kwargs):
        """Get the metadata for a specific service_disk.

        :param service_disk: host object or id to look up
        :rtype: :class:`service_disk`
        """
        service_disk_id = base.getid(service_disk)
        resp, body = self.client.get('/v1/service_disk/%s' %
                                     urlparse.quote(str(service_disk_id)))
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        # return Host(self, meta)
        return Disk_array(
            self, self._format_service_disk_meta_for_user(body['disk_meta']))
コード例 #28
0
ファイル: roles.py プロジェクト: openstack/daisycloud-core
    def get(self, role, **kwargs):
        """Get the metadata for a specific role.

        :param role: host object or id to look up
        :rtype: :class:`Role`
        """
        role_id = base.getid(role)
        resp, body = self.client.get('/v1/roles/%s'
                                     % urlparse.quote(str(role_id)))
        # meta = self._role_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        # return Host(self, meta)
        return Role(self, self._format_role_meta_for_user(body['role']))
コード例 #29
0
ファイル: clusters.py プロジェクト: SunJing22/daisycloud-core
    def get(self, cluster, **kwargs):
        """Get the metadata for a specific cluster.

        :param cluster: host object or id to look up
        :rtype: :class:`Cluster`
        """
        cluster_id = base.getid(cluster)
        resp, body = self.client.get('/v1/clusters/%s'
                                      % urlparse.quote(str(cluster_id)))
        #meta = self._cluster_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        #return Host(self, meta)
        return Cluster(self, self._format_cluster_meta_for_user(body['cluster']))
コード例 #30
0
 def replace(self, image, members):
     memberships = []
     for member in members:
         try:
             obj = {
                 'member_id': member.member_id,
                 'can_share': member.can_share,
             }
         except AttributeError:
             obj = {'member_id': member['member_id']}
             if 'can_share' in member:
                 obj['can_share'] = member['can_share']
         memberships.append(obj)
     url = '/v1/images/%s/members' % base.getid(image)
     self.client.put(url, data={'memberships': memberships})
コード例 #31
0
ファイル: hosts.py プロジェクト: zhouronghua/daisycloud-core
    def get(self, host, **kwargs):
        """Get the metadata for a specific host.

        :param host: image object or id to look up
        :rtype: :class:`Host`
        """
        host_id = base.getid(host)
        resp, body = self.client.get('/v1/nodes/%s' %
                                     urlparse.quote(str(host_id)))
        # meta = self._host_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        # return Host(self, meta)
        return Host(self, self._format_host_meta_for_user(body['host']))
コード例 #32
0
ファイル: configs.py プロジェクト: SunJing22/daisycloud-core
    def get(self, config, **kwargs):
        """Get the metadata for a specific config.

        :param config: image object or id to look up
        :rtype: :class:`Config`
        """
        config_id = base.getid(config)
        resp, body = self.client.get('/v1/configs/%s'
                                      % urlparse.quote(str(config_id)))
        #meta = self._config_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        #return Config(self, meta)
        return Config(self, self._format_config_meta_for_user(body['config']))
コード例 #33
0
    def get(self, config, **kwargs):
        """Get the metadata for a specific config.

        :param config: image object or id to look up
        :rtype: :class:`Config`
        """
        config_id = base.getid(config)
        resp, body = self.client.get('/v1/configs/%s' %
                                     urlparse.quote(str(config_id)))
        # meta = self._config_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        # return Config(self, meta)
        return Config(self, self._format_config_meta_for_user(body['config']))
コード例 #34
0
    def get(self, version_patch, **kwargs):
        """Get the metadata for a specific version.

        :param version: image object or id to look up
        :rtype: :class:`version`
        """
        version_patch_id = base.getid(version_patch)
        resp, body = self.client.get('/v1/version_patchs/%s' %
                                     urlparse.quote(str(version_patch_id)))
        # meta = self._version_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        return VersionPatch(
            self, self._format_version_meta_for_user(body['version_patch']))
コード例 #35
0
    def get(self, version_patch, **kwargs):
        """Get the metadata for a specific version.

        :param version: image object or id to look up
        :rtype: :class:`version`
        """
        version_patch_id = base.getid(version_patch)
        resp, body = self.client.get('/v1/version_patchs/%s'
                                     % urlparse.quote(str(version_patch_id)))
        # meta = self._version_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        return VersionPatch(self, self._format_version_meta_for_user(
            body['version_patch']))
コード例 #36
0
ファイル: roles.py プロジェクト: zhouronghua/daisycloud-core
    def get(self, role, **kwargs):
        """Get the metadata for a specific role.

        :param role: host object or id to look up
        :rtype: :class:`Role`
        """
        role_id = base.getid(role)
        resp, body = self.client.get('/v1/roles/%s' %
                                     urlparse.quote(str(role_id)))
        # meta = self._role_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        # return Host(self, meta)
        return Role(self, self._format_role_meta_for_user(body['role']))
コード例 #37
0
ファイル: hosts.py プロジェクト: SunJing22/daisycloud-core
    def get(self, host, **kwargs):
        """Get the metadata for a specific host.

        :param host: image object or id to look up
        :rtype: :class:`Host`
        """
        host_id = base.getid(host)
        resp, body = self.client.get('/v1/nodes/%s'
                                      % urlparse.quote(str(host_id)))
        #meta = self._host_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        #return Host(self, meta)
        return Host(self, self._format_host_meta_for_user(body['host']))
コード例 #38
0
    def disk_array_update(self, cluster, **kwargs):
        UPDATE_DISK_ARRAY_PARAMS = []
        fields = {}
        for field in kwargs:
            if field in UPDATE_DISK_ARRAY_PARAMS:
                fields[field] = kwargs[field]
            else:
                msg = 'disk_array_update() \
                      got an unexpected keyword argument \'%s\''

                raise TypeError(msg % field)

        url = '/v1/disk_array/%s' % base.getid(cluster)
        resp, body = self.client.post(url, headers=None, data=fields)
        return Install(self, self._format_install_meta_for_user(body))
コード例 #39
0
    def get(self, cluster, **kwargs):
        """Get the metadata for a specific cluster.

        :param cluster: host object or id to look up
        :rtype: :class:`Cluster`
        """
        cluster_id = base.getid(cluster)
        resp, body = self.client.get('/v1/clusters/%s'
                                     % urlparse.quote(str(cluster_id)))
        # meta = self._cluster_meta_from_headers(resp.headers)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))
        # return Host(self, meta)
        return Cluster(self, self._format_cluster_meta_for_user(
            body['cluster']))
コード例 #40
0
    def cinder_volume_detail(self, id, **kwargs):
        """Get the metadata for a specific cinder_volume.

        :param cinder_volume: host object or id to look up
        :rtype: :class:`cinder_volume`
        """

        cinder_volume_id = base.getid(id)
        resp, body = self.client.get('/v1/cinder_volume/%s'
                                      % urlparse.quote(str(cinder_volume_id)))

        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Disk_array(self, self._format_service_disk_meta_for_user(body['disk_meta']))
コード例 #41
0
    def cinder_volume_detail(self, id, **kwargs):
        """Get the metadata for a specific cinder_volume.

        :param cinder_volume: host object or id to look up
        :rtype: :class:`cinder_volume`
        """

        cinder_volume_id = base.getid(id)
        resp, body = self.client.get('/v1/cinder_volume/%s' %
                                     urlparse.quote(str(cinder_volume_id)))

        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Disk_array(
            self, self._format_service_disk_meta_for_user(body['disk_meta']))
コード例 #42
0
    def update(self, network, **kwargs):
        """Update an network

        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]

        url = '/v1/networks/%s' % base.getid(network)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Network(
            self, self._format_network_meta_for_user(body['network_meta']))
コード例 #43
0
ファイル: networks.py プロジェクト: openstack/daisycloud-core
    def update(self, network, **kwargs):
        """Update an network

        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]

        url = '/v1/networks/%s' % base.getid(network)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Network(self, self._format_network_meta_for_user(body[
            'network_meta']))
コード例 #44
0
    def data(self, image, do_checksum=True, **kwargs):
        """Get the raw data for a specific image.

        :param image: image object or id to look up
        :param do_checksum: Enable/disable checksum validation
        :rtype: iterable containing image data
        """
        image_id = base.getid(image)
        resp, body = self.client.get('/v1/images/%s' %
                                     urlparse.quote(str(image_id)))
        content_length = int(resp.headers.get('content-length', 0))
        checksum = resp.headers.get('x-image-meta-checksum', None)
        if do_checksum and checksum is not None:
            body = utils.integrity_iter(body, checksum)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return utils.IterableWithLength(body, content_length)
コード例 #45
0
    def data(self, image, do_checksum=True, **kwargs):
        """Get the raw data for a specific image.

        :param image: image object or id to look up
        :param do_checksum: Enable/disable checksum validation
        :rtype: iterable containing image data
        """
        image_id = base.getid(image)
        resp, body = self.client.get('/v1/images/%s'
                                     % urlparse.quote(str(image_id)))
        content_length = int(resp.headers.get('content-length', 0))
        checksum = resp.headers.get('x-image-meta-checksum', None)
        if do_checksum and checksum is not None:
            body = utils.integrity_iter(body, checksum)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return utils.IterableWithLength(body, content_length)
コード例 #46
0
    def update(self, version_patch, **kwargs):
        """Update an version_patch

        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in CREATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue

        url = '/v1/version_patchs/%s' % base.getid(version_patch)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return VersionPatch(self, self._format_version_meta_for_user(
            body['version_patch']))
コード例 #47
0
    def update(self, version, **kwargs):
        """Update an version

        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in CREATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue

        url = '/v1/versions/%s' % base.getid(version)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Version(
            self, self._format_version_meta_for_user(body['version_meta']))
コード例 #48
0
ファイル: images.py プロジェクト: openstack/daisycloud-core
    def update(self, image, **kwargs):
        """Update an image

        TODO(bcwaldon): document accepted params
        """
        image_data = kwargs.pop('data', None)
        if image_data is not None:
            image_size = utils.get_file_size(image_data)
            if image_size is not None:
                kwargs.setdefault('size', image_size)

        hdrs = {}
        purge_props = 'false'
        purge_props_bool = kwargs.pop('purge_props', None)
        if purge_props_bool:
            purge_props = 'true'

        hdrs['x-glance-registry-purge-props'] = purge_props
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            else:
                msg = 'update() got an unexpected keyword argument \'%s\''
                raise TypeError(msg % field)

        copy_from = fields.pop('copy_from', None)
        hdrs.update(self._image_meta_to_headers(fields))
        if copy_from is not None:
            hdrs['x-glance-api-copy-from'] = copy_from

        url = '/v1/images/%s' % base.getid(image)
        resp, body = self.client.put(url, headers=None, data=image_data)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Image(self, self._format_image_meta_for_user(body['image']))
コード例 #49
0
ファイル: images.py プロジェクト: zhouronghua/daisycloud-core
    def update(self, image, **kwargs):
        """Update an image

        TODO(bcwaldon): document accepted params
        """
        image_data = kwargs.pop('data', None)
        if image_data is not None:
            image_size = utils.get_file_size(image_data)
            if image_size is not None:
                kwargs.setdefault('size', image_size)

        hdrs = {}
        purge_props = 'false'
        purge_props_bool = kwargs.pop('purge_props', None)
        if purge_props_bool:
            purge_props = 'true'

        hdrs['x-glance-registry-purge-props'] = purge_props
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            else:
                msg = 'update() got an unexpected keyword argument \'%s\''
                raise TypeError(msg % field)

        copy_from = fields.pop('copy_from', None)
        hdrs.update(self._image_meta_to_headers(fields))
        if copy_from is not None:
            hdrs['x-glance-api-copy-from'] = copy_from

        url = '/v1/images/%s' % base.getid(image)
        resp, body = self.client.put(url, headers=None, data=image_data)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Image(self, self._format_image_meta_for_user(body['image']))
コード例 #50
0
ファイル: hosts.py プロジェクト: zhouronghua/daisycloud-core
    def update_discover_host(self, host, **kwargs):
        """Add a discover host

        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            # else:
            #    msg = 'update() got an unexpected keyword argument \'%s\''
            #    raise TypeError(msg % field)

        url = '/v1/discover/nodes/%s' % base.getid(host)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Host(self, self._format_host_meta_for_user(body['host']))
コード例 #51
0
    def service_disk_update(self, id, **kwargs):
        """Update an service_disk
        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in SERVICE_DISK_UPDATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            else:
                msg = 'update() got an unexpected keyword argument \'%s\''
                raise TypeError(msg % field)

        url = '/v1/service_disk/%s' % base.getid(id)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Disk_array(self, self._format_service_disk_meta_for_user(
            body['disk_meta']))
コード例 #52
0
ファイル: roles.py プロジェクト: zhouronghua/daisycloud-core
    def update(self, role, **kwargs):
        """Update an role

        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            else:
                msg = 'update() got an unexpected keyword argument \'%s\''
                raise TypeError(msg % field)

        url = '/v1/roles/%s' % base.getid(role)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Role(self, self._format_role_meta_for_user(body['role_meta']))
コード例 #53
0
ファイル: clusters.py プロジェクト: openstack/daisycloud-core
    def update(self, cluster, **kwargs):
        """Update an cluster

        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in UPDATE_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            # else:
            #    msg = 'update() got an unexpected keyword argument \'%s\''
            #    raise TypeError(msg % field)

        url = '/v1/clusters/%s' % base.getid(cluster)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Cluster(self, self._format_cluster_meta_for_user(
            body['cluster']))
コード例 #54
0
    def cinder_volume_update(self, id, **kwargs):
        """Update an cinder_volume

        TODO(bcwaldon): document accepted params
        """
        fields = {}
        for field in kwargs:
            if field in CREATE_CINDER_BACKEND_INTER_PARAMS:
                fields[field] = kwargs[field]
            elif field == 'return_req_id':
                continue
            else:
                msg = 'update() got an unexpected keyword argument \'%s\''
                raise TypeError(msg % field)

        url = '/v1/cinder_volume/%s' % base.getid(id)
        resp, body = self.client.put(url, headers=None, data=fields)
        return_request_id = kwargs.get('return_req_id', None)
        if return_request_id is not None:
            return_request_id.append(resp.headers.get(OS_REQ_ID_HDR, None))

        return Disk_array(
            self, self._format_service_disk_meta_for_user(body['disk_meta']))
コード例 #55
0
 def get(self, template_id):
     """get template information by id."""
     url = "/v1/template/%s" % base.getid(template_id)
     resp, body = self.client.get(url)
     return Template(self,
                     self._format_template_meta_for_user(body['template']))
コード例 #56
0
 def create(self, image, member_id, can_share=False):
     """Creates an image."""
     url = '/v1/images/%s/members/%s' % (base.getid(image), member_id)
     body = {'member': {'can_share': can_share}}
     self.client.put(url, data=body)
コード例 #57
0
 def create(self, image, member_id, can_share=False):
     """Creates an image."""
     url = '/v1/images/%s/members/%s' % (base.getid(image), member_id)
     body = {'member': {'can_share': can_share}}
     self.client.put(url, data=body)
コード例 #58
0
ファイル: template.py プロジェクト: openstack/daisycloud-core
 def delete(self, template_id):
     """Delete a cluster template."""
     url = "/v1/template/%s" % base.getid(template_id)
     resp, body = self.client.delete(url)
コード例 #59
0
 def delete(self, template_id):
     """Delete a cluster template."""
     url = "/v1/template/%s" % base.getid(template_id)
     resp, body = self.client.delete(url)