summaryrefslogtreecommitdiffstats
path: root/django/engagementmanager/tests/vvpEntitiesCreator.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/engagementmanager/tests/vvpEntitiesCreator.py')
-rwxr-xr-xdjango/engagementmanager/tests/vvpEntitiesCreator.py290
1 files changed, 290 insertions, 0 deletions
diff --git a/django/engagementmanager/tests/vvpEntitiesCreator.py b/django/engagementmanager/tests/vvpEntitiesCreator.py
new file mode 100755
index 0000000..0ba619e
--- /dev/null
+++ b/django/engagementmanager/tests/vvpEntitiesCreator.py
@@ -0,0 +1,290 @@
+#
+# ============LICENSE_START==========================================
+# org.onap.vvp/engagementmgr
+# ===================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the “License”);
+# you may not use this software 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.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# 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.
+#
+# ============LICENSE_END============================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+from uuid import uuid4
+from django.utils import timezone
+import string
+import random
+from engagementmanager.service.logging_service import LoggingServiceFactory
+from engagementmanager.utils.authentication import JWTAuthentication
+from engagementmanager.models import Vendor, IceUserProfile, Role, Engagement, DeploymentTarget, ApplicationServiceInfrastructure, VF,\
+ NextStep, ChecklistTemplate, DeploymentTargetSite, VFC, Checklist, ChecklistSection, ChecklistLineItem,\
+ CustomUser
+from engagementmanager.utils.constants import Constants
+
+logger = LoggingServiceFactory.get_logger()
+
+
+class VvpEntitiesCreator:
+
+ def __init__(self):
+ pass
+
+ def createUserTemplate(self, company, email, full_name, role, is_service_provider_contact, ssh_key=None, ):
+ return {
+ 'company': company,
+ 'email': email,
+ 'phone_number': '555019900',
+ 'full_name': full_name,
+ 'role': role,
+ 'create_time': timezone.now(),
+ 'is_service_provider_contact': is_service_provider_contact,
+ 'ssh_public_key': ssh_key,
+ }
+
+ def createEngagementTemplate(self, engagement_type, engagement_team):
+ return {
+ # 'engagement_type' : engagement_type,
+ # 'members' : engagement_team,
+ # 'start_date' : timezone.now(),
+ 'progress': 0
+ }
+
+ def createVendor(self, vendorName):
+ ven = Vendor.objects.filter(name=vendorName)
+ if (not ven.exists()):
+ vendor = Vendor.objects.create(name=vendorName, public=True)
+ else:
+ vendor = Vendor.objects.get(name=vendorName)
+ return vendor.uuid, vendor
+
+ def createDeploymentTarget(self, name, version):
+ deployment = DeploymentTarget.objects.create(
+ name=name, version=version)
+ return deployment
+
+ def createDeploymentTargetSite(self, name):
+ dtsite = DeploymentTargetSite.objects.create(name=name)
+ return dtsite
+
+ def createApplicationServiceInfrastructure(self, name):
+ asinfrastructure = ApplicationServiceInfrastructure.objects.create(
+ name=name)
+ return asinfrastructure
+
+ def getOrCreateIfNotExist(self, entity, getCriteria, creationFields):
+ obj = None
+ try:
+ logger.debug("about to look for object: " + str(getCriteria))
+ obj = entity.objects.get(**getCriteria)
+ logger.debug('found object')
+ except entity.DoesNotExist:
+ logger.error('not found. Trying to create...')
+ obj = entity.objects.create(**creationFields)
+ return obj
+
+ def createAndGetDefaultRoles(self):
+ admin = self.getOrCreateIfNotExist(
+ Role, {'name': 'admin'}, {'name': 'admin'})
+ el = self.getOrCreateIfNotExist(Role, {'name': 'el'}, {'name': 'el'})
+ standard_user = self.getOrCreateIfNotExist(Role, {'name': 'standard_user'}, {
+ 'name': 'standard_user'})
+ return admin, el, standard_user
+
+ def createUser(self, company, email, phone, fullName, role, is_active=False, ssh_key=None, activation_token_create_time=timezone.now()):
+ try:
+ user, is_user_created = CustomUser.objects.get_or_create(username=email, defaults={'email': email, 'password': '12345678', 'activation_token': uuid4(
+ ), 'activation_token_create_time': timezone.now(), 'last_login': timezone.now(), 'is_active': is_active})
+ user_profile, is_profile_created = IceUserProfile.objects.update_or_create(
+ email=email, defaults=self.createUserTemplate(company, email, fullName, role, False, ssh_key))
+ except Exception as e:
+ logger.error("VvpEntitiesCreator - createUser - error:")
+ logger.error(e)
+ return None
+ return user_profile
+
+ def createEngagement(self, uuid, engagement_type, engagement_team):
+ return self.getOrCreateIfNotExist(Engagement, {'uuid': uuid}, self.createEngagementTemplate(engagement_type, engagement_team))
+
+ def createVF(self, name, engagement, deployment, is_service_provider_internal, vendor, **kwargs):
+ vf = VF.objects.create(name=name, engagement=engagement,
+ deployment_target=deployment,
+ is_service_provider_internal=is_service_provider_internal,
+ vendor=vendor,
+ target_lab_entry_date=timezone.now(), **kwargs)
+ return vf
+
+ def createNextStep(self, uuid, createFields):
+ return self.getOrCreateIfNotExist(NextStep, {'uuid': uuid}, createFields)
+
+ def createDefaultCheckListTemplate(self):
+ checklist_templates = [
+ {
+ 'name': 'Heat',
+ 'category': 'first category',
+ 'version': 1,
+ 'sections': [
+ {
+ 'name': 'Parameter Specification',
+ 'weight': 1,
+ 'description': 'section description',
+ 'validation_instructions': 'valid instructions',
+ 'lineitems': [
+ {
+ 'name': 'Parameters',
+ 'weight': 1,
+ 'description': 'Numeric parameters should include range and/or allowed values.',
+ 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'line_type': 'auto',
+ },
+ {
+ 'name': 'String parameters',
+ 'weight': 1,
+ 'description': 'Numeric parameters should include range and/or allowed values.',
+ 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'line_type': 'auto',
+ },
+ {
+ 'name': 'Numeric parameters',
+ 'weight': 1,
+ 'description': 'Numeric parameters should include range and/or allowed values.',
+ 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'line_type': 'auto',
+ }
+ ]
+ },
+ {
+ 'name': 'External References',
+ 'weight': 1,
+ 'description': 'section descripyion',
+ 'validation_instructions': 'valid instructions',
+ 'lineitems': [
+ {
+ 'name': 'Normal references',
+ 'weight': 1,
+ 'description': 'Numeric parameters should include range and/or allowed values.',
+ 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'line_type': 'manual',
+ },
+ {
+ 'name': 'VF image',
+ 'weight': 1,
+ 'description': 'Numeric parameters should include range and/or allowed values.',
+ 'validation_instructions': 'Here are some useful tips for how to validate this item in the most awesome way:<br><br><ul><li>Here is my awesome tip 1</li><li>Here is my awesome tip 2</li><li>Here is my awesome tip 3</li></ul>',
+ 'line_type': 'auto',
+ }
+ ]
+
+ }
+ ]
+ }
+ ]
+
+ for template in checklist_templates:
+ created_template = ChecklistTemplate.objects.get_or_create(name=template['name'], defaults={
+ 'category': template['category'],
+ 'version': template['version'],
+ 'create_time': timezone.now()
+ })
+ created_template = ChecklistTemplate.objects.get(
+ name=template['name'])
+ for section in template['sections']:
+ created_section = ChecklistSection.objects.get_or_create(
+ name=section['name'],
+ template_id=created_template.uuid, defaults={
+ 'weight': section['weight'],
+ 'description': section['description'],
+ 'validation_instructions': section['validation_instructions']
+
+ })
+ created_section = ChecklistSection.objects.get(
+ name=section['name'], template_id=created_template.uuid)
+ for lineitem in section['lineitems']:
+ created_lineitem = ChecklistLineItem.objects.get_or_create(
+ name=lineitem['name'],
+ template_id=created_template.uuid,
+ defaults={
+ 'weight': lineitem['weight'],
+ 'description': lineitem['description'],
+ 'validation_instructions': lineitem['validation_instructions'],
+ 'line_type': lineitem['line_type'],
+ 'section_id': created_section.uuid,
+ })
+
+ self.defaultCheklistTemplate = ChecklistTemplate.objects.get(
+ name="Heat")
+
+ return self.defaultCheklistTemplate
+
+ def createCheckList(self, name, state, validation_cycle, associated_files, engagement, template, creator, owner):
+ if (associated_files == None):
+ associated_files = '{}'
+ return self.getOrCreateIfNotExist(Checklist, {'name': name}, {
+ 'state': state,
+ 'name': name,
+ 'validation_cycle': 1,
+ 'associated_files': associated_files,
+ 'engagement': engagement,
+ 'template': template,
+ 'creator': creator,
+ 'owner': owner
+ })
+
+ def createVFC(self, name, ext_ref, company, vf, creator):
+ obj = None
+ try:
+ obj = VFC.objects.get(name=name)
+ except VFC.DoesNotExist:
+ return VFC.objects.create(name=name, external_ref_id=ext_ref, company=company, creator=creator, vf=vf)
+ return obj
+
+ def randomGenerator(self, typeOfValue, numberOfDigits=0):
+ lettersAndNumbers = string.ascii_letters + string.digits
+ if typeOfValue == 'email':
+ myEmail = ''.join(random.choice(lettersAndNumbers) for _ in range(4)) + "@" + \
+ ''.join(random.choice(string.ascii_uppercase) for _ in range(4)) + ".com"
+ return myEmail
+ elif typeOfValue == 'main-vendor-email':
+ myEmail = ''.join(random.choice(lettersAndNumbers) for _ in range(4)) + "@" + \
+ Constants.service_provider_mail_domain[0]
+ return myEmail
+ elif typeOfValue == 'randomNumber':
+ randomNumber = ''.join("%s" % random.randint(0, 9) for _ in range(0, (numberOfDigits + 1)))
+ return randomNumber
+ elif typeOfValue == 'randomString':
+ randomString = "".join(random.sample(lettersAndNumbers, 5))
+ return randomString
+ else:
+ logger.debug("Error on randonGenerator - given bad value.")
+ exit
+
+ def loginAndCreateSessionToken(self, user):
+ jwt_service = JWTAuthentication()
+ token = jwt_service.create_token(user.user)
+ logger.debug("token " + token)
+ return token