func (self *Huddle) ListInstances(tenant string, bundleType bundletype.BundleType) ([]*Instance, error) { prefix := self.jujuPrefix(tenant, bundleType) statuses, err := self.JujuClient.GetServiceStatusList(prefix) if err != nil { return nil, err } if statuses == nil { return nil, rs.HttpError(http.StatusNotFound) } instances := []*Instance{} for key, state := range statuses { _, bundleTypeId, instanceId, module, _, err := ParseUnit(key) if err != nil { log.Debug("Ignoring unparseable service: %v", key) continue } assert.That(bundleTypeId == bundleType.Key()) if module != bundleType.PrimaryJujuService() { continue } i := self.NewInstance(tenant, bundleType, instanceId) i.cacheState(&state) instances = append(instances, i) } return instances, nil }
func (self *EndpointXaas) Item(key string, req *http.Request) (*EndpointTenant, error) { child := &EndpointTenant{} tenantId := key tenantName := strings.Replace(key, "-", "", -1) // TODO: Implement authz assert.That(self.Authenticator != nil) authentication := self.Authenticator.Authenticate(tenantId, req) if authentication == nil { log.Debug("Authentication failed") notAuthorized := rs.HttpError(http.StatusUnauthorized) notAuthorized.Headers["WWW-Authenticate"] = "Basic realm=\"jxaas\"" return nil, notAuthorized } else { child.Tenant = tenantName // TODO: Use tenantId? authorization.TenantId return child, nil } }
func (self *Huddle) ListAllInstances() ([]*Instance, error) { prefix := "u" statuses, err := self.JujuClient.GetServiceStatusList(prefix) if err != nil { return nil, err } if statuses == nil { return nil, rs.HttpError(http.StatusNotFound) } instances := []*Instance{} for key, state := range statuses { tenant, bundleTypeId, instanceId, module, _, err := ParseUnit(key) if err != nil { log.Debug("Ignoring unparseable service: %v", key) continue } bundleType := self.System.GetBundleType(bundleTypeId) if bundleType == nil { log.Debug("Ignoring unknown bundle type: %v", bundleTypeId) continue } if module != bundleType.PrimaryJujuService() { continue } i := self.NewInstance(tenant, bundleType, instanceId) i.cacheState(&state) instances = append(instances, i) } return instances, nil }