• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

SwissDataScienceCenter / renku-data-services / 11288123511

11 Oct 2024 07:23AM UTC coverage: 90.667% (+0.2%) from 90.477%
11288123511

Pull #407

github

web-flow
Merge 20c6c8af6 into 5b095d795
Pull Request #407: feat!: add data connectors

1226 of 1325 new or added lines in 28 files covered. (92.53%)

3 existing lines in 3 files now uncovered.

10589 of 11679 relevant lines covered (90.67%)

1.6 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.94
/components/renku_data_services/data_connectors/models.py
1
"""Models for data connectors."""
2✔
2

3
from dataclasses import dataclass, field
2✔
4
from datetime import UTC, datetime
2✔
5
from typing import TYPE_CHECKING, Any
2✔
6

7
from ulid import ULID
2✔
8

9
from renku_data_services.authz.models import Visibility
2✔
10
from renku_data_services.namespace.models import Namespace
2✔
11
from renku_data_services.utils.etag import compute_etag_from_timestamp
2✔
12

13
if TYPE_CHECKING:
2✔
NEW
14
    from renku_data_services.storage.rclone import RCloneOption
×
15

16

17
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
18
class CloudStorageCore:
2✔
19
    """Remote storage configuration model."""
2✔
20

21
    storage_type: str
2✔
22
    configuration: dict[str, Any]
2✔
23
    source_path: str
2✔
24
    target_path: str
2✔
25
    readonly: bool
2✔
26

27

28
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
29
class BaseDataConnector:
2✔
30
    """Base data connector model."""
2✔
31

32
    name: str
2✔
33
    slug: str
2✔
34
    visibility: Visibility
2✔
35
    created_by: str
2✔
36
    creation_date: datetime = field(default_factory=lambda: datetime.now(UTC))
2✔
37
    updated_at: datetime | None = field(default=None)
2✔
38
    description: str | None = None
2✔
39
    keywords: list[str] | None = None
2✔
40
    storage: CloudStorageCore
2✔
41

42

43
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
44
class DataConnector(BaseDataConnector):
2✔
45
    """Data connector model."""
2✔
46

47
    id: ULID
2✔
48
    namespace: Namespace
2✔
49
    updated_at: datetime
2✔
50

51
    @property
2✔
52
    def etag(self) -> str:
2✔
53
        """Entity tag value for this data connector object."""
54
        return compute_etag_from_timestamp(self.updated_at, include_quotes=True)
1✔
55

56

57
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
58
class UnsavedDataConnector(BaseDataConnector):
2✔
59
    """A data connector that hasn't been stored in the database."""
2✔
60

61
    namespace: str
2✔
62

63

64
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
65
class CloudStorageCorePatch:
2✔
66
    """Model for changes requested on a remote storage configuration."""
2✔
67

68
    storage_type: str | None
2✔
69
    configuration: dict[str, Any] | None
2✔
70
    source_path: str | None
2✔
71
    target_path: str | None
2✔
72
    readonly: bool | None
2✔
73

74

75
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
76
class DataConnectorPatch:
2✔
77
    """Model for changes requested on a data connector."""
2✔
78

79
    name: str | None
2✔
80
    namespace: str | None
2✔
81
    slug: str | None
2✔
82
    visibility: Visibility | None
2✔
83
    description: str | None
2✔
84
    keywords: list[str] | None
2✔
85
    storage: CloudStorageCorePatch | None
2✔
86

87

88
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
89
class CloudStorageCoreWithSensitiveFields(CloudStorageCore):
2✔
90
    """Remote storage configuration model with sensitive fields."""
2✔
91

92
    sensitive_fields: list["RCloneOption"]
2✔
93

94

95
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
96
class DataConnectorUpdate:
2✔
97
    """Information about the update of a data connector."""
2✔
98

99
    old: DataConnector
2✔
100
    new: DataConnector
2✔
101

102

103
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
104
class UnsavedDataConnectorToProjectLink:
2✔
105
    """Base model for a link from a data connector to a project."""
2✔
106

107
    data_connector_id: ULID
2✔
108
    project_id: ULID
2✔
109

110

111
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
112
class DataConnectorToProjectLink(UnsavedDataConnectorToProjectLink):
2✔
113
    """A link from a data connector to a project."""
2✔
114

115
    id: ULID
2✔
116
    created_by: str
2✔
117
    creation_date: datetime
2✔
118
    updated_at: datetime
2✔
119

120

121
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
122
class DataConnectorSecret:
2✔
123
    """Data connector secret model."""
2✔
124

125
    name: str
2✔
126
    user_id: str
2✔
127
    data_connector_id: ULID
2✔
128
    secret_id: ULID
2✔
129

130

131
@dataclass(frozen=True, eq=True, kw_only=True)
2✔
132
class DataConnectorSecretUpdate:
2✔
133
    """Secret to be saved for a data connector."""
2✔
134

135
    name: str
2✔
136
    value: str | None
2✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc