pybritive 2.2.1__tar.gz → 2.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. {pybritive-2.2.1/src/pybritive.egg-info → pybritive-2.2.3}/PKG-INFO +1 -1
  2. pybritive-2.2.3/src/pybritive/__init__.py +1 -0
  3. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/britive_cli.py +34 -38
  4. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/cli_interface.py +15 -15
  5. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/kube_config_builder.py +8 -4
  6. {pybritive-2.2.1 → pybritive-2.2.3/src/pybritive.egg-info}/PKG-INFO +1 -1
  7. pybritive-2.2.1/src/pybritive/__init__.py +0 -1
  8. {pybritive-2.2.1 → pybritive-2.2.3}/LICENSE +0 -0
  9. {pybritive-2.2.1 → pybritive-2.2.3}/README.md +0 -0
  10. {pybritive-2.2.1 → pybritive-2.2.3}/pyproject.toml +0 -0
  11. {pybritive-2.2.1 → pybritive-2.2.3}/setup.cfg +0 -0
  12. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/choices/__init__.py +0 -0
  13. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/choices/backend.py +0 -0
  14. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/choices/browser.py +0 -0
  15. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/choices/mode.py +0 -0
  16. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/choices/output_format.py +0 -0
  17. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/choices/profile_type.py +0 -0
  18. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/choices/ssh_key_source.py +0 -0
  19. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/choices/ssh_push_public_key.py +0 -0
  20. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/__init__.py +0 -0
  21. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/api.py +0 -0
  22. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/aws.py +0 -0
  23. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/cache.py +0 -0
  24. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/checkin.py +0 -0
  25. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/checkout.py +0 -0
  26. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/clear.py +0 -0
  27. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/configure.py +0 -0
  28. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/login.py +0 -0
  29. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/logout.py +0 -0
  30. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/ls.py +0 -0
  31. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/request.py +0 -0
  32. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/secret.py +0 -0
  33. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/ssh.py +0 -0
  34. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/commands/user.py +0 -0
  35. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/completers/__init__.py +0 -0
  36. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/completers/api.py +0 -0
  37. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/completers/api_command.py +0 -0
  38. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/completers/bash_gte_42.py +0 -0
  39. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/completers/powershell_completion.py +0 -0
  40. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/completers/profile.py +0 -0
  41. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/__init__.py +0 -0
  42. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/api_method_argument_decorator.py +0 -0
  43. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/aws_credential_process.py +0 -0
  44. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/build_britive.py +0 -0
  45. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/cache.py +0 -0
  46. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/cloud_credential_printer.py +0 -0
  47. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/config.py +0 -0
  48. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/credentials.py +0 -0
  49. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/encryption.py +0 -0
  50. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/k8s_exec.py +0 -0
  51. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/k8s_exec_credential_builder.py +0 -0
  52. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/profile_argument_decorator.py +0 -0
  53. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/helpers/split.py +0 -0
  54. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/__init__.py +0 -0
  55. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/alias.py +0 -0
  56. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/aws_console_duration.py +0 -0
  57. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/aws_credentials_file.py +0 -0
  58. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/aws_profile.py +0 -0
  59. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/blocktime.py +0 -0
  60. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/britive_options.py +0 -0
  61. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/browser.py +0 -0
  62. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/checked_out.py +0 -0
  63. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/configure_alias.py +0 -0
  64. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/configure_backend.py +0 -0
  65. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/configure_prompt.py +0 -0
  66. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/configure_tenant.py +0 -0
  67. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/console.py +0 -0
  68. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/extend.py +0 -0
  69. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/federation_provider.py +0 -0
  70. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/file.py +0 -0
  71. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/force_renew.py +0 -0
  72. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/gcloud_key_file.py +0 -0
  73. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/justification.py +0 -0
  74. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/maxpolltime.py +0 -0
  75. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/mode.py +0 -0
  76. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/otp.py +0 -0
  77. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/output_format.py +0 -0
  78. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/passphrase.py +0 -0
  79. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/profile_type.py +0 -0
  80. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/query.py +0 -0
  81. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/silent.py +0 -0
  82. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/ssh_hostname.py +0 -0
  83. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/ssh_key_source.py +0 -0
  84. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/ssh_port.py +0 -0
  85. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/ssh_push_public_key.py +0 -0
  86. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/ssh_username.py +0 -0
  87. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/tenant.py +0 -0
  88. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/ticket_id.py +0 -0
  89. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/ticket_type.py +0 -0
  90. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/token.py +0 -0
  91. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/verbose.py +0 -0
  92. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive/options/version.py +0 -0
  93. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive.egg-info/SOURCES.txt +0 -0
  94. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive.egg-info/dependency_links.txt +0 -0
  95. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive.egg-info/entry_points.txt +0 -0
  96. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive.egg-info/requires.txt +0 -0
  97. {pybritive-2.2.1 → pybritive-2.2.3}/src/pybritive.egg-info/top_level.txt +0 -0
  98. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0100_version.py +0 -0
  99. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0200_configure.py +0 -0
  100. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0300_login.py +0 -0
  101. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0400_ls.py +0 -0
  102. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0500_api.py +0 -0
  103. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0600_secret.py +0 -0
  104. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0700_cache.py +0 -0
  105. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0800_checkout.py +0 -0
  106. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_0900_checkin.py +0 -0
  107. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_1000_clear.py +0 -0
  108. {pybritive-2.2.1 → pybritive-2.2.3}/tests/test_1100_logout.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pybritive
3
- Version: 2.2.1
3
+ Version: 2.2.3
4
4
  Summary: A pure Python CLI for Britive
5
5
  Author-email: "Britive Inc." <support@britive.com>
6
6
  License: MIT License
@@ -0,0 +1 @@
1
+ __version__ = '2.2.3'
@@ -465,26 +465,20 @@ class BritiveCli:
465
465
  data.append(row)
466
466
  self.print(data, ignore_silent=True)
467
467
 
468
- # temporary fix till the new API is updated to return `profileEnvironmentProperties`
469
- def _get_missing_env_properties(
470
- self, app_id: str, app_type: str, env_id: str, profile_id: str, from_cache_command: bool
471
- ) -> dict:
472
- if app_type.lower() == 'kubernetes' and (from_cache_command or self.config.auto_refresh_kube_config()):
473
- if not self.listed_profiles:
474
- self.listed_profiles = self.b.my_access.list_profiles()
475
- return next(
476
- (
477
- env['profileEnvironmentProperties']
478
- for app in self.listed_profiles
479
- if app['appContainerId'] == app_id
480
- for profile in app.get('profiles', [])
481
- if profile['profileId'] == profile_id
482
- for env in profile.get('environments', [])
483
- if env['environmentId'] == env_id
484
- ),
485
- {},
486
- )
487
- return {}
468
+ # temporary fix till the new API is updated to return `sessionAttributes`
469
+ def _get_missing_session_attributes(self, app_id: str, profile_id: str) -> dict:
470
+ if not self.listed_profiles:
471
+ self.listed_profiles = self.b.my_access.list_profiles()
472
+ return next(
473
+ (
474
+ profile['sessionAttributes']
475
+ for app in self.listed_profiles
476
+ if app['appContainerId'] == app_id
477
+ for profile in app.get('profiles', [])
478
+ if profile['profileId'] == profile_id
479
+ ),
480
+ [],
481
+ )
488
482
 
489
483
  def _set_available_profiles(self, from_cache_command=False, profile_type: Optional[str] = None):
490
484
  if not self.available_profiles:
@@ -509,23 +503,23 @@ class BritiveCli:
509
503
  env = envs[env_id]
510
504
  profile = profiles[profile_id]
511
505
  row = {
512
- 'app_name': app['catalogAppDisplayName'],
506
+ '2_part_profile_format_allowed': app['requiresHierarchicalModel'],
507
+ 'app_description': app['appDescription'],
513
508
  'app_id': app_id,
509
+ 'app_name': app['catalogAppDisplayName'],
514
510
  'app_type': app['catalogAppName'],
515
- 'app_description': app['appDescription'],
516
- 'env_name': env['environmentName'],
511
+ 'env_description': env['environmentDescription'],
517
512
  'env_id': env_id,
513
+ 'env_name': env['environmentName'],
514
+ 'env_properties': env['profileEnvironmentProperties'],
518
515
  'env_short_name': env['alternateEnvironmentName'],
519
- 'env_description': env['environmentDescription'],
520
- 'profile_name': profile['papName'],
521
- 'profile_id': profile_id,
522
516
  'profile_allows_console': app.get('consoleAccess', False),
523
517
  'profile_allows_programmatic': app.get('programmaticAccess', False),
524
518
  'profile_description': profile['papDescription'],
525
- '2_part_profile_format_allowed': app['requiresHierarchicalModel'],
526
- 'env_properties': env['profileEnvironmentProperties']
527
- or self._get_missing_env_properties(
528
- app_id, app['catalogAppName'], env_id, profile_id, from_cache_command
519
+ 'profile_id': profile_id,
520
+ 'profile_name': profile['papName'],
521
+ 'session_attributes': profile.get(
522
+ 'sessionAttributes', self._get_missing_session_attributes(app_id, profile_id)
529
523
  ),
530
524
  }
531
525
  if row not in access_output:
@@ -539,21 +533,21 @@ class BritiveCli:
539
533
  profiles = profiles['data']
540
534
  for item in profiles:
541
535
  row = {
542
- 'app_name': None,
536
+ '2_part_profile_format_allowed': False,
537
+ 'app_description': None,
543
538
  'app_id': None,
539
+ 'app_name': None,
544
540
  'app_type': 'Resources',
545
- 'app_description': None,
546
- 'env_name': item['resourceName'],
541
+ 'env_description': None,
547
542
  'env_id': item['resourceId'],
543
+ 'env_name': item['resourceName'],
544
+ 'env_properties': item.get('resourceLabels', {}),
548
545
  'env_short_name': item['resourceName'],
549
- 'env_description': None,
550
- 'profile_name': item['profileName'],
551
- 'profile_id': item['profileId'],
552
546
  'profile_allows_console': False,
553
547
  'profile_allows_programmatic': True,
554
548
  'profile_description': None,
555
- '2_part_profile_format_allowed': False,
556
- 'env_properties': item.get('resourceLabels', {}),
549
+ 'profile_id': item['profileId'],
550
+ 'profile_name': item['profileName'],
557
551
  }
558
552
  data.append(row)
559
553
  self.available_profiles = data
@@ -584,6 +578,7 @@ class BritiveCli:
584
578
  'profile': p['profile_name'],
585
579
  'url': url,
586
580
  'cert': cert,
581
+ 'session_attributes': p['session_attributes'],
587
582
  }
588
583
  )
589
584
 
@@ -978,6 +973,7 @@ class BritiveCli:
978
973
  if self._profile_is_for_resource(profile=profile, profile_type=profile_type):
979
974
  app_type = 'Resources'
980
975
  k8s_processor = None
976
+ console_fallback = False
981
977
  credentials = self._resource_checkout(
982
978
  blocktime=blocktime,
983
979
  justification=justification,
@@ -3,21 +3,21 @@ import sys
3
3
 
4
4
  import click
5
5
 
6
- from .commands.api import api as command_api
7
- from .commands.aws import aws as group_aws
8
- from .commands.cache import cache as group_cache
9
- from .commands.checkin import checkin as command_checkin
10
- from .commands.checkout import checkout as command_checkout
11
- from .commands.clear import clear as group_clear
12
- from .commands.configure import configure as group_configure
13
- from .commands.login import login as command_login
14
- from .commands.logout import logout as command_logout
15
- from .commands.ls import ls as group_ls
16
- from .commands.request import request as group_request
17
- from .commands.secret import secret as group_secret
18
- from .commands.ssh import ssh as group_ssh
19
- from .commands.user import user as command_user
20
- from .options.britive_options import britive_options
6
+ from pybritive.commands.api import api as command_api
7
+ from pybritive.commands.aws import aws as group_aws
8
+ from pybritive.commands.cache import cache as group_cache
9
+ from pybritive.commands.checkin import checkin as command_checkin
10
+ from pybritive.commands.checkout import checkout as command_checkout
11
+ from pybritive.commands.clear import clear as group_clear
12
+ from pybritive.commands.configure import configure as group_configure
13
+ from pybritive.commands.login import login as command_login
14
+ from pybritive.commands.logout import logout as command_logout
15
+ from pybritive.commands.ls import ls as group_ls
16
+ from pybritive.commands.request import request as group_request
17
+ from pybritive.commands.secret import secret as group_secret
18
+ from pybritive.commands.ssh import ssh as group_ssh
19
+ from pybritive.commands.user import user as command_user
20
+ from pybritive.options.britive_options import britive_options
21
21
 
22
22
 
23
23
  def safe_cli():
@@ -69,7 +69,7 @@ def parse_profiles(profiles, aliases):
69
69
  cluster_names = {}
70
70
  assigned_aliases = []
71
71
  for profile in profiles:
72
- env_profile = f"{sanitize(profile['env'])}-{sanitize(profile['profile'].lower())}"
72
+ env_profile = f'{sanitize(profile["env"])}-{sanitize(profile["profile"].lower())}'
73
73
  if env_profile not in cluster_names:
74
74
  app = BritiveCli.escape_profile_element(profile['app'])
75
75
  env = BritiveCli.escape_profile_element(profile['env'])
@@ -84,8 +84,9 @@ def parse_profiles(profiles, aliases):
84
84
  'url': profile['url'],
85
85
  'cert': profile['cert'],
86
86
  'escaped_profile': escaped_profile_str,
87
- 'profile': f"{profile['app']}/{profile['env']}/{profile['profile']}".lower(),
87
+ 'profile': f'{profile["app"]}/{profile["env"]}/{profile["profile"]}'.lower(),
88
88
  'alias': alias,
89
+ 'session_attributes': profile['session_attributes'],
89
90
  }
90
91
  cluster_names[env_profile]['apps'].append(sanitize(profile['app']))
91
92
  return [cluster_names, assigned_aliases]
@@ -129,7 +130,6 @@ def build_tenant_config(tenant, cluster_names, username, cli: BritiveCli):
129
130
  )
130
131
  contexts = []
131
132
  clusters = []
132
-
133
133
  for env_profile, details in cluster_names.items():
134
134
  if len(details['apps']) == 1:
135
135
  names = [env_profile]
@@ -162,7 +162,11 @@ def build_tenant_config(tenant, cluster_names, username, cli: BritiveCli):
162
162
  contexts.append(
163
163
  {
164
164
  'name': details.get('alias') or f'{tenant}-{name}',
165
- 'context': {'cluster': f'{tenant}-{name}', 'user': username},
165
+ 'context': {
166
+ 'cluster': f'{tenant}-{name}',
167
+ 'user': username,
168
+ **{attr['mappingName']: attr['attributeValue'] for attr in details['session_attributes']},
169
+ },
166
170
  }
167
171
  )
168
172
  return [clusters, contexts, users]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pybritive
3
- Version: 2.2.1
3
+ Version: 2.2.3
4
4
  Summary: A pure Python CLI for Britive
5
5
  Author-email: "Britive Inc." <support@britive.com>
6
6
  License: MIT License
@@ -1 +0,0 @@
1
- __version__ = '2.2.1'
File without changes
File without changes
File without changes
File without changes