示例#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
 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))
 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))
 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
    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
 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))
 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
    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
 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
 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
 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
    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
    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
    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
    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
    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
    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']))
 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
    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
    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
    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
    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
    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
    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
    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
    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
    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
    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)
 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
 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)