Commit Graph

443 Commits

Author SHA1 Message Date
Min Chen 7d2ebc9fc3 Add some comments on some code source to give credit to vmware sample
code.
2013-02-27 13:46:43 -08:00
Edison Su cc81413931 CLOUDSTACK-724: add zone wide storage, createstoragepoolcmd doesn't need cluster/pod any more 2013-02-26 23:16:17 -08:00
Kishan Kavala e37fdce125 CLOUDSTACK-241: Removed API based account sync. Removed all the related API changes and RegionsAPIUtil.
Converted tabs to spaces in the related files.
Verified account, user and domain APIs.
2013-02-26 14:21:21 +05:30
Sheng Yang 1b408509d6 CLOUDSTACK-1332: Add IPv6 DNS for Zone 2013-02-25 16:08:10 -08:00
frank cd291f6b4b From c72615de97b007517fb324044cb4625258c5fc61 Mon Sep 17 00:00:00 2001
From: Vijayendra <vijayendra.bhamidipati@citrix.com>
Date: Mon, 25 Feb 2013 14:37:27 -0800
Subject: [PATCH] CS-670: Configurable setting to use linked clones or not on
 VMware

Description:

  Providing support for creation of user VMs as full clones on ESX.
  Putting in unit tests for VO and Dao classes introduced in this commit.

Signed-off-by: Vijayendra <vijayendra.bhamidipati@citrix.com>
---
 core/src/com/cloud/vm/UserVmCloneSettingVO.java    |  50 ++++++
 .../hypervisor/vmware/manager/VmwareManager.java   |   3 +
 .../vmware/manager/VmwareManagerImpl.java          |  18 +-
 .../hypervisor/vmware/resource/VmwareResource.java | 117 +++++++++----
 server/conf/migration-components.xml               |   1 +
 server/src/com/cloud/configuration/Config.java     |   1 +
 server/src/com/cloud/vm/UserVmManagerImpl.java     | 184 ++++++++++-----------
 .../com/cloud/vm/dao/UserVmCloneSettingDao.java    |  37 +++++
 .../cloud/vm/dao/UserVmCloneSettingDaoImpl.java    |  74 +++++++++
 .../vm/dao/UserVmCloneSettingDaoImplTest.java      |  62 +++++++
 .../UserVmCloneSettingDaoTestConfiguration.java    |  52 ++++++
 .../test/resources/CloneSettingDaoTestContext.xml  |  42 +++++
 setup/db/db/schema-410to420.sql                    |   9 +
 13 files changed, 527 insertions(+), 123 deletions(-)
 create mode 100755 core/src/com/cloud/vm/UserVmCloneSettingVO.java
 create mode 100755 server/src/com/cloud/vm/dao/UserVmCloneSettingDao.java
 create mode 100755 server/src/com/cloud/vm/dao/UserVmCloneSettingDaoImpl.java
 create mode 100644 server/test/com/cloud/vm/dao/UserVmCloneSettingDaoImplTest.java
 create mode 100644 server/test/com/cloud/vm/dao/UserVmCloneSettingDaoTestConfiguration.java
 create mode 100644 server/test/resources/CloneSettingDaoTestContext.xml
2013-02-25 14:57:57 -08:00
Kishan Kavala 15201d908f CLOUDSTACK-749: updated mockvpcdao mockvpcmanagerimpl with external device related changes 2013-02-25 18:54:30 +05:30
Chip Childers 4b161e5410 Correcting the license header problem that was introduced with commit
23e54bb0f4

Signed-off-by: Chip Childers <chip.childers@gmail.com>
2013-02-22 11:06:47 -05:00
Bharat Kumar 667aa17512 CLOUDSTACK 711: CPU and RAM overcommit update cluster part 2013-02-22 20:09:50 +05:30
Bharat Kumar 23e54bb0f4 Cloudstack-711: Cpu and Ram Overcommit Ratio. 2013-02-22 17:31:06 +05:30
Saksham Srivastava ea3db2f073 CLOUDSTACK-705 IP Address reservation for Isolated Guest Networks
CloudStack uses Guest CIDR for dhcp-range for the Guest VMs. The entire
CIDR is used by CloudStack for assigning IPs to Guest VMs. IP Address
Reservation will allow part of address space to be used fornon CloudStack
hosts/physical servers also, by restricting the address space of CloudStack
Guest VMs. Reservation can be configured using update Network API by specifying
guestvmCidr as an additional parameter. Reservation will be applicable for
Isolated Guest Networks including VPC. reservediprange in the response
will return the IP range that can be used for non Cloudstack hosts.

Tested manually the following scenarios:
Applying reservation when there are running VMs inside the
guest_vm_cidr.
Applying reservation when there are running VMs outside the
guest_vm_cidr.(not allowed)
Applying reservation when external device like Netscaler is configured
in the guest_cidr.
Applying reservation in VPC tiers.
Applying reservation outside the range of guest_cidr.(not allowed)
2013-02-22 15:50:33 +05:30
Edison Su 18e496b057 rebase to master 2013-02-21 11:22:50 -08:00
Edison Su a22403edcd squash changes into one giant patch 2013-02-21 11:22:48 -08:00
Harikrishna Patnala 6c01b62cdc CLOUDSTACK-667: VM's base image update facility 2013-02-21 15:04:29 +05:30
Harikrishna Patnala 7a3f072a50 CLOUDSTACK-745: Reset a VM on reboot. On every reboot of VM, the root disk state is reset. This is for the VMs created using service offering where an optional parameter isvolatile is set true.
Signed-off-by: Abhinandan Prateek <aprateek@apache.org>
2013-02-21 14:59:35 +05:30
Abhinandan Prateek f2b97db0f9 CLOUDSTACK-1172: LDAP enhancements 2013-02-19 15:36:39 +05:30
Min Chen 5147fb16ac CLOUDSTACK-1253: Remove @author tag. 2013-02-15 10:42:06 -08:00
Sheng Yang ca5c6d5d14 CLOUDSTACK-1219, CLOUDSTACK-1220: Fix IPv6 error messages 2013-02-14 16:28:29 -08:00
Mice Xia 9a12756ae4 CLOUDSTACK-684 support vm snapshot 2013-02-14 01:26:30 +08:00
Rohit Yadav 0a9af54c9f rat: Fix license for ResourceLimitManagerImplTest.java
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-02-13 14:32:33 +05:30
Sanjay Tripathi 5828e526b3 CLOUDSTACK-713: Limit Resources(CPU and Memory) to domain/accounts
Addition of two new resource types i.e. CPU and Memory in the existing pool of
resource types.
Added some methods to set the limits on these resources using updateResourceLimit
API command and to get a count using updateResourceCount. Also added calls in the
Virtual machine life cycle to check these limits and to increment/decrement the new
resource types

Resource Name  :: Resource type number
    CPU               8
    Memory            9

Also added Unit Tests for the same.
2013-02-12 12:02:07 -08:00
Sheng Yang 0c5c08b78b IPv6: CLOUDSTACK-1107: Add support for createVlanIpRange to extend existed network 2013-02-08 14:48:08 -08:00
Sheng Yang 06acd9f0ea IPv6: One network can have more than one vlan 2013-02-06 20:07:07 -08:00
Sheng Yang f89dd9050c IPv6: CLOUDSTACK-1113: Fix the mechanism to find the usable IP in the IPv6
The new policy is:
1. Generate a random IP.
2. Find the next available IP, start from the generated IP.
3. If we cannot find an available IP after certain times(10000 by default,
network.ipv6.search.retry.max) retry, give up.
2013-02-05 14:31:12 -08:00
Kelven Yang 296c20332d Merge javelin into master 2013-02-01 14:40:45 -08:00
Kelven Yang 7b75f0d990 Sync master to javelin one more time 2013-02-01 11:37:33 -08:00
Likitha Shetty 13ee8d1865 Persistent Networks support
Signed-off-by: Murali Reddy <murali.reddy@citrix.com>
2013-02-01 15:10:06 +05:30
Kishan Kavala 9ea90c3359 Merge branch 'master' into regions
Conflicts:
	client/tomcatconf/components.xml.in
	server/src/com/cloud/api/ApiResponseHelper.java
2013-02-01 11:38:16 +05:30
Murali Reddy 96c24930ae Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-cloudstack
Conflicts:
	server/src/com/cloud/network/NetworkManagerImpl.java
2013-02-01 08:45:53 +05:30
Kelven Yang 7bd8bec68a Sync javelin with master up to 894cb8f7d9 2013-01-31 17:20:19 -08:00
Sheng Yang 5cb9df91a1 Merge branch 'ipv6'
Conflicts:
	api/src/com/cloud/network/NetworkProfile.java
2013-01-31 15:07:33 -08:00
joesan 44d1397d36 fix CS-1080 2013-01-31 13:04:36 -08:00
Murali Reddy e7a554fc6a Merging events framework branch into master. This commit will bring
following changes

   - introduced notion of event bus with publish, subscribe, unsubscribe
     semantics

   - a plug-in can implement the EventBus abstraction to provide event
     bug to CloudStack

   - A rabbitMQ based plug-in that can interact with AMQP servers to
     provide message broker based event-bug

   - stream lines, action events, usage events, alerts publishing in to
     convineance classed which are also used to publish corresponding
     event on to event bus

   - introduced notion of state change event. On a state change, in the
     state machine corrsponding to the resource, a state change event is
     published on the event bug

   - associated a state machined with Snapshot and Network objects

   - Virtual Machine, Volume, Snaphost, Network object state changes wil
     result in a state change event
2013-02-01 01:37:24 +05:30
Kelven Yang 1b2b369ecb Merge latest master into javelin 2013-01-31 11:34:49 -08:00
Kishan Kavala c607e03f0e Merge branch 'master' into regions 2013-01-31 22:31:25 +05:30
Kishan Kavala e7341313e9 Added unit tests 2013-01-31 22:28:09 +05:30
Jayapal b6727e5646 CLOUDSTACK-299: Egress firewall rules feature for guest network on VR 2013-01-31 11:20:47 +05:30
Rohit Yadav d7ad2da7e0 server: Fix network refactor regressions for CLOUDSTACK-297
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-30 17:33:53 -08:00
Harikrishna Patnala b21595c10d CLOUDSTACK-297: Reset SSH key to access VM
This feature provides resetting a SSH key for an existing VM which means,
setting the old ssh key that is assigned to the VM previously with the new ssh
key.

Signed-off-by: Harikrishna Patnala <harikrishna.patnala@citrix.com>
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-30 17:33:44 -08:00
Sheng Yang ed547d91f7 IPv6: Rename public_ipv6_address to user_ipv6_address 2013-01-30 17:05:47 -08:00
Marcus Sorensen 15906c03ca Summary: add/remove/update default nics feature
Description: Adds API calls updateDefaultNicForVirtualMachine,
addNicToVirtualMachine, and removeNicFromVirtualMachine. These are
intended to allow a user to modify a VM's configuration post
deployment, to adjust the networks to which the VM belongs.

BUG-ID: CLOUDSTACK-645
Submitted-by: Brian Angus <blangus@betterservers.com>
Submitted-by: Ryan Dietrich <ryan@betterservers.com>
Signed-off-by: Marcus Sorensen <marcus@betterservers.com> 1359494800 -0700
2013-01-30 17:43:21 -07:00
Kelven Yang 176523254e Improve component lifecycle management with system run-level concept 2013-01-30 15:21:02 -08:00
Sheng Yang cb9f2d018d IPv6: move assignPublicIp6Address() from NetworkManager to new Ipv6AddressManager
Don't want to involve IP address management code in NetworkManager.
2013-01-29 19:08:03 -08:00
Sheng Yang 2cbca372bf IPv6: Add support for IPv6 on DeployVMCmd 2013-01-28 18:54:34 -08:00
Kishan Kavala ea660cd06d removed MockAPI server 2013-01-28 17:50:38 +05:30
Kishan Kavala def9fd1f2e remove finduser, findaccount, finddomain APIs 2013-01-28 17:04:25 +05:30
Sheng Yang bd4bc025d1 IPv6: Accept IPv6 parameter for createNetworkCmd
Also ass public_ipv6_address for ipv6 address management.

Extend nics and vlans for ipv6 address.

Add dependency to com.googlecode.ipv6(java-ipv6).

Modify dhcpcommand for ipv6.
2013-01-26 23:14:15 -08:00
Kishan Kavala c6ae19d12f Merge branch 'master' into regions 2013-01-25 18:49:47 +05:30
Kishan Kavala 1f57d925eb Apply API refactoring changes. Make changes to Regions API to work with new code 2013-01-25 18:41:59 +05:30
Prachi Damle df5c4c3048 Fixing VPC unit test to use Spring 2013-01-24 23:05:31 -08:00
Rohit Yadav 356866c72b Merge branch 'master' into javelin
- Fixed new join dao impls as spring components
- Fixed component context xml to load api rate limit checker
- Fixed root pom.xml for duplicate plugin
- Fixed list data centers method
- Fixed following conflicts:
	api/src/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java
	api/src/org/apache/cloudstack/api/command/user/offering/ListServiceOfferingsCmd.java
	api/src/org/apache/cloudstack/api/command/user/template/DeleteTemplateCmd.java
	api/src/org/apache/cloudstack/api/command/user/template/ExtractTemplateCmd.java
	plugins/api/discovery/src/org/apache/cloudstack/discovery/ApiDiscoveryServiceImpl.java
	server/src/com/cloud/api/ApiDBUtils.java
	server/src/com/cloud/api/ApiServer.java
	server/src/com/cloud/api/query/QueryManagerImpl.java
	server/src/com/cloud/configuration/DefaultComponentLibrary.java
	server/src/com/cloud/server/ManagementServerImpl.java
	server/src/com/cloud/storage/swift/SwiftManagerImpl.java

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-24 19:18:53 -08:00
Min Chen b6f780fa33 Fix StoragePool unit testcase. 2013-01-24 16:11:35 -08:00
Min Chen f85ac65645 Fix Snapshot unit testcase. 2013-01-24 16:05:03 -08:00
Alex Huang 1567a112fa unit test works again 2013-01-24 14:36:44 -08:00
Min Chen c3f1a9d324 CLOUDSTACK-355: fix count for listSwiftsCmd. 2013-01-22 17:14:44 -08:00
Prachi Damle e6cd47ddc0 More changes for deployVM flow. 2013-01-22 12:54:07 -08:00
Alex Huang ee39ec82d3 Making unit tests work 2013-01-22 11:18:51 -08:00
Edison Su 4fbecf15ec add unit test back, primary storage life cycle is tested 2013-01-21 17:01:00 -08:00
Alex Huang fe6f0457d5 fixed unit tests from merge 2013-01-18 15:58:55 -08:00
Alex Huang 10d9c019a9 All merge conflicts resolved 2013-01-18 12:14:57 -08:00
Min Chen 5a865462e9 Merge branch 'api_limit' 2013-01-18 09:43:54 -08:00
Chiradeep Vittal ce4b49d30b network-refactor merge: fix nonoss build
Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-18 09:38:49 -08:00
Min Chen 2fd1d476b4 Merge branch 'master' into api_limit 2013-01-17 21:23:50 -08:00
Rohit Yadav 8d016d035b MockConfigurationDaoImpl: Fix build issue, add base class method
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-17 16:15:15 -08:00
Min Chen 86ada92ffa Fix some bugs and add java integration test for api rate limit plugin. 2013-01-17 15:13:51 -08:00
Alex Huang cbb7ff1c32 added missing files 2013-01-17 06:50:59 -08:00
Alex Huang 9759ad57f2 Commit the current changes to unit tests 2013-01-17 06:50:11 -08:00
Min Chen 06fa338d42 Add some tests for api rate limit plugin. 2013-01-16 21:56:25 -08:00
Chiradeep Vittal d9e36ac37b network-refactor: fix license issues
Fix build after merge of network-refactor
2013-01-16 19:25:23 -08:00
Chiradeep Vittal cadca5fc0c Merge branch 'master' into network-refactor-merge2
Conflicts:
	api/src/com/cloud/network/NetworkService.java
	api/src/com/cloud/network/element/RemoteAccessVPNServiceProvider.java
	plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
	server/src/com/cloud/acl/DomainChecker.java
	server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
	server/src/com/cloud/network/NetworkManager.java
	server/src/com/cloud/network/NetworkManagerImpl.java
	server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
	server/src/com/cloud/vm/UserVmManagerImpl.java
	server/test/com/cloud/network/MockNetworkManagerImpl.java
	server/test/com/cloud/vpc/MockNetworkManagerImpl.java
2013-01-16 19:17:14 -08:00
Min Chen e83fe471c7 Merge branch 'master' into api_limit 2013-01-16 10:49:25 -08:00
Murali Reddy 4b67340d8c Revert "Summary: partical check-in for L4-L7 network services in the
shared"

This reverts commits 0de5a145e4,
28bbf6c527

Reverting due to IP clearance issues for the commits done as part of CLOUDSTACK-312
2013-01-16 16:43:37 +05:30
Min Chen 4355d06a86 Reuse APIChecker adapter interface for APi Rate limit checking and optimize ApiRateLimitService interface.
Signed-off-by: Min Chen <min.chen@citrix.com>
2013-01-15 15:53:19 -08:00
Chiradeep Vittal 7fad27b846 network-refactor: unfortunately have to ignore tests during build since the tests involve verification of injection. This causes the database to get invoked during component initialization. The database is not available on the build server 2013-01-15 11:43:53 -08:00
Min Chen 4d0c850dc8 Fix plugin component configuration. 2013-01-14 17:13:18 -08:00
Rohit Yadav 38eaa04b98 Pull changes from master into javelin
- Disables simulator plugin, breaks build, available via simulator profile
- Fixes spring injections
- Fix api,acl plugins, ApiServer, ApiDispatcher
- Fix other merge conflicts

Conflicts:
	docs/en-US/external-firewalls-and-load-balancers.xml
	plugins/acl/static-role-based/src/org/apache/cloudstack/acl/StaticRoleBasedAPIAccessChecker.java
	server/src/com/cloud/api/ApiDispatcher.java
	server/src/com/cloud/api/ApiServer.java
	server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
	utils/test/com/cloud/utils/log/CglibThrowableRendererTest.java

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-12 06:02:54 -08:00
Rohit Yadav 8cdb40a416 NetworkManagerImpl: Add method to getNetwork by uuid
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-11 18:44:19 -08:00
Rohit Yadav 31dd412626 DomainService: Fix getDomain by uuid string
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-11 18:44:19 -08:00
Kelven Yang 6fb1a1e6f1 Fix issues after another round of merge 2013-01-11 16:54:32 -08:00
Alex Huang 1294cdc701 pulled from master 2013-01-10 16:01:01 -08:00
Rohit Yadav 1425736c19 AccountManager: Add method to translate account type to role type
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-10 15:55:01 -08:00
Alex Huang fac2270240 more files changed 2013-01-10 15:29:14 -08:00
Alex Huang 56e5fbdee2 removed import of componentlocator and inject from all files 2013-01-10 11:44:47 -08:00
Alex Huang f40e7b7511 removed componentlocator and inject 2013-01-10 11:05:20 -08:00
Chiradeep Vittal 1776659fe7 Network-refactor: move validateRule to LB manager since it now has access to LB elements.
NetworkServiceImpl does not need a cache of system network offerings
Ensure mocks build to new APIs.

Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 18:36:29 -08:00
Chiradeep Vittal 05a85c7cd6 Network-refactor: reduce verbosity of test logs.
Icky way to do it, but unable to get maven to pick up log4j properties from test/resources

Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:02 -08:00
Chiradeep Vittal dbe3fe2d34 Network-refactor: interaction between firewall manager and network manager changed, verify this works as expected
Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:02 -08:00
Chiradeep Vittal 728db6c8ca Network-refactor: fix bugs in components.xml discovered by unit tests
Provide injection tests for NetworkManager and FirewallManager

Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:02 -08:00
Chiradeep Vittal e0578180c5 Network-refactor: verify injection is correct. Verify that dhcp service providers and ip deployers get injected independently in addition to the list of network elements
Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:02 -08:00
Chiradeep Vittal 88df984ff3 Network-refactor: add a method for plugins to get the source nat ip
Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:02 -08:00
Chiradeep Vittal a34ce77b77 Network-refactor: verify that s2s provider gets injected as expected
Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:01 -08:00
Chiradeep Vittal 504264236c Network-refactor: In preparation for moving the read-only interface NetworkModel
to the api project, ensure that all methods use interfaces from the api project.
By moving it to the api project, it lessens the dependency of plugins on the server components.

Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:01 -08:00
Chiradeep Vittal 6b6d8c5710 Network-refactor: Move code from NetworkManager to NetworkModel.
NetworkModel is intended as a read-only view on the network model.
This includes Networks, Nics, Ip address, PhysicalNetwork, NetworkOfferings, etc
The code in configure() and start() is used to support queries on the network model which is now the responsibility of the NetworkModel service

Network-refactor: Fix tests so that they get injected with the required NetworkModel mock

Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:01 -08:00
Chiradeep Vittal 5a830c4db0 Network-refactor: Refactor NetworkManager into NetworkModel and NetworkManager.
NetworkManager's exclusive focus is now
 - handling plugins during orchestration, and
 - to deal with ip address allocation.
Those classes that used to refer to NetworkManager to get access to the datamodel now refer to NetworkModel

Signed-off-by: Chiradeep Vittal <chiradeep@apache.org>
2013-01-09 15:49:01 -08:00
Alex Huang b6c56736e5 merge from master 2013-01-09 05:20:36 -08:00
Alex Huang 30f2565d98 Merge branch 'api_refactoring' into javelin 2013-01-08 12:36:04 -08:00
Min Chen 74c15a22a0 Create DB view for ListStoragePools API performance optimization.
Signed-off-by: Min Chen <min.chen@citrix.com>
2013-01-08 12:33:18 -08:00
Chiradeep Vittal e262eef296 Fix mocks 2013-01-07 15:21:49 -08:00
Rohit Yadav ed0637b8c2 api: Refactor move acl to org.apache.cloudstack
Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-06 15:30:58 -08:00
Rohit Yadav b720675bfe Merge branch 'master' into api_refactoring
Getting ready for merge request for master, sync changes

Conflicts:
	client/tomcatconf/commands.properties.in

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
2013-01-06 01:11:16 -08:00
Sheng Yang aa9701a10c CLOUDSTACK-799: Redundant router: Speed up RvR status update
The basic idea behind this is, deploy a fix sized threadpool for updating RvR
status, then using producer/consumer model. There is a global configuration
router.check.poolsize(10 by default) to control the pool size.

Using pool size 100 for 1000 RvR is tested with simulator and works well.

Also we can adjust the global configuration option router.check.interval to e.g.
60s from default 30s to mitigate the issue.
2013-01-05 21:02:37 -08:00