PyKMIP/kmip/core/factories/credentials.py
Peter Hamilton 86b23a9d53 Update the Credential objects
This change updates the implementation of the Credential objects.
The UsernamePassword and Device credentials are now first-class
objects and, along with the base Credential, have been restructured
to match the current struct style. Comprehensive unit test suites
for each class have been added. Additionally, the credential
factory code and its usage in the KMIPProxy class and associated
test suites have been updated to reflect this change.
2018-02-25 10:29:52 -05:00

66 lines
2.3 KiB
Python

# Copyright (c) 2014 The Johns Hopkins University/Applied Physics Laboratory
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from kmip.core import enums
from kmip.core import objects
class CredentialFactory(object):
def create_credential(self, credential_type, credential_value):
# Switch on the type of the credential
if credential_type is enums.CredentialType.USERNAME_AND_PASSWORD:
credential_value = self.create_username_password_credential(
credential_value
)
elif credential_type is enums.CredentialType.DEVICE:
credential_value = self.create_device_credential(credential_value)
else:
msg = 'Unrecognized credential type: {0}'
raise ValueError(msg.format(credential_type))
return objects.Credential(
credential_type=credential_type,
credential_value=credential_value
)
@staticmethod
def create_username_password_credential(value):
username = value.get('Username')
password = value.get('Password')
return objects.UsernamePasswordCredential(
username=username,
password=password
)
@staticmethod
def create_device_credential(value):
dsn = value.get('Device Serial Number')
password = value.get('Password')
dev_id = value.get('Device Identifier')
net_id = value.get('Network Identifier')
mach_id = value.get('Machine Identifier')
med_id = value.get('Media Identifier')
return objects.DeviceCredential(
device_serial_number=dsn,
password=password,
device_identifier=dev_id,
network_identifier=net_id,
machine_identifier=mach_id,
media_identifier=med_id
)