Commit Graph

423 Commits

Author SHA1 Message Date
Prashanth Balasubramanian
1970c2d201 Retry resizing replication controllers in kubectl 2015-03-02 20:26:41 -08:00
Mike Danese
25fac68ec4 validate api version in kubectl --patch and --override. 2015-03-02 13:00:45 -08:00
Dawn Chen
93c0052263 Merge pull request #4952 from rjnagal/kubectl
Add capacity information to 'kubectl describe minion'
2015-03-02 13:09:52 -08:00
Rohit Jnagal
c63f4635a4 Add capacity information to 'kubectl describe minion' 2015-03-02 19:51:30 +00:00
Tim Hockin
ea548b8260 Rename type Port to ContainerPort
Sadly I had to do this by hand - I just could not get gorename to fix up
users of it.
2015-02-27 21:05:59 -08:00
Brendan Burns
ceac670eae Add a human readable created since column to kubectl. 2015-02-26 22:16:23 -08:00
Brian Grant
3f69112e02 Merge pull request #4766 from mikedanese/remove-util-merge
Remove pkg/util/merge and replace with evanphx/json-patch
2015-02-25 09:22:01 -08:00
Deyuan Deng
f2698e5905 Merge pull request #4267 from rsokolowski/guestbook-doc
Update guestbook example to use replication controller instead of a naked pod.
2015-02-24 15:57:27 -05:00
Jeff Lowdermilk
be124b3cd0 Merge pull request #4786 from GoogleCloudPlatform/revert-4660-deads-make-default-display-yaml
Revert "fix kubectl config view to respect serialization formats"
2015-02-24 12:18:31 -08:00
Vish Kannan
68c4ae7f0c Merge pull request #4776 from brendandburns/log
Prompt the user to select a container if they don't provide one
2015-02-24 12:10:18 -08:00
Jeff Lowdermilk
8cfe099af1 Revert "fix kubectl config view to respect serialization formats" 2015-02-24 12:06:24 -08:00
rsokolowski
635281ebe3 Update guestbook example to use replication controller. 2015-02-24 20:21:13 +01:00
Rohit Jnagal
a0722376ee Merge pull request #4760 from ddysher/kubectl-endpoint-list
kubectl print endpoint list
2015-02-24 10:11:23 -08:00
Rohit Jnagal
590a62ffe5 Merge pull request #4767 from mikedanese/kind-to-type
Rename {Node,Pod}ConditionKind -> {Node,Pod}ConditionType
2015-02-24 10:10:57 -08:00
Clayton Coleman
76926ec314 Merge pull request #4660 from deads2k/deads-make-default-display-yaml
fix kubectl config view to respect serialization formats
2015-02-24 07:56:57 -08:00
Brendan Burns
eefaafc214 Prompt the user to select a container if they don't provide one
and we can't infer it.
2015-02-24 06:50:22 -08:00
deads2k
6358bf2e30 add example for default view serialization 2015-02-24 08:54:03 -05:00
Mike Danese
5267127af1 api: rename conditionkind -> conditiontype 2015-02-23 22:13:21 -08:00
Mike Danese
88e1ab3cbe replace pkg/util/merge with evanphx/json-patch 2015-02-23 20:55:30 -08:00
Deyuan Deng
515314fb8a Fix kubectl print endpoint list 2015-02-23 21:20:10 -05:00
Daniel Smith
650f6cb826 Revert "Multi-port Endpoints" 2015-02-23 13:53:21 -08:00
Tim Hockin
eed36455a7 Merge pull request #4653 from thockin/secret_fixups
Secrets fixups
2015-02-23 13:49:19 -08:00
Daniel Smith
502f040129 Merge pull request #4712 from thockin/plural_30_endpoints
Multi-port Endpoints
2015-02-23 13:48:37 -08:00
Tim Hockin
607b736a3f Rename volume source types to be consistent. 2015-02-23 12:39:57 -08:00
Rohit Jnagal
28dd73dd8c Merge pull request #4667 from endocode/kbeecher/multi-resource
Adds support for multiple resources to kubectl
2015-02-23 10:29:32 -08:00
Rohit Jnagal
33855c2286 Merge pull request #4696 from kazegusuri/rollingupdate-namespace-aware
use default namespace to do rollingupdate
2015-02-23 10:15:03 -08:00
Rohit Jnagal
efc4db280d Merge pull request #4703 from smarterclayton/describe_portal_on_service
Add PortalIP to Service describe
2015-02-23 10:07:51 -08:00
Victor Marmol
3bfc07fcd3 Merge pull request #4697 from ddysher/node-describe-pod
Add pod name to node describe
2015-02-23 08:21:56 -08:00
Victor Marmol
bc564576cf Merge pull request #4704 from smarterclayton/add_svc_shorthand
'svc' is a much clearer shorthand for "Service" than "se"
2015-02-23 08:21:40 -08:00
Tim Hockin
160f288832 Implement multi-port Endpoints
This is a part of multi-port services.
2015-02-22 09:35:12 -08:00
Tim Hockin
e0fd83096c Rename type Port to ContainerPort
Sadly I had to do this by hand - I just could not get gorename to fix up
users of it.
2015-02-21 22:26:38 -08:00
Clayton Coleman
36f19f77ec Add PortalIP to Service describe 2015-02-22 01:07:33 -05:00
Clayton Coleman
a8ba77f23b Remove unused flag helpers 2015-02-21 18:25:55 -05:00
Clayton Coleman
35cc1b0c15 Mark old kubectl/resource.go methods as deprecated
Every command should use resource.Builder instead to have consistent
behavior.
2015-02-21 18:22:07 -05:00
Clayton Coleman
09dcec57fb 'svc' is a much clearer shorthand for "Service" than "se" 2015-02-21 18:17:52 -05:00
Deyuan Deng
aec068f7ef Add pod name to node describe 2015-02-21 12:07:09 -05:00
Masahiro Sano
5c1c84f6c0 use default namespace to do rollingupdate 2015-02-21 20:22:26 +09:00
Brendan Burns
86a0193f51 Merge pull request #4311 from kazegusuri/update_nil_label
kubectl label command crashes when a resource has no labels
2015-02-20 15:52:05 -08:00
Brendan Burns
9829128a75 Merge pull request #4580 from thockin/plural_20_endpoints
Part 2 of plural ports: make endpoints a struct
2015-02-20 15:42:19 -08:00
Eric Paris
d508395828 Change all cobra commands to use the example section
This will output the examples in their own section, rather than as part
of the 'long' synposis.
2015-02-20 16:41:31 -05:00
deads2k
2b25c48b1f fix kubectl config view to respect serialization formats 2015-02-20 14:28:23 -05:00
Satnam Singh
1704319edb Merge pull request #4662 from deads2k/deads-global-local-override-merge
prevent default merging when specifying a specific kubeconfig for config view
2015-02-20 09:51:44 -08:00
Karl Beecher
ecbb91cc08 Adds support for multiple resources to kubectl
You can specify multiple resources by name when using the delete, get
and stop commands.
2015-02-20 16:18:57 +01:00
Andy Goldstein
5bd0e9ab05 Add streaming command execution & port forwarding
Add streaming command execution & port forwarding via HTTP connection
upgrades (currently using SPDY).
2015-02-20 09:57:02 -05:00
deads2k
885d88f274 prevent default merging when specifying a specific kubeconfig for config view 2015-02-20 09:27:34 -05:00
Jordan Liggitt
abb38cf793 Let .kubeconfig populate ca/cert/key data, and basic-auth username/password in client configs 2015-02-19 11:29:42 -05:00
Tim Hockin
ae0062d001 Part 2 of plural ports: make endpoints a struct
Includes conversions for v1b[12] and tests and fixups for call sites.
2015-02-18 19:54:15 -08:00
Paul Morie
fb001ada21 Secret API resource 2015-02-18 11:54:56 -05:00
Brendan Burns
62c4187e78 Fix rolling update if namespace is empty. 2015-02-17 20:16:49 -08:00
Jeff Lowdermilk
b786c116b6 Make kubectl stop take -f flag (for filename|url|directory) 2015-02-17 11:27:47 -08:00
Brian Grant
e1b07efd36 Merge pull request #4450 from mikedanese/update-fix
fix error where we can't use kubectl update patch
2015-02-17 09:58:18 -08:00
Alex Robinson
962b7b4295 Merge pull request #4448 from mikedanese/merge-patch
Fix --override and --patch flags in kubectl
2015-02-17 09:44:51 -08:00
Brian Grant
876d651737 Merge pull request #4395 from smarterclayton/split_naming
Fix cross-namespace LIST and WATCH
2015-02-17 09:40:09 -08:00
Clayton Coleman
0e07e61a53 Merge pull request #4381 from sdminonne/bug_fix
kubectl delete resource : remove all resources
2015-02-17 12:25:56 -05:00
Mike Danese
a4eca69e6c added previously failing unit test and fix using pkg/util/merge.go instead of mergo to apply patch. 2015-02-17 07:43:21 -08:00
Clayton Coleman
3e2e4714a2 Always set ?namespace in query if specified
Revise our code to only call Request.Namespace() if a namespace
*should* be present.  For root scoped resources, namespace should
be ignored.  For namespaced resources, it is an error to have
Namespace=="".
2015-02-16 00:23:38 -05:00
Mike Danese
9f9153256d fix error where we can't use patch and add cmd-test for patch and file
update
2015-02-15 10:43:35 -08:00
Jeff Lowdermilk
b23230e616 Merge pull request #4296 from deads2k/deads-allow-dots
allow dots in config set
2015-02-13 12:27:36 -08:00
deads2k
941461044b guard against unexpected type during config manipulation 2015-02-13 13:15:47 -05:00
deads2k
2dcaab75f5 allow dots in config set 2015-02-13 13:11:42 -05:00
Salvatore Dario Minonne
fda17c1b7a kubectl delete resource : remove all resources 2015-02-13 18:25:41 +01:00
Brendan Burns
f63cf05d21 Add some docs to the template format. 2015-02-12 18:29:11 -08:00
MikeJeffrey
ca1e9f8061 Comments go above the sample line in kubectl docs. 2015-02-12 15:49:25 -08:00
Clayton Coleman
0b3162b3f4 Merge pull request #4306 from saad-ali/eventCompression1
Compress recurring events in to a single event to optimize etcd storage
2015-02-12 16:59:19 -05:00
saadali
033577efa2 Optimize etcd storage by compressing recurring events in to a single event 2015-02-11 22:57:44 -08:00
Victor Marmol
d158bbd62a Print client version before evaluating server's.
This will allow the client version to be printed even if the server
version is not available.

Fixes #4098.
2015-02-11 17:11:25 -08:00
Victor Marmol
6a80553d7b Don't include port in config when not specified.
When no port is specified the flag default of "-1" is taken.

Fixes #4305
2015-02-11 13:20:51 -08:00
Jeff Lowdermilk
8276a9e03d Merge pull request #4295 from MikeJeffrey/kubectldocs
Clean up kubectl help for auto-gen'd kubectl.md
2015-02-11 09:41:30 -08:00
Masahiro Sano
a841b91aed allocate map if Labels is not initialized 2015-02-11 20:05:41 +09:00
Mike Danese
dac5e9b4d0 add NodeCondition and PodCondition to kubectl describe node/pod 2015-02-10 14:17:31 -08:00
MikeJeffrey
e5459c8802 Clean up kubectl help for auto-gen'd kubectl.md 2015-02-10 12:02:05 -08:00
Clayton Coleman
dce4cd8b1d Merge pull request #3613 from derekwaynecarr/namespace_as_kind
Namespace as kind
2015-02-10 14:49:58 -05:00
roberthbailey
3f90de3f80 Merge pull request #4289 from jlowdermilk/cleanup
Explicitly send error string to Fatal log 2
2015-02-10 11:37:26 -08:00
roberthbailey
ef71b43056 Merge pull request #4281 from brendandburns/fixer
Add some error checking to prevent obscure failures.
2015-02-10 11:22:58 -08:00
Jeff Lowdermilk
96c9a15ed5 Merge pull request #4279 from jimmidyson/proxy-tweaks
Configurable API prefix for kubectl proxy
2015-02-10 11:21:22 -08:00
Jeff Lowdermilk
aff7f63d7f Explicitly send error string to Fatal log 2 2015-02-10 10:02:16 -08:00
Clayton Coleman
8811fd2971 Merge pull request #4284 from brendandburns/cleanup
Explicitly send the error string to the Fatal log.
2015-02-10 12:48:30 -05:00
Brendan Burns
8f3136cd37 Explicitly send the error string to the Fatal log. 2015-02-10 07:12:13 -08:00
derekwaynecarr
0bd0e12bbc Add support for Namespace as Kind
Add example for using namespaces
2015-02-10 09:50:50 -05:00
Brendan Burns
e7b11d09de Add some error checking to prevent obscure failures. 2015-02-10 06:32:26 -08:00
Jimmi Dyson
f4a9b62d06 Configurable API prefix for kubectl proxy 2015-02-10 13:58:46 +00:00
Brendan Burns
ac35aa5e32 Add a label command. 2015-02-09 20:09:02 -08:00
Jeff Lowdermilk
6021dcba30 Merge pull request #4213 from smarterclayton/use_name_from_server
Use name from server when displaying create/update
2015-02-09 09:41:20 -08:00
Clayton Coleman
52c6c60b15 Use name from server when displaying create/update
Allows generated names from files to be displayed so users can
interact with them.
2015-02-08 21:40:47 -05:00
saadali
79cbcf918e Modify Event struct to allow compressing multiple recurring events in to a single event.
# *** ERROR: *** Some API files are missing the required field descriptions
# Add description tags to all non-inline fields in the following files:
#   pkg/api/v1beta1/types.go
#   pkg/api/v1beta2/types.go
#
# Your commit will be aborted unless you fix these.
#   COMMIT_BLOCKED_ON_DESCRIPTION
2015-02-05 21:50:29 -08:00
Brian Grant
d2feaade9e Merge pull request #4195 from smarterclayton/add_endpoints_to_service
Kubectl should be able to display endpoints directly and for service
2015-02-05 17:22:34 -08:00
Clayton Coleman
698e8dd06f Kubectl should be able to display endpoints directly and for service
kubectl get endpoints <servicename>
    kubectl describe service <servicename>

should have printers for endpoints
2015-02-05 18:46:09 -05:00
Jeff Lowdermilk
5a702ad123 Allow --output formatting of kubectl config view, make merge default 2015-02-05 10:44:16 -08:00
Jeff Lowdermilk
d46ae5d841 Refactor kubectl/cmd helpers into pkg/kubectl/cmd/util
Allows helpers to be used by config commands.
2015-02-05 09:39:42 -08:00
Brian Grant
42fec8ec4e Merge pull request #4110 from jimmidyson/proxy-tweaks
kubectl proxy: make static prefix configurable
2015-02-05 07:08:07 -08:00
Nikhil Jindal
63c07ad58b Merge pull request #4129 from smarterclayton/add_user_agent
Add user agent string to all client requests
2015-02-04 15:05:31 -08:00
Clayton Coleman
0307d7ba98 Set a default user agent on all client.Client calls
Form:
  kube-controller-manager/v0.10.0 (linux/amd64) kubernetes/550b98e

  <basename(os.Argv)>/<gitVersion> (<GOOS>/<GOARCH>) kubernetes/<shortGitCommit>

Can be set by other clients
2015-02-04 17:45:53 -05:00
Tim Hockin
e6e67e2662 Merge pull request #4124 from brendandburns/e2e2
Fix service generation and add tests I should have included in the first place.
2015-02-04 12:52:51 -08:00
Brendan Burns
fa6ddf13e5 Fix service generation and add tests I should have included in the first place. 2015-02-04 12:14:53 -08:00
Brian Grant
3f28badae3 Merge pull request #3854 from yujuhong/defaults
Migrate API defaulting to a centralized location
2015-02-04 11:41:23 -08:00
Jeff Lowdermilk
6acac8f761 Merge pull request #3754 from deads2k/deads-remove-ns-path
remove --ns-path option from .kubeconfig file
2015-02-04 08:10:21 -08:00
Jimmi Dyson
e2baf049c0 kubectl proxy: make static prefix configurable 2015-02-04 15:57:21 +00:00
Jeff Lowdermilk
1f2c907991 Merge pull request #4053 from deads2k/deads-add-envvar-flag
add flag to manage $KUBCONFIG files
2015-02-03 14:49:05 -08:00
deads2k
affa85fab0 add flag to manage $KUBECONFIG files 2015-02-03 16:12:02 -05:00
deads2k
bc93de314a remove --ns-path option from .kubeconfig file, kick tests 2015-02-03 14:22:55 -05:00
Brian Grant
4eb41b2330 Merge pull request #3592 from brendandburns/cli
Add a service generator and a command to easily expose services.
2015-02-03 09:07:05 -08:00
Martin Nagy
e18fc8e840 Add TODO comment for kubectl update patching 2015-02-03 13:56:39 +01:00
Yu-Ju Hong
4a72addaeb Factor out API defaulting from validation logic
Currently, the validation logic validates fields in an object and supply default
values wherever applies. This change factors out defaulting to a set of
defaulting callback functions for decoding (see #1502 for more discussion).

 * This change is based on pull request 2587.

 * Most defaulting has been migrated to defaults.go where the defaulting
   functions are added.

 * validation_test.go and converter_test.go have been adapted to not testing the
   default values.

 * Fixed all tests with that create invalid objects with the absence of
   defaulting logic.
2015-02-03 00:55:42 -08:00
Clayton Coleman
8b2eeafd49 Merge pull request #3944 from derekwaynecarr/rest_mapper_scope_support
Make RESTMapper scope aware, use it to inform kubectl and swagger behavior
2015-02-02 13:13:11 -05:00
Alex Robinson
8fc228700a Merge pull request #4023 from fabianofranz/master
Fix typos
2015-02-02 09:57:38 -08:00
Satnam Singh
61c4a04ad2 Merge pull request #3805 from mnagy/allow_multiple_files_in_update
Use new resource builder in kubectl update
2015-02-02 08:40:24 -08:00
fabianofranz
de14a6ff08 Fix typos 2015-02-02 14:25:00 -02:00
derekwaynecarr
0851ca9522 Do not provide a namespace on request url if resource does not require it 2015-02-02 10:26:19 -05:00
derekwaynecarr
a8449732e0 Make the FilterNamespace function the last visitor 2015-02-02 10:26:19 -05:00
derekwaynecarr
4c33e36a88 Plumb restmapper properly through apiserver and tests 2015-02-02 10:26:19 -05:00
derekwaynecarr
f911784c98 Cherry pick test from #3901 2015-02-02 10:26:19 -05:00
derekwaynecarr
71ec444d63 Make a RESTMapper scope aware 2015-02-02 10:26:19 -05:00
Brendan Burns
7e48b26ff5 Address comments, fix tests. 2015-01-30 20:51:40 -08:00
Brian Grant
207d0f5d40 Merge pull request #3878 from thockin/infra_name
Use a constant for the pod infra container name
2015-01-30 09:18:00 -08:00
Satnam Singh
a6fd7204b6 Merge pull request #3940 from jlowdermilk/fix-client-for-version
Fix client for version
2015-01-30 07:58:13 -08:00
Martin Nagy
364774e7b8 Add tests for the reworked update command 2015-01-30 16:05:20 +01:00
Martin Nagy
b6ddd6548c Use new resource builder in kubectl update 2015-01-30 16:05:20 +01:00
Jeff Lowdermilk
93ef8b8bcb Make kubectl factory build clients for version
Fix ClientConfigForVersion to actually use provided version.
2015-01-29 17:04:14 -08:00
Tim Hockin
d01ea11a6e Merge pull request #3856 from smarterclayton/validation_logic_needs_cleanup
Validation of ObjectMeta is inconsistently applied
2015-01-29 14:12:44 -08:00
Jeff Lowdermlk
6e98ce34ca Fix kubectl proxy
Port flag was being ignored. Fixed now.
2015-01-28 15:07:00 -08:00
derekwaynecarr
829fa69527 Introduce a ResourceQuota object 2015-01-28 15:03:19 -05:00
Tim Hockin
70ab406751 Use a constant for the pod infra container name
This is an implementation detail that has leaked out of kubelet.  Use a
constant to prevent divergence, for now.  Plan to get rid of it.

@dchen1107
2015-01-28 10:13:02 -08:00
Tim Hockin
60119db5d5 More e2e damage from renaming "net" to "POD"
This stops the bleeding.  Will followup with a constant.
2015-01-28 09:58:19 -08:00
Brian Grant
02717b8ffa Merge pull request #3846 from ddysher/0-fix-0
Remove extra format in kubectl describe
2015-01-27 16:14:22 -08:00
Tim Hockin
a480794efc Tighten validation of Name and Namespace 2015-01-27 17:04:59 -05:00
derekwaynecarr
759335ab69 Fix gofmt complaint 2015-01-27 16:41:28 -05:00
derekwaynecarr
74f368f50e Modified LimitRangeItem.Kind to LimitRangeItem.Type, added example files 2015-01-27 16:41:28 -05:00
derekwaynecarr
091cbe5fa2 Add a limit range resource 2015-01-27 16:41:27 -05:00
Deyuan Deng
1330cc340b Remove extra format in kubectl describe 2015-01-27 15:45:55 -05:00
Brendan Burns
250b9ccd74 Address comments. Rebase. 2015-01-27 10:23:28 -08:00
Brendan Burns
09166f5252 Add a service generator and a command to easily expose services. 2015-01-27 10:06:08 -08:00
Mike Danese
d77743a07c gimports nits 2015-01-26 22:42:29 -08:00
deads2k
05bc508a13 make all kubectl config set-* easier to use 2015-01-26 15:16:54 -05:00
Jeff Lowdermilk
201e99e0ee Add a kubectl stop command 2015-01-22 09:46:53 -08:00
Filipe Brandenburger
b1727b0330 Revert "Add a kubectl stop command" 2015-01-22 09:00:50 -08:00
Brian Grant
a921086507 Merge pull request #3662 from jlowdermilk/kubectl-stop
Add a kubectl stop command
2015-01-22 06:58:29 -08:00
Tim Hockin
7dd0400065 Merge pull request #3470 from deads2k/deads-add-kubecfg-ns
respect namespace from .kubeconfig file
2015-01-21 12:58:06 -08:00
Clayton Coleman
3c15427b2d Merge pull request #3647 from deads2k/deads-make-factory-flag-binding-optional
make kubectl factory flag binding optional
2015-01-21 15:23:37 -05:00
Filipe Brandenburger
b2aabc540e Fix kubectl version to match client and server version output
Before this fix, the server version was printed from a pointer, making
the Go formatter prefix it with a &.

Before this patch:

    $ kubectl version
    Client Version: version.Info{Major:"0", Minor:"8+", GitVersion:"v0.8.0-509-g8537a73264b836", GitCommit:"8537a73264b836226cfca745ed37d65916e3b16f", GitTreeState:"clean"}
    Server Version: &version.Info{Major:"0", Minor:"8+", GitVersion:"v0.8.0-509-g8537a73264b836", GitCommit:"8537a73264b836226cfca745ed37d65916e3b16f", GitTreeState:"clean"}

After this patch:

    $ kubectl version
    Client Version: version.Info{Major:"0", Minor:"8+", GitVersion:"v0.8.0-509-g8537a73264b836-dirty", GitCommit:"8537a73264b836226cfca745ed37d65916e3b16f", GitTreeState:"dirty"}
    Server Version: version.Info{Major:"0", Minor:"8+", GitVersion:"v0.8.0-509-g8537a73264b836", GitCommit:"8537a73264b836226cfca745ed37d65916e3b16f", GitTreeState:"clean"}
2015-01-21 08:44:53 -08:00
Jeff Lowdermilk
b1aa037990 Add a kubectl stop command 2015-01-20 19:01:32 -08:00
deads2k
500bb3a7fa make kubectl factory flag binding optional 2015-01-20 18:12:24 -05:00
deads2k
8c01729f38 make shorthand flags optional 2015-01-20 16:21:27 -05:00
deads2k
dd01137138 add namespace to kubeconfig file 2015-01-20 16:07:54 -05:00
Andrew Seidl
6dee1d7fa4 Fix typos in user-facing strings 2015-01-18 01:32:34 -06:00
Dawn Chen
a71588dc89 Merge pull request #3504 from ddysher/kubectl-node-status
Include node status in kubectl get output
2015-01-16 12:01:29 -08:00
Deyuan Deng
616feac25b Include node status in kubectl get output 2015-01-16 14:28:35 -05:00
Dawn Chen
7b457fd33f Separate colume for PodIP from kubectl get pods 2015-01-16 11:10:30 -08:00
bgrant0607
52cd620da8 Merge pull request #3537 from brendandburns/cli
Add inline JSON patching to kubectl update ...
2015-01-15 17:08:51 -08:00
Brendan Burns
3572ed1828 Addressed comments. 2015-01-15 16:08:12 -08:00
Brendan Burns
ae88521739 Add inline patching to kubectl update. 2015-01-15 16:08:12 -08:00