Я развернул кластер Ceph на 3 узлах и создал msd
и rgw
. У меня есть 3 машины с именами ceph1, ceph2 и ceph3.
- ceph1 работает с osd, mon, mds и rwg
- Ceph2 работает OSD
- Ceph3 работает OSD
Я создал пользователя с помощью команды radosgw-admin user create
.
Теперь я хочу получить доступ к кластеру ceph, используя swift api, и создать контейнер. Для этого я написал следующий код Java:
import org.javaswift.joss.client.factory.AccountConfig;
import org.javaswift.joss.client.factory.AccountFactory;
import org.javaswift.joss.client.factory.AuthenticationMethod;
import org.javaswift.joss.model.Account;
import org.javaswift.joss.model.Container;
import org.javaswift.joss.model.StoredObject;
import java.io.File;
import java.io.IOException;
import java.util.*;
public class Example {
public static void main(String[] args) {
String username = "sahoo";
String password = "IM8K5GAQIXHFRAKYS761";
String authUrl = "http://ceph1:7480/";
AccountConfig config = new AccountConfig();
config.setUsername(username);
config.setPassword(password);
config.setAuthUrl(authUrl);
config.setAuthenticationMethod(AuthenticationMethod.BASIC);
Account account = new AccountFactory(config).createAccount();
Container container = account.getContainer("container-name");
container.create();
}
}
Но во время выполнения кода я получаю следующее исключение:
Exception in thread "main" java.lang.NullPointerException
at org.javaswift.joss.command.impl.identity.BasicAuthenticationCommandImpl.getReturnObject(BasicAuthenticationCommandImpl.java:35)
at org.javaswift.joss.command.impl.identity.BasicAuthenticationCommandImpl.getReturnObject(BasicAuthenticationCommandImpl.java:18)
at org.javaswift.joss.command.impl.core.AbstractCommand.call(AbstractCommand.java:51)
at org.javaswift.joss.client.impl.ClientImpl.createAccount(ClientImpl.java:97)
at org.javaswift.joss.client.impl.ClientImpl.createAccount(ClientImpl.java:27)
at org.javaswift.joss.client.core.AbstractClient.authenticate(AbstractClient.java:35)
at org.javaswift.joss.client.factory.AccountFactory.createAccount(AccountFactory.java:30)
at Example.main(Example.java:24)
Может ли кто-нибудь помочь мне с объяснением, почему я получаю исключение и что именно нам нужно передать на config.setAuthUrl()
.