4.15.07.00 – Informacje o wersji Apigee Edge dla Private Cloud

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

We wtorek 8 września 2015 roku opublikowaliśmy nową główną funkcję Apigee Edge dla chmury prywatnej.

Od poprzedniej kwartalnej wersji Edge for Private Cloud (4.15.04.00) pojawiły się te wersje, które są uwzględnione w tej kwartalnej wersji:

Wersje Edge, które można uaktualnić do wersji 4.15.07.00

W zależności od bieżącej wersji Edge możesz:

  • Uaktualnij bezpośrednio do wersji 4.15.07.00
  • Stopniowe uaktualnianie, które oznacza, że musisz uaktualnić Edge do innej wersji, a następnie uaktualnić Edge do wersji 4.15.07.00.

Więcej informacji znajdziesz w artykule o tym, które wersje Edge dla Private Cloud można uaktualnić do wersji 4.15.07.00.

Przed uaktualnieniem z wersji 4.15.01.x lub poprzedniej

Przed uaktualnieniem upewnij się, że usługa Cassandra SSTable została uaktualniona w każdym węźle Cassandra:
  1. Sprawdź wersję SSTable Cassandra:
    1. Zmień katalog na /<install-root>/apigee4/data/cassandra/data.
    2. Uruchom polecenie znajdowania,
      > znajdź . -name *-ic-*
      Jeśli używasz narzędzia Cassandra 1 .2 SSTable, wyniki powinny zwracać zestaw plików.db.
    3. Uruchom polecenie znajdowania:
      > find . -name *-hf-*
      Wyniki powinny być puste, co oznacza, że żadne pliki .db nie są w formacie hf. Jeśli nie widzisz żadnych plików w formacie hf, wszystko jest gotowe i możesz uaktualnić pakiet do wersji 4.15.07.00.

      Format hf jest przeznaczony dla SSTables Cassandra 1.0. Jeśli masz pliki *.db w formacie hf, musisz uaktualnić SSTable zgodnie z opisem w pozostałej części tej procedury.
  2. Jeśli znajdziesz pliki *.db w formacie hf, uaktualnij SSTable, uruchamiając to polecenie w każdym węźle Cassandra do czasu uaktualnienia wszystkich węzłów Cassandra:
    > /<install-root>/apigee4/share/apache-cassandra/bin/nodetool -h localhost upgradesstables -a
  3. Powtórz krok 1, aby sprawdzić, czy wszystkie pliki *.db są w formacie ic dla Cassandra 1.2.
  4. Powtórz kroki od 1 do 3 w każdym węźle Cassandra w instalacji Edge.
  5. Uaktualnij do wersji Edge 4.15.07.00.
  6. Po uaktualnieniu do wersji 4.15.07.00 sprawdź pliki *.db, aby upewnić się, że zostały uaktualnione do wersji stabilnej C* 2.0:
    > cd /<install-root>/apigee4/data/cassandra/data
    > znajdź . -name *-jb-*

    Jeśli korzystasz z Cassandra 2 .0, to polecenie powinno zwrócić zestaw plików.db.

Nowe funkcje i ulepszenia

Poniżej znajdziesz opis nowych funkcji i ulepszeń wprowadzanych w tej wersji.

Instalacja i aktualizacja

Selektywne uaktualnianie i odinstalowywanie komponentów

Skrypty apigee-upgrade.sh i apigee-install.sh umożliwiają teraz wybranie komponentów Edge do uaktualnienia lub odinstalowania. Wcześniej uaktualniał lub odinstalował wszystkie komponenty w węźle. (OPDK-1377, OPDK-1175)

Przywracanie uaktualnienia

Jeśli podczas uaktualniania plik apigee-upgrade.sh nie powiedzie się, możesz wycofać uaktualnienie, korzystając ze skryptu apigee-rollback.sh. Po rozwiązaniu problemów z uaktualnieniem możesz spróbować jeszcze raz. (OPDK-1275)

Skrócone opcje skryptu instalatora

Skrypty instalacyjne nie mają już długich opcji, takich jak --help. Teraz przyjmują tylko opcje składające się z jednej litery, np. -h. (OPDK-1356)

Instalacja SmartDokumentacja

Podczas instalowania skryptu setup-smartdocs.sh przy użyciu skryptu setup-smartdocs.sh musisz podać organizację, środowisko i hosta wirtualnego, co zapewni instalację aplikacji SmartDokumentacja w oczekiwanej lokalizacji. Wcześniej wartości te były na stałe zakodowane w skrypcie. (OPDK-1310)

Uruchamiam plik update-cass-pwd-in-config.sh bez monitów

Skrypt update-cass-pwd-in-config.sh może działać bez monitów, jeśli ustawiono zmienne środowiskowe ENABLE_CASS_AUTH, CASS_USERNAME i CASS_PASSWORD. (OPDK-1309)

Platforma brzegowa

Poniżej przedstawiamy nowe funkcje platformy Edge dostępne w tej wersji.

OpenJDK 1.7 obsługiwany przez Edge Private Cloud

Ta wersja Edge obsługuje Oracle JDK 1.7 i OpenJDK 7 oraz wycofano obsługę wersji JDK 1.6. (OPDK-1187)

Pomoc dotycząca systemu operacyjnego

Apigee Edge dla Private Cloud rozszerzyło obsługę systemów operacyjnych, aby obejmowało Red Hat Enterprise Linux 6.6 i 7.0 (64-bitowe), CentOS 6.5, 6.6 i 7.0 (64-bitowy) oraz Oracle Linux 6.5.

15.07 OPDK z kodem Cassandra 2.0.15

Ta wersja instaluje Cassandra 2.0.15. Jeśli przeprowadzasz uaktualnienie do poprzedniej wersji, Twoja wersja Cassandra zostanie zaktualizowana. (OPDK-1197)

Obsługa szyfrowania SHA2 w przypadku haszowania tokenów OAuth.

Aby lepiej chronić tokeny OAuth w przypadku naruszenia bezpieczeństwa bazy danych, Edge obsługuje algorytmy SHA2 do haszowania tokenów OAuth (oprócz SHA1). Dzięki nowym właściwościom na poziomie organizacji możesz włączyć i skonfigurować haszowanie nowych tokenów oraz zachować starsze metody haszowania wszystkich tokenów, które istniały przed wprowadzeniem tej nowej funkcji. Wcześniej w Edge dla Private Cloud właściwość o nazwie hash.oauth.tokens.enabled w pliku keymanagement.properties (na serwerze zarządzania i podmiotach przetwarzających wiadomości) włączała automatyczne szyfrowanie tokenów OAuth za pomocą SHA1. Ta właściwość została wycofana.

Jeśli do włączania haszowania SHA1 służyła wcześniej właściwość hash.oauth.tokens.enabled, skrypt uaktualniania tej wersji automatycznie wygeneruje za Ciebie nowe usługi na poziomie organizacji. Aby to sprawdzić po uaktualnieniu, wykonaj żądanie GET jako administrator systemu z tym interfejsem API: https://{host}:{port}/v1/o/{twoja_organizacja}.

  • Informacje o włączaniu haszowania tokenów w organizacji z nowymi właściwościami znajdziesz w sekcji „Haszowanie tokenów w bazie danych” w temacie Żądanie tokenów dostępu.
  • Informacje o zbiorczym szyfrowaniu istniejących tokenów znajdziesz w przewodniku po operacjach Edge for Private Cloud. (APIRT-1389)

Płaska struktura katalogów na potrzeby plików dziennika

Możesz skonfigurować Edge tak, aby pliki dziennika były przechowywane w płaskiej strukturze katalogów, ustawiając dla nowej właściwości enable.flat.directory.structure wartość true w pliku message-logging.properties. Więcej informacji znajdziesz w artykule Zasady rejestrowania wiadomości. (APIRT-1394)

Wydajność pamięci podręcznej środowiska

Aby usprawnić zarządzanie i wykorzystanie pamięci podręcznej, ustawienia „Maksymalna liczba elementów w pamięci” zasobów pamięci podręcznej środowiska zostały wycofane. Łączna liczba elementów dostępnych we wszystkich zasobach pamięci podręcznej (w tym w domyślnej pamięci podręcznej) zależy od łącznej ilości pamięci przydzielonej do pamięci podręcznej. Domyślnie łączna ilość pamięci przydzielonej do buforowania w pamięci przez dany procesor wiadomości wynosi 40% łącznej dostępnej pamięci, zgodnie z ustawieniami właściwości pamięci podręcznej w pliku cache.properties procesora wiadomości. Elementy są usuwane z pamięci podręcznej tylko wtedy, gdy pamięć podręczna jest niewystarczająca, lub elementy tracą ważność.

Aby przywrócić poprzedni sposób korzystania z właściwości „Maksymalna liczba elementów w pamięci” do zarządzania pamięcią podręczną, ustaw właściwość overrideMaxElementsInCacheResource=false w pliku cache.properties. (APIRT-1140)


Usługi interfejsu API

Poniżej znajdziesz listę nowych funkcji usług interfejsu API dostępnych w tej wersji.

Nowy edytor proxy jako domyślny

Nowy edytor proxy interfejsu API jest domyślnie włączony w interfejsie zarządzania. Nowy edytor udostępnia wiele ulepszeń w zakresie łatwości obsługi, w tym bardziej kompleksowe widoki przepływów warunkowych i punktów końcowych na stronie Przegląd, wszystkie konfiguracje na stronie Programowanie, bardziej intuicyjne dodawanie przepływów warunkowych, punktów końcowych i zasad, bardziej kompletne widoki XML (zamiast małych fragmentów) oraz wyszukiwanie, które indeksuje nazwy plików i tekst. (MGMT-2279)

Nowa zasada usuwania danych OAuth w wersji 2.0

Nowa zasada „Usuń informacje o protokole OAuth w wersji 2.0” umożliwia usuwanie tokenów dostępu i kodów autoryzacji OAuth v2. Ta zasada zastępuje funkcję oferowaną wcześniej przez interfejs API zarządzania. Więcej informacji znajdziesz w artykule o usuwaniu informacji o zasadach OAuthV2. (MGMT-2257)

Nowa zasada usuwania informacji o protokole OAuth w wersji 1.0

Nowa zasada „Usuń informacje o protokole OAuth w wersji 1.0” umożliwia usuwanie tokenów żądań OAuth 1.0, tokenów dostępu i kodów weryfikacyjnych. Zasada zastępuje funkcję oferowaną wcześniej przez interfejs API zarządzania. Więcej informacji znajdziesz w artykule na temat usuwania zasad usuwania informacji o protokole OAuth V1. (APIRT-1351)

Zasady kontroli dostępu

Zasada kontroli dostępu została udoskonalona, aby umożliwić bardziej szczegółową ocenę adresów IP do dodawania do listy dozwolonych i do listy odrzuconych, jeśli adresy IP znajdują się w nagłówku HTTP X-FORWARDED-FOR.

Gdy w nagłówku jest włączone sprawdzanie wielu adresów IP (skontaktuj się z zespołem pomocy, aby ustawić funkcję function.enableMultiXForwardCheckForACL), nowy element <ValidateBasedOn> w zasadzie umożliwia sprawdzanie pod kątem pierwszego adresu IP, ostatniego adresu IP lub wszystkich adresów IP w nagłówku. Więcej informacji znajdziesz w artykule Zasady kontroli dostępu.

Nowe encje w zasadach dostępu do encji

Zasada dotycząca jednostki dostępu zapewnia dostęp do tych nowych elementów: zakresy kluczy klienta, kod autoryzacji, requesttoken i weryfikator. Więcej informacji znajdziesz w artykule o zasadach dotyczących jednostek dostępu.

Zasada dotycząca kolektora statystyk: automatyczne przekształcanie nazw statystyk na małe litery

Gdy tworzysz niestandardową kolekcję danych analitycznych w edytorze proxy interfejsu API (strona Programowanie > Narzędzia > Niestandardowa kolekcja Analytics), zmienna kolektora (statystyka) „Nazwa” musi być zapisana małymi literami. Jeśli wpiszesz nazwę wielkimi literami, narzędzie automatycznie zmieni ją na małe litery w zasadzie kolektora statystyk. (MGMT-740)

Usunięcie klasycznego systemu Trace w edytorze proxy interfejsu API

Najnowsza wersja funkcji śledzenia w edytorze proxy interfejsu API została przeniesiona z wersji beta do ogólnej dostępności. Dostęp do klasycznego logu czasu za pomocą linku „Dostęp do klasycznej wersji śledzenia” nie jest już dostępny.

Dostęp do społeczności Apigee z menu pomocy w interfejsie zarządzania

Dostęp do społeczności Apigee możesz uzyskać z menu pomocy interfejsu zarządzania.

Komunikaty o błędach w interfejsie zarządzania

Oto ulepszenia w komunikatach o błędach w interfejsie zarządzania:

  • Interfejs zarządzania używany do grupowania i wyświetlania w interfejsie wszystkich komunikatów o błędach przez całą sesję logowania, chyba że je zamkniesz. W ramach tej aktualizacji komunikaty o błędach są automatycznie usuwane, gdy opuścisz stronę, na której się pojawiły. (MGMT-2254)
  • Interfejs zarządzania nie pomija już zduplikowanych komunikatów o błędach. (MGMT-2242)

Ulepszenia wydajności interfejsu i poprawiania błędów

Wprowadziliśmy ogólne ulepszenia w różnych obszarach interfejsu zarządzania, m.in. w zakresie wydajności wyświetlania stron i czyszczenia komunikatów o błędach.

Na stronie Użytkownicy organizacji w interfejsie zarządzania (Administrator > Użytkownicy organizacji) nazwy ról są teraz przekształcane w hiperlinki, co pozwala szybko przechodzić do stron ról. (MGMT-1055)

Nowe zmienne docelowe w przepływie wiadomości

Nowe zmienne w przepływach wiadomości dostarczają dokładniejsze informacje o adresach URL docelowych punktów końcowych i serwerów docelowych:

  • Docelowy punkt końcowy: request.url zastępuje target.basepath.with.query.
  • Serwer docelowy: loadbalancing.targetserver zastępuje targetserver.name. Wartość target.basepath jest też wypełniana tylko wtedy, gdy w elemencie HTTPTargetConnection elementu <Path> elementu TargetEndpoint jest używany element <Path>.<LoadBalancer>

Obsługa SNI

Edge obsługuje korzystanie ze wskaźnika nazw serwera w kierunku południowym (od procesora wiadomości do docelowych punktów końcowych). Jeśli chcesz używać SNI, skontaktuj się z zespołem pomocy Apigee.

Wymagana jest wersja Java 1.7.

Dzięki SNI, który jest rozszerzeniem protokołu TLS/SSL, wiele celów HTTPS może być udostępnianych z tego samego adresu IP i portu bez konieczności używania tego samego certyfikatu we wszystkich miejscach docelowych.

Żadna konfiguracja brzegowa nie jest wymagana. Jeśli środowisko jest skonfigurowane pod kątem SNI w kierunku południowym (domyślnie jest to chmura brzegowa), Edge obsługuje to narzędzie.

Edge automatycznie wyodrębnia nazwę hosta z adresu URL żądania i dodaje ją do żądania uzgadniania połączenia SSL. Jeśli na przykład host docelowy to https://example.com/request/path, Edge dodaje rozszerzenie https://example.com/request/path, jak pokazano poniżej:

Więcej informacji o SNI znajdziesz na stronie http://en.wikipedia.org/wiki/Server_Name_Indication.

„Signature Algorithm” (Algorytm podpisu) w szczegółach certyfikatów SSL.

Do szczegółów certyfikatu SSL zostało dodane nowe pole „Algorytm podpisu”, które można wyświetlić w interfejsie zarządzania (Administracja > Certyfikaty SSL) i interfejsie API do zarządzania (Pobierz szczegóły certyfikatu z magazynu kluczy lub Truststore). W zależności od typu algorytmu szyfrowania użytego do wygenerowania certyfikatu pole ma wartość „sha1WithRSAEncryption” lub „sha256WithRSAEncryption”.

Wyświetlam certyfikaty SSL, które wkrótce wygasną

Strona Certyfikaty SSL w interfejsie zarządzania (Administrator > Certyfikaty SSL) wskazuje, kiedy certyfikaty SSL wygasają w ciągu 10, 15, 30 lub 90 dni, w zależności od wyboru w polu nowego okresu ważności.

Konfiguracja błędu ochrony przed zagrożeniami

Domyślnie Edge zgłasza kod stanu HTTP 500 dotyczący wewnętrznego błędu serwera oraz błąd ExecutionFailed, jeśli wiadomość nie przekracza zasady ochrony przed zagrożeniami w formacie JSON lub XML. Możesz zmienić działanie tego błędu za pomocą nowej usługi na poziomie organizacji. Gdy ustawisz właściwość organizacji features.isPolicyHttpStatusEnabled na wartość „true” (prawda), zachodzi te działania:

  • Żądanie: jeśli do przepływu żądań jest dołączona zasada ochrony przed zagrożeniami, nieprawidłowe wiadomości zwracają kod stanu 400 i odpowiedni komunikat o błędzie związanym z zasadami.
  • Odpowiedź: jeśli do przepływu odpowiedzi są dołączone zasady ochrony przed zagrożeniami, nieprawidłowe wiadomości nadal zwracają kod stanu 500 i wysyłany jest jeden z odpowiednich komunikatów o błędach związanych z zasadami (a nie tylko ExecutionFailed).

Aby ustawić właściwość organizacji, klienci korzystający z Cloud muszą skontaktować się z zespołem pomocy Apigee. Ta funkcja będzie dostępna dla klientów Edge Private Cloud w następnej wersji kwartalnej Private Cloud.

Zaktualizowane schematy punktów końcowych, serwerów proxy i innych encji

Schematy referencyjne zostały zaktualizowane dla encji niebędących zasadami, takich jak TargetEndpoint, ProxyEndpoint, APIProxy. Więcej informacji znajdziesz na stronie https://github.com/apigee/api-platform-samples/tree/master/schemas. (APIRT-1249)


Usługi dla deweloperów

Poniżej znajdziesz listę nowych funkcji usług dla deweloperów wprowadzonych w tej wersji.

Ogólna dostępność SmartDokumentacja

Przekształcamy wersję beta funkcji SmartDokumenty w ogólne. Aktualizacje i nowe funkcje obejmują:

  • Obsługa Swagger 2.0, w tym możliwość importu według pliku lub adresu URL, w tym obsługa obiektów zabezpieczeń o niestandardowych nazwach.
  • Ulepszenia wizualne w szablonach do generowania SmartDokumentów.
  • Ulepszenia w zakresie łatwości obsługi i przepływów pracy w Portalu dla programistów dostępne w menu Treści > Inteligentne dokumenty w Drupal
  • Uwierzytelnianie, które było znane jako „token niestandardowy”, nosi teraz nazwę „klucz interfejsu API”.
  • Obiekty „zabezpieczeń” uwierzytelniania zdefiniowane na poziomie wersji.
  • Konfiguracja uwierzytelniania klienta na poziomie szablonu. Nowe wersje nie resetują już żadnych wstępnie skonfigurowanych danych logowania klienta SmartDokumentacja.

Więcej opisów funkcji znajdziesz w tym poście na blogu.

Dokumentację SmartDokumentacja znajdziesz w artykule Używanie SmartDokumentów do dokumentowania interfejsów API.

Nazwa aplikacji dewelopera wyświetlana w interfejsie zarządzania

Aplikacje dla programistów w Edge mają zarówno nazwę wewnętrzną, która się nie zmienia, oraz nazwę wyświetlaną, którą możesz zmienić. Na stronie aplikacji dewelopera w interfejsie zarządzania (Publikowanie > Aplikacje dla deweloperów > nazwa aplikacji) jest wyświetlana wewnętrzna „Nazwa” aplikacji wraz z „wyświetlaną nazwą”, co ułatwia wizualizację aplikacji na podstawie ich wewnętrznych nazw na potrzeby rozwiązywania problemów i zarządzania interfejsem API.


Usługi analityczne

Poniżej przedstawiamy nowe funkcje usług Analytics wchodzących w skład tej wersji.

Limit czasu przechowywanych danych

Jeśli generujesz raporty analityczne za pomocą interfejsu użytkownika lub interfejsu API zarządzania, dane starsze niż 6 miesięcy od bieżącej daty są domyślnie niedostępne. Jeśli chcesz uzyskać dostęp do danych starszych niż 6 miesięcy, skontaktuj się z zespołem pomocy Apigee.

Klasyczna wersja raportów niestandardowych usuwana z interfejsu zarządzania

Opcjonalna klasyczna wersja niestandardowych raportów analitycznych nie jest już dostępna w interfejsie zarządzania.

Skuteczność widżetu Zaangażowanie dewelopera

Ulepszyliśmy widżet ścieżki w głównym panelu statystyk (sekcja Zaangażowanie dewelopera), aby zwiększyć skuteczność.


Zarabianie

Poniżej opisujemy nowe funkcje zarabiania dostępne w tej wersji.

E-maile z powiadomieniami dotyczącymi planu taryf

Nowy typ powiadomienia e-mail w ramach abonamentu pozwala powiadamiać deweloperów o osiągnięciu określonej transakcji lub limitu dolarów w zakupionych przez nich abonamentach z określonymi zakresami ilości lub cenami pakietowymi. Szczegółowe informacje znajdziesz w artykule o konfigurowaniu powiadomień za pomocą szablonów powiadomień.

Synchronizacja okresów opłaty cyklicznej i podstawy agregacji

W planie opłat mogły obowiązywać potencjalnie 2 różne okresy:

  • Cykliczny okres opłaty skonfigurowany na karcie Opłaty abonamentu, który określał, kiedy deweloperzy zostali obciążeni cykliczną opłatą.
  • Okres obowiązywania podstawy agregacji, zdefiniowany w arkuszu stawek w przypadku abonamentów z objętymi zakresami lub pakietami, który został określony, gdy deweloperzy wrócili do korzystania z pakietów.

Te dwa okresy są teraz zsynchronizowane. Jeśli w planie stawek występują zarówno opłata cykliczna o wartości innej niż zero, jak i karta stawek z ograniczeniem ilościowym lub z opłatą za pakiet, okres opłaty cyklicznej obowiązuje w obu przypadkach. Jeśli na przykład obowiązuje miesięczna opłata cykliczna, pakiety arkuszy stawek są też resetowane co miesiąc (domyślnie na początku miesiąca).

Jeśli nie ma opłaty cyklicznej, pakiety są resetowane na podstawie podstawy agregacji zdefiniowanej w arkuszu stawek. Jeśli na przykład deweloper zacznie używać arkusza stawek 19 dnia miesiąca, a podstawa agregacji jest ustawiona co miesiąc, użycie pakietów zostanie zresetowane miesiąc po 19 dniu miesiąca.

Podstawa agregacji jest wycofywana i zostanie usunięta z funkcji zarabiania w przyszłej wersji. Więcej informacji znajdziesz w artykule Określanie szczegółów abonamentu w arkuszu stawek.

Atrybuty niestandardowe w zbiorczych raportach o przychodach

Zasady rejestrowania transakcji pozwalają opcjonalnie rejestrować dane atrybutów niestandardowych z transakcji. Możesz teraz uwzględniać te niestandardowe atrybuty transakcji w podsumowaniach raportów o przychodach. Po dodaniu do organizacji właściwości MINT.SUMMARY_CUSTOM_ATTRIBUTES możesz określić, które atrybuty niestandardowe mają być dodawane do tabel bazy danych i używane w raportach.

Klienci Apigee Edge dla Private Cloud mogą ustawić tę flagę za pomocą poniższego wywołania interfejsu API i danych logowania administratora systemu.

curl -u email:password -X PUT -H "Content-type:application/xml" http://host:8080/v1/o/myorg -d \
"<Organization type="trial" name="MyOrganization">
    <Properties>
        <Property name="features.isMonetizationEnabled">true</Property>
        <Property name="MINT.SUMMARY_CUSTOM_ATTRIBUTES">[&quot;my_attribute_1&quot;,&quot;my_attribute_2&quot;]</Property>
        <Property name="features.topLevelDevelopersAreCompanies">false</Property>
    </Properties>
</Organization>"

Pamiętaj, że tablica atrybutów niestandardowych w wywołaniu interfejsu API jest zakodowana na potrzeby adresu URL.


Proces uaktualniania SmartDokument

Jeśli korzystasz już z SmartDokumentów w wersji beta, nowe funkcje i możliwości dostępne w wersji ogólnodostępnej wymagają uaktualnienia tej funkcji w portalu dla programistów.

Wszystkie strony w Dokumentach inteligentnych, które zostały już opublikowane w portalu dla deweloperów, będą nadal działać, ale zanim zaczniesz edytować lub opublikować jakiekolwiek zmiany na istniejących lub nowych stronach, musisz przeprowadzić proces aktualizacji.

Pamiętaj, że chociaż w portalu dla programistów możesz renderować i publikować dokumenty SmartDokumenty, są one generowane na podstawie modelu interfejsu API działającego w ramach usług zarządzania interfejsem Edge API Apigee. Wszystkie zmiany wprowadzone w modelu API w Edge będą takie same we wszystkich środowiskach Pantheon (podobnie do programistów w środowiskach Pantheon).

Aby przejść z wersji beta Dokumentów Google na wersję ogólnodostępną

  1. Zaktualizuj i przetestuj wersję 15.05.27 w środowiskach dev lub testowych w Pantheon.
  2. Utwórz nowy model, który zastąpi dotychczasowy model interfejsu API, którego używasz.
    • Jeśli importujesz dokumenty Swagger lub WADL, zaimportuj je ponownie do nowej wersji.
    • Jeśli Twój model interfejsu API był utrzymywany za pomocą modułu SmartDokumentacja, wyeksportuj go w formacie JSON Dokumentów i zaimportuj do nowego modelu za pomocą załącznika.
  3. Ustaw właściwości zabezpieczeń wersji modelu. Na stronie Treść > SmartDokumenty > Model wybierz Ustawienia zabezpieczeń.
  4. Sprawdź wstępnie skonfigurowane uwierzytelnianie na stronie ustawień modelu (Treść > SmartDokumenty), klikając Ustawienia w kolumnie Operacje.
  5. Zaktualizuj wszystkie szablony niestandardowe, aby używać wersji 6 zasobów CSS i JS, i wprowadź zmiany, aby odzwierciedlały nowe nazwy obiektów, takie jak authSchemes i apiSchema. Więcej informacji o aktualizowaniu szablonów SmartDokumentacja znajdziesz w artykule o używaniu SmartDokumentów do tworzenia dokumentów w interfejsach API.
  6. Ponownie wyrenderuj i opublikuj wersję modelu.
  7. Po sprawdzeniu nowej dokumentacji zaktualizuj portal produkcyjny do wersji 15.05.27.

Jeśli jesteś klientem Edge Enterprise i masz pytania lub wątpliwości dotyczące procesu uaktualniania, wyślij e-maila na adres marsh@apigee.com i cnovak@apigee.com. W przeciwnym razie skontaktuj się z społecznością Apigee, aby uzyskać najlepszą odpowiedź.


Nadchodzące zmiany funkcji i ulepszenia

Ta sekcja zawiera informacje o spodziewanych przyszłych zmianach i ulepszeniach funkcji:

Zmiana sposobu działania zasady pamięci podręcznej odpowiedzi

W przyszłej wersji (nie zostanie jeszcze ustalona) zmieni się domyślne zachowanie elementu <ExcludeErrorResponse> w zasadzie Response Cache.

Obecne działanie: element <ExcludeErrorResponse> w zasadzie pamięci podręcznej odpowiedzi ma domyślnie wartość false (fałsz). Oznacza to, że odpowiedzi z dowolnym możliwym kodem stanu HTTP (w tym 3xx) są domyślnie przechowywane w pamięci podręcznej przez zasadę buforowania odpowiedzi.

Przyszłe zachowanie: element <ExcludeErrorResponse> w zasadzie Response Cache ma wartość domyślną „true”. Oznacza to, że domyślnie w pamięci podręcznej przechowywane są tylko odpowiedzi z kodami stanu HTTP od 200 do 205. Aby zastąpić to działanie i buforować odpowiedzi dla wszystkich kodów stanu, musisz wyraźnie ustawić dla elementu <ExcludeErrorResponse> wartość true.

Obecne obejście: w przypadku Private Cloud 4.15.07.00 i starszych wersji, jeśli chcesz buforować odpowiedzi tylko z kodami stanu od 200 do 205, musisz wyraźnie ustawić element <ExcludeErrorResponse> (Wyklucz błąd) na „true”.


Naprawione błędy

Poprawiliśmy w niej wymienione niżej błędy.

Identyfikator problemu Opis
OPDK-1521 Problem z szyfrowaniem hasła
OPDK-1201 Nie można przywrócić danych interfejsu
OPDK-1112 Niestandardowe zasady dotyczące haseł LDAP nie są stosowane do administratora Apigee
OPDK-1097 Wyjątek dotyczący przestrzeni kluczy podczas uaktualniania OPDK
OPDK-1068 Możliwość zmiany hasła administratora, jeśli podczas instalacji nie uda się tego zrobić
OPDK-1053 Zookeeper działa jako użytkownik root
OPDK-967 Gdy ustawisz OpenLDAP na automatyczne uruchamianie przy użyciu set-autostart.sh, usługa all-status.sh zgłasza ją jako niedziałającą
OPDK-905 Usługa Smartdocs prod jest już zarejestrowana w grupie axgroup001
OPDK-899 Błąd podczas wprowadzania
OPDK-847 Użytkownik utworzony podczas wprowadzania nie otrzyma e-maila z prośbą o zresetowanie hasła
OPDK-817 skrypty init.d zwracają błąd
OPDK-815 Skrypt ax-purge.sh wymaga trwałego usunięcia tabel próbkowania
MGMT-2246 Strona tworzenia raportu niestandardowego nie wyświetla się prawidłowo w interfejsie zarządzania
MGMT-2235 W przypadku wygasających certyfikatów SSL względny czas wygaśnięcia może być łudząco zaokrąglany.
W przypadku wygasających certyfikatów SSL względny czas ważności certyfikatów SSL jest zawsze podawany w dniach, a nie do miesięcy, gdy certyfikat wygasa za maksymalnie 90 dni.
MGMT-2193 Wskaźnik wczytywania podczas edytowania interfejsu API
MGMT-2173 Interfejs śledzenia nie zezwala na legalne adresy URL
Interfejs śledzenia umożliwia teraz wysyłanie żądań z wartościami parametrów zapytania, które zawierają zagnieżdżone parametry zapytania.
MGMT-2162 Problem z kompilacją JavaScriptu
MGMT-2124 Uprawnienia roli klienta są resetowane po zapisaniu uprawnień w interfejsie
MGMT-2114 Nieprawidłowy adres IP protokołu Syslog w zasadzie MessageLogging podczas wdrażania
MGMT-2067 Śledzenie: jeśli wersja serwera proxy interfejsu API została wdrożona w 2 środowiskach, wybór wersji i środowiska nie będzie działać prawidłowo
MGMT-2061 Nie pamiętam hasła powinno wysyłać e-maile tylko do zarejestrowanych użytkowników
Link „Nie pamiętasz hasła?” na stronie logowania w interfejsie zarządzania wysyła e-maile tylko do zarejestrowanych użytkowników Apigee.
MGMT-2048 Użytkownik z rolą niestandardową, która ogranicza uprawnienia wdrożeniowe do jednego środowiska, może wdrażać je w innych
MGMT-2041 Usuwanie elementu FaultRules z domyślnego szablonu załącznika
Element FaultRules, który nie jest używany w zasadach ani krokach serwera proxy interfejsu API, nie jest już automatycznie dodawany podczas tworzenia serwerów proxy interfejsu API lub dodawania zasad.
MGMT-2034 Błąd pobierania WSDL: błąd pobierania WSDL: błąd podczas przetwarzania WSDL.
MGMT-1986 Błąd interfejsu podczas dodawania dewelopera
MGMT-1983 Pobieranie interfejsu API kodu autoryzacji OAuth 2.0 zwraca nieprawidłowy stan
MGMT-1962 Błąd podczas logowania się w interfejsie zarządzania przy użyciu silnego hasła
Logowanie się w interfejsie użytkownika przy użyciu niektórych znaków specjalnych, takich jak znak procentu, już się nie kończy.
MGMT-1947 Nieintuicyjne role w interfejsie zarządzania
Jeśli użytkownik nie ma uprawnień do tworzenia lub edytowania zasad rejestrowania transakcji, przyciski interfejsu umożliwiające tworzenie i edytowanie zasad rejestrowania transakcji są teraz wyłączone.
MGMT-1899 Ścieżki zasobów zostały usunięte po zapisaniu ustawień usługi
Podczas edytowania usługi API ścieżki zasobów tej usługi mogą zostać usunięte, gdy użytkownik dwukrotnie kliknie przycisk Zapisz. Naprawiliśmy ten problem.
MGMT-1894 Strona Aplikacje dla deweloperów nigdy się nie wczytuje
MGMT-1882 Nowy serwer proxy interfejsu API z WSDL wyświetla tylko szczegóły ostatniego parametru
MGMT-1878 Jeśli w środowisku wdrożono wiele wersji, narzędzie Trace wyświetli tylko jedną z nich
MGMT-1872 Brak możliwości pobrania raportów niestandardowych
MGMT-1863 Logów Node.js nie można wyświetlać w interfejsie zarządzania
MGMT-1843 Serwer proxy interfejsu API nie otwiera się
MGMT-1833 Użytkownik sysadmin nie powinien mieć opcji zmiany hasła w interfejsie użytkownika OPDK
MGMT-1825 Błędy związane ze skryptami cross-site scripting (XSS)
MGMT-1824 Błąd pobierania WSDL podczas importowania pliku WSDL z rozszerzeniem .xml
MGMT-1812 Dodawanie weryfikacji punktu końcowego docelowego podczas importu
Podobnie jak w przypadku punktu ProxyEndpoint punkt docelowy zostanie zweryfikowany pod kątem właściwego schematu i wyrażeń używanych w warunkach podczas importowania serwera proxy interfejsu API.
MGMT-1804 W niektórych przypadkach interfejs Node.js API wysyła nieprawidłowy kod JSON
Ekran logów Node.js wyświetla niesformatowane logi, jeśli dane JSON zawierały nieprawidłowe znaki. W tej wersji rozwiązaliśmy ten problem i w interfejsie użytkownika są teraz wyświetlane prawidłowo sformatowane logi No.js.
MGMT-1802 url do resetowania hasła #118
Jeśli interfejs zarządzania znajduje się za serwerem kończącym protokół SSL, teraz prawidłowo generuje on e-maila umożliwiającego zresetowanie hasła z linkiem do adresu URL HTTPS zamiast do adresu URL HTTP.
MGMT-1799 Wysłanie żądania luki w zabezpieczeniach interfejsu użytkownika w logowaniu
MGMT-1777 Nie można dodać użytkownika z adresem e-mail w domenie .acn
MGMT-1735 „Błąd podczas pobierania marki W”
Od teraz wycofaliśmy obsługę niestandardowego promowania marki w interfejsie Edge OPDK. Zdajemy sobie sprawę, że może to rozczarować niewielu klientów, którzy z niej korzystają, ale nie jest to funkcja, która bezpośrednio zwiększa możliwości Edge w zakresie zarządzania interfejsami API.
MGMT-1569 Problem z podłączeniem serwera proxy interfejsu API do istniejącej usługi API
Rozwiązaliśmy problem z dołączaniem serwera proxy interfejsu API do usługi API w interfejsie zarządzania, gdy serwer proxy interfejsu API miał zasób dla ścieżki „/”.
MGMT-1563 Przycisk wysyłania w śledzeniu pozostaje wyłączony w przypadku napotkania błędu
MGMT-1362 Adres e-mail nie pamiętam hasła nie działa, jeśli adres e-mail zawiera znak „_”
Rozwiązuje problem z resetowaniem hasła w OPDK w przypadku adresów e-mail zawierających podkreślenie.
MGMT-1345 Import WSDL z wieloma przestrzeniami nazw powoduje nieprawidłowy krok kompilacji SOAP
MGMT-1193 Zapisywanie serwera proxy jako nowej wersji nieoczekiwanie zmienia regułę trasy
MGMT-1061 SmartDocuments: opis parametru typu ciała w definicji Swagger nie jest widoczny w interfejsie dokumentu
MGMT-800 Tworzenie zasobu o nazwie „default” powoduje uszkodzenie interfejsu
MGMT-787 Problem z obsługą alertu w interfejsie
Gdy w interfejsie zarządzania klikniesz + Serwer proxy interfejsu API i pojawi się okno Nowy serwer proxy interfejsu API, możesz nacisnąć Esc, aby je zamknąć.
MGMT-619 Włącz podział na strony na stronie interfejsu API serwera proxy
MGMT-602 Widok tworzenia serwera proxy interfejsu API: dodaj zasadę pamięci podręcznej odpowiedzi, gdy punkt końcowy nie ma funkcji PreFlow/PostFlow powoduje błąd
MGMT-460 Zmiana nazwy zasady powoduje zakłócenie działania i zduplikowaną zasadę, której nie można usunąć
DEVRT-1644 Wyszukiwanie powiadomień według nazwy powodujące wysyłanie nieprawidłowych e-maili
DEVRT-1583 Interfejs zarabiania z plakietką „Przyszłość” przy bieżącym planie taryfowym
DEVRT-1546 Limity abonamentów nie działają
DEVRT-1511 Błąd mint.resourceDidNotExist w przypadku istniejącego programisty
CORERT-639 TCPSysLogSocket musi być asynchroniczny
CORERT-613 Nieudane uzgadnianie połączenia SSL z powodu błędu „unrecognized_name”
AXAPP-1728 Ignorowanie zmiennych zarabiania w Analytics
AXAPP-1708 Wygląda na to, że interfejs Analytics API generuje różne liczby dla tych samych statystyk w zależności od tego, jak bardzo zapytam.
AXAPP-1707 Zwiększanie skuteczności statystyk bezpłatnych bloków reklamowych
AXAPP-1690 „Nieprawidłowy błąd interfejsu API” w raportach niestandardowych
AXAPP-1533 Geomapa Analytics zgłasza błąd nieprawidłowego wywołania interfejsu API
AXAPP-1493 Nieprawidłowe statystyki wydajności pamięci podręcznej
APIRT-1436 Utwórz narzędzie/skrypt do haszowania niezaszyfrowanych tokenów
APIRT-1425 AtrybutcontinueOnError ustawiony na „true” nie ma wpływu na zasadę JavaCallout.
APIRT-1346 Protokół OAuth2.0 – zaszyfrowana wartość jest zwracana w odpowiedzi tokena dostępu, gdy parametr hash.oauth.tokens.enabled ma wartość prawda
APIRT-1206 Parametr target_ip nie jest rejestrowany w tabeli faktów w przypadku błędów 503 i większości kodów 504.
APIRT-1170 Brak pliku zasobów spowodował, że MP nie udało się wczytać środowiska
APIRT-1148 GET ze zmienną {message.version} w ResponseFlow dla celu w Node.js zgłasza NPE
APIRT-1054 Logowanie wiadomości kończy się niepowodzeniem podczas próby zalogowania się do katalogu innego niż domyślny
APIRT-387 Uruchamianie usługi OrganizationService na podstawie typu „others” (MP)
APIRT-67 Zasada OAuth GenerateAccessToken nie ustawia prawidłowo zmiennej oauthV2.failed
APIRT-52 Raporty niestandardowe: kod stanu odpowiedzi dla wielu interfejsów API ma wartość null

Znane problemy

W tej wersji występują opisane poniżej znane problemy.

Identyfikator problemu Opis
OPDK-1586

Portal API BaaS nie uruchamia się, jeśli nie jest włączona obsługa IPV6
Aby obejść ten problem, skomentuj ten wiersz IPV6 w /<install-dir>/apigee4/conf/nginx/conf.d/loadbalancer.conf aby uruchomić API BaaS Portal lub włączyć obsługę IPV6:

# listen [::]:8080;

OPDK-1785

Zainstaluj komponent zarabiania w uaktualnionym środowisku zainstalowanym Edge
Jeśli uaktualnisz instalację Edge do wersji 4.15.07.00 i przed uaktualnieniem nie korzystasz jeszcze z funkcji zarabiania, nie będziesz mieć możliwości instalowania przeglądarki Edge w wersji 4.15.07.00.

Aby obejść ten problem, przed zainstalowaniem funkcji Zarabianie ustaw odpowiednią wersję funkcji zarabiania w pliku apigee-env.sh. Aby uruchomić funkcję Monetization w wersji 4.15.07 (po zaktualizowaniu do Edge 4.15.07):
> source /{install-dir}/apigee4/bin/apigee-env.sh 

> VER=`basename $(find $SHARE_DIR/installer/monetization -name "mint-*.zip") | cut -d "-" -f 2,3,4` 
Domyślną wartością parametru install-dir jest /opt.
Wartość VER musi być ustawiona w apigee-env.sh:
> sed -i "s/^MONETIZATION_VERSION=.*/MONETIZATION_VERSION=$VER/" /install-dir/apigee4/bin/apigee-env.sh 
Jeśli spróbujesz zainstalować funkcję Monetization bez wykonywania powyższych czynności, instalacja zakończy się niepowodzeniem, a w katalogu udostępniania znajduje się martwy dowiązanie symboliczne. Musisz usunąć ten dowiązanie symboliczne:
> rm /install-dir/apigee4/share/monetization 
Po usunięciu linku symbolicznego wykonaj powyższe czynności, aby ustawić wersję funkcji Zarabianie, a następnie spróbuj ponownie zainstalować tę funkcję.
OPDK-1857 Zakodowana na stałe wersja Pythona 2.6 w bin/qpid-stat.sh i bin/qpid-config.sh

W CentOS i RedHat 7.0 kilka skryptów w plikach bin/qpid-stat.sh i bin/qpid-config.sh jest zakodowanych na stałe tak, aby używały Pythona w wersji 2.6.

Obejściem tego problemu jest zmiana wiersza eksportującego PYTHONPATH w katalogach qpid-stat.sh i qpid-config.sh w katalogu apigee4/bin.

export PYTHONPATH="${QPID_DIR}/lib/python2.6/site-packages"

Aby określić wersję Pythona w systemie, sprawdź ją w katalogu /opt/apigee4/share/apache-qpid/lib. Prawdopodobnie jest to python2.7.

Następnie musisz zaktualizować ustawienie PYTHONPATH w qpid-stat.sh i qpid-config.sh, podając prawidłową ścieżkę. Na przykład:

export PYTHONPATH="${QPID_DIR}/lib/python2.7/site-packages"

DEVRT-1574 Niespójne saldo i niespójne wykorzystanie w przypadku deweloperów z wieloma aktywnymi planami taryfowymi
Jeśli deweloper korzysta z więcej niż 1 abonamentu, w którym naliczane są opłaty za wywołania interfejsu API, wykorzystanie salda pieniężnego może być czasami niespójne.
APIBAAS-1647 Gdy zalogujesz się jako administrator sys, interfejs BaaS wyświetli komunikat o błędzie „Błąd podczas pobierania ról”
Ten komunikat o błędzie pojawia się przy pierwszym logowaniu się w systemie przez administratora Sys po uaktualnieniu z wersji 4.15.01 do 4.15.07. Możesz zignorować tę wiadomość.
DEVRT-1834 Zmiana wersji do wersji 4.15.07
Skrypt apigee-upgrade.sh wyświetla na końcu tę wiadomość z prośbą o wykonanie kolejnego skryptu:
************************************** 
In order to complete the monetization upgrade please run: 
sudo /opt/apigee4/share/monetization/schema/migration/MOPDK4.15.04.00/
365-create-notification-condition.sh 
************************************** 

Możesz zignorować tę wiadomość. Skrypt ten nie jest wymagany i nie można go wykonać.

DEVRT-1951 Nowa instalacja do generowania przychodu z brakującymi konfiguracjami powiadomień
W nowej instalacji Apigee Edge for Private Cloud w wersji 4.15.07.00 brakuje podanych niżej konfiguracji powiadomień dotyczących zarabiania. Odpowiadają one typom powiadomień na stronie Administracja > Powiadomienia w interfejsie zarządzania.
mint.scheduler.${IDENTYFIKATOR_ORGANIZACJI}.adhocnotify@@zarządzanie
mint.scheduler.${IDENTYFIKATOR_ORGANIZACJI}.expiringrateplannotify@@management
mint.scheduler.${IDENTYFIKATOR_ORGANIZACJI}.newpkgnotify@@zarządzanie
mint.scheduler.${IDENTYFIKATOR_ORGANIZACJI}.newproductnotify@@zarządzanie
mint.scheduler.${IDENTYFIKATOR_ORGANIZACJI}.newrateplannotify@@zarządzanie
mint.scheduler.${IDENTYFIKATOR_ORGANIZACJI}.tncAcceptancenotify@@zarządzanie
Aby obejść ten problem, wykonaj te czynności. Będziesz potrzebować adresu IP swojej instancji Cassandra. Znajdziesz je w katalogu <installation-root>/apigee4/conf/cassandra/cassandra.yaml lub <installation-root>/apigee4/conf/cassandra/cassandra-topology.properties.
  1. Uruchom następujące polecenia. Pozostaw zmienną {ORG_ID} bez zmian, ale zastąp jednostki <nazwa_organizacji>, <instalacja-główny_element> i <adres_IP>.
    sed -e "s/\${ORG_ID}/<org_name>/g" <installation-root>/apigee4/share/monetization/schema/cassandra/org/ui/mint-org-specific-ui-schedulers.txt > /tmp/mint-org-specific-ui-schedulers.txt
    
    <installation-root>/apigee4/share/apache-cassandra/bin/cassandra-cli -h <cassandra_ip_address> -f /tmp/mint-org-specific-ui-schedulers.txt
    
  2. Ponownie uruchom serwer zarządzania.
DEVRT-1952 Zmiana funkcji zarabiania z wersji 4.14.07.00 bez konfiguracji powiadomień
Po uaktualnieniu Apigee Edge dla Private Cloud z wersji 4.14.07.00 na 4.15.07.00 brakuje poniższych konfiguracji powiadomień o przychodach, co powoduje, że raporty o przychodach działają nieprawidłowo.
mint.scheduler.${IDENTYFIKATOR_ORGANIZACJI}.chargedaily@@zarządzanie
mint.scheduler.${IDENTYFIKATOR_ORGANIZACJI}.chargehourly@@management
Aby obejść ten problem, wykonaj te czynności. Będziesz potrzebować adresu IP swojej instancji Cassandra. Znajdziesz je w katalogu <installation-root>/apigee4/conf/cassandra/cassandra.yaml lub <installation-root>/apigee4/conf/cassandra/cassandra-topology.properties.
  1. Uruchom następujące polecenia. Pozostaw zmienną {ORG_ID} bez zmian, ale zastąp jednostki <nazwa_organizacji>, <instalacja-główny_element> i <adres_IP>.
    sed -e "s/\${ORG_ID}/<org_name>/g" <installation-root>/apigee4/share/monetization/schema/cassandra/org/system/mint-org-specific-system-schedulers.txt > /tmp/mint-org-specific-system-schedulers.txt
    
    <installation-root>/apigee4/share/apache-cassandra/bin/cassandra-cli -h <cassandra_ip_address> -f /tmp/mint-org-specific-system-schedulers.txt
    
  2. Ponownie uruchom serwer zarządzania.
OPDK-1878 Nie można ustawić nazwy poda w instalacji wielu centrów danych
Przewodnik instalacji brzegowej określa, że nazwy podów należy ustawić jako „gateway-1” i „gateway-2” w plikach instalacji dyskretnej instalacji z wielu centrów danych. Zmiana nazwy poda uniemożliwia jednak poprawną rejestrację routerów i procesorów wiadomości oraz dostęp do nich. Ten problem uniemożliwia też skrypt setup-org.sh w znalezieniu dostępnych procesorów wiadomości.

Obejściem problemu jest ustawienie nazwy poda za pomocą właściwości MP_POD na „gateway” w pliku instalacyjnym dyskretnym obu centrów danych.
OPDK-1886

Węzeł nie może uzyskać dostępu do lokalnych adresów IP takich jak 192.168.x.y
Podczas próby uzyskania dostępu do lokalnego adresu IP pojawia się błąd „connect EINVAL”.
Aby obejść ten problem, zmodyfikuj plik /<install_dir>/apigee4/conf/apigee/message-processor/nodejs.properties w węzłach procesora wiadomości w celu dodania komentarza do tego wiersza:

connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32

Następnie ponownie uruchom węzły procesora wiadomości:

<install_dir>/apigge4/bin/apigee-service message-processor restart 
OPDK-1958 Podczas uaktualniania wszystkie węzły będą wymagały dostępu do portu 8080 na serwerze zarządzania
W czasie działania te komponenty wymagają dostępu do portu 8080 na serwerze zarządzania: router, procesor wiadomości, interfejs użytkownika, Postgres i Qpid. Jednak podczas uaktualniania wszystkie węzły będą wymagały dostępu do portu 8080 na serwerze zarządzania, w tym do węzłów Cassandra i Zookeeper.
OPDK-1962 Po uaktualnieniu trzeba ponownie skonfigurować SSL dla interfejsu Edge API
Jeśli przed uaktualnieniem do wersji 4.15.07.00 skonfigurowano interfejs Edge API do używania SSL, po uaktualnieniu będzie trzeba ponownie skonfigurować protokół SSL. Instrukcje konfigurowania SSL dla interfejsu Edge API znajdziesz w przewodniku po operacjach Edge.