Esempio n. 1
0
    def update_enabled(self, user, enabled):
        """
        Update enabled-ness
        """
        params = {"user": {"id": base.getid(user), "enabled": enabled}}

        self._update("/users/%s/OS-KSADM/enabled" % base.getid(user), params,
                     "user")
Esempio n. 2
0
    def update_password(self, user, password):
        """
        Update password
        """
        params = {"user": {"id": base.getid(user), "password": password}}

        return self._update("/users/%s/OS-KSADM/password" % base.getid(user),
                            params, "user")
Esempio n. 3
0
 def roles_for_user(self, user, tenant=None):
     user_id = base.getid(user)
     if tenant:
         tenant_id = base.getid(tenant)
         route = "/tenants/%s/users/%s/roles"
         return self._list(route % (tenant_id, user_id), "roles")
     else:
         return self._list("/users/%s/roles" % user_id, "roles")
Esempio n. 4
0
    def update_enabled(self, user, enabled):
        """
        Update enabled-ness
        """
        params = {"user": {"id": base.getid(user),
                           "enabled": enabled}}

        self._update("/users/%s/OS-KSADM/enabled" % base.getid(user), params,
                     "user")
Esempio n. 5
0
    def update_password(self, user, password):
        """
        Update password
        """
        params = {"user": {"id": base.getid(user),
                           "password": password}}

        return self._update("/users/%s/OS-KSADM/password" % base.getid(user),
                            params, "user")
Esempio n. 6
0
    def update_tenant(self, user, tenant):
        """
        Update default tenant.
        """
        params = {"user": {"id": base.getid(user),
                           "tenantId": base.getid(tenant)}}

        # FIXME(ja): seems like a bad url - default tenant is an attribute
        #            not a subresource!???
        return self._update("/users/%s/OS-KSADM/tenant" % base.getid(user),
                            params, "user")
Esempio n. 7
0
    def update(self, user, **kwargs):
        """
        Update user data.

        Supported arguments include ``name``, ``email``, and ``enabled``.
        """
        # FIXME(gabriel): "tenantId" seems to be accepted by the API but
        #                 fails to actually update the default tenant.
        params = {"user": kwargs}
        params['user']['id'] = base.getid(user)
        url = "/users/%s" % base.getid(user)
        return self._update(url, params, "user")
Esempio n. 8
0
    def update(self, user, **kwargs):
        """
        Update user data.

        Supported arguments include ``name``, ``email``, and ``enabled``.
        """
        # FIXME(gabriel): "tenantId" seems to be accepted by the API but
        #                 fails to actually update the default tenant.
        params = {"user": kwargs}
        params['user']['id'] = base.getid(user)
        url = "/users/%s" % base.getid(user)
        return self._update(url, params, "user")
Esempio n. 9
0
    def update_tenant(self, user, tenant):
        """
        Update default tenant.
        """
        params = {
            "user": {
                "id": base.getid(user),
                "tenantId": base.getid(tenant)
            }
        }

        # FIXME(ja): seems like a bad url - default tenant is an attribute
        #            not a subresource!???
        return self._update("/users/%s/OS-KSADM/tenant" % base.getid(user),
                            params, "user")
Esempio n. 10
0
    def add_user_role(self, user, role, tenant=None):
        """ Adds a role to a user.

        If tenant is specified, the role is added just for that tenant,
        otherwise the role is added globally.
        """
        user_id = base.getid(user)
        role_id = base.getid(role)
        if tenant:
            route = "/tenants/%s/users/%s/roles/OS-KSADM/%s"
            params = (base.getid(tenant), user_id, role_id)
            return self._update(route % params, None, "role")
        else:
            route = "/users/%s/roles/OS-KSADM/%s"
            return self._update(route % (user_id, role_id), None, "roles")
Esempio n. 11
0
    def remove_user_role(self, user, role, tenant=None):
        """ Removes a role from a user.

        If tenant is specified, the role is removed just for that tenant,
        otherwise the role is removed from the user's global roles.
        """
        user_id = base.getid(user)
        role_id = base.getid(role)
        if tenant:
            route = "/tenants/%s/users/%s/roles/OS-KSADM/%s"
            params = (base.getid(tenant), user_id, role_id)
            return self._delete(route % params)
        else:
            route = "/users/%s/roles/OS-KSADM/%s"
            return self._delete(route % (user_id, role_id))
Esempio n. 12
0
    def share_ip(self, server, ipgroup, address, configure=True):
        """
        Share an IP address from the given IP group onto a server.

        :param server: The :class:`Server` (or its ID) to share onto.
        :param ipgroup: The :class:`IPGroup` that the given address belongs to.
        :param address: The IP address to share.
        :param configure: If ``True``, the server will be automatically
                         configured to use this IP. I don't know why you'd
                         want this to be ``False``.
        """
        server = base.getid(server)
        ipgroup = base.getid(ipgroup)
        body = {'shareIp': {'sharedIpGroupId': ipgroup,
                            'configureServer': configure}}
        self._update("/servers/%s/ips/public/%s" % (server, address), body)
Esempio n. 13
0
    def get(self, flavor):
        """
        Get a specific flavor.

        :param flavor: The ID of the :class:`Flavor` to get.
        :rtype: :class:`Flavor`
        """
        return self._get("/flavors/%s" % base.getid(flavor), "flavor")
Esempio n. 14
0
 def get(self, user_id, access):
     """
     Get the access/secret pair for a given access key
     :rtype: object of type :class:`EC2`
     """
     return self._get(
         "/users/%s/credentials/OS-EC2/%s" % (user_id, base.getid(access)),
         "credential")
Esempio n. 15
0
    def get(self, server):
        """
        Get a server.

        :param server: ID of the :class:`Server` to get.
        :rtype: :class:`Server`
        """
        return self._get("/servers/%s" % base.getid(server), "server")
Esempio n. 16
0
    def get(self, image):
        """
        Get an image.

        :param image: The ID of the image to get.
        :rtype: :class:`Image`
        """
        return self._get("/images/%s" % base.getid(image), "image")
Esempio n. 17
0
    def unshare_ip(self, server, address):
        """
        Stop sharing the given address.

        :param server: The :class:`Server` (or its ID) to share onto.
        :param address: The IP address to stop sharing.
        """
        server = base.getid(server)
        self._delete("/servers/%s/ips/public/%s" % (server, address))
Esempio n. 18
0
    def delete(self, image):
        """
        Delete an image.

        It should go without saying that you can't delete an image
        that you didn't create.

        :param image: The :class:`Image` (or its ID) to delete.
        """
        self._delete("/images/%s" % base.getid(image))
Esempio n. 19
0
    def update_name(self, server, name=None):
        """
        Update the name for a server.

        :param server: The :class:`Server` (or its ID) to update.
        :param name: The new server name
        """

        if name is None:
            return
        body = {"server": {}}
        if name:
            body["server"]["name"] = name
        self._update("/servers/%s" % base.getid(server), body)
Esempio n. 20
0
    def create(self, name, image, flavor, ipgroup=None, meta=None, files=None):
        """
        Create (boot) a new server.

        :param name: Something to name the server.
        :param image: The :class:`Image` to boot with.
        :param flavor: The :class:`Flavor` to boot onto.
        :param ipgroup: An initial :class:`IPGroup` for this server.
        :param meta: A dict of arbitrary key/value metadata to store for this
                     server. A maximum of five entries is allowed, and both
                     keys and values must be 255 characters or less.
        :param files: A dict of files to overrwrite on the server upon boot.
                      Keys are file names (i.e. ``/etc/passwd``) and values
                      are the file contents (either as a string or as a
                      file-like object). A maximum of five entries is allowed,
                      and each file must be 10k or less.
        """
        body = {"server": {
            "name": name,
            "imageRef": base.get_href(image),
            "flavorRef": base.get_href(flavor),
        }}
        if ipgroup:
            body["server"]["sharedIpGroupId"] = base.getid(ipgroup)
        if meta:
            body["server"]["metadata"] = meta

        # Files are a slight bit tricky. They're passed in a "personality"
        # list to the POST. Each item is a dict giving a file name and the
        # base64-encoded contents of the file. We want to allow passing
        # either an open file *or* some contents as files here.
        if files:
            personality = body['server']['personality'] = []
            for filepath, file_or_string in files.items():
                if hasattr(file_or_string, 'read'):
                    data = file_or_string.read()
                else:
                    data = file_or_string
                personality.append({
                    'path': filepath,
                    'contents': data.encode('base64'),
                })
        return self._create("/servers", body, "server")
Esempio n. 21
0
 def delete(self, user):
     """
     Delete a user.
     """
     return self._delete("/users/%s" % base.getid(user))
Esempio n. 22
0
 def list_roles(self, tenant=None):
     return self.manager.list_roles(self.id, base.getid(tenant))
Esempio n. 23
0
 def get(self, user):
     return self._get("/users/%s" % base.getid(user), "user")
 def get(self, result):
     return self._get("/benchmark-result/%s/?format=json" % \
                     base.getid(result))
Esempio n. 25
0
 def delete(self, user):
     """
     Delete a user.
     """
     return self._delete("/users/%s" % base.getid(user))
Esempio n. 26
0
 def delete(self, role):
     """
     Delete a role.
     """
     return self._delete("/OS-KSADM/roles/%s" % base.getid(role))
Esempio n. 27
0
 def remove_user(self, user, role):
     return self.manager.api.roles.remove_user_role(base.getid(user),
                                                    base.getid(role),
                                                    self.id)
Esempio n. 28
0
 def add_user(self, tenant, user, role):
     """ Add a user to a tenant with the given role. """
     return self.api.roles.add_user_role(base.getid(user),
                                         base.getid(role),
                                         base.getid(tenant))
Esempio n. 29
0
 def delete(self, tenant):
     """
     Delete a tenant.
     """
     return self._delete("/tenants/%s" % (base.getid(tenant)))
Esempio n. 30
0
 def _action(self, action, server, info=None):
     """
     Perform a server "action" -- reboot/rebuild/resize/etc.
     """
     self.api.client.post('/servers/%s/action' % base.getid(server),
                          body={action: info})
Esempio n. 31
0
 def delete(self, server):
     """
     Delete (i.e. shut down and delete the image) this server.
     """
     self._delete("/servers/%s" % base.getid(server))
Esempio n. 32
0
 def delete(self, token):
     return self._delete("/tokens/%s" % base.getid(token))
Esempio n. 33
0
 def list_users(self, tenant):
     """ List users for a tenant. """
     return self.api.users.list(base.getid(tenant))
Esempio n. 34
0
 def endpoints(self, token):
     return self._get("/tokens/%s/endpoints" % base.getid(token), "token")
Esempio n. 35
0
 def remove_user(self, tenant, user, role):
     """ Remove the specified role from the user on the tenant. """
     return self.api.roles.remove_user_role(base.getid(user),
                                            base.getid(role),
                                            base.getid(tenant))
Esempio n. 36
0
 def list_roles(self, user, tenant=None):
     return self.api.roles.roles_for_user(base.getid(user),
                                          base.getid(tenant))
Esempio n. 37
0
 def get(self, role):
     return self._get("/OS-KSADM/roles/%s" % base.getid(role), "role")
Esempio n. 38
0
 def list_roles(self, tenant=None):
     return self.manager.list_roles(self.id, base.getid(tenant))
Esempio n. 39
0
 def list_roles(self, user, tenant=None):
     return self.api.roles.roles_for_user(base.getid(user),
                                          base.getid(tenant))
Esempio n. 40
0
 def get(self, user):
     return self._get("/users/%s" % base.getid(user), "user")
Esempio n. 41
0
 def get(self, result):
     return self._get("/result/%s/?format=json" % base.getid(result))
Esempio n. 42
0
 def endpoints(self, token):
     return self._get("/tokens/%s/endpoints" % base.getid(token), "token")
Esempio n. 43
0
 def delete(self, user_id, access):
     """
     Delete an access/secret pair for a user
     """
     return self._delete("/users/%s/credentials/OS-EC2/%s" %
                         (user_id, base.getid(access)))
Esempio n. 44
0
 def delete(self, token):
     return self._delete("/tokens/%s" % base.getid(token))