Skip to content

Commit 1e37e27

Browse files
committed
upgraded cloudshell-shell-core to 3.1
1 parent ed7654d commit 1e37e27

15 files changed

Lines changed: 103 additions & 224 deletions

File tree

package/cloudshell/cp/vcenter/commands/command_orchestrator.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@
1919
from cloudshell.cp.vcenter.commands.restore_snapshot import SnapshotRestoreCommand
2020
from cloudshell.cp.vcenter.commands.save_snapshot import SaveSnapshotCommand
2121
from cloudshell.cp.vcenter.commands.retrieve_snapshots import RetrieveSnapshotsCommand
22-
from cloudshell.cp.vcenter.common.cloud_shell.driver_helper import CloudshellDriverHelper
2322
from cloudshell.cp.vcenter.common.cloud_shell.resource_remover import CloudshellResourceRemover
2423
from cloudshell.cp.vcenter.common.model_factory import ResourceModelParser
2524
from cloudshell.cp.vcenter.common.utilites.command_result import set_command_result, get_result_from_command_output
2625
from cloudshell.cp.vcenter.common.utilites.common_name import generate_unique_name
27-
from cloudshell.cp.vcenter.common.utilites.common_utils import back_slash_to_front_converter
2826
from cloudshell.cp.vcenter.common.utilites.context_based_logger_factory import ContextBasedLoggerFactory
2927
from cloudshell.cp.vcenter.common.vcenter.ovf_service import OvfImageDeployerService
3028
from cloudshell.cp.vcenter.common.vcenter.task_waiter import SynchronousTaskWaiter
@@ -50,16 +48,13 @@
5048
from cloudshell.cp.vcenter.vm.vnic_to_network_mapper import VnicToNetworkMapper
5149
from cloudshell.cp.vcenter.models.DeployFromTemplateDetails import DeployFromTemplateDetails
5250

53-
5451
class CommandOrchestrator(object):
5552
def __init__(self):
5653
"""
5754
Initialize the driver session, this function is called everytime a new instance of the driver is created
5855
in here the driver is going to be bootstrapped
5956
60-
:param context: models.QualiDriverModels.InitCommandContext
6157
"""
62-
self.cs_helper = CloudshellDriverHelper()
6358
synchronous_task_waiter = SynchronousTaskWaiter()
6459
pv_service = pyVmomiService(connect=SmartConnect, disconnect=Disconnect, task_waiter=synchronous_task_waiter)
6560
self.resource_model_parser = ResourceModelParser()
@@ -74,7 +69,6 @@ def __init__(self):
7469
vm_deployer = VirtualMachineDeployer(pv_service=pv_service,
7570
name_generator=generate_unique_name,
7671
ovf_service=ovf_service,
77-
cs_helper=self.cs_helper,
7872
resource_model_parser=ResourceModelParser())
7973

8074
dv_port_group_creator = DvPortGroupCreator(pyvmomi_service=pv_service,
@@ -89,7 +83,6 @@ def __init__(self):
8983
virtual_machine_port_group_configurer)
9084
# Command Wrapper
9185
self.command_wrapper = CommandWrapper(pv_service=pv_service,
92-
cloud_shell_helper=self.cs_helper,
9386
resource_model_parser=self.resource_model_parser,
9487
context_based_logger_factory=ContextBasedLoggerFactory())
9588
# Deploy Command
@@ -261,6 +254,7 @@ def disconnect_all(self, context, ports):
261254
:param models.QualiDriverModels.ResourceRemoteCommandContext context: the context the command runs on
262255
:param list[string] ports: the ports of the connection between the remote resource and the local resource, NOT IN USE!!!
263256
"""
257+
264258
resource_details = self._parse_remote_model(context)
265259
# execute command
266260
res = self.command_wrapper.execute_command_with_connection(

package/cloudshell/cp/vcenter/common/cloud_shell/conn_details_retriever.py

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,24 @@
22

33

44
class ResourceConnectionDetailsRetriever:
5-
def __init__(self, qualipy_helpers):
6-
"""
7-
:param qualipy.scripts.cloudshell_scripts_helpers qualipy_helpers:
8-
:param cs_retriever_service:
9-
:return:
10-
"""
11-
self.qualipy_helpers = qualipy_helpers
125

13-
def connection_details(self):
14-
""" Retrieves connection details to vCenter from specified resource
6+
@staticmethod
7+
def get_connection_details(session, vcenter_resource_model, resource_context):
8+
"""
9+
Methods retrieves the connection details from the vcenter resource model attributes.
1510
16-
:param resource_name: Resource name to get connection details from
17-
:rtype VCenterConnectionDetails:
11+
:param CloudShellAPISession session:
12+
:param VMwarevCenterResourceModel vcenter_resource_model: Instance of VMwarevCenterResourceModel
13+
:param ResourceContextDetails resource_context: the context of the command
1814
"""
19-
# gets the vcenter resource context to connect. We assume this will only run on a cloud prodvider resource
20-
session = self.qualipy_helpers.get_api_session()
21-
resource_context = self.qualipy_helpers.get_resource_context_details()
15+
16+
session = session
17+
resource_context = resource_context
2218

2319
# get vCenter connection details from vCenter resource
24-
user = resource_context.attributes["User"]
25-
encrypted_pass = resource_context.attributes["Password"]
20+
user = vcenter_resource_model.user
2621
vcenter_url = resource_context.address
27-
password = session.DecryptPassword(encrypted_pass).Value
22+
password = session.DecryptPassword(vcenter_resource_model.password).Value
2823

2924
return VCenterConnectionDetails(vcenter_url, user, password)
25+

package/cloudshell/cp/vcenter/common/cloud_shell/driver_helper.py

Lines changed: 0 additions & 52 deletions
This file was deleted.

package/cloudshell/cp/vcenter/common/vcenter/model_auto_discovery.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
from cloudshell.cp.vcenter.models.QualiDriverModels import AutoLoadDetails, AutoLoadAttribute
88
from cloudshell.cp.vcenter.models.VCenterConnectionDetails import VCenterConnectionDetails
99

10-
from cloudshell.cp.vcenter.common.cloud_shell.driver_helper import CloudshellDriverHelper
10+
1111
from cloudshell.cp.vcenter.common.model_factory import ResourceModelParser
1212
from cloudshell.cp.vcenter.common.vcenter.vmomi_service import pyVmomiService
1313

1414
from cloudshell.cp.vcenter.common.vcenter.task_waiter import SynchronousTaskWaiter
15-
from cloudshell.cp.vcenter.common.utilites.io import get_path_and_name
15+
from cloudshell.shell.core.session.cloudshell_session import CloudShellSessionContext
1616

1717
DOMAIN = 'Global'
1818
ADDRESS = 'address'
@@ -35,7 +35,6 @@ class VCenterAutoModelDiscovery(object):
3535
def __init__(self):
3636
self.parser = ResourceModelParser()
3737
self.pv_service = pyVmomiService(SmartConnect, Disconnect, SynchronousTaskWaiter())
38-
self.cs_helper = CloudshellDriverHelper()
3938
self.context_based_logger_factory = ContextBasedLoggerFactory()
4039

4140
def _get_logger(self, context):
@@ -52,15 +51,15 @@ def validate_and_discover(self, context):
5251
"""
5352
logger = self._get_logger(context)
5453
logger.info('Autodiscovery started')
54+
si = None
55+
resource = None
5556

56-
session = self.cs_helper.get_session(context.connectivity.server_address,
57-
context.connectivity.admin_auth_token,
58-
DOMAIN)
59-
self._check_if_attribute_not_empty(context.resource, ADDRESS)
60-
resource = context.resource
61-
auto_attr = []
62-
si = self._check_if_vcenter_user_pass_valid(context, session, resource.attributes)
57+
with CloudShellSessionContext(context) as cloudshell_session:
58+
self._check_if_attribute_not_empty(context.resource, ADDRESS)
59+
resource = context.resource
60+
si = self._check_if_vcenter_user_pass_valid(context, cloudshell_session, resource.attributes)
6361

62+
auto_attr = []
6463
if not si:
6564
error_message = 'Could not connect to the vCenter: {0}, with given credentials'\
6665
.format(context.resource.address)

package/cloudshell/cp/vcenter/common/wrappers/command_wrapper.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
from retrying import retry
55

66
from cloudshell.cp.vcenter.common.model_factory import ResourceModelParser
7-
from cloudshell.cp.vcenter.common.cloud_shell.driver_helper import CloudshellDriverHelper
87
from cloudshell.cp.vcenter.common.vcenter.vmomi_service import pyVmomiService, VCenterAuthError
9-
from cloudshell.cp.vcenter.models.VMwarevCenterResourceModel import VMwarevCenterResourceModel
8+
from cloudshell.shell.core.session.cloudshell_session import CloudShellSessionContext
9+
from cloudshell.cp.vcenter.common.cloud_shell.conn_details_retriever import ResourceConnectionDetailsRetriever
1010

1111
DISCONNCTING_VCENERT = 'disconnecting from vcenter: {0}'
1212
COMMAND_ERROR = 'error has occurred while executing command: {0}'
@@ -30,7 +30,7 @@ def retry_if_auth_error(ex):
3030

3131

3232
class CommandWrapper:
33-
def __init__(self, pv_service, cloud_shell_helper, resource_model_parser, context_based_logger_factory):
33+
def __init__(self, pv_service, resource_model_parser, context_based_logger_factory):
3434
"""
3535
3636
:param pv_service:
@@ -41,7 +41,6 @@ def __init__(self, pv_service, cloud_shell_helper, resource_model_parser, contex
4141
:return:
4242
"""
4343
self.pv_service = pv_service # type: pyVmomiService
44-
self.cs_helper = cloud_shell_helper # type: CloudshellDriverHelper
4544
self.resource_model_parser = resource_model_parser # type: ResourceModelParser
4645
self.context_based_logger_factory = context_based_logger_factory # type ContextBasedLoggerFactory
4746
# add lock
@@ -78,11 +77,11 @@ def execute_command_with_connection(self, context, command, *args):
7877

7978
# get connection details
8079
if context:
81-
session = self.cs_helper.get_session(server_address=context.connectivity.server_address,
82-
token=context.connectivity.admin_auth_token,
83-
reservation_domain=self._get_domain(context))
80+
with CloudShellSessionContext(context) as cloudshell_session:
81+
session = cloudshell_session
82+
8483
vcenter_data_model = self.resource_model_parser.convert_to_vcenter_model(context.resource)
85-
connection_details = self.cs_helper.get_connection_details(session=session,
84+
connection_details = ResourceConnectionDetailsRetriever.get_connection_details(session=session,
8685
vcenter_resource_model=vcenter_data_model,
8786
resource_context=context.resource)
8887

package/cloudshell/cp/vcenter/vm/deploy.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,23 @@
33
from cloudshell.cp.vcenter.vm.ovf_image_params import OvfImageParams
44
from cloudshell.cp.vcenter.vm.vcenter_details_factory import VCenterDetailsFactory
55
from cloudshell.cp.vcenter.common.vcenter.vm_location import VMLocation
6-
6+
from cloudshell.cp.vcenter.common.cloud_shell.conn_details_retriever import ResourceConnectionDetailsRetriever
77

88
class VirtualMachineDeployer(object):
9-
def __init__(self, pv_service, name_generator, ovf_service, cs_helper, resource_model_parser):
9+
def __init__(self, pv_service, name_generator, ovf_service, resource_model_parser):
1010
"""
1111
1212
:param pv_service:
1313
:type pv_service: cloudshell.cp.vcenter.common.vcenter.vmomi_service.pyVmomiService
1414
:param name_generator:
1515
:param ovf_service:
1616
:type ovf_service: cloudshell.cp.vcenter.common.vcenter.ovf_service.OvfImageDeployerService
17-
:param cs_helper:
1817
:type resource_model_parser: ResourceModelParser
1918
:return:
2019
"""
2120
self.pv_service = pv_service
2221
self.name_generator = name_generator
2322
self.ovf_service = ovf_service # type common.vcenter.ovf_service.OvfImageDeployerService
24-
self.cs_helper = cs_helper # type CloudshellDriverHelper
2523
self.resource_model_parser = resource_model_parser # type ResourceModelParser
2624

2725
def deploy_from_linked_clone(self, si, logger, data_holder, vcenter_data_model, reservation_id):
@@ -125,7 +123,7 @@ def _deploy_a_clone(self, si, logger, app_name, template_name, other_params, vce
125123
def deploy_from_image(self, si, logger, session, vcenter_data_model, data_holder, resource_context, reservation_id):
126124
vm_name = self.name_generator(data_holder.app_name, reservation_id)
127125

128-
connection_details = self.cs_helper.get_connection_details(session=session,
126+
connection_details = ResourceConnectionDetailsRetriever.get_connection_details(session=session,
129127
vcenter_resource_model=vcenter_data_model,
130128
resource_context=resource_context)
131129

package/cloudshell/tests/test_commands/test_command_orchestrator.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,6 @@ def setUp(self):
7373
self.context.remote_endpoints = [self.resource]
7474
self.command_orchestrator = CommandOrchestrator()
7575
self.command_orchestrator.command_wrapper.execute_command_with_connection = Mock(return_value=True)
76-
self.command_orchestrator.cs_helper = Mock()
77-
self.command_orchestrator.cs_helper.get_session = Mock(return_value=session)
78-
self.command_orchestrator.cs_helper.get_connection_details = Mock(return_value=self.connection_details)
7976
self.ports = [Mock()]
8077
self.command_orchestrator._parse_remote_model = Mock(return_value=remote_resource)
8178

package/cloudshell/tests/test_common/test_cloudshell/test_connection_detail_retriever.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
from unittest import TestCase
2-
32
from mock import Mock
4-
53
from cloudshell.cp.vcenter.common.cloud_shell.conn_details_retriever import ResourceConnectionDetailsRetriever
6-
4+
from cloudshell.cp.vcenter.models.VMwarevCenterResourceModel import VMwarevCenterResourceModel
75

86
class TestConnectionDetailRetriever(TestCase):
97
def test_connection_detail_retriever(self):
10-
helpers = Mock()
118
session = Mock()
129
decrypted_password = Mock()
1310
decrypted_password.Value = 'decrypted password'
1411
session.DecryptPassword = Mock(return_value=decrypted_password)
1512
resource_context = Mock()
16-
resource_context.attributes = {'User': 'uzer', 'Password': 'password'}
1713
resource_context.address = '192.168.1.1'
1814

19-
helpers.get_resource_context_details = Mock(return_value=resource_context)
20-
helpers.get_api_session = Mock(return_value=session)
15+
vcenter_data_model = VMwarevCenterResourceModel()
16+
vcenter_data_model.user = 'uzer'
17+
vcenter_data_model.password = 'password'
2118

22-
retriever = ResourceConnectionDetailsRetriever(helpers)
19+
connection_details = ResourceConnectionDetailsRetriever.get_connection_details(session=session,
20+
vcenter_resource_model=vcenter_data_model,
21+
resource_context=resource_context)
2322

24-
connection_details = retriever.connection_details()
2523

2624
self.assertEqual(connection_details.host, '192.168.1.1')
2725
self.assertEqual(connection_details.username, 'uzer')

package/cloudshell/tests/test_common/test_cloudshell/test_driver_helper.py

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)