omnata-plugin-runtime 0.6.10a180__tar.gz → 0.7.0a182__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omnata-plugin-runtime
3
- Version: 0.6.10a180
3
+ Version: 0.7.0a182
4
4
  Summary: Classes and common runtime components for building and running Omnata Plugins
5
5
  Author: James Weakley
6
6
  Author-email: james.weakley@omnata.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "omnata-plugin-runtime"
3
- version = "0.6.10-a180"
3
+ version = "0.7.0-a182"
4
4
  description = "Classes and common runtime components for building and running Omnata Plugins"
5
5
  authors = ["James Weakley <james.weakley@omnata.com>"]
6
6
  readme = "README.md"
@@ -37,6 +37,14 @@ class InboundStorageBehaviour(str, Enum):
37
37
  MERGE = "merge"
38
38
  REPLACE = "replace" # now deprecated, full refreshes now use merge
39
39
 
40
+ class ConnectivityOption(str, Enum):
41
+ """
42
+ Describes the connectivity options available to a plugin.
43
+ These result in slightly different network rules and connection onboarding.
44
+ """
45
+ DIRECT = "direct"
46
+ NGROK = "ngrok"
47
+ PRIVATELINK = "privatelink"
40
48
 
41
49
  class InboundSyncStrategy(str, Enum):
42
50
  FULL_REFRESH = "Full Refresh"
@@ -489,5 +489,6 @@ class ConnectionMethod(SubscriptableBaseModel):
489
489
  name: str
490
490
  fields: List[FormFieldBase]
491
491
  oauth_template: Optional[SecurityIntegrationTemplate] = Field(default=None)
492
+ # This is now deprecated, instead signal ngrok support via the plugin manifest
492
493
  ngrok_tunnel_configuration: Optional[NGrokMTLSTunnel] = Field(default=None)
493
494
  description: str = Field(default="")
@@ -72,7 +72,8 @@ from .configuration import (
72
72
  StreamConfiguration,
73
73
  SubscriptableBaseModel,
74
74
  SyncConfigurationParameters,
75
- get_secrets
75
+ get_secrets,
76
+ ConnectivityOption
76
77
  )
77
78
  from .forms import (
78
79
  ConnectionMethod,
@@ -101,6 +102,7 @@ class PluginManifest(SubscriptableBaseModel):
101
102
  :param str docs_url: The URL where plugin documentation can be found, e.g. "https://docs.omnata.com"
102
103
  :param bool supports_inbound: A flag to indicate whether or not the plugin supports inbound sync. Support for inbound sync behaviours (full/incremental) is defined per inbound stream.
103
104
  :param List[OutboundSyncStrategy] supported_outbound_strategies: A list of sync strategies that the plugin can support, e.g. create,upsert.
105
+ :param List[ConnectivityOption] supported_connectivity_options: A list of connectivity options that the plugin can support, e.g. direct,ngrok,privatelink
104
106
  """
105
107
 
106
108
  plugin_id: str
@@ -110,6 +112,9 @@ class PluginManifest(SubscriptableBaseModel):
110
112
  docs_url: str
111
113
  supports_inbound: bool
112
114
  supported_outbound_strategies: List[OutboundSyncStrategy]
115
+ supported_connectivity_options: List[ConnectivityOption] = Field(
116
+ default_factory=lambda: [ConnectivityOption.DIRECT]
117
+ )
113
118
 
114
119
 
115
120
  class SnowflakeFunctionParameter(BaseModel):
@@ -1643,7 +1648,7 @@ class OmnataPlugin(ABC):
1643
1648
  )
1644
1649
 
1645
1650
  @abstractmethod
1646
- def connection_form(self) -> List[ConnectionMethod]:
1651
+ def connection_form(self,connectivity_option:ConnectivityOption) -> List[ConnectionMethod]:
1647
1652
  """
1648
1653
  Returns a form definition so that user input can be collected, in order to connect to an app
1649
1654
 
@@ -20,7 +20,8 @@ from .configuration import (
20
20
  OutboundSyncStrategy,
21
21
  StoredConfigurationValue,
22
22
  StoredMappingValue,
23
- get_secrets
23
+ get_secrets,
24
+ ConnectivityOption
24
25
  )
25
26
  from .forms import ConnectionMethod, FormInputField, FormOption
26
27
  from .logging import OmnataPluginLogHandler
@@ -381,9 +382,10 @@ class PluginEntrypoint:
381
382
  results.append(script_result.model_dump())
382
383
  return results
383
384
 
384
- def connection_form(self):
385
+ def connection_form(self,connectivity_option: str):
386
+ connectivity_option = TypeAdapter(ConnectivityOption).validate_python(connectivity_option)
385
387
  logger.info("Entered connection_form method")
386
- form: List[ConnectionMethod] = self._plugin_instance.connection_form()
388
+ form: List[ConnectionMethod] = self._plugin_instance.connection_form(connectivity_option=connectivity_option)
387
389
  return [f.model_dump() for f in form]
388
390
 
389
391
  def create_billing_events(self, session, event_request: Dict):