AzureConnectParam.java 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package io.milvus.bulkwriter.connect;
  2. import com.azure.core.credential.TokenCredential;
  3. import io.milvus.exception.ParamException;
  4. import io.milvus.param.ParamUtils;
  5. import lombok.Getter;
  6. import lombok.NonNull;
  7. import lombok.ToString;
  8. /**
  9. * Parameters for <code>RemoteBulkWriter</code> interface.
  10. */
  11. @Getter
  12. @ToString
  13. public class AzureConnectParam extends StorageConnectParam {
  14. private final String containerName;
  15. private final String connStr;
  16. private final String accountUrl;
  17. private final TokenCredential credential;
  18. private AzureConnectParam(@NonNull Builder builder) {
  19. this.containerName = builder.containerName;
  20. this.connStr = builder.connStr;
  21. this.accountUrl = builder.accountUrl;
  22. this.credential = builder.credential;
  23. }
  24. public static Builder newBuilder() {
  25. return new Builder();
  26. }
  27. /**
  28. * Builder for {@link AzureConnectParam} class.
  29. */
  30. public static final class Builder {
  31. private String containerName;
  32. private String connStr;
  33. private String accountUrl;
  34. private TokenCredential credential;
  35. private Builder() {
  36. }
  37. /**
  38. * @param containerName The target container name
  39. * @return <code>Builder</code>
  40. */
  41. public Builder withContainerName(@NonNull String containerName) {
  42. this.containerName = containerName;
  43. return this;
  44. }
  45. /**
  46. * @param connStr A connection string to an Azure Storage account,
  47. * which can be parsed to an account_url and a credential.
  48. * To generate a connection string, read this link:
  49. * <a href="https://learn.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string">...</a>
  50. * @return <code>Builder</code>
  51. */
  52. public Builder withConnStr(@NonNull String connStr) {
  53. this.connStr = connStr;
  54. return this;
  55. }
  56. /**
  57. * @param accountUrl A string in format like https://<storage-account>.blob.core.windows.net
  58. * Read this link for more info:
  59. * <a href="https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview">...</a>
  60. * @return <code>Builder</code>
  61. */
  62. public Builder withAccountUrl(@NonNull String accountUrl) {
  63. this.accountUrl = accountUrl;
  64. return this;
  65. }
  66. /**
  67. *
  68. * @param credential Account access key for the account, read this link for more info:
  69. * <a href="https://learn.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#view-account-access-keys">...</a>
  70. * @return <code>Builder</code>
  71. */
  72. public Builder withCredential(@NonNull TokenCredential credential) {
  73. this.credential = credential;
  74. return this;
  75. }
  76. /**
  77. * Verifies parameters and creates a new {@link AzureConnectParam} instance.
  78. *
  79. * @return {@link AzureConnectParam}
  80. */
  81. public AzureConnectParam build() throws ParamException {
  82. ParamUtils.CheckNullEmptyString(containerName, "containerName");
  83. return new AzureConnectParam(this);
  84. }
  85. }
  86. }