Age | Commit message (Collapse) | Author | Files | Lines |
|
When no targets are provided, webui will now default to the BMC:
i.e. "/redfish/v1/Managers/bmc"
The current version of bmcweb requires the Targets parameter.
bmcweb will be updated for multipart to match the behavior of
simpleupdate:
if Targets is empty or missing, default to the BMC.
Also, the fwupdate page will be updated soon to allow the
selection of Targets from the FirmwareInventory list.
This should be a temp webui fix until we are comfortable with
the upcoming changes to bmcweb.
Change-Id: I630dcb40068b98aad8e1d276d17fe9af4793e788
Signed-off-by: jason westover <jwestover@nvidia.com>
|
|
According to the Redfish Firmware Update Whitepaper [1]
due to the vendor-specific details of this operation,
HttpPushUri has been deprecated in favor of multipartHTTP push
updates.
Availability of update methods is determined from the UpdateService
response.
If MultipartHttpPushUri is found it will be preferred over HttpPushUri
Tested:
-Firmware update by performed via MultipartHttpPushUri
[1]: https://www.dmtf.org/sites/default/files/standards/documents/DSP2062_1.0.1.pdf
Change-Id: I184a889514d5f9f9598f35b2281404335bc0bc82
Signed-off-by: Leo Xu <yongquanx@nvidia.com>
|
|
Redfish backends other than OpenBMC bmcweb expect clients to
authenticate using X-Auth-Token HTTP header as that's the only standard
authentication method for Redfish sessions.
This code falls back to using the token in case Session creation didn't
result in obtaining an XSRF cookie (as should normally happen with
bmcweb).
Limitations: all WebSocket-based functionality can not work (JS-based
NBD Virtual Media, IP KVM, SOL), page reload drops the session and
requires to log in again.
Tested: logging in, observing Overview and successfully logging out of
an AMI MegaRAC BMC. Logging in and navigating around a bmcweb-running
system which doesn't have the code to provide cookies for Session POST
request (everything works as usual sans WS-based features).
Change-Id: I81dc881193440d8d252dcd283b99915bd08c0c5e
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
|
|
A password can expire at any moment during session lifetime and bmcweb
starts returning 403 Forbidden errors to the requests made after that.
The response contains clear indication of the condition in the standard
`@Message.ExtendedInfo` attribute which is an array of Message objects.
Previously the code was trying to detect this condition by querying
AccountService after logging in but this approach doesn't work when
password expires mid-session. Also it was limited to BMC-managed
accounts and used hardcoded account URIs in violation of Redfish spec.
This patch adds to the interceptor of 403 error so that the user is
automatically redirected to the password change page as soon as the
condition is detected.
The same message is also present in the session creation POST response
201 if the password expired before the log in attempt, in this case the
session is created as usual but the user is automatically redirected to
password change page before any further requests are made.
Tested: logging in, navigating, logging out with non-expired password.
Logging in, navigating, then running `passwd -e <accountname>` via ssh
leads to functional password change page on the next request and then
navigating proceeds normally, and logging out too. If password is
expired before logging in the user gets redirected to the password
change page automatically after logging in.
Fixes: https://github.com/openbmc/webui-vue/issues/118
Change-Id: I03f5ee2526a4bb1d35d3bbea1142fea077d6bfed
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
|
|
For event entry download, the href not work since the event entry
download only work with header of "Accept: application/octet-stream" or
the default "*/*", change to click function to make it work.
Refer: https://gerrit.openbmc.org/c/openbmc/bmcweb/+/40136
Change-Id: I11051e913bfd71ef081bed93ffcbeeb1edd8c730
Signed-off-by: Sean Zhang <xiazhang@nvidia.com>
|
|
To be able to talk to a Redfish-compliant implementation webui should
switch from old non-standard login and logout endpoints to creating a
Session via an appropriate POST request and to DELETE it on logout. This
also gives us standard Session object with all the relevant parameters
which allows the frontend to know what session it's using, what
permissions it has etc.
This works against bmcweb which checks for the presence of
webui-vue-specific "X-Requested-With" header in the request and provides
cookies in addition to the Redfish authentication token in the header.
Tested: logging in, logging out, navigating the pages, reloading the
page doesn't require logging in (if the session isn't expired),
WebSocket connections work.
Change-Id: I9d6159850b109a658b8f980637653e7e4576058b
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
|
|
- Removed TFTP server firmware update ability in the UI.
Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
Change-Id: Icbeddc7a3faa262f12e85268206ae70850f37905
|
|
Remove getLastBmcRebootTime after post BMC reboot action since BMC
connection will be lost after reboot. The last BMC reboot time will be
got after reboot BMC page loading, and after BMC reboot, user need
reload the WEB UI, so there is also no need to send Redfish request to
get the last BMC reboot time just after the post the BMC reboot action.
Change-Id: Ic5d0cbca23a61610cc387a4046b85e9c20c255ea
Signed-off-by: Sean Zhang <xiazhang@nvidia.com>
|
|
Add IPv6 setting in network setting page.
- Add IPv6 domain name, DNS servers, NTP servers enable/disable
- Add DHCPv6 enable/disable
- Add IPv6 default gateway
- Add IPv6 addresses
- Add IPv6 static addresses
- Add IPv6 static addresses adding and deleting
Tested:
- IPv6 domain name, DNS servers, NTP servers enable/disable function
- DHCPv6 enable/disable function
- Verified the IPv6 default gateway
- IPv6 addresses adding and deleting
- Verified the IPv6 addresses in IPv6 table
Change-Id: I9eebf6ef5f7de748f79779d8168b8dcfcdda2495
Signed-off-by: Sean Zhang <xiazhang@nvidia.com>
|
|
Currently, the Redfish request used fixed URIs, modify the code to use
the BMC and System paths got from response of API calls.
For CertificateStore, since it was using the URL for constant variable
assignment, changed the constant CERTIFICATE_TYPES to method call.
Change-Id: I330b7272083e3e6993aae5705aae170b8e9a4659
Signed-off-by: Sean Zhang <xiazhang@nvidia.com>
|
|
BMCWeb is dropping the support for patch for ApplyOptions, hence remove
the setApplyTimeImmediate and its corresponding usage from webui. The
related patch from bmcweb is as under -
https://gerrit.openbmc.org/c/openbmc/bmcweb/+/72150
Change-Id: I4ef64485103db843e1280bc5b8bd8be63813c368
Signed-off-by: Jagpal Singh Gill <paligill@gmail.com>
|
|
- Added success toast notification messages for identify
LEDs present at Inventory and LEDs page and Overview.
- Import of Toast was not present in Overview's Inventory
card and DIMM slot table, fixed it.
Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
Change-Id: If9ad84e66f6f15616cb8af51b1e84d8d06b1afd0
|
|
- Unable to generate Certificate Signing Request (CSR) when filling
optional field-Challenge password values on Certificate page.
- Hence, removed the Challenge password option from the Generate
CSR panel.
Change-Id: I862f024de84f34738be5e5cd22701b63c2309152
Signed-off-by: Vedangi Mittal <vedangimittal3004@gmail.com>
|
|
For accounts authenticated remotely (e.g. with LDAP or RADIUS) the API
endpoint (handled by bmcweb) can not provide any information about
RoleId currently, reporting 404 instead. This confuses the frontend and
it doesn't allow to navigate at all.
Fix this by lifting all frontend-side restrictions by assuming
'Administrator' role in this case. Since the backend verifies validity
of each and every request anyway this doesn't affect security anyhow.
Tested: logging in, out and incorrectly using local BMC and remote LDAP
users, reloading the page with an active session. In all cases frontend
behaved as expected, storing assumed RoleId after getting 404 not found
reply and using it for unrestricted routing decisions.
Change-Id: If17d06bf0b8a372acd1980f6777227e25d9c78d8
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
|
|
To improve UX for users of accounts with restricted permissions the
frontend determines the current RoleId. Knowing that it can hide menus
and inhibit transitions that are not allowed by the backend in any case.
This patch unifies the handling by moving processing of the API reply
containing RoleId in the single place, right where
`authentication/getUserInfo` store gets it. This makes the program flow
easier to understand and change if needed without worrying of where
another copy of the code might be and how it would need to be amended.
No functional change.
Tested: logging in and out, navigating the pages, getting an error
message when wrong credentials are used, reloading the page with an
established session. All while observing Network and Console tabs in Web
Developer tools, no unexpected API requests are made and no unexpected
errors reported. Confirmed in debugger that the retrieved role gets
stored and used for routing restrictions.
Change-Id: Ia8782f44cb6bf813954d30b8bf3a620a626ad455
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
|
|
Switch Power Supply information to use information from the new
PowerSubsystem since bmcweb enabled this by default, any other modern
Redfish implementation should have this schema enabled.
Tested: On Ampere MtJade platform
1. Login to WebUI; Hardware Status; Inventory
2. Inventory information for power supplies is displayed.
Change-Id: Iad59d0145b47bcd5eb3cb4ff852e50da976a6005
Signed-off-by: HuyLe <hule@amperecomputing.com>
|
|
According to the Redfish Data Model specification the correct parameter
name for the '/Actions/Manager.ResetToDefaults' action is not
'ResetToDefaults' but 'ResetType'.
Change parameter name to match with the specification.
Tested:
Reset operation still works as expected.
Change-Id: I111001800bb812ccb32f51f78f2e02c5f4d10e7c
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
|
|
Remove VUE_APP_FAN_DATA_FROM_THERMAL_SUBSYSTEM. Assume any Redfish
implementation we are using has the new ThermalSubsystem. bmcweb, the
only webserver, webui-vue supports today, enabled this by default at
https://gerrit.openbmc.org/c/openbmc/bmcweb/+/69228
ThermalSubsystem, PowerSubsystem has been out since 2020.4, so it is
reasonable to assume it is there in any modern Redfish
implementation.
Tested: Nabil tested and verified this worked.
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
Change-Id: I4952daf30f9b654234dd0e838adebc38cc8c380f
|
|
All changes should be whitespace, and were done using npm run-script
lint.
Change-Id: I943c6b435c5c872841af5affc1e89910468b5ca6
Signed-off-by: Ed Tanous <ed@tanous.net>
|
|
Issue: when clicking the Refresh button at top right corner of the
WebUI, sensors that were removed from Redfish are not removed from the
WebUI but still shown with old sensor values.
Root cause: current code keeps a list of sensors. Click on Refresh
button just checks and updates sensors returned by Redfish, it does not
check if sensors are still present or not. This is incorrect for
sensors on hot plug devices or PLDM sensors when the sensor source is
not available. In this case, sensors are completely removed instead of
just their values changed to n/a.
Solution: Initialize an empty array sensor state to retrieve
existing sensor data whenever loading sensors.
Change-Id: Ifb0c0586fdba22b6f446c58b3d5b937a3f3ee750
Signed-off-by: HuyLe <hule@amperecomputing.com>
|
|
As part of [1] There are deprecated login flows that webui-vue seems to
have copied from phosphor-rest. These were originally added because
phosphor-rest didn't look at response codes, but webui-vue does, so we
can use the normal version, which allows us to reduce the code in
bmcweb.
This needs to go the same time as [1].
Tested: Gunnar tested with 65810 and this works.
[1] https://gerrit.openbmc.org/c/openbmc/bmcweb/+/65810
Change-Id: I1e55f08cf1d7d44b6757ac4173a26546eaca72e5
Signed-off-by: Ed Tanous <edtanous@google.com>
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
|
|
This page will be included in Configuration section of the primary
navigation. The user will be able to delete and add alert destination.
Change-Id: I396d19a54ea11724f2c5aec67e20ba9abff947d3
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
|
|
Fan data API switch in Inventory and LEDs page based on
environment variable VUE_APP_FAN_DATA_FROM_THERMAL_SUBSYSTEM.
Backend Support PR:
https://gerrit.openbmc.org/c/openbmc/bmcweb/+/57533
Change-Id: I95ac9f9cef97bdab84a179b3e318eb37ab11752b
Signed-off-by: Sivaprabu Ganesan <sivaprabug@ami.com>
|
|
Redfish deprecated the Processor/Memory Summary Status (state, health,
healthrollup) attributes. Please refer to redfish spec for more details:
https://redfish.dmtf.org/schemas/v1/ComputerSystem.v1_20_0.json
These attributes are already removed from the bmcweb code:
https://gerrit.openbmc.org/c/openbmc/bmcweb/+/62731
So currently webui-vue tries to access not present attributes and fails,
and since these fields are not marked as optional, 'Server Overview'
card fails to display.
Drop processor and memory summary status attributes handling to correct
the issue.
Change-Id: I7fb956a0a310c6bd85560169b1ca0a64c19dc824
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
|
|
There is a request to see three additional fields from Redfish in the
DIMM inventory table: https://github.com/openbmc/webui-vue/issues/107.
This change adds Manufacturer, Error correction, and Rank count data
from Redfish into the DIMM inventory table.
Tested:
Confirmed that the three fields show in the table with the correct data
from Redfish.
Change-Id: I6f1fc5103649abf8350e5b5c107c11eea3d1a599
Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>
|
|
After logged on via Safari web browser, click <user> -> Log out button
does not take effect until clicking on other tab. The current page still
works normally. For example, in Virtual Media page, after clicking on
the Log out button, nothing happens and we can still mount ISO file.
The issue does not happen on Chrome or Firefox.
Fix the issue by changing router.go() to router.push().
Reference:
https://github.com/vuejs/vue-router/issues/2554
https://codewithandrea.com/articles/flutter-navigation-gorouter-go-vs-push/
Tested:
1. Check if the issue does not happen on Safari anymore.
2. Check if no issue with Google Chrome and Mozilla Firefox.
Change-Id: I2ae35dad2dec6b19c3cb9d7f8d577b6077ac8d9c
Signed-off-by: Thang Q. Nguyen <thang@os.amperecomputing.com>
Signed-off-by: HuyLe <hule@amperecomputing.com>
|
|
This patchset will provide the option to configure the session timeout
for the WebUI. The functionality will provide the below timeout options
to configure.
1. 30 minutes
2. 1 hour
3. 2 hours
4. 4 hours
5. 8 hours
6. 1 Day
For the API, redfish is having the following resource.
URL - /redfish/v1/SessionService
Method
- GET (to get the configured timeout)
- PATCH (to configure the timeout value)
Property - { "SessionTimeout": 1800 }
When the user idles up until the configured session timeout, after that
any API call from this session will get 401 status and the web UI will
gets logged out.
Change-Id: Ic7c6b4817e560ca4ceb983dc5e2af51f3ae08cf5
Signed-off-by: Kirankumar Ballapalli <kirankumarb@ami.com>
|
|
This change removes the hardcoded chassis URL from FanStore. Now
the URL is taken from the odata.id.
Signed-off-by: MichalX Szopinski <michalx.szopinski@intel.com>
Change-Id: I59e4d46a8aaa453f6662f4f396f32d7fad18fb91
|
|
According to the Redfish specification, the address to update the
firmware is set in redfish/v1/UpdateService with the HttpPushUri
variable.
```
https://github.com/openbmc/bmcweb/commit/4dc23f3fb6c9a7cef84658f8ab3b703d29ec7d57
```
Change-Id: I29566a8ab2d06b658ab62f61c34be00fbbba0571
Signed-off-by: greenfil <mikl@greenfil.ru>
|
|
Now Health status will be "Ok" if there are no unsolved problems in the
log.
Before this patch, the flag "solved" was not considered.
Test:
Created a log entry with the status of "Critical" and "Warning".
Health became Critical.
Event Critical pressed Resolved. Health became "Warning".
Event Warning pressed Resolved. Health became "Ok".
Change-Id: Ic74a4c488c1c806c478c562a17fc0bb132e66e8f
Signed-off-by: Glukhov Mikhail <mikl@greenfil.ru>
|
|
Saving power cap value was throwing an error, and it was caused by
incorrect endpoint to PowerControl resource in
Redfish: https://redfish.dmtf.org/schemas/v1/Power.v1_7_1.json
Fixed endpoint for saving Power Cap value
Signed-off-by: Damian Celico <damianx.celico@intel.com>
Change-Id: Ib9117f62548c55eb3f07562b71330675a2101924
|
|
Display API error messages on Local user managment tab.
Change-Id: I8ffe2359aa454503d07e8895907202bd0d8493f5
Signed-off-by: MichalX Szopinski <michalx.szopinski@intel.com>
|
|
This commit allows us to add 'exclusiveToRoles' field to
route config files, with the list of roles that can access
this resource, if needed. In this case, only Administrator
can access Virtual-Media page and SOL console, and it is blocked for other
users.
Signed-off-by: Sivaprabu Ganesan <sivaprabug@ami.com>
Change-Id: Ibcee18bd92d97c34414ecaf2caf6af28070c5538
|
|
Redfish added support for the Context parameter on the session resource
This parameter has the same function that the "OemSession.ClientId"
field served. And BMC Web moves all the existing ClientId code to
produce Context. This patch set contains the code changes for adding a
new column "Context" in the sessions page and modifying the existing
column "Client ID" to "Session ID" and mapping the redfish property
"Id" to it.
The property "Context" is optional in redfish. If the Context holds any
value it will display in WebUI as it is. If it is not having any value,
"-" will be displayed in the WebUI.
Change-Id: Ibc99416fc37a91029bf430ccc7b387832eef729c
Signed-off-by: Kirankumar Ballapalli <kirankumarb@ami.com>
|
|
Utilize '#LogService.ClearLog' action to provide a possibility for the
user to clear POST code logs.
Change-Id: Iadd94b9ebc93bc81b13ee979962103587c939fc7
Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
|
|
Description:
When KVM is opened in new window, after WEB UI is logged out,
opened KVM window is not getting closed. It remains opened and
accessible.
Root Cause:
There is not handle to close the KVM new window after the WEB UI
logged out.
Fix:
Added the KVM window opened information in store, and checked that
information to close the window.
Tested:
Step 1: Login to WEB UI
Step 2: Navigate to Operations -> KVM
Step 3: Open KVM in new window
Step 4: Click Logout in WEB UI
Result:
After successful log out, KVM new window is closed as expected.
Change-Id: Iab8e54d3088a08fb0ae9b581b2647fc0ab5460bd
Signed-off-by: Kirankumar Ballapalli <kirankumarb@ami.com>
|
|
- DHCP toggle for enablement was not present, It is now added in
the Networks page.
- DHCP when enabled, if there is no address, it picks up an address on its own.When it is disabled, we need to manually configure it.
Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
Change-Id: I32a9e0df28e6609945f3757a6bd69dc66a86f480
|
|
Description 1:
When WebUI creates the user with an already existing username
the error message will display the exact failure reason.
Tested:
Step 1: Login to webUI and navigate to user management page
Step 2: Create new user with username "testUser1"
Step 3: Create another user with same username "testUser1"
Step 4: WEB UI will through the error message
as "Username 'testuser1' already exists."
Description 2:
User can able to disable and change the root user via WebUI
Now restricted to disable the root user and changing the
root user privilege.
Tested:
Step 1: Login to Web UI with root user
Step 2: Navigate to User management page
Step 3: Try to modify the root user's details
Step 4: WebUI won't allow to disable the user,
username change and privilege change
Step 5: Login Web UI with non-root user
Step 6: Web UI won't allow to modify or delete the root
user's details
Change-Id: I0e38215b51fb058984664ec38ae9613e18043ed7
Signed-off-by: Sivaprabu Ganesan <sivaprabug@ami.com>
|
|
Description:
The sensor count in WebUI is mismatched when compared to
IPMI and REDFISH responses. When Web UI is iterating the
sensor response property, the iteration is stopped when
the key value is undefined. As a result, the sensor details
in the web UI are incorrect. So added the code changes to
check the property value in every iteration, whether the
value is present or not.
Tested:
Step 1: Login to WEB UI
Step 2: Navigate to Hardware Status and Sensors
Step 3: Check the sensor details with IPMI and redfish response
Step 4: All the sensors and those details in the IPMI and redfish
response are listing in Web UI
Change-Id: Icf5098b3dd2413851e755d9ede17a8501cbb7411
Signed-off-by: Kirankumar Ballapalli <kirankumarb@ami.com>
|
|
Removed the MemorySize field for DIMMs,
because it is missing in Redfish
```
https://www.dmtf.org/sites/default/files/standards/documents/DSP8010.zip
```
Change-Id: I12f37a601e429060765960f3c66b5249b84eabe7
Signed-off-by: Glukhov Mikhail <mikl@greenfil.ru>
|
|
The reason for this problem is uniqBy always keep the first one when removing repetition
Resolves: https://github.com/openbmc/webui-vue/issues/60
Change-Id: Iec87d7845e694b0f2a14de4061ae113eac492fc0
Signed-off-by: wangqi02 <wangqi02@inspur.com>
|
|
In bmcweb/41d61c8 ("Convert IPv4-mapped IPv6 ClientIP back to IPv4"),
bmcweb automatically converts IPv4 addresses to IPv4 format, workaround
in webui-vue is no longer needed.
The original patch also brings issue with displaying IPv6 addresses in
Sessions tab.
This reverts commit d902aa7b4f98b49d2a20ad8253bc15afd77e9349.
Tested:
Both IPv4 and IPv6 addresses are displayed correctly in Sessions.
Change-Id: Ib56398de51526ee72168b5bf8427278bcb6f9c17
Signed-off-by: Jiaqing Zhao <jiaqing.zhao@intel.com>
|
|
Add missing "model" mapping on "Hardware status" tab in chassis
section.
Signed-off-by: MichalX Szopinski <michalx.szopinski@intel.com>
Change-Id: I9a6bd4a7e4fbaaac72aa8d59cc065ba0bea040bd
|
|
When a user selects a radio button and saves, the selected setting should be patched.
- Computed properties on generated bootstrap-vue radio buttons causes errors.
- Re-modeled radio buttons to take Redfish api data on component render.
- Mapped selected radio button value to patch the Redfish api property.
- Added translations.
Signed-off-by: Kenneth Fullbright <kennyneedsmilky@gmail.com>
Change-Id: I22ce75d9ef840d7f0c2659bba855093e5b4559f4
|
|
The IP address on sessions page is comming IPv6. It should be shown
IPv4 address.
Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com>
Change-Id: I4d5d492b161c09a09f616849ad9d0e6eb32e9fd8
|
|
This page will allow privileged user to clear encrypted keys.
- Only admin and CE login user will be able to see the page
- The UI will be different for both, admin and CE login user(service)
- This page is IBM only
Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com>
Change-Id: Ic6fe3454de815629a6b2250daa99ab21f2b316c3
|
|
Added RTAD under Network interfaces
Added VirtualTPM under Network services
Removed the sub-headings in Policies page
Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
Change-Id: I6290362cecdfe7f8cd7bfde20fcaca88b6bc2c09
|
|
TotalSystemMemoryGiB and CoreCount field is not present.
Added TotalSystemMemoryGiB under Memory summary
Added CoreCount under Processor summary
Signed-off-by: Nikhil Ashoka <a.nikhil@ibm.com>
Change-Id: I598abc7c05dd5113db0071ecd71bbcc32ad696c4
|
|
The story is integration of these two API responses
for their respective dumps:
1.Resource and Hostboot dumps:
redfish/v1/Systems/system/LogServices/Dump/Entries
2.BMC Dumps: /redfish/v1/Managers/bmc/LogServices/Dump/Entries
Signed-off-by: Sukanya Pandey <sukapan1@in.ibm.com>
Change-Id: I24ded733e682d21904e92e2e8be1951e46d33b09
|
|
DHCP property UseNTPServers is not working and its value is not getting reflected in backend.
It always remains enabled irrespective on enable or disable on GUI.
- Fixed the incorrect patch on the saveNtpState action.
Signed-off-by: Kenneth Fullbright <kennyneedsmilky@gmail.com>
Change-Id: Id0b7240e38f68bea8e98694bdcbe4e36e723bbcb
|