def _ConstructWindowsKeyEntry(self, user, modulus, exponent, email):
        """Return a JSON formatted entry for 'windows-keys'."""
        expire_str = time_util.CalculateExpiration(RSA_KEY_EXPIRATION_TIME_SEC)
        windows_key_data = {
            'userName': user,
            'modulus': core_encoding.Decode(modulus),
            'exponent': core_encoding.Decode(exponent),
            'email': email,
            'expireOn': expire_str
        }

        windows_key_entry = json.dumps(windows_key_data, sort_keys=True)
        return windows_key_entry
Esempio n. 2
0
    def _ConstructDiagnosticsKeyEntry(self, signed_url, trace):
        """Generates a JSON String that is a command for the VM to extract the logs.

    Args:
      signed_url: The url where the logs can be uploaded.
      trace: Whether or not to take a 10 minute trace on the VM.
    Returns:
      A JSON String that can be written to the metadata server to trigger the
      extraction of logs.
    """
        expire_str = time_util.CalculateExpiration(300)
        diagnostics_key_data = {
            'signedUrl': signed_url,
            'trace': trace,
            'expireOn': expire_str
        }
        return json.dumps(diagnostics_key_data, sort_keys=True)
Esempio n. 3
0
    def Run(self, args):
        compute_holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        holder = base_classes.ComputeUserAccountsApiHolder(self.ReleaseTrack())
        client = holder.client

        name = args.name
        if not name:
            name = gaia.GetDefaultAccountName(client.http)

        user_ref = holder.resources.Parse(
            name,
            params={'project': properties.VALUES.core.project.GetOrFail},
            collection='clouduseraccounts.users')

        valid_key_types = [
            'ssh-rsa', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ssh-ed25519'
        ]

        public_keys = []
        for key_file in args.public_key_files:
            key_text = file_utils.ReadFile(key_file, 'public-key')

            if key_text.split(' ', 1)[0] not in valid_key_types:
                raise exceptions.ToolException(
                    'You must specify a public key file that contains a key of a '
                    'supported form. Supported forms are {0}.'.format(
                        ', '.join(valid_key_types)))
            public_keys.append(key_text)

        formatted_expiration = time_util.CalculateExpiration(args.expire)

        requests = []
        for key in public_keys:
            public_key_message = client.MESSAGES_MODULE.PublicKey(
                description=args.description,
                expirationTimestamp=formatted_expiration,
                key=key)

            request = (client.MESSAGES_MODULE.
                       ClouduseraccountsUsersAddPublicKeyRequest(
                           project=user_ref.project,
                           publicKey=public_key_message,
                           user=user_ref.Name()))
            requests.append((client.users, 'AddPublicKey', request))

        return compute_holder.client.MakeRequests(requests)
Esempio n. 4
0
    def SetUp(self):
        self.queue_ref = resources.REGISTRY.Create(
            'cloudtasks.projects.locations.queues',
            locationsId='us-central1',
            projectsId=self.Project(),
            queuesId='my-queue')
        self.queue_name = self.queue_ref.RelativeName()
        self.task_ref = resources.REGISTRY.Create(
            'cloudtasks.projects.locations.queues.tasks',
            locationsId='us-central1',
            projectsId=self.Project(),
            queuesId='my-queue',
            tasksId='my-task')
        self.task_name = self.task_ref.RelativeName()

        resolve_loc_mock = self.StartObjectPatch(app, 'ResolveAppLocation')
        resolve_loc_mock.return_value = (
            parsers.ParseLocation('us-central1').SelfLink())

        self.schedule_time = time_util.CalculateExpiration(20)
Esempio n. 5
0
    def CreateRequests(self, args):

        name = args.name
        if not name:
            name = gaia.GetDefaultAccountName(self.http)

        user_ref = self.clouduseraccounts_resources.Parse(
            name, collection='clouduseraccounts.users')

        valid_key_types = [
            'ssh-rsa', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ssh-ed25519'
        ]

        public_keys = []
        for key_file in args.public_key_files:
            key_text = file_utils.ReadFile(key_file, 'public-key')

            if key_text.split(' ', 1)[0] not in valid_key_types:
                raise exceptions.ToolException(
                    'You must specify a public key file that contains a key of a '
                    'supported form. Supported forms are {0}.'.format(
                        ', '.join(valid_key_types)))
            public_keys.append(key_text)

        formatted_expiration = time_util.CalculateExpiration(args.expire)

        requests = []
        for key in public_keys:
            public_key_message = self.messages.PublicKey(
                description=args.description,
                expirationTimestamp=formatted_expiration,
                key=key)

            request = self.messages.ClouduseraccountsUsersAddPublicKeyRequest(
                project=self.project,
                publicKey=public_key_message,
                user=user_ref.Name())
            requests.append(request)

        return requests
Esempio n. 6
0
 def SetUp(self):
     flags.AddCreateHttpTaskFlags(self.parser)
     self.schedule_time = time_util.CalculateExpiration(20)