|
51 | 51 | BulkRoleBindingUpdate, |
52 | 52 | RoleList, |
53 | 53 | OAuth2UpdateURI, |
| 54 | + ServiceAccountList, |
| 55 | + ServiceAccount, |
| 56 | +) |
| 57 | +from rapyuta_io_sdk_v2.models.serviceaccount import ( |
| 58 | + ServiceAccountToken, |
| 59 | + ServiceAccountTokenInfo, |
| 60 | + ServiceAccountTokenList, |
54 | 61 | ) |
55 | 62 | from rapyuta_io_sdk_v2.utils import handle_server_errors |
56 | 63 |
|
@@ -2067,3 +2074,151 @@ def update_role_binding( |
2067 | 2074 | return RoleBinding(**result.json()) |
2068 | 2075 | except Exception: |
2069 | 2076 | return result.json() |
| 2077 | + |
| 2078 | + # -------------------ServiceAccount------------------- |
| 2079 | + |
| 2080 | + def list_service_accounts( |
| 2081 | + self, |
| 2082 | + cont: int = 0, |
| 2083 | + limit: int = 50, |
| 2084 | + label_selector: list[str] | None = None, |
| 2085 | + name: str | None = None, |
| 2086 | + regions: list[str] | None = None, |
| 2087 | + **kwargs, |
| 2088 | + ) -> ServiceAccountList: |
| 2089 | + parameters: dict[str, Any] = { |
| 2090 | + "continue": cont, |
| 2091 | + "limit": limit, |
| 2092 | + } |
| 2093 | + if label_selector: |
| 2094 | + parameters["labelSelector"] = label_selector |
| 2095 | + if name: |
| 2096 | + parameters["name"] = name |
| 2097 | + if regions: |
| 2098 | + parameters["regions"] = regions |
| 2099 | + |
| 2100 | + result = self.c.get( |
| 2101 | + url=f"{self.v2api_host}/v2/serviceaccounts/", |
| 2102 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2103 | + params=parameters, |
| 2104 | + ) |
| 2105 | + |
| 2106 | + handle_server_errors(result) |
| 2107 | + |
| 2108 | + return ServiceAccountList(**result.json()) |
| 2109 | + |
| 2110 | + def get_service_account( |
| 2111 | + self, |
| 2112 | + name: str, |
| 2113 | + **kwargs, |
| 2114 | + ) -> ServiceAccount: |
| 2115 | + result = self.c.get( |
| 2116 | + url=f"{self.v2api_host}/v2/serviceaccounts/{name}/", |
| 2117 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2118 | + ) |
| 2119 | + |
| 2120 | + handle_server_errors(result) |
| 2121 | + return ServiceAccount(**result.json()) |
| 2122 | + |
| 2123 | + def create_service_account( |
| 2124 | + self, |
| 2125 | + service_account: ServiceAccount | dict, |
| 2126 | + **kwargs, |
| 2127 | + ) -> ServiceAccount: |
| 2128 | + if isinstance(service_account, dict): |
| 2129 | + service_account = ServiceAccount.model_validate(service_account) |
| 2130 | + result = self.c.post( |
| 2131 | + url=f"{self.v2api_host}/v2/serviceaccounts/", |
| 2132 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2133 | + json=service_account.model_dump(by_alias=True), |
| 2134 | + ) |
| 2135 | + |
| 2136 | + handle_server_errors(result) |
| 2137 | + return ServiceAccount(**result.json()) |
| 2138 | + |
| 2139 | + def update_service_account( |
| 2140 | + self, |
| 2141 | + service_account: ServiceAccount | dict, |
| 2142 | + name: str | None, |
| 2143 | + **kwargs, |
| 2144 | + ) -> ServiceAccount: |
| 2145 | + if isinstance(service_account, dict): |
| 2146 | + service_account = ServiceAccount.model_validate(service_account) |
| 2147 | + if not name: |
| 2148 | + name = service_account.metadata.name |
| 2149 | + result = self.c.put( |
| 2150 | + url=f"{self.v2api_host}/v2/serviceaccounts/{name}/", |
| 2151 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2152 | + json=service_account.model_dump(by_alias=True), |
| 2153 | + ) |
| 2154 | + |
| 2155 | + handle_server_errors(result) |
| 2156 | + return ServiceAccount(**result.json()) |
| 2157 | + |
| 2158 | + def delete_service_account( |
| 2159 | + self, |
| 2160 | + name: str, |
| 2161 | + **kwargs, |
| 2162 | + ) -> None: |
| 2163 | + result = self.c.delete( |
| 2164 | + url=f"{self.v2api_host}/v2/serviceaccounts/{name}/", |
| 2165 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2166 | + ) |
| 2167 | + |
| 2168 | + handle_server_errors(result) |
| 2169 | + return None |
| 2170 | + |
| 2171 | + def list_service_account_tokens( |
| 2172 | + self, name: str, cont: int = 0, limit: int = 50, **kwargs |
| 2173 | + ) -> ServiceAccountTokenList: |
| 2174 | + |
| 2175 | + result = self.c.get( |
| 2176 | + url=f"{self.v2api_host}/v2/serviceaccounts/{name}/token/", |
| 2177 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2178 | + ) |
| 2179 | + |
| 2180 | + handle_server_errors(result) |
| 2181 | + |
| 2182 | + return ServiceAccountTokenList(**result.json()) |
| 2183 | + |
| 2184 | + def create_service_account_token( |
| 2185 | + self, name: str, expiry_at: ServiceAccountToken | dict, **kwargs |
| 2186 | + ) -> ServiceAccountTokenInfo: |
| 2187 | + if isinstance(expiry_at, dict): |
| 2188 | + expiry_at = ServiceAccountToken.model_validate(expiry_at) |
| 2189 | + |
| 2190 | + result = self.c.post( |
| 2191 | + url=f"{self.v2api_host}/v2/serviceaccounts/{name}/token/", |
| 2192 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2193 | + json=expiry_at.model_dump(by_alias=True, mode="json"), |
| 2194 | + ) |
| 2195 | + |
| 2196 | + handle_server_errors(result) |
| 2197 | + |
| 2198 | + return ServiceAccountTokenInfo(**result.json()) |
| 2199 | + |
| 2200 | + def refresh_service_account_token( |
| 2201 | + self, name: str, token_id: str, expiry_at: ServiceAccountToken | dict, **kwargs |
| 2202 | + ) -> ServiceAccountTokenInfo: |
| 2203 | + if isinstance(expiry_at, dict): |
| 2204 | + expiry_at = ServiceAccountToken.model_validate(expiry_at) |
| 2205 | + |
| 2206 | + result = self.c.patch( |
| 2207 | + url=f"{self.v2api_host}/v2/serviceaccounts/{name}/token/{token_id}/", |
| 2208 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2209 | + json=expiry_at.model_dump(by_alias=True, mode="json"), |
| 2210 | + ) |
| 2211 | + |
| 2212 | + handle_server_errors(result) |
| 2213 | + |
| 2214 | + return ServiceAccountTokenInfo(**result.json()) |
| 2215 | + |
| 2216 | + def delete_service_account_token(self, name: str, token_id: str, **kwargs) -> None: |
| 2217 | + result = self.c.delete( |
| 2218 | + url=f"{self.v2api_host}/v2/serviceaccounts/{name}/token/{token_id}/", |
| 2219 | + headers=self.config.get_headers(with_project=False, **kwargs), |
| 2220 | + ) |
| 2221 | + |
| 2222 | + handle_server_errors(result) |
| 2223 | + |
| 2224 | + return None |
0 commit comments