Skip to content

Commit a143543

Browse files
authored
Merge pull request #65 from controlm/integration-factory-February-release
Control-M Integrations Factory up to February 2024
2 parents 973542f + 9bb57ed commit a143543

File tree

7 files changed

+237
-6
lines changed

7 files changed

+237
-6
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
name="ctm-python-client",
99
packages=find_packages(where="src"),
1010
package_dir={"": "src"},
11-
version="2.1.5",
11+
version="2.1.6",
1212
description="Python Workflows for Control-M",
1313
long_description=long_description,
1414
long_description_content_type='text/markdown',

src/aapi/integration_factory/connection_profiles.py

Lines changed: 98 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -948,7 +948,7 @@ class AuthMethodIAMRole(AAPIObject):
948948
'_aapi_repr_': 'CustomServiceName'})
949949
auth_method_access_and_secret_keys: AuthMethodAccessAndSecretKeys = attrs.field(
950950
kw_only=True, default=None, metadata={'_aapi_repr_': 'AuthMethodAccessAndSecretKeys'})
951-
auth_method_i_a_m_role: AuthMethodIAMRole = attrs.field(
951+
auth_method_iam_role: AuthMethodIAMRole = attrs.field(
952952
kw_only=True, default=None, metadata={'_aapi_repr_': 'AuthMethodIAMRole'})
953953

954954
@attrs.define
@@ -1226,3 +1226,100 @@ class ConnectionProfileTerraform(ConnectionProfile):
12261226
'_aapi_repr_': 'Token'})
12271227
connection_timeout: str = attrs.field(kw_only=True, default=None, metadata={
12281228
'_aapi_repr_': 'Connection Timeout'})
1229+
1230+
@attrs.define
1231+
class ConnectionProfileAwsDynamoDB(ConnectionProfile):
1232+
1233+
_type: str = attrs.field(init=False, default='ConnectionProfile:AWS DynamoDB', metadata={
1234+
'_aapi_repr_': 'Type', '_type_aapi_': 'ConnectionProfile:AWS DynamoDB'})
1235+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1236+
aws_dynamo_db_url: str = attrs.field(kw_only=True, default=None, metadata={
1237+
'_aapi_repr_': 'AWS DynamoDB URL'})
1238+
aws_region: str = attrs.field(kw_only=True, default=None, metadata={
1239+
'_aapi_repr_': 'AWS Region'})
1240+
authentication: str = attrs.field(kw_only=True, default=None, metadata={
1241+
'_aapi_repr_': 'Authentication'})
1242+
aws_access_key: str = attrs.field(kw_only=True, default=None, metadata={
1243+
'_aapi_repr_': 'AWS Access Key'})
1244+
aws_secret: str = attrs.field(kw_only=True, default=None, metadata={
1245+
'_aapi_repr_': 'AWS Secret'})
1246+
iam_role: str = attrs.field(kw_only=True, default=None, metadata={
1247+
'_aapi_repr_': 'IAM Role'})
1248+
connection_timeout: str = attrs.field(kw_only=True, default=None, metadata={
1249+
'_aapi_repr_': 'Connection Timeout'})
1250+
1251+
@attrs.define
1252+
class ConnectionProfileAirbyte(ConnectionProfile):
1253+
1254+
_type: str = attrs.field(init=False, default='ConnectionProfile:Airbyte', metadata={
1255+
'_aapi_repr_': 'Type', '_type_aapi_': 'ConnectionProfile:Airbyte'})
1256+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1257+
airbyte_base_url: str = attrs.field(kw_only=True, default=None, metadata={
1258+
'_aapi_repr_': 'Airbyte Base URL'})
1259+
api_key: str = attrs.field(kw_only=True, default=None, metadata={
1260+
'_aapi_repr_': 'API Key'})
1261+
connection_timeout: str = attrs.field(kw_only=True, default=None, metadata={
1262+
'_aapi_repr_': 'Connection Timeout'})
1263+
1264+
@attrs.define
1265+
class ConnectionProfileKubernetes(ConnectionProfile):
1266+
1267+
_type: str = attrs.field(init=False, default='ConnectionProfile:Kubernetes', metadata={
1268+
'_aapi_repr_': 'Type', '_type_aapi_': 'ConnectionProfile:Kubernetes'})
1269+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1270+
namespace: str = attrs.field(kw_only=True, default=None, metadata={
1271+
'_aapi_repr_': 'Namespace'})
1272+
connection_timeout: str = attrs.field(kw_only=True, default=None, metadata={
1273+
'_aapi_repr_': 'Connection Timeout'})
1274+
kubernetes_cluster_url: str = attrs.field(kw_only=True, default=None, metadata={
1275+
'_aapi_repr_': 'Kubernetes Cluster URL'})
1276+
service_token_file: str = attrs.field(kw_only=True, default=None, metadata={
1277+
'_aapi_repr_': 'Service Token File'})
1278+
1279+
@attrs.define
1280+
class ConnectionProfileAwsLambda(ConnectionProfile):
1281+
1282+
_type: str = attrs.field(init=False, default='ConnectionProfile:AWS Lambda', metadata={
1283+
'_aapi_repr_': 'Type', '_type_aapi_': 'ConnectionProfile:AWS Lambda'})
1284+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1285+
lambda_url: str = attrs.field(kw_only=True, default=None, metadata={
1286+
'_aapi_repr_': 'Lambda URL'})
1287+
aws_region: str = attrs.field(kw_only=True, default=None, metadata={
1288+
'_aapi_repr_': 'AWS Region'})
1289+
authentication: str = attrs.field(kw_only=True, default=None, metadata={
1290+
'_aapi_repr_': 'Authentication'})
1291+
aws_access_key_id: str = attrs.field(kw_only=True, default=None, metadata={
1292+
'_aapi_repr_': 'AWS Access key ID'})
1293+
aws_secret: str = attrs.field(kw_only=True, default=None, metadata={
1294+
'_aapi_repr_': 'AWS Secret'})
1295+
iam_role: str = attrs.field(kw_only=True, default=None, metadata={
1296+
'_aapi_repr_': 'IAM Role'})
1297+
connection_timeout: str = attrs.field(kw_only=True, default=None, metadata={
1298+
'_aapi_repr_': 'Connection Timeout'})
1299+
1300+
@attrs.define
1301+
class ConnectionProfileOCIVM(ConnectionProfile):
1302+
1303+
_type: str = attrs.field(init=False, default='ConnectionProfile:OCI VM', metadata={
1304+
'_aapi_repr_': 'Type', '_type_aapi_': 'ConnectionProfile:OCI VM'})
1305+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1306+
oci_instances_url: str = attrs.field(kw_only=True, default=None, metadata={
1307+
'_aapi_repr_': 'OCI Instances URL'})
1308+
oci_region: str = attrs.field(kw_only=True, default=None, metadata={
1309+
'_aapi_repr_': 'OCI Region'})
1310+
authentication: str = attrs.field(kw_only=True, default=None, metadata={
1311+
'_aapi_repr_': 'Authentication'})
1312+
user_ocid: str = attrs.field(kw_only=True, default=None, metadata={
1313+
'_aapi_repr_': 'User OCID'})
1314+
tenancy_ocid: str = attrs.field(kw_only=True, default=None, metadata={
1315+
'_aapi_repr_': 'Tenancy OCID'})
1316+
fingerprint: str = attrs.field(kw_only=True, default=None, metadata={
1317+
'_aapi_repr_': 'Fingerprint'})
1318+
private_key: str = attrs.field(kw_only=True, default=None, metadata={
1319+
'_aapi_repr_': 'Private Key'})
1320+
config_file_path: str = attrs.field(kw_only=True, default=None, metadata={
1321+
'_aapi_repr_': 'Config File Path'})
1322+
profile: str = attrs.field(kw_only=True, default=None, metadata={
1323+
'_aapi_repr_': 'Profile'})
1324+
connection_timeout: str = attrs.field(kw_only=True, default=None, metadata={
1325+
'_aapi_repr_': 'Connection Timeout'})

src/aapi/integration_factory/jobs.py

Lines changed: 120 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -749,7 +749,7 @@ class JobMicroFocusLinux(Job):
749749
'_aapi_repr_': 'Advanced Restart Parameters'})
750750
rerun_job_id: str = attrs.field(kw_only=True, default=None, metadata={
751751
'_aapi_repr_': 'Rerun Job ID'})
752-
restart_with_modified_j_c_l: str = attrs.field(kw_only=True, default=None, metadata={
752+
restart_with_modified_jcl: str = attrs.field(kw_only=True, default=None, metadata={
753753
'_aapi_repr_': 'Restart with Modified JCL'})
754754
modified_jcl_path_and_filename: str = attrs.field(
755755
kw_only=True, default=None, metadata={'_aapi_repr_': 'Modified JCL Path and Filename'})
@@ -1010,6 +1010,8 @@ class JobAzureDatabricks(Job):
10101010
'_aapi_repr_': 'Idempotency Token'})
10111011
status_polling_frequency: str = attrs.field(kw_only=True, default=None, metadata={
10121012
'_aapi_repr_': 'Status Polling Frequency'})
1013+
failure_tolerance: str = attrs.field(kw_only=True, default=None, metadata={
1014+
'_aapi_repr_': 'Failure Tolerance'})
10131015

10141016

10151017
@attrs.define
@@ -1649,3 +1651,120 @@ class JobTerraform(Job):
16491651
'_aapi_repr_': 'Status Polling Frequency'})
16501652
failure_tolerance: str = attrs.field(kw_only=True, default=None, metadata={
16511653
'_aapi_repr_': 'Failure Tolerance'})
1654+
1655+
@attrs.define
1656+
class JobAwsDynamoDB(Job):
1657+
1658+
_type: str = attrs.field(init=False, default='Job:AWS DynamoDB', metadata={
1659+
'_aapi_repr_': 'Type', '_type_aapi_': 'Job:AWS DynamoDB'})
1660+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1661+
connection_profile: str = attrs.field(kw_only=True, default=None, metadata={
1662+
'_aapi_repr_': 'Connection Profile'})
1663+
action: str = attrs.field(kw_only=True, default=None, metadata={
1664+
'_aapi_repr_': 'Action'})
1665+
statement: str = attrs.field(kw_only=True, default=None, metadata={
1666+
'_aapi_repr_': 'Statement'})
1667+
run_statement_with_parameter: str = attrs.field(kw_only=True, default=None, metadata={
1668+
'_aapi_repr_': 'Run Statement with Parameter'})
1669+
statement_parameters: str = attrs.field(kw_only=True, default=None, metadata={
1670+
'_aapi_repr_': 'Statement Parameters'})
1671+
transaction_statments: str = attrs.field(kw_only=True, default=None, metadata={
1672+
'_aapi_repr_': 'Transaction Statments'})
1673+
idempotency_token: str = attrs.field(kw_only=True, default=None, metadata={
1674+
'_aapi_repr_': 'Idempotency Token'})
1675+
export_format: str = attrs.field(kw_only=True, default=None, metadata={
1676+
'_aapi_repr_': 'Export Format'})
1677+
s3_bucket_name: str = attrs.field(kw_only=True, default=None, metadata={
1678+
'_aapi_repr_': 'S3 Bucket Name'})
1679+
s3_path_prefix: str = attrs.field(kw_only=True, default=None, metadata={
1680+
'_aapi_repr_': 'S3 Path Prefix'})
1681+
s3_bucket_owner_id: str = attrs.field(kw_only=True, default=None, metadata={
1682+
'_aapi_repr_': 'S3 Bucket Owner ID'})
1683+
table_arn: str = attrs.field(kw_only=True, default=None, metadata={
1684+
'_aapi_repr_': 'Table ARN'})
1685+
import_format: str = attrs.field(kw_only=True, default=None, metadata={
1686+
'_aapi_repr_': 'Import Format'})
1687+
import_compression_type: str = attrs.field(kw_only=True, default=None, metadata={
1688+
'_aapi_repr_': 'Import Compression Type'})
1689+
table_creation_parameters: str = attrs.field(kw_only=True, default=None, metadata={
1690+
'_aapi_repr_': 'Table Creation Parameters'})
1691+
table_name: str = attrs.field(kw_only=True, default=None, metadata={
1692+
'_aapi_repr_': 'Table Name'})
1693+
status_polling_frequency: str = attrs.field(kw_only=True, default=None, metadata={
1694+
'_aapi_repr_': 'Status Polling Frequency'})
1695+
failure_tolarance: str = attrs.field(kw_only=True, default=None, metadata={
1696+
'_aapi_repr_': 'Failure Tolarance '})
1697+
1698+
@attrs.define
1699+
class JobAirbyte(Job):
1700+
1701+
_type: str = attrs.field(init=False, default='Job:Airbyte', metadata={
1702+
'_aapi_repr_': 'Type', '_type_aapi_': 'Job:Airbyte'})
1703+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1704+
connection_profile: str = attrs.field(kw_only=True, default=None, metadata={
1705+
'_aapi_repr_': 'Connection Profile'})
1706+
connection_id: str = attrs.field(kw_only=True, default=None, metadata={
1707+
'_aapi_repr_': 'Connection Id'})
1708+
job_type: str = attrs.field(kw_only=True, default=None, metadata={
1709+
'_aapi_repr_': 'Job Type'})
1710+
show_results: str = attrs.field(kw_only=True, default=None, metadata={
1711+
'_aapi_repr_': 'Show Results'})
1712+
status_polling_frequency: str = attrs.field(kw_only=True, default=None, metadata={
1713+
'_aapi_repr_': 'Status Polling Frequency'})
1714+
failure_tolerance: str = attrs.field(kw_only=True, default=None, metadata={
1715+
'_aapi_repr_': 'Failure Tolerance'})
1716+
1717+
@attrs.define
1718+
class JobKubernetes(Job):
1719+
1720+
_type: str = attrs.field(init=False, default='Job:Kubernetes', metadata={
1721+
'_aapi_repr_': 'Type', '_type_aapi_': 'Job:Kubernetes'})
1722+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1723+
connection_profile: str = attrs.field(kw_only=True, default=None, metadata={
1724+
'_aapi_repr_': 'Connection Profile'})
1725+
job_spec_yaml: str = attrs.field(kw_only=True, default=None, metadata={
1726+
'_aapi_repr_': 'Job Spec Yaml'})
1727+
job_spec_parameters: str = attrs.field(kw_only=True, default=None, metadata={
1728+
'_aapi_repr_': 'Job Spec Parameters'})
1729+
get_pod_logs: str = attrs.field(kw_only=True, default=None, metadata={
1730+
'_aapi_repr_': 'Get Pod Logs'})
1731+
job_cleanup: str = attrs.field(kw_only=True, default=None, metadata={
1732+
'_aapi_repr_': 'Job Cleanup'})
1733+
job_status_polling_interval: str = attrs.field(kw_only=True, default=None, metadata={
1734+
'_aapi_repr_': 'Job Status Polling Interval'})
1735+
1736+
@attrs.define
1737+
class JobAwsLambda(Job):
1738+
1739+
_type: str = attrs.field(init=False, default='Job:AWS Lambda', metadata={
1740+
'_aapi_repr_': 'Type', '_type_aapi_': 'Job:AWS Lambda'})
1741+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1742+
connection_profile: str = attrs.field(kw_only=True, default=None, metadata={
1743+
'_aapi_repr_': 'Connection Profile'})
1744+
function_name: str = attrs.field(kw_only=True, default=None, metadata={
1745+
'_aapi_repr_': 'Function Name'})
1746+
function_version: str = attrs.field(kw_only=True, default=None, metadata={
1747+
'_aapi_repr_': 'Function Version'})
1748+
parameters: str = attrs.field(kw_only=True, default=None, metadata={
1749+
'_aapi_repr_': 'Parameters'})
1750+
append_log_to_output: str = attrs.field(kw_only=True, default=None, metadata={
1751+
'_aapi_repr_': 'Append Log to Output'})
1752+
1753+
@attrs.define
1754+
class JobOCIVM(Job):
1755+
1756+
_type: str = attrs.field(init=False, default='Job:OCI VM', metadata={
1757+
'_aapi_repr_': 'Type', '_type_aapi_': 'Job:OCI VM'})
1758+
object_name: str = attrs.field(metadata={'_aapi_name_': True})
1759+
connection_profile: str = attrs.field(kw_only=True, default=None, metadata={
1760+
'_aapi_repr_': 'Connection Profile'})
1761+
action: str = attrs.field(kw_only=True, default=None, metadata={
1762+
'_aapi_repr_': 'Action'})
1763+
instance_id: str = attrs.field(kw_only=True, default=None, metadata={
1764+
'_aapi_repr_': 'Instance ID'})
1765+
parameters: str = attrs.field(kw_only=True, default=None, metadata={
1766+
'_aapi_repr_': 'Parameters'})
1767+
status_polling_frequency: str = attrs.field(kw_only=True, default=None, metadata={
1768+
'_aapi_repr_': 'Status Polling Frequency'})
1769+
failure_tolerance: str = attrs.field(kw_only=True, default=None, metadata={
1770+
'_aapi_repr_': 'Failure Tolerance'})

src/ctm_python_client/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
__version__ = '2.1.5'
1+
__version__ = '2.1.6'
22
__author__ = 'BMC Software'

src/ctm_python_client/ext/autogen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
__all__ = ['generate_ai_plugins_classes']
1010

11-
IF_PLUGINS = ["GWF092023", "MFW022023", "ACF082023", "GDF032022", "AAT052023", "ACS042023", "GLU062021", "GDP042022", "AHD062022", "COM032023", "GBA032023", "ABA092022", "TDM052022", "BOO032022", "ABK042023", "GDU102023", "ASF012023", "ZBA042022", "AAR072022", "AMM082023", "ATR122022", "ZDX112021", "ADB112022", "SOP072023", "GDQ112023", "ADF062021", "QLC092022", "ZLA112022", "ZRM082023", "ZSY062022", "ZML022023", "AQS012023", "DBT042023", "BAK092023", "UIP072021", "MBI042022", "ADP122022", "SFI122022", "TAB072023", "TER102023", "ZFN032022", "MFL022023", "ZVM062022", "AEC082022", "ASM0220223", "DBX032022", "RST062023", "GFU012023", "ADO112023", "SNF092022", "ICS032022", "GDR052023", "GDM082023", "GBQ102022", "AEM072022", "GVM062022"]
11+
IF_PLUGINS = ["ZBA042022", "AAR072022", "ABA092022", "ABY122023", "DBT042023", "ACS042023", "MBI042022", "SFI122022", "KBN062023", "OVM012024", "ATR122022", "ZVM062022", "ZSY062022", "ZFN032022", "ALM012024", "GWF092023", "RST062023", "QLC092022", "GDM082023", "ADY122023", "ACF082023", "SNF092022", "AAT052023", "ADF062021", "AEM072022", "BOO032022", "GDQ112023", "GBQ102022", "ABK042023", "ASM0220223", "ICS032022", "AMM082023", "ASF012023", "GDR052023", "ZDX112021", "ZRM082023", "BAK092023", "GFU012023", "GDF032022", "ADO112023", "GLU062021", "GBA032023", "DBX032022", "ZLA112022", "AEC082022", "ADP122022", "COM032023", "AQS012023", "ZML022023", "MFW022023", "GDU102023", "TAB072023", "ADB112022", "TDM052022", "GDP042022", "TER102023", "UIP072021", "GVM062022", "AHD062022", "SOP072023", "MFL022023"]
1212

1313

1414
imports_str = '''from aapi import *

tests/test_aapi.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11

22
import json
33
import aapi
4+
from ctm_python_client.core.workflow import Workflow, WorkflowDefaults, BaseWorkflow
5+
from ctm_python_client.core.comm import Environment
6+
47

58
def test_json_generation():
69
folder = aapi.Folder('MyFolder', run_as='controlm')
@@ -29,3 +32,15 @@ def test_json_generation():
2932
''')
3033

3134
assert o == folder.as_aapi_dict()
35+
36+
def test_copy_workflow():
37+
workflow = Workflow(Environment.create_workbench("refael"), WorkflowDefaults(run_as='workbench'), skip_initial_authentication=True)
38+
workflow.add(aapi.JobCommand('MyFirstJob', command='ls -lt', run_as='workbench'), inpath='MyFirstFolder')
39+
40+
newworkflow = BaseWorkflow()
41+
newworkflow.copy_from(workflow=workflow)
42+
43+
assert newworkflow.get("MyFirstFolder").dumps_aapi(indent=2) == workflow.get("MyFirstFolder").dumps_aapi(indent=2)
44+
45+
o = json.loads('{\n "Type": "Folder",\n "MyFirstJob": {\n "Type": "Job:Command",\n "RunAs": "workbench",\n "Command": "ls -lt"\n },\n "RunAs": "workbench"\n}')
46+
assert newworkflow.get("MyFirstFolder").as_aapi_dict() == o

tests/test_sanity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ def test_version_author():
22
import ctm_python_client
33

44
assert ctm_python_client.__author__ == 'BMC Software'
5-
assert ctm_python_client.__version__ == '2.1.5'
5+
assert ctm_python_client.__version__ == '2.1.6'
66

77

0 commit comments

Comments
 (0)