// becomeMaster attempts to become the master for this lock. // returns "", nil if the attempt failed // returns id, nil if the attempt succeeded // returns "", err if an error occurred func (e *etcdMasterElector) becomeMaster(path, id string, ttl uint64) (string, error) { _, err := e.etcd.Create(path, id, ttl) if err != nil && !tools.IsEtcdNodeExist(err) { // unexpected error return "", err } if err != nil && tools.IsEtcdNodeExist(err) { return "", nil } return id, nil }
// CreateService creates a new Service. func (r *Registry) CreateService(svc api.Service) error { err := r.CreateObj(makeServiceKey(svc.ID), svc) if tools.IsEtcdNodeExist(err) { return apiserver.NewAlreadyExistsErr("service", svc.ID) } return err }
// CreateController creates a new ReplicationController. func (r *Registry) CreateController(controller api.ReplicationController) error { err := r.CreateObj(makeControllerKey(controller.ID), controller) if tools.IsEtcdNodeExist(err) { return apiserver.NewAlreadyExistsErr("replicationController", controller.ID) } return err }
// CreateImage creates a new image func (r *Etcd) CreateImage(image *api.Image) error { err := r.CreateObj(makeImageKey(image.ID), image) if tools.IsEtcdNodeExist(err) { return apierrors.NewAlreadyExists("image", image.ID) } return err }
// CreateBuild creates a new Build. func (r *EtcdRegistry) CreateBuild(build *api.Build) error { err := r.CreateObj(makeBuildKey(build.ID), build) if tools.IsEtcdNodeExist(err) { return errors.NewAlreadyExists("build", build.ID) } return err }
// CreateBuildConfig creates a new BuildConfig. func (r *EtcdRegistry) CreateBuildConfig(config *api.BuildConfig) error { err := r.CreateObj(makeBuildConfigKey(config.ID), config) if tools.IsEtcdNodeExist(err) { return errors.NewAlreadyExists("buildConfig", config.ID) } return err }
// CreateImageRepository registers the given ImageRepository. func (r *Etcd) CreateImageRepository(repo *api.ImageRepository) error { err := r.CreateObj(makeImageRepositoryKey(repo.ID), repo) if err != nil && tools.IsEtcdNodeExist(err) { return apierrors.NewAlreadyExists("imageRepository", repo.ID) } return err }
// InterpretUpdateError converts a generic etcd error on a update // operation into the appropriate API error. func InterpretUpdateError(err error, kind, name string) error { switch { case tools.IsEtcdTestFailed(err), tools.IsEtcdNodeExist(err): return errors.NewConflict(kind, name, err) default: return err } }
// InterpretCreateError converts a generic etcd error on a create // operation into the appropriate API error. func InterpretCreateError(err error, kind, name string) error { switch { case tools.IsEtcdNodeExist(err): return errors.NewAlreadyExists(kind, name) default: return err } }
// InterpretCreateError converts a generic etcd error on a create // operation into the appropriate API error. func InterpretCreateError(err error, kind, name string) error { switch { case tools.IsEtcdNodeExist(err): return errors.NewAlreadyExists(kind, name) case errors.IsAPIStatusError(err): return err default: return errors.NewInternalError(err) } }